From a1f87db43231914e22c6bb980e85f5dd074c52a7 Mon Sep 17 00:00:00 2001 From: benface Date: Thu, 29 Jan 2026 11:29:09 -0500 Subject: [PATCH 1/2] Update dependencies + remove translations --- .eslintrc.js | 5 +- CONTRIBUTING.md | 4 - algolia-crawler.config.js | 11 +- crowdin.yml | 14 - nginx.conf | 243 +- package.json | 8 +- packages/og-image/package.json | 6 +- .../package.json | 2 +- pnpm-lock.yaml | 1717 +++--- website/next.config.js | 1 + website/package.json | 14 +- website/route-lockfile.txt | 4703 +---------------- website/src/i18n.ts | 67 +- website/src/layout/Layout.tsx | 13 - .../src/layout/templates/default/content.tsx | 7 +- website/src/openApi/tokenApi.json | 16 +- website/src/pages/ar/about.mdx | 67 - .../src/pages/ar/ai-suite/_meta-titles.json | 6 - website/src/pages/ar/ai-suite/_meta.js | 7 - .../src/pages/ar/ai-suite/ai-introduction.mdx | 58 - .../pages/ar/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/ar/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/ar/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/ar/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../ar/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/ar/ai-suite/token-api-mcp/_meta.js | 6 - .../ar/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/ar/ai-suite/token-api-mcp/cline.mdx | 52 - .../ar/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/ar/archived/_meta-titles.json | 3 - website/src/pages/ar/archived/_meta.js | 6 - .../src/pages/ar/archived/arbitrum/_meta.js | 5 - .../ar/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/ar/archived/sunrise.mdx | 80 - website/src/pages/ar/contracts.json | 4 - website/src/pages/ar/contracts.mdx | 29 - website/src/pages/ar/docsearch.json | 42 - website/src/pages/ar/global.json | 78 - website/src/pages/ar/graph-horizon/_meta.js | 5 - .../ar/graph-horizon/migration-guide.mdx | 45 - .../src/pages/ar/graph-horizon/overview.mdx | 48 - .../pages/ar/graph-horizon/what-changes.mdx | 88 - website/src/pages/ar/hypergraph/_meta.js | 4 - website/src/pages/ar/hypergraph/faq.mdx | 76 - website/src/pages/ar/hypergraph/overview.mdx | 100 - website/src/pages/ar/index.json | 195 - .../src/pages/ar/indexing/_meta-titles.json | 3 - website/src/pages/ar/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../ar/indexing/new-chain-integration.mdx | 70 - website/src/pages/ar/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/ar/indexing/tap.mdx | 189 - .../src/pages/ar/indexing/tooling/_meta.js | 5 - .../pages/ar/indexing/tooling/firehose.mdx | 24 - .../pages/ar/indexing/tooling/graph-node.mdx | 345 -- .../pages/ar/indexing/tooling/graphcast.mdx | 21 - .../src/pages/ar/resources/_meta-titles.json | 4 - website/src/pages/ar/resources/_meta.js | 10 - website/src/pages/ar/resources/benefits.mdx | 92 - website/src/pages/ar/resources/glossary.mdx | 81 - .../ar/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/ar/resources/roles/_meta.js | 4 - .../src/pages/ar/resources/roles/curating.mdx | 89 - .../ar/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../ar/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/ar/resources/tokenomics.mdx | 103 - .../src/pages/ar/subgraphs/_meta-titles.json | 6 - website/src/pages/ar/subgraphs/_meta.js | 13 - .../ar/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../ar/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/ar/subgraphs/billing.mdx | 216 - .../ar/subgraphs/developing/_meta-titles.json | 6 - .../pages/ar/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../ar/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../ar/subgraphs/developing/developer-faq.mdx | 148 - .../ar/subgraphs/developing/introduction.mdx | 31 - .../ar/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../ar/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/ar/subgraphs/explorer.mdx | 255 - .../pages/ar/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/ar/subgraphs/guides/_meta.js | 12 - .../ar/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/ar/subgraphs/guides/enums.mdx | 274 - .../pages/ar/subgraphs/guides/grafting.mdx | 202 - .../src/pages/ar/subgraphs/guides/near.mdx | 283 - .../pages/ar/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../ar/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/ar/subgraphs/querying/_meta.js | 13 - .../ar/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../ar/subgraphs/querying/graphql-api.mdx | 432 -- .../ar/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/ar/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/ar/subgraphs/quick-start.mdx | 186 - .../pages/ar/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/ar/substreams/_meta-titles.json | 4 - website/src/pages/ar/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/ar/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/ar/substreams/developing/sinks.mdx | 51 - .../ar/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/ar/substreams/introduction.mdx | 45 - .../src/pages/ar/substreams/publishing.mdx | 53 - .../src/pages/ar/substreams/quick-start.mdx | 42 - website/src/pages/ar/supported-networks.mdx | 28 - .../src/pages/ar/token-api/_meta-titles.json | 10 - website/src/pages/ar/token-api/_meta.js | 16 - .../src/pages/ar/token-api/endpoints/_meta.js | 4 - .../pages/ar/token-api/endpoints/pricing.mdx | 97 - .../pages/ar/token-api/endpoints/support.mdx | 23 - .../src/pages/ar/token-api/evm-dexs/_meta.js | 6 - .../src/pages/ar/token-api/evm-dexs/dexes.mdx | 9 - .../ar/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ar/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/ar/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/ar/token-api/evm-nfts/_meta.js | 8 - .../ar/token-api/evm-nfts/collections.mdx | 16 - .../pages/ar/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/ar/token-api/evm-nfts/items.mdx | 9 - .../ar/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/ar/token-api/evm-nfts/sales.mdx | 9 - .../pages/ar/token-api/evm-nfts/transfers.mdx | 9 - .../pages/ar/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../ar/token-api/evm-tokens/balances.mdx | 9 - .../pages/ar/token-api/evm-tokens/holders.mdx | 9 - .../pages/ar/token-api/evm-tokens/tokens.mdx | 9 - .../ar/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/ar/token-api/faq.mdx | 109 - .../ar/token-api/guides/_meta-titles.json | 3 - .../src/pages/ar/token-api/guides/_meta.js | 3 - website/src/pages/ar/token-api/guides/gpt.mdx | 121 - .../pages/ar/token-api/monitoring/_meta.js | 5 - .../pages/ar/token-api/monitoring/health.mdx | 11 - .../ar/token-api/monitoring/networks.mdx | 9 - .../pages/ar/token-api/monitoring/version.mdx | 9 - .../src/pages/ar/token-api/quick-start.mdx | 77 - .../src/pages/ar/token-api/svm-dexs/_meta.js | 6 - .../src/pages/ar/token-api/svm-dexs/dexes.mdx | 9 - .../ar/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/ar/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/ar/token-api/svm-dexs/swaps.mdx | 9 - .../pages/ar/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../ar/token-api/svm-tokens/balances.mdx | 9 - .../pages/ar/token-api/svm-tokens/holders.mdx | 9 - .../pages/ar/token-api/svm-tokens/owner.mdx | 9 - .../pages/ar/token-api/svm-tokens/tokens.mdx | 9 - .../ar/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/ar/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/ar/token-api/tvm-dexs/dexes.mdx | 9 - .../ar/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ar/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/ar/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/ar/token-api/tvm-tokens/_meta.js | 5 - .../pages/ar/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../ar/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/ar/translations.ts | 13 - website/src/pages/cs/about.mdx | 67 - .../src/pages/cs/ai-suite/_meta-titles.json | 6 - website/src/pages/cs/ai-suite/_meta.js | 7 - .../src/pages/cs/ai-suite/ai-introduction.mdx | 58 - .../pages/cs/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/cs/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/cs/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/cs/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../cs/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/cs/ai-suite/token-api-mcp/_meta.js | 6 - .../cs/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/cs/ai-suite/token-api-mcp/cline.mdx | 52 - .../cs/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/cs/archived/_meta-titles.json | 3 - website/src/pages/cs/archived/_meta.js | 6 - .../src/pages/cs/archived/arbitrum/_meta.js | 5 - .../cs/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/cs/archived/sunrise.mdx | 80 - website/src/pages/cs/contracts.json | 4 - website/src/pages/cs/contracts.mdx | 29 - website/src/pages/cs/docsearch.json | 42 - website/src/pages/cs/global.json | 78 - website/src/pages/cs/graph-horizon/_meta.js | 5 - .../cs/graph-horizon/migration-guide.mdx | 45 - .../src/pages/cs/graph-horizon/overview.mdx | 48 - .../pages/cs/graph-horizon/what-changes.mdx | 88 - website/src/pages/cs/hypergraph/_meta.js | 4 - website/src/pages/cs/hypergraph/faq.mdx | 76 - website/src/pages/cs/hypergraph/overview.mdx | 100 - website/src/pages/cs/index.json | 195 - .../src/pages/cs/indexing/_meta-titles.json | 3 - website/src/pages/cs/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../cs/indexing/new-chain-integration.mdx | 70 - website/src/pages/cs/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/cs/indexing/tap.mdx | 189 - .../src/pages/cs/indexing/tooling/_meta.js | 5 - .../pages/cs/indexing/tooling/firehose.mdx | 24 - .../pages/cs/indexing/tooling/graph-node.mdx | 345 -- .../pages/cs/indexing/tooling/graphcast.mdx | 21 - .../src/pages/cs/resources/_meta-titles.json | 4 - website/src/pages/cs/resources/_meta.js | 10 - website/src/pages/cs/resources/benefits.mdx | 92 - website/src/pages/cs/resources/glossary.mdx | 81 - .../cs/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/cs/resources/roles/_meta.js | 4 - .../src/pages/cs/resources/roles/curating.mdx | 89 - .../cs/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../cs/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/cs/resources/tokenomics.mdx | 103 - .../src/pages/cs/subgraphs/_meta-titles.json | 6 - website/src/pages/cs/subgraphs/_meta.js | 13 - .../cs/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../cs/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/cs/subgraphs/billing.mdx | 216 - .../cs/subgraphs/developing/_meta-titles.json | 6 - .../pages/cs/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../cs/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../cs/subgraphs/developing/developer-faq.mdx | 148 - .../cs/subgraphs/developing/introduction.mdx | 31 - .../cs/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../cs/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/cs/subgraphs/explorer.mdx | 255 - .../pages/cs/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/cs/subgraphs/guides/_meta.js | 12 - .../cs/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/cs/subgraphs/guides/enums.mdx | 274 - .../pages/cs/subgraphs/guides/grafting.mdx | 202 - .../src/pages/cs/subgraphs/guides/near.mdx | 283 - .../pages/cs/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../cs/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/cs/subgraphs/querying/_meta.js | 13 - .../cs/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../cs/subgraphs/querying/graphql-api.mdx | 432 -- .../cs/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/cs/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/cs/subgraphs/quick-start.mdx | 186 - .../pages/cs/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/cs/substreams/_meta-titles.json | 4 - website/src/pages/cs/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/cs/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/cs/substreams/developing/sinks.mdx | 51 - .../cs/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/cs/substreams/introduction.mdx | 45 - .../src/pages/cs/substreams/publishing.mdx | 53 - .../src/pages/cs/substreams/quick-start.mdx | 42 - website/src/pages/cs/supported-networks.mdx | 28 - .../src/pages/cs/token-api/_meta-titles.json | 10 - website/src/pages/cs/token-api/_meta.js | 16 - .../src/pages/cs/token-api/endpoints/_meta.js | 4 - .../pages/cs/token-api/endpoints/pricing.mdx | 97 - .../pages/cs/token-api/endpoints/support.mdx | 23 - .../src/pages/cs/token-api/evm-dexs/_meta.js | 6 - .../src/pages/cs/token-api/evm-dexs/dexes.mdx | 9 - .../cs/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/cs/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/cs/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/cs/token-api/evm-nfts/_meta.js | 8 - .../cs/token-api/evm-nfts/collections.mdx | 16 - .../pages/cs/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/cs/token-api/evm-nfts/items.mdx | 9 - .../cs/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/cs/token-api/evm-nfts/sales.mdx | 9 - .../pages/cs/token-api/evm-nfts/transfers.mdx | 9 - .../pages/cs/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../cs/token-api/evm-tokens/balances.mdx | 9 - .../pages/cs/token-api/evm-tokens/holders.mdx | 9 - .../pages/cs/token-api/evm-tokens/tokens.mdx | 9 - .../cs/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/cs/token-api/faq.mdx | 109 - .../cs/token-api/guides/_meta-titles.json | 3 - .../src/pages/cs/token-api/guides/_meta.js | 3 - website/src/pages/cs/token-api/guides/gpt.mdx | 121 - .../pages/cs/token-api/monitoring/_meta.js | 5 - .../pages/cs/token-api/monitoring/health.mdx | 11 - .../cs/token-api/monitoring/networks.mdx | 9 - .../pages/cs/token-api/monitoring/version.mdx | 9 - .../src/pages/cs/token-api/quick-start.mdx | 77 - .../src/pages/cs/token-api/svm-dexs/_meta.js | 6 - .../src/pages/cs/token-api/svm-dexs/dexes.mdx | 9 - .../cs/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/cs/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/cs/token-api/svm-dexs/swaps.mdx | 9 - .../pages/cs/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../cs/token-api/svm-tokens/balances.mdx | 9 - .../pages/cs/token-api/svm-tokens/holders.mdx | 9 - .../pages/cs/token-api/svm-tokens/owner.mdx | 9 - .../pages/cs/token-api/svm-tokens/tokens.mdx | 9 - .../cs/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/cs/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/cs/token-api/tvm-dexs/dexes.mdx | 9 - .../cs/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/cs/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/cs/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/cs/token-api/tvm-tokens/_meta.js | 5 - .../pages/cs/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../cs/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/cs/translations.ts | 13 - website/src/pages/de/about.mdx | 67 - .../src/pages/de/ai-suite/_meta-titles.json | 6 - website/src/pages/de/ai-suite/_meta.js | 7 - .../src/pages/de/ai-suite/ai-introduction.mdx | 58 - .../pages/de/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/de/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/de/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/de/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../de/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/de/ai-suite/token-api-mcp/_meta.js | 6 - .../de/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/de/ai-suite/token-api-mcp/cline.mdx | 52 - .../de/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/de/archived/_meta-titles.json | 3 - website/src/pages/de/archived/_meta.js | 6 - .../src/pages/de/archived/arbitrum/_meta.js | 5 - .../de/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/de/archived/sunrise.mdx | 80 - website/src/pages/de/contracts.json | 4 - website/src/pages/de/contracts.mdx | 29 - website/src/pages/de/docsearch.json | 42 - website/src/pages/de/global.json | 78 - website/src/pages/de/graph-horizon/_meta.js | 5 - .../de/graph-horizon/migration-guide.mdx | 45 - .../src/pages/de/graph-horizon/overview.mdx | 48 - .../pages/de/graph-horizon/what-changes.mdx | 88 - website/src/pages/de/hypergraph/_meta.js | 4 - website/src/pages/de/hypergraph/faq.mdx | 76 - website/src/pages/de/hypergraph/overview.mdx | 100 - website/src/pages/de/index.json | 195 - .../src/pages/de/indexing/_meta-titles.json | 3 - website/src/pages/de/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../de/indexing/new-chain-integration.mdx | 70 - website/src/pages/de/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/de/indexing/tap.mdx | 189 - .../src/pages/de/indexing/tooling/_meta.js | 5 - .../pages/de/indexing/tooling/firehose.mdx | 24 - .../pages/de/indexing/tooling/graph-node.mdx | 345 -- .../pages/de/indexing/tooling/graphcast.mdx | 21 - .../src/pages/de/resources/_meta-titles.json | 4 - website/src/pages/de/resources/_meta.js | 10 - website/src/pages/de/resources/benefits.mdx | 93 - website/src/pages/de/resources/glossary.mdx | 81 - .../de/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/de/resources/roles/_meta.js | 4 - .../src/pages/de/resources/roles/curating.mdx | 89 - .../de/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../de/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/de/resources/tokenomics.mdx | 103 - .../src/pages/de/subgraphs/_meta-titles.json | 6 - website/src/pages/de/subgraphs/_meta.js | 13 - .../de/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 119 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../de/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/de/subgraphs/billing.mdx | 216 - .../de/subgraphs/developing/_meta-titles.json | 6 - .../pages/de/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../de/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../de/subgraphs/developing/developer-faq.mdx | 148 - .../de/subgraphs/developing/introduction.mdx | 31 - .../de/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../de/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/de/subgraphs/explorer.mdx | 255 - .../pages/de/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/de/subgraphs/guides/_meta.js | 12 - .../de/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/de/subgraphs/guides/enums.mdx | 274 - .../pages/de/subgraphs/guides/grafting.mdx | 202 - .../src/pages/de/subgraphs/guides/near.mdx | 283 - .../pages/de/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../de/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/de/subgraphs/querying/_meta.js | 13 - .../de/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 606 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../de/subgraphs/querying/graphql-api.mdx | 438 -- .../de/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/de/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/de/subgraphs/quick-start.mdx | 186 - .../pages/de/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/de/substreams/_meta-titles.json | 4 - website/src/pages/de/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/de/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/de/substreams/developing/sinks.mdx | 51 - .../de/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/de/substreams/introduction.mdx | 45 - .../src/pages/de/substreams/publishing.mdx | 53 - .../src/pages/de/substreams/quick-start.mdx | 42 - website/src/pages/de/supported-networks.mdx | 28 - .../src/pages/de/token-api/_meta-titles.json | 10 - website/src/pages/de/token-api/_meta.js | 16 - .../src/pages/de/token-api/endpoints/_meta.js | 4 - .../pages/de/token-api/endpoints/pricing.mdx | 97 - .../pages/de/token-api/endpoints/support.mdx | 23 - .../src/pages/de/token-api/evm-dexs/_meta.js | 6 - .../src/pages/de/token-api/evm-dexs/dexes.mdx | 9 - .../de/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/de/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/de/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/de/token-api/evm-nfts/_meta.js | 8 - .../de/token-api/evm-nfts/collections.mdx | 16 - .../pages/de/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/de/token-api/evm-nfts/items.mdx | 9 - .../de/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/de/token-api/evm-nfts/sales.mdx | 9 - .../pages/de/token-api/evm-nfts/transfers.mdx | 9 - .../pages/de/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../de/token-api/evm-tokens/balances.mdx | 9 - .../pages/de/token-api/evm-tokens/holders.mdx | 9 - .../pages/de/token-api/evm-tokens/tokens.mdx | 9 - .../de/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/de/token-api/faq.mdx | 109 - .../de/token-api/guides/_meta-titles.json | 3 - .../src/pages/de/token-api/guides/_meta.js | 3 - website/src/pages/de/token-api/guides/gpt.mdx | 121 - .../pages/de/token-api/monitoring/_meta.js | 5 - .../pages/de/token-api/monitoring/health.mdx | 11 - .../de/token-api/monitoring/networks.mdx | 9 - .../pages/de/token-api/monitoring/version.mdx | 9 - .../src/pages/de/token-api/quick-start.mdx | 77 - .../src/pages/de/token-api/svm-dexs/_meta.js | 6 - .../src/pages/de/token-api/svm-dexs/dexes.mdx | 9 - .../de/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/de/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/de/token-api/svm-dexs/swaps.mdx | 9 - .../pages/de/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../de/token-api/svm-tokens/balances.mdx | 9 - .../pages/de/token-api/svm-tokens/holders.mdx | 9 - .../pages/de/token-api/svm-tokens/owner.mdx | 9 - .../pages/de/token-api/svm-tokens/tokens.mdx | 9 - .../de/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/de/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/de/token-api/tvm-dexs/dexes.mdx | 9 - .../de/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/de/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/de/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/de/token-api/tvm-tokens/_meta.js | 5 - .../pages/de/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../de/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/de/translations.ts | 13 - website/src/pages/es/about.mdx | 67 - .../src/pages/es/ai-suite/_meta-titles.json | 6 - website/src/pages/es/ai-suite/_meta.js | 7 - .../src/pages/es/ai-suite/ai-introduction.mdx | 58 - .../pages/es/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/es/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/es/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/es/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../es/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/es/ai-suite/token-api-mcp/_meta.js | 6 - .../es/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/es/ai-suite/token-api-mcp/cline.mdx | 52 - .../es/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/es/archived/_meta-titles.json | 3 - website/src/pages/es/archived/_meta.js | 6 - .../src/pages/es/archived/arbitrum/_meta.js | 5 - .../es/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/es/archived/sunrise.mdx | 80 - website/src/pages/es/contracts.json | 4 - website/src/pages/es/contracts.mdx | 29 - website/src/pages/es/docsearch.json | 42 - website/src/pages/es/global.json | 78 - website/src/pages/es/graph-horizon/_meta.js | 5 - .../es/graph-horizon/migration-guide.mdx | 45 - .../src/pages/es/graph-horizon/overview.mdx | 48 - .../pages/es/graph-horizon/what-changes.mdx | 88 - website/src/pages/es/hypergraph/_meta.js | 4 - website/src/pages/es/hypergraph/faq.mdx | 76 - website/src/pages/es/hypergraph/overview.mdx | 100 - website/src/pages/es/index.json | 195 - .../src/pages/es/indexing/_meta-titles.json | 3 - website/src/pages/es/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../es/indexing/new-chain-integration.mdx | 70 - website/src/pages/es/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/es/indexing/tap.mdx | 189 - .../src/pages/es/indexing/tooling/_meta.js | 5 - .../pages/es/indexing/tooling/firehose.mdx | 24 - .../pages/es/indexing/tooling/graph-node.mdx | 345 -- .../pages/es/indexing/tooling/graphcast.mdx | 21 - .../src/pages/es/resources/_meta-titles.json | 4 - website/src/pages/es/resources/_meta.js | 10 - website/src/pages/es/resources/benefits.mdx | 92 - website/src/pages/es/resources/glossary.mdx | 81 - .../es/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 534 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/es/resources/roles/_meta.js | 4 - .../src/pages/es/resources/roles/curating.mdx | 89 - .../es/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../es/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/es/resources/tokenomics.mdx | 103 - .../src/pages/es/subgraphs/_meta-titles.json | 6 - website/src/pages/es/subgraphs/_meta.js | 13 - .../es/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../es/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/es/subgraphs/billing.mdx | 216 - .../es/subgraphs/developing/_meta-titles.json | 6 - .../pages/es/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../es/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../es/subgraphs/developing/developer-faq.mdx | 148 - .../es/subgraphs/developing/introduction.mdx | 31 - .../es/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../es/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/es/subgraphs/explorer.mdx | 255 - .../pages/es/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/es/subgraphs/guides/_meta.js | 12 - .../es/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/es/subgraphs/guides/enums.mdx | 274 - .../pages/es/subgraphs/guides/grafting.mdx | 202 - .../src/pages/es/subgraphs/guides/near.mdx | 283 - .../pages/es/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../es/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/es/subgraphs/querying/_meta.js | 13 - .../es/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../es/subgraphs/querying/graphql-api.mdx | 432 -- .../es/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/es/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/es/subgraphs/quick-start.mdx | 186 - .../pages/es/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/es/substreams/_meta-titles.json | 4 - website/src/pages/es/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/es/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/es/substreams/developing/sinks.mdx | 51 - .../es/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/es/substreams/introduction.mdx | 45 - .../src/pages/es/substreams/publishing.mdx | 53 - .../src/pages/es/substreams/quick-start.mdx | 42 - website/src/pages/es/supported-networks.mdx | 28 - .../src/pages/es/token-api/_meta-titles.json | 10 - website/src/pages/es/token-api/_meta.js | 16 - .../src/pages/es/token-api/endpoints/_meta.js | 4 - .../pages/es/token-api/endpoints/pricing.mdx | 97 - .../pages/es/token-api/endpoints/support.mdx | 23 - .../src/pages/es/token-api/evm-dexs/_meta.js | 6 - .../src/pages/es/token-api/evm-dexs/dexes.mdx | 9 - .../es/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/es/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/es/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/es/token-api/evm-nfts/_meta.js | 8 - .../es/token-api/evm-nfts/collections.mdx | 16 - .../pages/es/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/es/token-api/evm-nfts/items.mdx | 9 - .../es/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/es/token-api/evm-nfts/sales.mdx | 9 - .../pages/es/token-api/evm-nfts/transfers.mdx | 9 - .../pages/es/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../es/token-api/evm-tokens/balances.mdx | 9 - .../pages/es/token-api/evm-tokens/holders.mdx | 9 - .../pages/es/token-api/evm-tokens/tokens.mdx | 9 - .../es/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/es/token-api/faq.mdx | 109 - .../es/token-api/guides/_meta-titles.json | 3 - .../src/pages/es/token-api/guides/_meta.js | 3 - website/src/pages/es/token-api/guides/gpt.mdx | 121 - .../pages/es/token-api/monitoring/_meta.js | 5 - .../pages/es/token-api/monitoring/health.mdx | 11 - .../es/token-api/monitoring/networks.mdx | 9 - .../pages/es/token-api/monitoring/version.mdx | 9 - .../src/pages/es/token-api/quick-start.mdx | 77 - .../src/pages/es/token-api/svm-dexs/_meta.js | 6 - .../src/pages/es/token-api/svm-dexs/dexes.mdx | 9 - .../es/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/es/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/es/token-api/svm-dexs/swaps.mdx | 9 - .../pages/es/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../es/token-api/svm-tokens/balances.mdx | 9 - .../pages/es/token-api/svm-tokens/holders.mdx | 9 - .../pages/es/token-api/svm-tokens/owner.mdx | 9 - .../pages/es/token-api/svm-tokens/tokens.mdx | 9 - .../es/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/es/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/es/token-api/tvm-dexs/dexes.mdx | 9 - .../es/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/es/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/es/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/es/token-api/tvm-tokens/_meta.js | 5 - .../pages/es/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../es/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/es/translations.ts | 13 - website/src/pages/fr/about.mdx | 67 - .../src/pages/fr/ai-suite/_meta-titles.json | 6 - website/src/pages/fr/ai-suite/_meta.js | 7 - .../src/pages/fr/ai-suite/ai-introduction.mdx | 58 - .../pages/fr/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/fr/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/fr/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/fr/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../fr/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/fr/ai-suite/token-api-mcp/_meta.js | 6 - .../fr/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/fr/ai-suite/token-api-mcp/cline.mdx | 52 - .../fr/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/fr/archived/_meta-titles.json | 3 - website/src/pages/fr/archived/_meta.js | 6 - .../src/pages/fr/archived/arbitrum/_meta.js | 5 - .../fr/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/fr/archived/sunrise.mdx | 80 - website/src/pages/fr/contracts.json | 4 - website/src/pages/fr/contracts.mdx | 29 - website/src/pages/fr/docsearch.json | 42 - website/src/pages/fr/global.json | 78 - website/src/pages/fr/graph-horizon/_meta.js | 5 - .../fr/graph-horizon/migration-guide.mdx | 45 - .../src/pages/fr/graph-horizon/overview.mdx | 48 - .../pages/fr/graph-horizon/what-changes.mdx | 88 - website/src/pages/fr/hypergraph/_meta.js | 4 - website/src/pages/fr/hypergraph/faq.mdx | 76 - website/src/pages/fr/hypergraph/overview.mdx | 100 - website/src/pages/fr/index.json | 195 - .../src/pages/fr/indexing/_meta-titles.json | 3 - website/src/pages/fr/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../fr/indexing/new-chain-integration.mdx | 70 - website/src/pages/fr/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/fr/indexing/tap.mdx | 189 - .../src/pages/fr/indexing/tooling/_meta.js | 5 - .../pages/fr/indexing/tooling/firehose.mdx | 24 - .../pages/fr/indexing/tooling/graph-node.mdx | 345 -- .../pages/fr/indexing/tooling/graphcast.mdx | 21 - .../src/pages/fr/resources/_meta-titles.json | 4 - website/src/pages/fr/resources/_meta.js | 10 - website/src/pages/fr/resources/benefits.mdx | 93 - website/src/pages/fr/resources/glossary.mdx | 81 - .../fr/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 523 -- .../graphql-validations-migration-guide.mdx | 536 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/fr/resources/roles/_meta.js | 4 - .../src/pages/fr/resources/roles/curating.mdx | 89 - .../fr/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../fr/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/fr/resources/tokenomics.mdx | 103 - .../src/pages/fr/subgraphs/_meta-titles.json | 6 - website/src/pages/fr/subgraphs/_meta.js | 13 - .../fr/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../fr/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/fr/subgraphs/billing.mdx | 216 - .../fr/subgraphs/developing/_meta-titles.json | 6 - .../pages/fr/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../fr/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 83 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 241 - .../deploying/using-subgraph-studio.mdx | 131 - .../fr/subgraphs/developing/developer-faq.mdx | 148 - .../fr/subgraphs/developing/introduction.mdx | 31 - .../fr/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../fr/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/fr/subgraphs/explorer.mdx | 255 - .../pages/fr/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/fr/subgraphs/guides/_meta.js | 12 - .../fr/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/fr/subgraphs/guides/enums.mdx | 274 - .../pages/fr/subgraphs/guides/grafting.mdx | 202 - .../src/pages/fr/subgraphs/guides/near.mdx | 283 - .../pages/fr/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../fr/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/fr/subgraphs/querying/_meta.js | 13 - .../fr/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../fr/subgraphs/querying/graphql-api.mdx | 434 -- .../fr/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/fr/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/fr/subgraphs/quick-start.mdx | 186 - .../pages/fr/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/fr/substreams/_meta-titles.json | 4 - website/src/pages/fr/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/fr/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/fr/substreams/developing/sinks.mdx | 51 - .../fr/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/fr/substreams/introduction.mdx | 45 - .../src/pages/fr/substreams/publishing.mdx | 53 - .../src/pages/fr/substreams/quick-start.mdx | 42 - website/src/pages/fr/supported-networks.mdx | 28 - .../src/pages/fr/token-api/_meta-titles.json | 10 - website/src/pages/fr/token-api/_meta.js | 16 - .../src/pages/fr/token-api/endpoints/_meta.js | 4 - .../pages/fr/token-api/endpoints/pricing.mdx | 97 - .../pages/fr/token-api/endpoints/support.mdx | 23 - .../src/pages/fr/token-api/evm-dexs/_meta.js | 6 - .../src/pages/fr/token-api/evm-dexs/dexes.mdx | 9 - .../fr/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/fr/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/fr/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/fr/token-api/evm-nfts/_meta.js | 8 - .../fr/token-api/evm-nfts/collections.mdx | 16 - .../pages/fr/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/fr/token-api/evm-nfts/items.mdx | 9 - .../fr/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/fr/token-api/evm-nfts/sales.mdx | 9 - .../pages/fr/token-api/evm-nfts/transfers.mdx | 9 - .../pages/fr/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../fr/token-api/evm-tokens/balances.mdx | 9 - .../pages/fr/token-api/evm-tokens/holders.mdx | 9 - .../pages/fr/token-api/evm-tokens/tokens.mdx | 9 - .../fr/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/fr/token-api/faq.mdx | 109 - .../fr/token-api/guides/_meta-titles.json | 3 - .../src/pages/fr/token-api/guides/_meta.js | 3 - website/src/pages/fr/token-api/guides/gpt.mdx | 121 - .../pages/fr/token-api/monitoring/_meta.js | 5 - .../pages/fr/token-api/monitoring/health.mdx | 11 - .../fr/token-api/monitoring/networks.mdx | 9 - .../pages/fr/token-api/monitoring/version.mdx | 9 - .../src/pages/fr/token-api/quick-start.mdx | 77 - .../src/pages/fr/token-api/svm-dexs/_meta.js | 6 - .../src/pages/fr/token-api/svm-dexs/dexes.mdx | 9 - .../fr/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/fr/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/fr/token-api/svm-dexs/swaps.mdx | 9 - .../pages/fr/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../fr/token-api/svm-tokens/balances.mdx | 9 - .../pages/fr/token-api/svm-tokens/holders.mdx | 9 - .../pages/fr/token-api/svm-tokens/owner.mdx | 9 - .../pages/fr/token-api/svm-tokens/tokens.mdx | 9 - .../fr/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/fr/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/fr/token-api/tvm-dexs/dexes.mdx | 9 - .../fr/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/fr/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/fr/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/fr/token-api/tvm-tokens/_meta.js | 5 - .../pages/fr/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../fr/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/fr/translations.ts | 13 - website/src/pages/hi/about.mdx | 67 - .../src/pages/hi/ai-suite/_meta-titles.json | 6 - website/src/pages/hi/ai-suite/_meta.js | 7 - .../src/pages/hi/ai-suite/ai-introduction.mdx | 58 - .../pages/hi/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/hi/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/hi/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/hi/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../hi/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/hi/ai-suite/token-api-mcp/_meta.js | 6 - .../hi/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/hi/ai-suite/token-api-mcp/cline.mdx | 52 - .../hi/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/hi/archived/_meta-titles.json | 3 - website/src/pages/hi/archived/_meta.js | 6 - .../src/pages/hi/archived/arbitrum/_meta.js | 5 - .../hi/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/hi/archived/sunrise.mdx | 80 - website/src/pages/hi/contracts.json | 4 - website/src/pages/hi/contracts.mdx | 29 - website/src/pages/hi/docsearch.json | 42 - website/src/pages/hi/global.json | 78 - website/src/pages/hi/graph-horizon/_meta.js | 5 - .../hi/graph-horizon/migration-guide.mdx | 45 - .../src/pages/hi/graph-horizon/overview.mdx | 48 - .../pages/hi/graph-horizon/what-changes.mdx | 88 - website/src/pages/hi/hypergraph/_meta.js | 4 - website/src/pages/hi/hypergraph/faq.mdx | 76 - website/src/pages/hi/hypergraph/overview.mdx | 100 - website/src/pages/hi/index.json | 195 - .../src/pages/hi/indexing/_meta-titles.json | 3 - website/src/pages/hi/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../hi/indexing/new-chain-integration.mdx | 70 - website/src/pages/hi/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/hi/indexing/tap.mdx | 189 - .../src/pages/hi/indexing/tooling/_meta.js | 5 - .../pages/hi/indexing/tooling/firehose.mdx | 24 - .../pages/hi/indexing/tooling/graph-node.mdx | 345 -- .../pages/hi/indexing/tooling/graphcast.mdx | 21 - .../src/pages/hi/resources/_meta-titles.json | 4 - website/src/pages/hi/resources/_meta.js | 10 - website/src/pages/hi/resources/benefits.mdx | 93 - website/src/pages/hi/resources/glossary.mdx | 85 - .../hi/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 523 -- .../graphql-validations-migration-guide.mdx | 539 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/hi/resources/roles/_meta.js | 4 - .../src/pages/hi/resources/roles/curating.mdx | 89 - .../hi/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../hi/resources/subgraph-studio-faq.mdx | 33 - website/src/pages/hi/resources/tokenomics.mdx | 106 - .../src/pages/hi/subgraphs/_meta-titles.json | 6 - website/src/pages/hi/subgraphs/_meta.js | 13 - .../hi/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../hi/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/hi/subgraphs/billing.mdx | 216 - .../hi/subgraphs/developing/_meta-titles.json | 6 - .../pages/hi/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../hi/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 894 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1404 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 243 - .../deploying/using-subgraph-studio.mdx | 131 - .../hi/subgraphs/developing/developer-faq.mdx | 148 - .../hi/subgraphs/developing/introduction.mdx | 31 - .../hi/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../hi/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/hi/subgraphs/explorer.mdx | 255 - .../pages/hi/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/hi/subgraphs/guides/_meta.js | 12 - .../hi/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/hi/subgraphs/guides/enums.mdx | 274 - .../pages/hi/subgraphs/guides/grafting.mdx | 202 - .../src/pages/hi/subgraphs/guides/near.mdx | 283 - .../pages/hi/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 103 - .../hi/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/hi/subgraphs/querying/_meta.js | 13 - .../hi/subgraphs/querying/best-practices.mdx | 486 -- .../querying/distributed-systems.mdx | 135 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../hi/subgraphs/querying/graphql-api.mdx | 432 -- .../hi/subgraphs/querying/introduction.mdx | 33 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/hi/subgraphs/querying/python.mdx | 58 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/hi/subgraphs/quick-start.mdx | 186 - .../pages/hi/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/hi/substreams/_meta-titles.json | 4 - website/src/pages/hi/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/hi/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/hi/substreams/developing/sinks.mdx | 51 - .../hi/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/hi/substreams/introduction.mdx | 45 - .../src/pages/hi/substreams/publishing.mdx | 53 - .../src/pages/hi/substreams/quick-start.mdx | 42 - website/src/pages/hi/supported-networks.mdx | 28 - .../src/pages/hi/token-api/_meta-titles.json | 10 - website/src/pages/hi/token-api/_meta.js | 16 - .../src/pages/hi/token-api/endpoints/_meta.js | 4 - .../pages/hi/token-api/endpoints/pricing.mdx | 97 - .../pages/hi/token-api/endpoints/support.mdx | 23 - .../src/pages/hi/token-api/evm-dexs/_meta.js | 6 - .../src/pages/hi/token-api/evm-dexs/dexes.mdx | 9 - .../hi/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/hi/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/hi/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/hi/token-api/evm-nfts/_meta.js | 8 - .../hi/token-api/evm-nfts/collections.mdx | 16 - .../pages/hi/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/hi/token-api/evm-nfts/items.mdx | 9 - .../hi/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/hi/token-api/evm-nfts/sales.mdx | 9 - .../pages/hi/token-api/evm-nfts/transfers.mdx | 9 - .../pages/hi/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../hi/token-api/evm-tokens/balances.mdx | 9 - .../pages/hi/token-api/evm-tokens/holders.mdx | 9 - .../pages/hi/token-api/evm-tokens/tokens.mdx | 9 - .../hi/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/hi/token-api/faq.mdx | 109 - .../hi/token-api/guides/_meta-titles.json | 3 - .../src/pages/hi/token-api/guides/_meta.js | 3 - website/src/pages/hi/token-api/guides/gpt.mdx | 121 - .../pages/hi/token-api/monitoring/_meta.js | 5 - .../pages/hi/token-api/monitoring/health.mdx | 11 - .../hi/token-api/monitoring/networks.mdx | 9 - .../pages/hi/token-api/monitoring/version.mdx | 9 - .../src/pages/hi/token-api/quick-start.mdx | 77 - .../src/pages/hi/token-api/svm-dexs/_meta.js | 6 - .../src/pages/hi/token-api/svm-dexs/dexes.mdx | 9 - .../hi/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/hi/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/hi/token-api/svm-dexs/swaps.mdx | 9 - .../pages/hi/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../hi/token-api/svm-tokens/balances.mdx | 9 - .../pages/hi/token-api/svm-tokens/holders.mdx | 9 - .../pages/hi/token-api/svm-tokens/owner.mdx | 9 - .../pages/hi/token-api/svm-tokens/tokens.mdx | 9 - .../hi/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/hi/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/hi/token-api/tvm-dexs/dexes.mdx | 9 - .../hi/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/hi/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/hi/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/hi/token-api/tvm-tokens/_meta.js | 5 - .../pages/hi/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../hi/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/hi/translations.ts | 13 - website/src/pages/it/about.mdx | 67 - .../src/pages/it/ai-suite/_meta-titles.json | 6 - website/src/pages/it/ai-suite/_meta.js | 7 - .../src/pages/it/ai-suite/ai-introduction.mdx | 58 - .../pages/it/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/it/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/it/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/it/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../it/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/it/ai-suite/token-api-mcp/_meta.js | 6 - .../it/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/it/ai-suite/token-api-mcp/cline.mdx | 52 - .../it/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/it/archived/_meta-titles.json | 3 - website/src/pages/it/archived/_meta.js | 6 - .../src/pages/it/archived/arbitrum/_meta.js | 5 - .../it/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/it/archived/sunrise.mdx | 80 - website/src/pages/it/contracts.json | 4 - website/src/pages/it/contracts.mdx | 29 - website/src/pages/it/docsearch.json | 42 - website/src/pages/it/global.json | 78 - website/src/pages/it/graph-horizon/_meta.js | 5 - .../it/graph-horizon/migration-guide.mdx | 45 - .../src/pages/it/graph-horizon/overview.mdx | 48 - .../pages/it/graph-horizon/what-changes.mdx | 88 - website/src/pages/it/hypergraph/_meta.js | 4 - website/src/pages/it/hypergraph/faq.mdx | 76 - website/src/pages/it/hypergraph/overview.mdx | 100 - website/src/pages/it/index.json | 195 - .../src/pages/it/indexing/_meta-titles.json | 3 - website/src/pages/it/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../it/indexing/new-chain-integration.mdx | 70 - website/src/pages/it/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/it/indexing/tap.mdx | 189 - .../src/pages/it/indexing/tooling/_meta.js | 5 - .../pages/it/indexing/tooling/firehose.mdx | 24 - .../pages/it/indexing/tooling/graph-node.mdx | 345 -- .../pages/it/indexing/tooling/graphcast.mdx | 21 - .../src/pages/it/resources/_meta-titles.json | 4 - website/src/pages/it/resources/_meta.js | 10 - website/src/pages/it/resources/benefits.mdx | 92 - website/src/pages/it/resources/glossary.mdx | 81 - .../it/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/it/resources/roles/_meta.js | 4 - .../src/pages/it/resources/roles/curating.mdx | 89 - .../it/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../it/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/it/resources/tokenomics.mdx | 103 - .../src/pages/it/subgraphs/_meta-titles.json | 6 - website/src/pages/it/subgraphs/_meta.js | 13 - .../it/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../it/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/it/subgraphs/billing.mdx | 216 - .../it/subgraphs/developing/_meta-titles.json | 6 - .../pages/it/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../it/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../it/subgraphs/developing/developer-faq.mdx | 148 - .../it/subgraphs/developing/introduction.mdx | 31 - .../it/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../it/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/it/subgraphs/explorer.mdx | 255 - .../pages/it/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/it/subgraphs/guides/_meta.js | 12 - .../it/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/it/subgraphs/guides/enums.mdx | 274 - .../pages/it/subgraphs/guides/grafting.mdx | 202 - .../src/pages/it/subgraphs/guides/near.mdx | 283 - .../pages/it/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../it/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/it/subgraphs/querying/_meta.js | 13 - .../it/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../it/subgraphs/querying/graphql-api.mdx | 432 -- .../it/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/it/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/it/subgraphs/quick-start.mdx | 186 - .../pages/it/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/it/substreams/_meta-titles.json | 4 - website/src/pages/it/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/it/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/it/substreams/developing/sinks.mdx | 51 - .../it/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/it/substreams/introduction.mdx | 45 - .../src/pages/it/substreams/publishing.mdx | 53 - .../src/pages/it/substreams/quick-start.mdx | 42 - website/src/pages/it/supported-networks.mdx | 28 - .../src/pages/it/token-api/_meta-titles.json | 10 - website/src/pages/it/token-api/_meta.js | 16 - .../src/pages/it/token-api/endpoints/_meta.js | 4 - .../pages/it/token-api/endpoints/pricing.mdx | 97 - .../pages/it/token-api/endpoints/support.mdx | 23 - .../src/pages/it/token-api/evm-dexs/_meta.js | 6 - .../src/pages/it/token-api/evm-dexs/dexes.mdx | 9 - .../it/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/it/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/it/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/it/token-api/evm-nfts/_meta.js | 8 - .../it/token-api/evm-nfts/collections.mdx | 16 - .../pages/it/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/it/token-api/evm-nfts/items.mdx | 9 - .../it/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/it/token-api/evm-nfts/sales.mdx | 9 - .../pages/it/token-api/evm-nfts/transfers.mdx | 9 - .../pages/it/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../it/token-api/evm-tokens/balances.mdx | 9 - .../pages/it/token-api/evm-tokens/holders.mdx | 9 - .../pages/it/token-api/evm-tokens/tokens.mdx | 9 - .../it/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/it/token-api/faq.mdx | 109 - .../it/token-api/guides/_meta-titles.json | 3 - .../src/pages/it/token-api/guides/_meta.js | 3 - website/src/pages/it/token-api/guides/gpt.mdx | 121 - .../pages/it/token-api/monitoring/_meta.js | 5 - .../pages/it/token-api/monitoring/health.mdx | 11 - .../it/token-api/monitoring/networks.mdx | 9 - .../pages/it/token-api/monitoring/version.mdx | 9 - .../src/pages/it/token-api/quick-start.mdx | 77 - .../src/pages/it/token-api/svm-dexs/_meta.js | 6 - .../src/pages/it/token-api/svm-dexs/dexes.mdx | 9 - .../it/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/it/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/it/token-api/svm-dexs/swaps.mdx | 9 - .../pages/it/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../it/token-api/svm-tokens/balances.mdx | 9 - .../pages/it/token-api/svm-tokens/holders.mdx | 9 - .../pages/it/token-api/svm-tokens/owner.mdx | 9 - .../pages/it/token-api/svm-tokens/tokens.mdx | 9 - .../it/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/it/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/it/token-api/tvm-dexs/dexes.mdx | 9 - .../it/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/it/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/it/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/it/token-api/tvm-tokens/_meta.js | 5 - .../pages/it/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../it/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/it/translations.ts | 13 - website/src/pages/ja/about.mdx | 67 - .../src/pages/ja/ai-suite/_meta-titles.json | 6 - website/src/pages/ja/ai-suite/_meta.js | 7 - .../src/pages/ja/ai-suite/ai-introduction.mdx | 58 - .../pages/ja/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/ja/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/ja/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/ja/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../ja/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/ja/ai-suite/token-api-mcp/_meta.js | 6 - .../ja/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/ja/ai-suite/token-api-mcp/cline.mdx | 52 - .../ja/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/ja/archived/_meta-titles.json | 3 - website/src/pages/ja/archived/_meta.js | 6 - .../src/pages/ja/archived/arbitrum/_meta.js | 5 - .../ja/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/ja/archived/sunrise.mdx | 80 - website/src/pages/ja/contracts.json | 4 - website/src/pages/ja/contracts.mdx | 29 - website/src/pages/ja/docsearch.json | 42 - website/src/pages/ja/global.json | 78 - website/src/pages/ja/graph-horizon/_meta.js | 5 - .../ja/graph-horizon/migration-guide.mdx | 45 - .../src/pages/ja/graph-horizon/overview.mdx | 48 - .../pages/ja/graph-horizon/what-changes.mdx | 88 - website/src/pages/ja/hypergraph/_meta.js | 4 - website/src/pages/ja/hypergraph/faq.mdx | 76 - website/src/pages/ja/hypergraph/overview.mdx | 100 - website/src/pages/ja/index.json | 195 - .../src/pages/ja/indexing/_meta-titles.json | 3 - website/src/pages/ja/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../ja/indexing/new-chain-integration.mdx | 70 - website/src/pages/ja/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/ja/indexing/tap.mdx | 189 - .../src/pages/ja/indexing/tooling/_meta.js | 5 - .../pages/ja/indexing/tooling/firehose.mdx | 24 - .../pages/ja/indexing/tooling/graph-node.mdx | 345 -- .../pages/ja/indexing/tooling/graphcast.mdx | 21 - .../src/pages/ja/resources/_meta-titles.json | 4 - website/src/pages/ja/resources/_meta.js | 10 - website/src/pages/ja/resources/benefits.mdx | 92 - website/src/pages/ja/resources/glossary.mdx | 81 - .../ja/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/ja/resources/roles/_meta.js | 4 - .../src/pages/ja/resources/roles/curating.mdx | 89 - .../ja/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../ja/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/ja/resources/tokenomics.mdx | 103 - .../src/pages/ja/subgraphs/_meta-titles.json | 6 - website/src/pages/ja/subgraphs/_meta.js | 13 - .../ja/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../ja/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/ja/subgraphs/billing.mdx | 216 - .../ja/subgraphs/developing/_meta-titles.json | 6 - .../pages/ja/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../ja/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../ja/subgraphs/developing/developer-faq.mdx | 148 - .../ja/subgraphs/developing/introduction.mdx | 31 - .../ja/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../ja/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/ja/subgraphs/explorer.mdx | 255 - .../pages/ja/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/ja/subgraphs/guides/_meta.js | 12 - .../ja/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/ja/subgraphs/guides/enums.mdx | 274 - .../pages/ja/subgraphs/guides/grafting.mdx | 202 - .../src/pages/ja/subgraphs/guides/near.mdx | 283 - .../pages/ja/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../ja/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/ja/subgraphs/querying/_meta.js | 13 - .../ja/subgraphs/querying/best-practices.mdx | 486 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../ja/subgraphs/querying/graphql-api.mdx | 432 -- .../ja/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/ja/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/ja/subgraphs/quick-start.mdx | 186 - .../pages/ja/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/ja/substreams/_meta-titles.json | 4 - website/src/pages/ja/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/ja/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/ja/substreams/developing/sinks.mdx | 51 - .../ja/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/ja/substreams/introduction.mdx | 45 - .../src/pages/ja/substreams/publishing.mdx | 53 - .../src/pages/ja/substreams/quick-start.mdx | 42 - website/src/pages/ja/supported-networks.mdx | 28 - .../src/pages/ja/token-api/_meta-titles.json | 10 - website/src/pages/ja/token-api/_meta.js | 16 - .../src/pages/ja/token-api/endpoints/_meta.js | 4 - .../pages/ja/token-api/endpoints/pricing.mdx | 97 - .../pages/ja/token-api/endpoints/support.mdx | 23 - .../src/pages/ja/token-api/evm-dexs/_meta.js | 6 - .../src/pages/ja/token-api/evm-dexs/dexes.mdx | 9 - .../ja/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ja/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/ja/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/ja/token-api/evm-nfts/_meta.js | 8 - .../ja/token-api/evm-nfts/collections.mdx | 16 - .../pages/ja/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/ja/token-api/evm-nfts/items.mdx | 9 - .../ja/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/ja/token-api/evm-nfts/sales.mdx | 9 - .../pages/ja/token-api/evm-nfts/transfers.mdx | 9 - .../pages/ja/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../ja/token-api/evm-tokens/balances.mdx | 9 - .../pages/ja/token-api/evm-tokens/holders.mdx | 9 - .../pages/ja/token-api/evm-tokens/tokens.mdx | 9 - .../ja/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/ja/token-api/faq.mdx | 109 - .../ja/token-api/guides/_meta-titles.json | 3 - .../src/pages/ja/token-api/guides/_meta.js | 3 - website/src/pages/ja/token-api/guides/gpt.mdx | 121 - .../pages/ja/token-api/monitoring/_meta.js | 5 - .../pages/ja/token-api/monitoring/health.mdx | 11 - .../ja/token-api/monitoring/networks.mdx | 9 - .../pages/ja/token-api/monitoring/version.mdx | 9 - .../src/pages/ja/token-api/quick-start.mdx | 77 - .../src/pages/ja/token-api/svm-dexs/_meta.js | 6 - .../src/pages/ja/token-api/svm-dexs/dexes.mdx | 9 - .../ja/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/ja/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/ja/token-api/svm-dexs/swaps.mdx | 9 - .../pages/ja/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../ja/token-api/svm-tokens/balances.mdx | 9 - .../pages/ja/token-api/svm-tokens/holders.mdx | 9 - .../pages/ja/token-api/svm-tokens/owner.mdx | 9 - .../pages/ja/token-api/svm-tokens/tokens.mdx | 9 - .../ja/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/ja/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/ja/token-api/tvm-dexs/dexes.mdx | 9 - .../ja/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ja/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/ja/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/ja/token-api/tvm-tokens/_meta.js | 5 - .../pages/ja/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../ja/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/ja/translations.ts | 13 - website/src/pages/ko/about.mdx | 67 - .../src/pages/ko/ai-suite/_meta-titles.json | 6 - website/src/pages/ko/ai-suite/_meta.js | 7 - .../src/pages/ko/ai-suite/ai-introduction.mdx | 58 - .../pages/ko/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/ko/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/ko/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/ko/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../ko/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/ko/ai-suite/token-api-mcp/_meta.js | 6 - .../ko/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/ko/ai-suite/token-api-mcp/cline.mdx | 52 - .../ko/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/ko/archived/_meta-titles.json | 3 - website/src/pages/ko/archived/_meta.js | 6 - .../src/pages/ko/archived/arbitrum/_meta.js | 5 - .../ko/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/ko/archived/sunrise.mdx | 80 - website/src/pages/ko/contracts.json | 4 - website/src/pages/ko/contracts.mdx | 29 - website/src/pages/ko/docsearch.json | 42 - website/src/pages/ko/global.json | 78 - website/src/pages/ko/graph-horizon/_meta.js | 5 - .../ko/graph-horizon/migration-guide.mdx | 45 - .../src/pages/ko/graph-horizon/overview.mdx | 48 - .../pages/ko/graph-horizon/what-changes.mdx | 88 - website/src/pages/ko/hypergraph/_meta.js | 4 - website/src/pages/ko/hypergraph/faq.mdx | 76 - website/src/pages/ko/hypergraph/overview.mdx | 100 - website/src/pages/ko/index.json | 195 - .../src/pages/ko/indexing/_meta-titles.json | 3 - website/src/pages/ko/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../ko/indexing/new-chain-integration.mdx | 70 - website/src/pages/ko/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/ko/indexing/tap.mdx | 189 - .../src/pages/ko/indexing/tooling/_meta.js | 5 - .../pages/ko/indexing/tooling/firehose.mdx | 24 - .../pages/ko/indexing/tooling/graph-node.mdx | 345 -- .../pages/ko/indexing/tooling/graphcast.mdx | 21 - .../src/pages/ko/resources/_meta-titles.json | 4 - website/src/pages/ko/resources/_meta.js | 10 - website/src/pages/ko/resources/benefits.mdx | 92 - website/src/pages/ko/resources/glossary.mdx | 81 - .../ko/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/ko/resources/roles/_meta.js | 4 - .../src/pages/ko/resources/roles/curating.mdx | 89 - .../ko/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../ko/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/ko/resources/tokenomics.mdx | 103 - .../src/pages/ko/subgraphs/_meta-titles.json | 6 - website/src/pages/ko/subgraphs/_meta.js | 13 - .../ko/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../ko/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/ko/subgraphs/billing.mdx | 216 - .../ko/subgraphs/developing/_meta-titles.json | 6 - .../pages/ko/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../ko/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../ko/subgraphs/developing/developer-faq.mdx | 148 - .../ko/subgraphs/developing/introduction.mdx | 31 - .../ko/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../ko/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/ko/subgraphs/explorer.mdx | 255 - .../pages/ko/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/ko/subgraphs/guides/_meta.js | 12 - .../ko/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/ko/subgraphs/guides/enums.mdx | 274 - .../pages/ko/subgraphs/guides/grafting.mdx | 202 - .../src/pages/ko/subgraphs/guides/near.mdx | 283 - .../pages/ko/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../ko/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/ko/subgraphs/querying/_meta.js | 13 - .../ko/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../ko/subgraphs/querying/graphql-api.mdx | 432 -- .../ko/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/ko/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/ko/subgraphs/quick-start.mdx | 186 - .../pages/ko/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/ko/substreams/_meta-titles.json | 4 - website/src/pages/ko/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/ko/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/ko/substreams/developing/sinks.mdx | 51 - .../ko/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/ko/substreams/introduction.mdx | 45 - .../src/pages/ko/substreams/publishing.mdx | 53 - .../src/pages/ko/substreams/quick-start.mdx | 42 - website/src/pages/ko/supported-networks.mdx | 28 - .../src/pages/ko/token-api/_meta-titles.json | 10 - website/src/pages/ko/token-api/_meta.js | 16 - .../src/pages/ko/token-api/endpoints/_meta.js | 4 - .../pages/ko/token-api/endpoints/pricing.mdx | 97 - .../pages/ko/token-api/endpoints/support.mdx | 23 - .../src/pages/ko/token-api/evm-dexs/_meta.js | 6 - .../src/pages/ko/token-api/evm-dexs/dexes.mdx | 9 - .../ko/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ko/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/ko/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/ko/token-api/evm-nfts/_meta.js | 8 - .../ko/token-api/evm-nfts/collections.mdx | 16 - .../pages/ko/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/ko/token-api/evm-nfts/items.mdx | 9 - .../ko/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/ko/token-api/evm-nfts/sales.mdx | 9 - .../pages/ko/token-api/evm-nfts/transfers.mdx | 9 - .../pages/ko/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../ko/token-api/evm-tokens/balances.mdx | 9 - .../pages/ko/token-api/evm-tokens/holders.mdx | 9 - .../pages/ko/token-api/evm-tokens/tokens.mdx | 9 - .../ko/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/ko/token-api/faq.mdx | 109 - .../ko/token-api/guides/_meta-titles.json | 3 - .../src/pages/ko/token-api/guides/_meta.js | 3 - website/src/pages/ko/token-api/guides/gpt.mdx | 121 - .../pages/ko/token-api/monitoring/_meta.js | 5 - .../pages/ko/token-api/monitoring/health.mdx | 11 - .../ko/token-api/monitoring/networks.mdx | 9 - .../pages/ko/token-api/monitoring/version.mdx | 9 - .../src/pages/ko/token-api/quick-start.mdx | 77 - .../src/pages/ko/token-api/svm-dexs/_meta.js | 6 - .../src/pages/ko/token-api/svm-dexs/dexes.mdx | 9 - .../ko/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/ko/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/ko/token-api/svm-dexs/swaps.mdx | 9 - .../pages/ko/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../ko/token-api/svm-tokens/balances.mdx | 9 - .../pages/ko/token-api/svm-tokens/holders.mdx | 9 - .../pages/ko/token-api/svm-tokens/owner.mdx | 9 - .../pages/ko/token-api/svm-tokens/tokens.mdx | 9 - .../ko/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/ko/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/ko/token-api/tvm-dexs/dexes.mdx | 9 - .../ko/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ko/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/ko/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/ko/token-api/tvm-tokens/_meta.js | 5 - .../pages/ko/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../ko/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/ko/translations.ts | 13 - website/src/pages/mr/about.mdx | 67 - .../src/pages/mr/ai-suite/_meta-titles.json | 6 - website/src/pages/mr/ai-suite/_meta.js | 7 - .../src/pages/mr/ai-suite/ai-introduction.mdx | 58 - .../pages/mr/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/mr/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/mr/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/mr/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../mr/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/mr/ai-suite/token-api-mcp/_meta.js | 6 - .../mr/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/mr/ai-suite/token-api-mcp/cline.mdx | 52 - .../mr/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/mr/archived/_meta-titles.json | 3 - website/src/pages/mr/archived/_meta.js | 6 - .../src/pages/mr/archived/arbitrum/_meta.js | 5 - .../mr/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/mr/archived/sunrise.mdx | 80 - website/src/pages/mr/contracts.json | 4 - website/src/pages/mr/contracts.mdx | 29 - website/src/pages/mr/docsearch.json | 42 - website/src/pages/mr/global.json | 78 - website/src/pages/mr/graph-horizon/_meta.js | 5 - .../mr/graph-horizon/migration-guide.mdx | 45 - .../src/pages/mr/graph-horizon/overview.mdx | 48 - .../pages/mr/graph-horizon/what-changes.mdx | 88 - website/src/pages/mr/hypergraph/_meta.js | 4 - website/src/pages/mr/hypergraph/faq.mdx | 76 - website/src/pages/mr/hypergraph/overview.mdx | 100 - website/src/pages/mr/index.json | 195 - .../src/pages/mr/indexing/_meta-titles.json | 3 - website/src/pages/mr/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../mr/indexing/new-chain-integration.mdx | 70 - website/src/pages/mr/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/mr/indexing/tap.mdx | 189 - .../src/pages/mr/indexing/tooling/_meta.js | 5 - .../pages/mr/indexing/tooling/firehose.mdx | 24 - .../pages/mr/indexing/tooling/graph-node.mdx | 345 -- .../pages/mr/indexing/tooling/graphcast.mdx | 21 - .../src/pages/mr/resources/_meta-titles.json | 4 - website/src/pages/mr/resources/_meta.js | 10 - website/src/pages/mr/resources/benefits.mdx | 92 - website/src/pages/mr/resources/glossary.mdx | 81 - .../mr/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/mr/resources/roles/_meta.js | 4 - .../src/pages/mr/resources/roles/curating.mdx | 89 - .../mr/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../mr/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/mr/resources/tokenomics.mdx | 103 - .../src/pages/mr/subgraphs/_meta-titles.json | 6 - website/src/pages/mr/subgraphs/_meta.js | 13 - .../mr/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../mr/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/mr/subgraphs/billing.mdx | 216 - .../mr/subgraphs/developing/_meta-titles.json | 6 - .../pages/mr/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../mr/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../mr/subgraphs/developing/developer-faq.mdx | 148 - .../mr/subgraphs/developing/introduction.mdx | 31 - .../mr/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../mr/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/mr/subgraphs/explorer.mdx | 255 - .../pages/mr/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/mr/subgraphs/guides/_meta.js | 12 - .../mr/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/mr/subgraphs/guides/enums.mdx | 274 - .../pages/mr/subgraphs/guides/grafting.mdx | 202 - .../src/pages/mr/subgraphs/guides/near.mdx | 283 - .../pages/mr/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../mr/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/mr/subgraphs/querying/_meta.js | 13 - .../mr/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../mr/subgraphs/querying/graphql-api.mdx | 432 -- .../mr/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/mr/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/mr/subgraphs/quick-start.mdx | 186 - .../pages/mr/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/mr/substreams/_meta-titles.json | 4 - website/src/pages/mr/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/mr/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/mr/substreams/developing/sinks.mdx | 51 - .../mr/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/mr/substreams/introduction.mdx | 45 - .../src/pages/mr/substreams/publishing.mdx | 53 - .../src/pages/mr/substreams/quick-start.mdx | 42 - website/src/pages/mr/supported-networks.mdx | 28 - .../src/pages/mr/token-api/_meta-titles.json | 10 - website/src/pages/mr/token-api/_meta.js | 16 - .../src/pages/mr/token-api/endpoints/_meta.js | 4 - .../pages/mr/token-api/endpoints/pricing.mdx | 97 - .../pages/mr/token-api/endpoints/support.mdx | 23 - .../src/pages/mr/token-api/evm-dexs/_meta.js | 6 - .../src/pages/mr/token-api/evm-dexs/dexes.mdx | 9 - .../mr/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/mr/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/mr/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/mr/token-api/evm-nfts/_meta.js | 8 - .../mr/token-api/evm-nfts/collections.mdx | 16 - .../pages/mr/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/mr/token-api/evm-nfts/items.mdx | 9 - .../mr/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/mr/token-api/evm-nfts/sales.mdx | 9 - .../pages/mr/token-api/evm-nfts/transfers.mdx | 9 - .../pages/mr/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../mr/token-api/evm-tokens/balances.mdx | 9 - .../pages/mr/token-api/evm-tokens/holders.mdx | 9 - .../pages/mr/token-api/evm-tokens/tokens.mdx | 9 - .../mr/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/mr/token-api/faq.mdx | 109 - .../mr/token-api/guides/_meta-titles.json | 3 - .../src/pages/mr/token-api/guides/_meta.js | 3 - website/src/pages/mr/token-api/guides/gpt.mdx | 121 - .../pages/mr/token-api/monitoring/_meta.js | 5 - .../pages/mr/token-api/monitoring/health.mdx | 11 - .../mr/token-api/monitoring/networks.mdx | 9 - .../pages/mr/token-api/monitoring/version.mdx | 9 - .../src/pages/mr/token-api/quick-start.mdx | 77 - .../src/pages/mr/token-api/svm-dexs/_meta.js | 6 - .../src/pages/mr/token-api/svm-dexs/dexes.mdx | 9 - .../mr/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/mr/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/mr/token-api/svm-dexs/swaps.mdx | 9 - .../pages/mr/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../mr/token-api/svm-tokens/balances.mdx | 9 - .../pages/mr/token-api/svm-tokens/holders.mdx | 9 - .../pages/mr/token-api/svm-tokens/owner.mdx | 9 - .../pages/mr/token-api/svm-tokens/tokens.mdx | 9 - .../mr/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/mr/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/mr/token-api/tvm-dexs/dexes.mdx | 9 - .../mr/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/mr/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/mr/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/mr/token-api/tvm-tokens/_meta.js | 5 - .../pages/mr/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../mr/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/mr/translations.ts | 13 - website/src/pages/nl/about.mdx | 67 - .../src/pages/nl/ai-suite/_meta-titles.json | 6 - website/src/pages/nl/ai-suite/_meta.js | 7 - .../src/pages/nl/ai-suite/ai-introduction.mdx | 58 - .../pages/nl/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/nl/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/nl/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/nl/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../nl/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/nl/ai-suite/token-api-mcp/_meta.js | 6 - .../nl/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/nl/ai-suite/token-api-mcp/cline.mdx | 52 - .../nl/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/nl/archived/_meta-titles.json | 3 - website/src/pages/nl/archived/_meta.js | 6 - .../src/pages/nl/archived/arbitrum/_meta.js | 5 - .../nl/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/nl/archived/sunrise.mdx | 80 - website/src/pages/nl/contracts.json | 4 - website/src/pages/nl/contracts.mdx | 29 - website/src/pages/nl/docsearch.json | 42 - website/src/pages/nl/global.json | 78 - website/src/pages/nl/graph-horizon/_meta.js | 5 - .../nl/graph-horizon/migration-guide.mdx | 45 - .../src/pages/nl/graph-horizon/overview.mdx | 48 - .../pages/nl/graph-horizon/what-changes.mdx | 88 - website/src/pages/nl/hypergraph/_meta.js | 4 - website/src/pages/nl/hypergraph/faq.mdx | 76 - website/src/pages/nl/hypergraph/overview.mdx | 100 - website/src/pages/nl/index.json | 195 - .../src/pages/nl/indexing/_meta-titles.json | 3 - website/src/pages/nl/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../nl/indexing/new-chain-integration.mdx | 70 - website/src/pages/nl/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/nl/indexing/tap.mdx | 189 - .../src/pages/nl/indexing/tooling/_meta.js | 5 - .../pages/nl/indexing/tooling/firehose.mdx | 24 - .../pages/nl/indexing/tooling/graph-node.mdx | 345 -- .../pages/nl/indexing/tooling/graphcast.mdx | 21 - .../src/pages/nl/resources/_meta-titles.json | 4 - website/src/pages/nl/resources/_meta.js | 10 - website/src/pages/nl/resources/benefits.mdx | 92 - website/src/pages/nl/resources/glossary.mdx | 81 - .../nl/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/nl/resources/roles/_meta.js | 4 - .../src/pages/nl/resources/roles/curating.mdx | 89 - .../nl/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../nl/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/nl/resources/tokenomics.mdx | 103 - .../src/pages/nl/subgraphs/_meta-titles.json | 6 - website/src/pages/nl/subgraphs/_meta.js | 13 - .../nl/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../nl/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/nl/subgraphs/billing.mdx | 216 - .../nl/subgraphs/developing/_meta-titles.json | 6 - .../pages/nl/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../nl/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../nl/subgraphs/developing/developer-faq.mdx | 148 - .../nl/subgraphs/developing/introduction.mdx | 31 - .../nl/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../nl/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/nl/subgraphs/explorer.mdx | 255 - .../pages/nl/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/nl/subgraphs/guides/_meta.js | 12 - .../nl/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/nl/subgraphs/guides/enums.mdx | 274 - .../pages/nl/subgraphs/guides/grafting.mdx | 202 - .../src/pages/nl/subgraphs/guides/near.mdx | 283 - .../pages/nl/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../nl/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/nl/subgraphs/querying/_meta.js | 13 - .../nl/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../nl/subgraphs/querying/graphql-api.mdx | 432 -- .../nl/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/nl/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/nl/subgraphs/quick-start.mdx | 186 - .../pages/nl/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/nl/substreams/_meta-titles.json | 4 - website/src/pages/nl/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/nl/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/nl/substreams/developing/sinks.mdx | 51 - .../nl/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/nl/substreams/introduction.mdx | 45 - .../src/pages/nl/substreams/publishing.mdx | 53 - .../src/pages/nl/substreams/quick-start.mdx | 42 - website/src/pages/nl/supported-networks.mdx | 28 - .../src/pages/nl/token-api/_meta-titles.json | 10 - website/src/pages/nl/token-api/_meta.js | 16 - .../src/pages/nl/token-api/endpoints/_meta.js | 4 - .../pages/nl/token-api/endpoints/pricing.mdx | 97 - .../pages/nl/token-api/endpoints/support.mdx | 23 - .../src/pages/nl/token-api/evm-dexs/_meta.js | 6 - .../src/pages/nl/token-api/evm-dexs/dexes.mdx | 9 - .../nl/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/nl/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/nl/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/nl/token-api/evm-nfts/_meta.js | 8 - .../nl/token-api/evm-nfts/collections.mdx | 16 - .../pages/nl/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/nl/token-api/evm-nfts/items.mdx | 9 - .../nl/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/nl/token-api/evm-nfts/sales.mdx | 9 - .../pages/nl/token-api/evm-nfts/transfers.mdx | 9 - .../pages/nl/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../nl/token-api/evm-tokens/balances.mdx | 9 - .../pages/nl/token-api/evm-tokens/holders.mdx | 9 - .../pages/nl/token-api/evm-tokens/tokens.mdx | 9 - .../nl/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/nl/token-api/faq.mdx | 109 - .../nl/token-api/guides/_meta-titles.json | 3 - .../src/pages/nl/token-api/guides/_meta.js | 3 - website/src/pages/nl/token-api/guides/gpt.mdx | 121 - .../pages/nl/token-api/monitoring/_meta.js | 5 - .../pages/nl/token-api/monitoring/health.mdx | 11 - .../nl/token-api/monitoring/networks.mdx | 9 - .../pages/nl/token-api/monitoring/version.mdx | 9 - .../src/pages/nl/token-api/quick-start.mdx | 77 - .../src/pages/nl/token-api/svm-dexs/_meta.js | 6 - .../src/pages/nl/token-api/svm-dexs/dexes.mdx | 9 - .../nl/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/nl/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/nl/token-api/svm-dexs/swaps.mdx | 9 - .../pages/nl/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../nl/token-api/svm-tokens/balances.mdx | 9 - .../pages/nl/token-api/svm-tokens/holders.mdx | 9 - .../pages/nl/token-api/svm-tokens/owner.mdx | 9 - .../pages/nl/token-api/svm-tokens/tokens.mdx | 9 - .../nl/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/nl/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/nl/token-api/tvm-dexs/dexes.mdx | 9 - .../nl/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/nl/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/nl/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/nl/token-api/tvm-tokens/_meta.js | 5 - .../pages/nl/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../nl/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/nl/translations.ts | 13 - website/src/pages/pl/about.mdx | 67 - .../src/pages/pl/ai-suite/_meta-titles.json | 6 - website/src/pages/pl/ai-suite/_meta.js | 7 - .../src/pages/pl/ai-suite/ai-introduction.mdx | 58 - .../pages/pl/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/pl/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/pl/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/pl/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../pl/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/pl/ai-suite/token-api-mcp/_meta.js | 6 - .../pl/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/pl/ai-suite/token-api-mcp/cline.mdx | 52 - .../pl/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/pl/archived/_meta-titles.json | 3 - website/src/pages/pl/archived/_meta.js | 6 - .../src/pages/pl/archived/arbitrum/_meta.js | 5 - .../pl/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/pl/archived/sunrise.mdx | 80 - website/src/pages/pl/contracts.json | 4 - website/src/pages/pl/contracts.mdx | 29 - website/src/pages/pl/docsearch.json | 42 - website/src/pages/pl/global.json | 78 - website/src/pages/pl/graph-horizon/_meta.js | 5 - .../pl/graph-horizon/migration-guide.mdx | 45 - .../src/pages/pl/graph-horizon/overview.mdx | 48 - .../pages/pl/graph-horizon/what-changes.mdx | 88 - website/src/pages/pl/hypergraph/_meta.js | 4 - website/src/pages/pl/hypergraph/faq.mdx | 76 - website/src/pages/pl/hypergraph/overview.mdx | 100 - website/src/pages/pl/index.json | 195 - .../src/pages/pl/indexing/_meta-titles.json | 3 - website/src/pages/pl/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../pl/indexing/new-chain-integration.mdx | 70 - website/src/pages/pl/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/pl/indexing/tap.mdx | 189 - .../src/pages/pl/indexing/tooling/_meta.js | 5 - .../pages/pl/indexing/tooling/firehose.mdx | 24 - .../pages/pl/indexing/tooling/graph-node.mdx | 345 -- .../pages/pl/indexing/tooling/graphcast.mdx | 21 - .../src/pages/pl/resources/_meta-titles.json | 4 - website/src/pages/pl/resources/_meta.js | 10 - website/src/pages/pl/resources/benefits.mdx | 92 - website/src/pages/pl/resources/glossary.mdx | 81 - .../pl/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/pl/resources/roles/_meta.js | 4 - .../src/pages/pl/resources/roles/curating.mdx | 89 - .../pl/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../pl/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/pl/resources/tokenomics.mdx | 103 - .../src/pages/pl/subgraphs/_meta-titles.json | 6 - website/src/pages/pl/subgraphs/_meta.js | 13 - .../pl/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../pl/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/pl/subgraphs/billing.mdx | 216 - .../pl/subgraphs/developing/_meta-titles.json | 6 - .../pages/pl/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../pl/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../pl/subgraphs/developing/developer-faq.mdx | 148 - .../pl/subgraphs/developing/introduction.mdx | 31 - .../pl/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../pl/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/pl/subgraphs/explorer.mdx | 255 - .../pages/pl/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/pl/subgraphs/guides/_meta.js | 12 - .../pl/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/pl/subgraphs/guides/enums.mdx | 274 - .../pages/pl/subgraphs/guides/grafting.mdx | 202 - .../src/pages/pl/subgraphs/guides/near.mdx | 283 - .../pages/pl/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../pl/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/pl/subgraphs/querying/_meta.js | 13 - .../pl/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../pl/subgraphs/querying/graphql-api.mdx | 432 -- .../pl/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/pl/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/pl/subgraphs/quick-start.mdx | 186 - .../pages/pl/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/pl/substreams/_meta-titles.json | 4 - website/src/pages/pl/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/pl/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/pl/substreams/developing/sinks.mdx | 51 - .../pl/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/pl/substreams/introduction.mdx | 45 - .../src/pages/pl/substreams/publishing.mdx | 53 - .../src/pages/pl/substreams/quick-start.mdx | 42 - website/src/pages/pl/supported-networks.mdx | 28 - .../src/pages/pl/token-api/_meta-titles.json | 10 - website/src/pages/pl/token-api/_meta.js | 16 - .../src/pages/pl/token-api/endpoints/_meta.js | 4 - .../pages/pl/token-api/endpoints/pricing.mdx | 97 - .../pages/pl/token-api/endpoints/support.mdx | 23 - .../src/pages/pl/token-api/evm-dexs/_meta.js | 6 - .../src/pages/pl/token-api/evm-dexs/dexes.mdx | 9 - .../pl/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/pl/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/pl/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/pl/token-api/evm-nfts/_meta.js | 8 - .../pl/token-api/evm-nfts/collections.mdx | 16 - .../pages/pl/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/pl/token-api/evm-nfts/items.mdx | 9 - .../pl/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/pl/token-api/evm-nfts/sales.mdx | 9 - .../pages/pl/token-api/evm-nfts/transfers.mdx | 9 - .../pages/pl/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../pl/token-api/evm-tokens/balances.mdx | 9 - .../pages/pl/token-api/evm-tokens/holders.mdx | 9 - .../pages/pl/token-api/evm-tokens/tokens.mdx | 9 - .../pl/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/pl/token-api/faq.mdx | 109 - .../pl/token-api/guides/_meta-titles.json | 3 - .../src/pages/pl/token-api/guides/_meta.js | 3 - website/src/pages/pl/token-api/guides/gpt.mdx | 121 - .../pages/pl/token-api/monitoring/_meta.js | 5 - .../pages/pl/token-api/monitoring/health.mdx | 11 - .../pl/token-api/monitoring/networks.mdx | 9 - .../pages/pl/token-api/monitoring/version.mdx | 9 - .../src/pages/pl/token-api/quick-start.mdx | 77 - .../src/pages/pl/token-api/svm-dexs/_meta.js | 6 - .../src/pages/pl/token-api/svm-dexs/dexes.mdx | 9 - .../pl/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/pl/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/pl/token-api/svm-dexs/swaps.mdx | 9 - .../pages/pl/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../pl/token-api/svm-tokens/balances.mdx | 9 - .../pages/pl/token-api/svm-tokens/holders.mdx | 9 - .../pages/pl/token-api/svm-tokens/owner.mdx | 9 - .../pages/pl/token-api/svm-tokens/tokens.mdx | 9 - .../pl/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/pl/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/pl/token-api/tvm-dexs/dexes.mdx | 9 - .../pl/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/pl/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/pl/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/pl/token-api/tvm-tokens/_meta.js | 5 - .../pages/pl/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../pl/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/pl/translations.ts | 13 - website/src/pages/pt/about.mdx | 67 - .../src/pages/pt/ai-suite/_meta-titles.json | 6 - website/src/pages/pt/ai-suite/_meta.js | 7 - .../src/pages/pt/ai-suite/ai-introduction.mdx | 58 - .../pages/pt/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/pt/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/pt/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/pt/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../pt/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/pt/ai-suite/token-api-mcp/_meta.js | 6 - .../pt/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/pt/ai-suite/token-api-mcp/cline.mdx | 52 - .../pt/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/pt/archived/_meta-titles.json | 3 - website/src/pages/pt/archived/_meta.js | 6 - .../src/pages/pt/archived/arbitrum/_meta.js | 5 - .../pt/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/pt/archived/sunrise.mdx | 80 - website/src/pages/pt/contracts.json | 4 - website/src/pages/pt/contracts.mdx | 29 - website/src/pages/pt/docsearch.json | 42 - website/src/pages/pt/global.json | 78 - website/src/pages/pt/graph-horizon/_meta.js | 5 - .../pt/graph-horizon/migration-guide.mdx | 45 - .../src/pages/pt/graph-horizon/overview.mdx | 48 - .../pages/pt/graph-horizon/what-changes.mdx | 88 - website/src/pages/pt/hypergraph/_meta.js | 4 - website/src/pages/pt/hypergraph/faq.mdx | 76 - website/src/pages/pt/hypergraph/overview.mdx | 100 - website/src/pages/pt/index.json | 195 - .../src/pages/pt/indexing/_meta-titles.json | 3 - website/src/pages/pt/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../pt/indexing/new-chain-integration.mdx | 70 - website/src/pages/pt/indexing/overview.mdx | 815 --- .../supported-network-requirements.mdx | 18 - website/src/pages/pt/indexing/tap.mdx | 189 - .../src/pages/pt/indexing/tooling/_meta.js | 5 - .../pages/pt/indexing/tooling/firehose.mdx | 24 - .../pages/pt/indexing/tooling/graph-node.mdx | 345 -- .../pages/pt/indexing/tooling/graphcast.mdx | 21 - .../src/pages/pt/resources/_meta-titles.json | 4 - website/src/pages/pt/resources/_meta.js | 10 - website/src/pages/pt/resources/benefits.mdx | 93 - website/src/pages/pt/resources/glossary.mdx | 81 - .../pt/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 540 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/pt/resources/roles/_meta.js | 4 - .../src/pages/pt/resources/roles/curating.mdx | 89 - .../pt/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../pt/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/pt/resources/tokenomics.mdx | 103 - .../src/pages/pt/subgraphs/_meta-titles.json | 6 - website/src/pages/pt/subgraphs/_meta.js | 13 - .../pt/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../pt/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/pt/subgraphs/billing.mdx | 216 - .../pt/subgraphs/developing/_meta-titles.json | 6 - .../pages/pt/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../pt/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1413 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../pt/subgraphs/developing/developer-faq.mdx | 148 - .../pt/subgraphs/developing/introduction.mdx | 31 - .../pt/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../pt/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/pt/subgraphs/explorer.mdx | 255 - .../pages/pt/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/pt/subgraphs/guides/_meta.js | 12 - .../pt/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/pt/subgraphs/guides/enums.mdx | 274 - .../pages/pt/subgraphs/guides/grafting.mdx | 202 - .../src/pages/pt/subgraphs/guides/near.mdx | 283 - .../pages/pt/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../pt/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/pt/subgraphs/querying/_meta.js | 13 - .../pt/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 609 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../pt/subgraphs/querying/graphql-api.mdx | 432 -- .../pt/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/pt/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/pt/subgraphs/quick-start.mdx | 186 - .../pages/pt/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/pt/substreams/_meta-titles.json | 4 - website/src/pages/pt/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/pt/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/pt/substreams/developing/sinks.mdx | 51 - .../pt/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/pt/substreams/introduction.mdx | 45 - .../src/pages/pt/substreams/publishing.mdx | 53 - .../src/pages/pt/substreams/quick-start.mdx | 42 - website/src/pages/pt/supported-networks.mdx | 28 - .../src/pages/pt/token-api/_meta-titles.json | 10 - website/src/pages/pt/token-api/_meta.js | 16 - .../src/pages/pt/token-api/endpoints/_meta.js | 4 - .../pages/pt/token-api/endpoints/pricing.mdx | 97 - .../pages/pt/token-api/endpoints/support.mdx | 23 - .../src/pages/pt/token-api/evm-dexs/_meta.js | 6 - .../src/pages/pt/token-api/evm-dexs/dexes.mdx | 9 - .../pt/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/pt/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/pt/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/pt/token-api/evm-nfts/_meta.js | 8 - .../pt/token-api/evm-nfts/collections.mdx | 16 - .../pages/pt/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/pt/token-api/evm-nfts/items.mdx | 9 - .../pt/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/pt/token-api/evm-nfts/sales.mdx | 9 - .../pages/pt/token-api/evm-nfts/transfers.mdx | 9 - .../pages/pt/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../pt/token-api/evm-tokens/balances.mdx | 9 - .../pages/pt/token-api/evm-tokens/holders.mdx | 9 - .../pages/pt/token-api/evm-tokens/tokens.mdx | 9 - .../pt/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/pt/token-api/faq.mdx | 109 - .../pt/token-api/guides/_meta-titles.json | 3 - .../src/pages/pt/token-api/guides/_meta.js | 3 - website/src/pages/pt/token-api/guides/gpt.mdx | 121 - .../pages/pt/token-api/monitoring/_meta.js | 5 - .../pages/pt/token-api/monitoring/health.mdx | 11 - .../pt/token-api/monitoring/networks.mdx | 9 - .../pages/pt/token-api/monitoring/version.mdx | 9 - .../src/pages/pt/token-api/quick-start.mdx | 77 - .../src/pages/pt/token-api/svm-dexs/_meta.js | 6 - .../src/pages/pt/token-api/svm-dexs/dexes.mdx | 9 - .../pt/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/pt/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/pt/token-api/svm-dexs/swaps.mdx | 9 - .../pages/pt/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../pt/token-api/svm-tokens/balances.mdx | 9 - .../pages/pt/token-api/svm-tokens/holders.mdx | 9 - .../pages/pt/token-api/svm-tokens/owner.mdx | 9 - .../pages/pt/token-api/svm-tokens/tokens.mdx | 9 - .../pt/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/pt/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/pt/token-api/tvm-dexs/dexes.mdx | 9 - .../pt/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/pt/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/pt/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/pt/token-api/tvm-tokens/_meta.js | 5 - .../pages/pt/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../pt/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/pt/translations.ts | 13 - website/src/pages/ro/about.mdx | 67 - .../src/pages/ro/ai-suite/_meta-titles.json | 6 - website/src/pages/ro/ai-suite/_meta.js | 7 - .../src/pages/ro/ai-suite/ai-introduction.mdx | 58 - .../pages/ro/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/ro/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/ro/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/ro/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../ro/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/ro/ai-suite/token-api-mcp/_meta.js | 6 - .../ro/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/ro/ai-suite/token-api-mcp/cline.mdx | 52 - .../ro/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/ro/archived/_meta-titles.json | 3 - website/src/pages/ro/archived/_meta.js | 6 - .../src/pages/ro/archived/arbitrum/_meta.js | 5 - .../ro/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/ro/archived/sunrise.mdx | 80 - website/src/pages/ro/contracts.json | 4 - website/src/pages/ro/contracts.mdx | 29 - website/src/pages/ro/docsearch.json | 42 - website/src/pages/ro/global.json | 78 - website/src/pages/ro/graph-horizon/_meta.js | 5 - .../ro/graph-horizon/migration-guide.mdx | 45 - .../src/pages/ro/graph-horizon/overview.mdx | 48 - .../pages/ro/graph-horizon/what-changes.mdx | 88 - website/src/pages/ro/hypergraph/_meta.js | 4 - website/src/pages/ro/hypergraph/faq.mdx | 76 - website/src/pages/ro/hypergraph/overview.mdx | 100 - website/src/pages/ro/index.json | 195 - .../src/pages/ro/indexing/_meta-titles.json | 3 - website/src/pages/ro/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../ro/indexing/new-chain-integration.mdx | 70 - website/src/pages/ro/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/ro/indexing/tap.mdx | 189 - .../src/pages/ro/indexing/tooling/_meta.js | 5 - .../pages/ro/indexing/tooling/firehose.mdx | 24 - .../pages/ro/indexing/tooling/graph-node.mdx | 345 -- .../pages/ro/indexing/tooling/graphcast.mdx | 21 - .../src/pages/ro/resources/_meta-titles.json | 4 - website/src/pages/ro/resources/_meta.js | 10 - website/src/pages/ro/resources/benefits.mdx | 92 - website/src/pages/ro/resources/glossary.mdx | 81 - .../ro/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/ro/resources/roles/_meta.js | 4 - .../src/pages/ro/resources/roles/curating.mdx | 89 - .../ro/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../ro/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/ro/resources/tokenomics.mdx | 103 - .../src/pages/ro/subgraphs/_meta-titles.json | 6 - website/src/pages/ro/subgraphs/_meta.js | 13 - .../ro/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../ro/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/ro/subgraphs/billing.mdx | 216 - .../ro/subgraphs/developing/_meta-titles.json | 6 - .../pages/ro/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../ro/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../ro/subgraphs/developing/developer-faq.mdx | 148 - .../ro/subgraphs/developing/introduction.mdx | 31 - .../ro/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../ro/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/ro/subgraphs/explorer.mdx | 255 - .../pages/ro/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/ro/subgraphs/guides/_meta.js | 12 - .../ro/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/ro/subgraphs/guides/enums.mdx | 274 - .../pages/ro/subgraphs/guides/grafting.mdx | 202 - .../src/pages/ro/subgraphs/guides/near.mdx | 283 - .../pages/ro/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../ro/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/ro/subgraphs/querying/_meta.js | 13 - .../ro/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../ro/subgraphs/querying/graphql-api.mdx | 432 -- .../ro/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/ro/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/ro/subgraphs/quick-start.mdx | 186 - .../pages/ro/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/ro/substreams/_meta-titles.json | 4 - website/src/pages/ro/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/ro/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/ro/substreams/developing/sinks.mdx | 51 - .../ro/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/ro/substreams/introduction.mdx | 45 - .../src/pages/ro/substreams/publishing.mdx | 53 - .../src/pages/ro/substreams/quick-start.mdx | 42 - website/src/pages/ro/supported-networks.mdx | 28 - .../src/pages/ro/token-api/_meta-titles.json | 10 - website/src/pages/ro/token-api/_meta.js | 16 - .../src/pages/ro/token-api/endpoints/_meta.js | 4 - .../pages/ro/token-api/endpoints/pricing.mdx | 97 - .../pages/ro/token-api/endpoints/support.mdx | 23 - .../src/pages/ro/token-api/evm-dexs/_meta.js | 6 - .../src/pages/ro/token-api/evm-dexs/dexes.mdx | 9 - .../ro/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ro/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/ro/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/ro/token-api/evm-nfts/_meta.js | 8 - .../ro/token-api/evm-nfts/collections.mdx | 16 - .../pages/ro/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/ro/token-api/evm-nfts/items.mdx | 9 - .../ro/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/ro/token-api/evm-nfts/sales.mdx | 9 - .../pages/ro/token-api/evm-nfts/transfers.mdx | 9 - .../pages/ro/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../ro/token-api/evm-tokens/balances.mdx | 9 - .../pages/ro/token-api/evm-tokens/holders.mdx | 9 - .../pages/ro/token-api/evm-tokens/tokens.mdx | 9 - .../ro/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/ro/token-api/faq.mdx | 109 - .../ro/token-api/guides/_meta-titles.json | 3 - .../src/pages/ro/token-api/guides/_meta.js | 3 - website/src/pages/ro/token-api/guides/gpt.mdx | 121 - .../pages/ro/token-api/monitoring/_meta.js | 5 - .../pages/ro/token-api/monitoring/health.mdx | 11 - .../ro/token-api/monitoring/networks.mdx | 9 - .../pages/ro/token-api/monitoring/version.mdx | 9 - .../src/pages/ro/token-api/quick-start.mdx | 77 - .../src/pages/ro/token-api/svm-dexs/_meta.js | 6 - .../src/pages/ro/token-api/svm-dexs/dexes.mdx | 9 - .../ro/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/ro/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/ro/token-api/svm-dexs/swaps.mdx | 9 - .../pages/ro/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../ro/token-api/svm-tokens/balances.mdx | 9 - .../pages/ro/token-api/svm-tokens/holders.mdx | 9 - .../pages/ro/token-api/svm-tokens/owner.mdx | 9 - .../pages/ro/token-api/svm-tokens/tokens.mdx | 9 - .../ro/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/ro/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/ro/token-api/tvm-dexs/dexes.mdx | 9 - .../ro/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ro/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/ro/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/ro/token-api/tvm-tokens/_meta.js | 5 - .../pages/ro/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../ro/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/ro/translations.ts | 13 - website/src/pages/ru/about.mdx | 67 - .../src/pages/ru/ai-suite/_meta-titles.json | 6 - website/src/pages/ru/ai-suite/_meta.js | 7 - .../src/pages/ru/ai-suite/ai-introduction.mdx | 58 - .../pages/ru/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/ru/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/ru/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/ru/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../ru/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/ru/ai-suite/token-api-mcp/_meta.js | 6 - .../ru/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/ru/ai-suite/token-api-mcp/cline.mdx | 52 - .../ru/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/ru/archived/_meta-titles.json | 3 - website/src/pages/ru/archived/_meta.js | 6 - .../src/pages/ru/archived/arbitrum/_meta.js | 5 - .../ru/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/ru/archived/sunrise.mdx | 80 - website/src/pages/ru/contracts.json | 4 - website/src/pages/ru/contracts.mdx | 29 - website/src/pages/ru/docsearch.json | 42 - website/src/pages/ru/global.json | 78 - website/src/pages/ru/graph-horizon/_meta.js | 5 - .../ru/graph-horizon/migration-guide.mdx | 45 - .../src/pages/ru/graph-horizon/overview.mdx | 48 - .../pages/ru/graph-horizon/what-changes.mdx | 88 - website/src/pages/ru/hypergraph/_meta.js | 4 - website/src/pages/ru/hypergraph/faq.mdx | 76 - website/src/pages/ru/hypergraph/overview.mdx | 100 - website/src/pages/ru/index.json | 195 - .../src/pages/ru/indexing/_meta-titles.json | 3 - website/src/pages/ru/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../ru/indexing/new-chain-integration.mdx | 70 - website/src/pages/ru/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/ru/indexing/tap.mdx | 189 - .../src/pages/ru/indexing/tooling/_meta.js | 5 - .../pages/ru/indexing/tooling/firehose.mdx | 24 - .../pages/ru/indexing/tooling/graph-node.mdx | 345 -- .../pages/ru/indexing/tooling/graphcast.mdx | 21 - .../src/pages/ru/resources/_meta-titles.json | 4 - website/src/pages/ru/resources/_meta.js | 10 - website/src/pages/ru/resources/benefits.mdx | 92 - website/src/pages/ru/resources/glossary.mdx | 81 - .../ru/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/ru/resources/roles/_meta.js | 4 - .../src/pages/ru/resources/roles/curating.mdx | 89 - .../ru/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../ru/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/ru/resources/tokenomics.mdx | 103 - .../src/pages/ru/subgraphs/_meta-titles.json | 6 - website/src/pages/ru/subgraphs/_meta.js | 13 - .../ru/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../ru/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/ru/subgraphs/billing.mdx | 216 - .../ru/subgraphs/developing/_meta-titles.json | 6 - .../pages/ru/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../ru/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 241 - .../deploying/using-subgraph-studio.mdx | 131 - .../ru/subgraphs/developing/developer-faq.mdx | 148 - .../ru/subgraphs/developing/introduction.mdx | 31 - .../ru/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../ru/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/ru/subgraphs/explorer.mdx | 255 - .../pages/ru/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/ru/subgraphs/guides/_meta.js | 12 - .../ru/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/ru/subgraphs/guides/enums.mdx | 274 - .../pages/ru/subgraphs/guides/grafting.mdx | 202 - .../src/pages/ru/subgraphs/guides/near.mdx | 283 - .../pages/ru/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../ru/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/ru/subgraphs/querying/_meta.js | 13 - .../ru/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../ru/subgraphs/querying/graphql-api.mdx | 432 -- .../ru/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/ru/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/ru/subgraphs/quick-start.mdx | 186 - .../pages/ru/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/ru/substreams/_meta-titles.json | 4 - website/src/pages/ru/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/ru/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/ru/substreams/developing/sinks.mdx | 51 - .../ru/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/ru/substreams/introduction.mdx | 45 - .../src/pages/ru/substreams/publishing.mdx | 53 - .../src/pages/ru/substreams/quick-start.mdx | 42 - website/src/pages/ru/supported-networks.mdx | 28 - .../src/pages/ru/token-api/_meta-titles.json | 10 - website/src/pages/ru/token-api/_meta.js | 16 - .../src/pages/ru/token-api/endpoints/_meta.js | 4 - .../pages/ru/token-api/endpoints/pricing.mdx | 97 - .../pages/ru/token-api/endpoints/support.mdx | 23 - .../src/pages/ru/token-api/evm-dexs/_meta.js | 6 - .../src/pages/ru/token-api/evm-dexs/dexes.mdx | 9 - .../ru/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ru/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/ru/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/ru/token-api/evm-nfts/_meta.js | 8 - .../ru/token-api/evm-nfts/collections.mdx | 16 - .../pages/ru/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/ru/token-api/evm-nfts/items.mdx | 9 - .../ru/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/ru/token-api/evm-nfts/sales.mdx | 9 - .../pages/ru/token-api/evm-nfts/transfers.mdx | 9 - .../pages/ru/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../ru/token-api/evm-tokens/balances.mdx | 9 - .../pages/ru/token-api/evm-tokens/holders.mdx | 9 - .../pages/ru/token-api/evm-tokens/tokens.mdx | 9 - .../ru/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/ru/token-api/faq.mdx | 109 - .../ru/token-api/guides/_meta-titles.json | 3 - .../src/pages/ru/token-api/guides/_meta.js | 3 - website/src/pages/ru/token-api/guides/gpt.mdx | 121 - .../pages/ru/token-api/monitoring/_meta.js | 5 - .../pages/ru/token-api/monitoring/health.mdx | 11 - .../ru/token-api/monitoring/networks.mdx | 9 - .../pages/ru/token-api/monitoring/version.mdx | 9 - .../src/pages/ru/token-api/quick-start.mdx | 77 - .../src/pages/ru/token-api/svm-dexs/_meta.js | 6 - .../src/pages/ru/token-api/svm-dexs/dexes.mdx | 9 - .../ru/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/ru/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/ru/token-api/svm-dexs/swaps.mdx | 9 - .../pages/ru/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../ru/token-api/svm-tokens/balances.mdx | 9 - .../pages/ru/token-api/svm-tokens/holders.mdx | 9 - .../pages/ru/token-api/svm-tokens/owner.mdx | 9 - .../pages/ru/token-api/svm-tokens/tokens.mdx | 9 - .../ru/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/ru/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/ru/token-api/tvm-dexs/dexes.mdx | 9 - .../ru/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ru/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/ru/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/ru/token-api/tvm-tokens/_meta.js | 5 - .../pages/ru/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../ru/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/ru/translations.ts | 13 - website/src/pages/sv/about.mdx | 67 - .../src/pages/sv/ai-suite/_meta-titles.json | 6 - website/src/pages/sv/ai-suite/_meta.js | 7 - .../src/pages/sv/ai-suite/ai-introduction.mdx | 58 - .../pages/sv/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/sv/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/sv/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/sv/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../sv/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/sv/ai-suite/token-api-mcp/_meta.js | 6 - .../sv/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/sv/ai-suite/token-api-mcp/cline.mdx | 52 - .../sv/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/sv/archived/_meta-titles.json | 3 - website/src/pages/sv/archived/_meta.js | 6 - .../src/pages/sv/archived/arbitrum/_meta.js | 5 - .../sv/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/sv/archived/sunrise.mdx | 80 - website/src/pages/sv/contracts.json | 4 - website/src/pages/sv/contracts.mdx | 29 - website/src/pages/sv/docsearch.json | 42 - website/src/pages/sv/global.json | 78 - website/src/pages/sv/graph-horizon/_meta.js | 5 - .../sv/graph-horizon/migration-guide.mdx | 45 - .../src/pages/sv/graph-horizon/overview.mdx | 48 - .../pages/sv/graph-horizon/what-changes.mdx | 88 - website/src/pages/sv/hypergraph/_meta.js | 4 - website/src/pages/sv/hypergraph/faq.mdx | 76 - website/src/pages/sv/hypergraph/overview.mdx | 100 - website/src/pages/sv/index.json | 195 - .../src/pages/sv/indexing/_meta-titles.json | 3 - website/src/pages/sv/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../sv/indexing/new-chain-integration.mdx | 70 - website/src/pages/sv/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/sv/indexing/tap.mdx | 189 - .../src/pages/sv/indexing/tooling/_meta.js | 5 - .../pages/sv/indexing/tooling/firehose.mdx | 24 - .../pages/sv/indexing/tooling/graph-node.mdx | 345 -- .../pages/sv/indexing/tooling/graphcast.mdx | 21 - .../src/pages/sv/resources/_meta-titles.json | 4 - website/src/pages/sv/resources/_meta.js | 10 - website/src/pages/sv/resources/benefits.mdx | 92 - website/src/pages/sv/resources/glossary.mdx | 81 - .../sv/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/sv/resources/roles/_meta.js | 4 - .../src/pages/sv/resources/roles/curating.mdx | 89 - .../sv/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../sv/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/sv/resources/tokenomics.mdx | 103 - .../src/pages/sv/subgraphs/_meta-titles.json | 6 - website/src/pages/sv/subgraphs/_meta.js | 13 - .../sv/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../sv/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/sv/subgraphs/billing.mdx | 216 - .../sv/subgraphs/developing/_meta-titles.json | 6 - .../pages/sv/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../sv/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../sv/subgraphs/developing/developer-faq.mdx | 148 - .../sv/subgraphs/developing/introduction.mdx | 31 - .../sv/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../sv/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/sv/subgraphs/explorer.mdx | 255 - .../pages/sv/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/sv/subgraphs/guides/_meta.js | 12 - .../sv/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/sv/subgraphs/guides/enums.mdx | 274 - .../pages/sv/subgraphs/guides/grafting.mdx | 202 - .../src/pages/sv/subgraphs/guides/near.mdx | 283 - .../pages/sv/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../sv/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/sv/subgraphs/querying/_meta.js | 13 - .../sv/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../sv/subgraphs/querying/graphql-api.mdx | 432 -- .../sv/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/sv/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/sv/subgraphs/quick-start.mdx | 186 - .../pages/sv/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/sv/substreams/_meta-titles.json | 4 - website/src/pages/sv/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/sv/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/sv/substreams/developing/sinks.mdx | 51 - .../sv/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/sv/substreams/introduction.mdx | 45 - .../src/pages/sv/substreams/publishing.mdx | 53 - .../src/pages/sv/substreams/quick-start.mdx | 42 - website/src/pages/sv/supported-networks.mdx | 28 - .../src/pages/sv/token-api/_meta-titles.json | 10 - website/src/pages/sv/token-api/_meta.js | 16 - .../src/pages/sv/token-api/endpoints/_meta.js | 4 - .../pages/sv/token-api/endpoints/pricing.mdx | 97 - .../pages/sv/token-api/endpoints/support.mdx | 23 - .../src/pages/sv/token-api/evm-dexs/_meta.js | 6 - .../src/pages/sv/token-api/evm-dexs/dexes.mdx | 9 - .../sv/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/sv/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/sv/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/sv/token-api/evm-nfts/_meta.js | 8 - .../sv/token-api/evm-nfts/collections.mdx | 16 - .../pages/sv/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/sv/token-api/evm-nfts/items.mdx | 9 - .../sv/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/sv/token-api/evm-nfts/sales.mdx | 9 - .../pages/sv/token-api/evm-nfts/transfers.mdx | 9 - .../pages/sv/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../sv/token-api/evm-tokens/balances.mdx | 9 - .../pages/sv/token-api/evm-tokens/holders.mdx | 9 - .../pages/sv/token-api/evm-tokens/tokens.mdx | 9 - .../sv/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/sv/token-api/faq.mdx | 109 - .../sv/token-api/guides/_meta-titles.json | 3 - .../src/pages/sv/token-api/guides/_meta.js | 3 - website/src/pages/sv/token-api/guides/gpt.mdx | 121 - .../pages/sv/token-api/monitoring/_meta.js | 5 - .../pages/sv/token-api/monitoring/health.mdx | 11 - .../sv/token-api/monitoring/networks.mdx | 9 - .../pages/sv/token-api/monitoring/version.mdx | 9 - .../src/pages/sv/token-api/quick-start.mdx | 77 - .../src/pages/sv/token-api/svm-dexs/_meta.js | 6 - .../src/pages/sv/token-api/svm-dexs/dexes.mdx | 9 - .../sv/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/sv/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/sv/token-api/svm-dexs/swaps.mdx | 9 - .../pages/sv/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../sv/token-api/svm-tokens/balances.mdx | 9 - .../pages/sv/token-api/svm-tokens/holders.mdx | 9 - .../pages/sv/token-api/svm-tokens/owner.mdx | 9 - .../pages/sv/token-api/svm-tokens/tokens.mdx | 9 - .../sv/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/sv/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/sv/token-api/tvm-dexs/dexes.mdx | 9 - .../sv/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/sv/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/sv/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/sv/token-api/tvm-tokens/_meta.js | 5 - .../pages/sv/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../sv/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/sv/translations.ts | 13 - website/src/pages/tr/about.mdx | 67 - .../src/pages/tr/ai-suite/_meta-titles.json | 6 - website/src/pages/tr/ai-suite/_meta.js | 7 - .../src/pages/tr/ai-suite/ai-introduction.mdx | 58 - .../pages/tr/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/tr/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/tr/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/tr/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../tr/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/tr/ai-suite/token-api-mcp/_meta.js | 6 - .../tr/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/tr/ai-suite/token-api-mcp/cline.mdx | 52 - .../tr/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/tr/archived/_meta-titles.json | 3 - website/src/pages/tr/archived/_meta.js | 6 - .../src/pages/tr/archived/arbitrum/_meta.js | 5 - .../tr/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/tr/archived/sunrise.mdx | 80 - website/src/pages/tr/contracts.json | 4 - website/src/pages/tr/contracts.mdx | 29 - website/src/pages/tr/docsearch.json | 42 - website/src/pages/tr/global.json | 78 - website/src/pages/tr/graph-horizon/_meta.js | 5 - .../tr/graph-horizon/migration-guide.mdx | 45 - .../src/pages/tr/graph-horizon/overview.mdx | 48 - .../pages/tr/graph-horizon/what-changes.mdx | 88 - website/src/pages/tr/hypergraph/_meta.js | 4 - website/src/pages/tr/hypergraph/faq.mdx | 76 - website/src/pages/tr/hypergraph/overview.mdx | 100 - website/src/pages/tr/index.json | 195 - .../src/pages/tr/indexing/_meta-titles.json | 3 - website/src/pages/tr/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../tr/indexing/new-chain-integration.mdx | 70 - website/src/pages/tr/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/tr/indexing/tap.mdx | 189 - .../src/pages/tr/indexing/tooling/_meta.js | 5 - .../pages/tr/indexing/tooling/firehose.mdx | 24 - .../pages/tr/indexing/tooling/graph-node.mdx | 345 -- .../pages/tr/indexing/tooling/graphcast.mdx | 21 - .../src/pages/tr/resources/_meta-titles.json | 4 - website/src/pages/tr/resources/_meta.js | 10 - website/src/pages/tr/resources/benefits.mdx | 93 - website/src/pages/tr/resources/glossary.mdx | 81 - .../tr/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/tr/resources/roles/_meta.js | 4 - .../src/pages/tr/resources/roles/curating.mdx | 89 - .../tr/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../tr/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/tr/resources/tokenomics.mdx | 103 - .../src/pages/tr/subgraphs/_meta-titles.json | 6 - website/src/pages/tr/subgraphs/_meta.js | 13 - .../tr/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../tr/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/tr/subgraphs/billing.mdx | 216 - .../tr/subgraphs/developing/_meta-titles.json | 6 - .../pages/tr/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../tr/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 891 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../tr/subgraphs/developing/developer-faq.mdx | 148 - .../tr/subgraphs/developing/introduction.mdx | 31 - .../tr/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../tr/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/tr/subgraphs/explorer.mdx | 255 - .../pages/tr/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/tr/subgraphs/guides/_meta.js | 12 - .../tr/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/tr/subgraphs/guides/enums.mdx | 274 - .../pages/tr/subgraphs/guides/grafting.mdx | 202 - .../src/pages/tr/subgraphs/guides/near.mdx | 283 - .../pages/tr/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../tr/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/tr/subgraphs/querying/_meta.js | 13 - .../tr/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 102 - .../subgraphs/querying/graph-client/live.md | 43 - .../tr/subgraphs/querying/graphql-api.mdx | 432 -- .../tr/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/tr/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/tr/subgraphs/quick-start.mdx | 186 - .../pages/tr/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/tr/substreams/_meta-titles.json | 4 - website/src/pages/tr/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/tr/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/tr/substreams/developing/sinks.mdx | 51 - .../tr/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/tr/substreams/introduction.mdx | 45 - .../src/pages/tr/substreams/publishing.mdx | 53 - .../src/pages/tr/substreams/quick-start.mdx | 42 - website/src/pages/tr/supported-networks.mdx | 28 - .../src/pages/tr/token-api/_meta-titles.json | 10 - website/src/pages/tr/token-api/_meta.js | 16 - .../src/pages/tr/token-api/endpoints/_meta.js | 4 - .../pages/tr/token-api/endpoints/pricing.mdx | 97 - .../pages/tr/token-api/endpoints/support.mdx | 23 - .../src/pages/tr/token-api/evm-dexs/_meta.js | 6 - .../src/pages/tr/token-api/evm-dexs/dexes.mdx | 9 - .../tr/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/tr/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/tr/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/tr/token-api/evm-nfts/_meta.js | 8 - .../tr/token-api/evm-nfts/collections.mdx | 16 - .../pages/tr/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/tr/token-api/evm-nfts/items.mdx | 9 - .../tr/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/tr/token-api/evm-nfts/sales.mdx | 9 - .../pages/tr/token-api/evm-nfts/transfers.mdx | 9 - .../pages/tr/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../tr/token-api/evm-tokens/balances.mdx | 9 - .../pages/tr/token-api/evm-tokens/holders.mdx | 9 - .../pages/tr/token-api/evm-tokens/tokens.mdx | 9 - .../tr/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/tr/token-api/faq.mdx | 109 - .../tr/token-api/guides/_meta-titles.json | 3 - .../src/pages/tr/token-api/guides/_meta.js | 3 - website/src/pages/tr/token-api/guides/gpt.mdx | 121 - .../pages/tr/token-api/monitoring/_meta.js | 5 - .../pages/tr/token-api/monitoring/health.mdx | 11 - .../tr/token-api/monitoring/networks.mdx | 9 - .../pages/tr/token-api/monitoring/version.mdx | 9 - .../src/pages/tr/token-api/quick-start.mdx | 77 - .../src/pages/tr/token-api/svm-dexs/_meta.js | 6 - .../src/pages/tr/token-api/svm-dexs/dexes.mdx | 9 - .../tr/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/tr/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/tr/token-api/svm-dexs/swaps.mdx | 9 - .../pages/tr/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../tr/token-api/svm-tokens/balances.mdx | 9 - .../pages/tr/token-api/svm-tokens/holders.mdx | 9 - .../pages/tr/token-api/svm-tokens/owner.mdx | 9 - .../pages/tr/token-api/svm-tokens/tokens.mdx | 9 - .../tr/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/tr/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/tr/token-api/tvm-dexs/dexes.mdx | 9 - .../tr/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/tr/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/tr/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/tr/token-api/tvm-tokens/_meta.js | 5 - .../pages/tr/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../tr/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/tr/translations.ts | 13 - website/src/pages/uk/about.mdx | 67 - .../src/pages/uk/ai-suite/_meta-titles.json | 6 - website/src/pages/uk/ai-suite/_meta.js | 7 - .../src/pages/uk/ai-suite/ai-introduction.mdx | 58 - .../pages/uk/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/uk/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/uk/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/uk/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../uk/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/uk/ai-suite/token-api-mcp/_meta.js | 6 - .../uk/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/uk/ai-suite/token-api-mcp/cline.mdx | 52 - .../uk/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/uk/archived/_meta-titles.json | 3 - website/src/pages/uk/archived/_meta.js | 6 - .../src/pages/uk/archived/arbitrum/_meta.js | 5 - .../uk/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/uk/archived/sunrise.mdx | 80 - website/src/pages/uk/contracts.json | 4 - website/src/pages/uk/contracts.mdx | 29 - website/src/pages/uk/docsearch.json | 42 - website/src/pages/uk/global.json | 78 - website/src/pages/uk/graph-horizon/_meta.js | 5 - .../uk/graph-horizon/migration-guide.mdx | 45 - .../src/pages/uk/graph-horizon/overview.mdx | 48 - .../pages/uk/graph-horizon/what-changes.mdx | 88 - website/src/pages/uk/hypergraph/_meta.js | 4 - website/src/pages/uk/hypergraph/faq.mdx | 76 - website/src/pages/uk/hypergraph/overview.mdx | 100 - website/src/pages/uk/index.json | 195 - .../src/pages/uk/indexing/_meta-titles.json | 3 - website/src/pages/uk/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../uk/indexing/new-chain-integration.mdx | 70 - website/src/pages/uk/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/uk/indexing/tap.mdx | 189 - .../src/pages/uk/indexing/tooling/_meta.js | 5 - .../pages/uk/indexing/tooling/firehose.mdx | 24 - .../pages/uk/indexing/tooling/graph-node.mdx | 345 -- .../pages/uk/indexing/tooling/graphcast.mdx | 21 - .../src/pages/uk/resources/_meta-titles.json | 4 - website/src/pages/uk/resources/_meta.js | 10 - website/src/pages/uk/resources/benefits.mdx | 92 - website/src/pages/uk/resources/glossary.mdx | 81 - .../uk/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/uk/resources/roles/_meta.js | 4 - .../src/pages/uk/resources/roles/curating.mdx | 89 - .../uk/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../uk/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/uk/resources/tokenomics.mdx | 103 - .../src/pages/uk/subgraphs/_meta-titles.json | 6 - website/src/pages/uk/subgraphs/_meta.js | 13 - .../uk/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../uk/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/uk/subgraphs/billing.mdx | 216 - .../uk/subgraphs/developing/_meta-titles.json | 6 - .../pages/uk/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../uk/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../uk/subgraphs/developing/developer-faq.mdx | 148 - .../uk/subgraphs/developing/introduction.mdx | 31 - .../uk/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../uk/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/uk/subgraphs/explorer.mdx | 255 - .../pages/uk/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/uk/subgraphs/guides/_meta.js | 12 - .../uk/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/uk/subgraphs/guides/enums.mdx | 274 - .../pages/uk/subgraphs/guides/grafting.mdx | 202 - .../src/pages/uk/subgraphs/guides/near.mdx | 283 - .../pages/uk/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../uk/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/uk/subgraphs/querying/_meta.js | 13 - .../uk/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../uk/subgraphs/querying/graphql-api.mdx | 432 -- .../uk/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/uk/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/uk/subgraphs/quick-start.mdx | 186 - .../pages/uk/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/uk/substreams/_meta-titles.json | 4 - website/src/pages/uk/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/uk/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/uk/substreams/developing/sinks.mdx | 51 - .../uk/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/uk/substreams/introduction.mdx | 45 - .../src/pages/uk/substreams/publishing.mdx | 53 - .../src/pages/uk/substreams/quick-start.mdx | 42 - website/src/pages/uk/supported-networks.mdx | 28 - .../src/pages/uk/token-api/_meta-titles.json | 10 - website/src/pages/uk/token-api/_meta.js | 16 - .../src/pages/uk/token-api/endpoints/_meta.js | 4 - .../pages/uk/token-api/endpoints/pricing.mdx | 97 - .../pages/uk/token-api/endpoints/support.mdx | 23 - .../src/pages/uk/token-api/evm-dexs/_meta.js | 6 - .../src/pages/uk/token-api/evm-dexs/dexes.mdx | 9 - .../uk/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/uk/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/uk/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/uk/token-api/evm-nfts/_meta.js | 8 - .../uk/token-api/evm-nfts/collections.mdx | 16 - .../pages/uk/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/uk/token-api/evm-nfts/items.mdx | 9 - .../uk/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/uk/token-api/evm-nfts/sales.mdx | 9 - .../pages/uk/token-api/evm-nfts/transfers.mdx | 9 - .../pages/uk/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../uk/token-api/evm-tokens/balances.mdx | 9 - .../pages/uk/token-api/evm-tokens/holders.mdx | 9 - .../pages/uk/token-api/evm-tokens/tokens.mdx | 9 - .../uk/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/uk/token-api/faq.mdx | 109 - .../uk/token-api/guides/_meta-titles.json | 3 - .../src/pages/uk/token-api/guides/_meta.js | 3 - website/src/pages/uk/token-api/guides/gpt.mdx | 121 - .../pages/uk/token-api/monitoring/_meta.js | 5 - .../pages/uk/token-api/monitoring/health.mdx | 11 - .../uk/token-api/monitoring/networks.mdx | 9 - .../pages/uk/token-api/monitoring/version.mdx | 9 - .../src/pages/uk/token-api/quick-start.mdx | 77 - .../src/pages/uk/token-api/svm-dexs/_meta.js | 6 - .../src/pages/uk/token-api/svm-dexs/dexes.mdx | 9 - .../uk/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/uk/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/uk/token-api/svm-dexs/swaps.mdx | 9 - .../pages/uk/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../uk/token-api/svm-tokens/balances.mdx | 9 - .../pages/uk/token-api/svm-tokens/holders.mdx | 9 - .../pages/uk/token-api/svm-tokens/owner.mdx | 9 - .../pages/uk/token-api/svm-tokens/tokens.mdx | 9 - .../uk/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/uk/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/uk/token-api/tvm-dexs/dexes.mdx | 9 - .../uk/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/uk/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/uk/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/uk/token-api/tvm-tokens/_meta.js | 5 - .../pages/uk/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../uk/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/uk/translations.ts | 13 - website/src/pages/ur/about.mdx | 67 - .../src/pages/ur/ai-suite/_meta-titles.json | 6 - website/src/pages/ur/ai-suite/_meta.js | 7 - .../src/pages/ur/ai-suite/ai-introduction.mdx | 58 - .../pages/ur/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/ur/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/ur/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/ur/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../ur/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/ur/ai-suite/token-api-mcp/_meta.js | 6 - .../ur/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/ur/ai-suite/token-api-mcp/cline.mdx | 52 - .../ur/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/ur/archived/_meta-titles.json | 3 - website/src/pages/ur/archived/_meta.js | 6 - .../src/pages/ur/archived/arbitrum/_meta.js | 5 - .../ur/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 415 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/ur/archived/sunrise.mdx | 80 - website/src/pages/ur/contracts.json | 4 - website/src/pages/ur/contracts.mdx | 29 - website/src/pages/ur/docsearch.json | 42 - website/src/pages/ur/global.json | 78 - website/src/pages/ur/graph-horizon/_meta.js | 5 - .../ur/graph-horizon/migration-guide.mdx | 45 - .../src/pages/ur/graph-horizon/overview.mdx | 48 - .../pages/ur/graph-horizon/what-changes.mdx | 88 - website/src/pages/ur/hypergraph/_meta.js | 4 - website/src/pages/ur/hypergraph/faq.mdx | 76 - website/src/pages/ur/hypergraph/overview.mdx | 100 - website/src/pages/ur/index.json | 195 - .../src/pages/ur/indexing/_meta-titles.json | 3 - website/src/pages/ur/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../ur/indexing/new-chain-integration.mdx | 70 - website/src/pages/ur/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/ur/indexing/tap.mdx | 189 - .../src/pages/ur/indexing/tooling/_meta.js | 5 - .../pages/ur/indexing/tooling/firehose.mdx | 24 - .../pages/ur/indexing/tooling/graph-node.mdx | 345 -- .../pages/ur/indexing/tooling/graphcast.mdx | 21 - .../src/pages/ur/resources/_meta-titles.json | 4 - website/src/pages/ur/resources/_meta.js | 10 - website/src/pages/ur/resources/benefits.mdx | 92 - website/src/pages/ur/resources/glossary.mdx | 81 - .../ur/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 537 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/ur/resources/roles/_meta.js | 4 - .../src/pages/ur/resources/roles/curating.mdx | 89 - .../ur/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../ur/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/ur/resources/tokenomics.mdx | 103 - .../src/pages/ur/subgraphs/_meta-titles.json | 6 - website/src/pages/ur/subgraphs/_meta.js | 13 - .../ur/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../ur/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/ur/subgraphs/billing.mdx | 216 - .../ur/subgraphs/developing/_meta-titles.json | 6 - .../pages/ur/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../ur/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../ur/subgraphs/developing/developer-faq.mdx | 148 - .../ur/subgraphs/developing/introduction.mdx | 31 - .../ur/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../ur/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/ur/subgraphs/explorer.mdx | 255 - .../pages/ur/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/ur/subgraphs/guides/_meta.js | 12 - .../ur/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/ur/subgraphs/guides/enums.mdx | 274 - .../pages/ur/subgraphs/guides/grafting.mdx | 202 - .../src/pages/ur/subgraphs/guides/near.mdx | 283 - .../pages/ur/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../ur/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/ur/subgraphs/querying/_meta.js | 13 - .../ur/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../ur/subgraphs/querying/graphql-api.mdx | 432 -- .../ur/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/ur/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/ur/subgraphs/quick-start.mdx | 186 - .../pages/ur/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/ur/substreams/_meta-titles.json | 4 - website/src/pages/ur/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/ur/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/ur/substreams/developing/sinks.mdx | 51 - .../ur/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/ur/substreams/introduction.mdx | 45 - .../src/pages/ur/substreams/publishing.mdx | 53 - .../src/pages/ur/substreams/quick-start.mdx | 42 - website/src/pages/ur/supported-networks.mdx | 28 - .../src/pages/ur/token-api/_meta-titles.json | 10 - website/src/pages/ur/token-api/_meta.js | 16 - .../src/pages/ur/token-api/endpoints/_meta.js | 4 - .../pages/ur/token-api/endpoints/pricing.mdx | 97 - .../pages/ur/token-api/endpoints/support.mdx | 23 - .../src/pages/ur/token-api/evm-dexs/_meta.js | 6 - .../src/pages/ur/token-api/evm-dexs/dexes.mdx | 9 - .../ur/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ur/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/ur/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/ur/token-api/evm-nfts/_meta.js | 8 - .../ur/token-api/evm-nfts/collections.mdx | 16 - .../pages/ur/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/ur/token-api/evm-nfts/items.mdx | 9 - .../ur/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/ur/token-api/evm-nfts/sales.mdx | 9 - .../pages/ur/token-api/evm-nfts/transfers.mdx | 9 - .../pages/ur/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../ur/token-api/evm-tokens/balances.mdx | 9 - .../pages/ur/token-api/evm-tokens/holders.mdx | 9 - .../pages/ur/token-api/evm-tokens/tokens.mdx | 9 - .../ur/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/ur/token-api/faq.mdx | 109 - .../ur/token-api/guides/_meta-titles.json | 3 - .../src/pages/ur/token-api/guides/_meta.js | 3 - website/src/pages/ur/token-api/guides/gpt.mdx | 121 - .../pages/ur/token-api/monitoring/_meta.js | 5 - .../pages/ur/token-api/monitoring/health.mdx | 11 - .../ur/token-api/monitoring/networks.mdx | 9 - .../pages/ur/token-api/monitoring/version.mdx | 9 - .../src/pages/ur/token-api/quick-start.mdx | 77 - .../src/pages/ur/token-api/svm-dexs/_meta.js | 6 - .../src/pages/ur/token-api/svm-dexs/dexes.mdx | 9 - .../ur/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/ur/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/ur/token-api/svm-dexs/swaps.mdx | 9 - .../pages/ur/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../ur/token-api/svm-tokens/balances.mdx | 9 - .../pages/ur/token-api/svm-tokens/holders.mdx | 9 - .../pages/ur/token-api/svm-tokens/owner.mdx | 9 - .../pages/ur/token-api/svm-tokens/tokens.mdx | 9 - .../ur/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/ur/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/ur/token-api/tvm-dexs/dexes.mdx | 9 - .../ur/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/ur/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/ur/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/ur/token-api/tvm-tokens/_meta.js | 5 - .../pages/ur/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../ur/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/ur/translations.ts | 13 - website/src/pages/vi/about.mdx | 67 - .../src/pages/vi/ai-suite/_meta-titles.json | 6 - website/src/pages/vi/ai-suite/_meta.js | 7 - .../src/pages/vi/ai-suite/ai-introduction.mdx | 58 - .../pages/vi/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/vi/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/vi/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/vi/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../vi/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/vi/ai-suite/token-api-mcp/_meta.js | 6 - .../vi/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/vi/ai-suite/token-api-mcp/cline.mdx | 52 - .../vi/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/vi/archived/_meta-titles.json | 3 - website/src/pages/vi/archived/_meta.js | 6 - .../src/pages/vi/archived/arbitrum/_meta.js | 5 - .../vi/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/vi/archived/sunrise.mdx | 80 - website/src/pages/vi/contracts.json | 4 - website/src/pages/vi/contracts.mdx | 29 - website/src/pages/vi/docsearch.json | 42 - website/src/pages/vi/global.json | 78 - website/src/pages/vi/graph-horizon/_meta.js | 5 - .../vi/graph-horizon/migration-guide.mdx | 45 - .../src/pages/vi/graph-horizon/overview.mdx | 48 - .../pages/vi/graph-horizon/what-changes.mdx | 88 - website/src/pages/vi/hypergraph/_meta.js | 4 - website/src/pages/vi/hypergraph/faq.mdx | 76 - website/src/pages/vi/hypergraph/overview.mdx | 100 - website/src/pages/vi/index.json | 195 - .../src/pages/vi/indexing/_meta-titles.json | 3 - website/src/pages/vi/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../vi/indexing/new-chain-integration.mdx | 70 - website/src/pages/vi/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/vi/indexing/tap.mdx | 189 - .../src/pages/vi/indexing/tooling/_meta.js | 5 - .../pages/vi/indexing/tooling/firehose.mdx | 24 - .../pages/vi/indexing/tooling/graph-node.mdx | 345 -- .../pages/vi/indexing/tooling/graphcast.mdx | 21 - .../src/pages/vi/resources/_meta-titles.json | 4 - website/src/pages/vi/resources/_meta.js | 10 - website/src/pages/vi/resources/benefits.mdx | 92 - website/src/pages/vi/resources/glossary.mdx | 81 - .../vi/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 538 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/vi/resources/roles/_meta.js | 4 - .../src/pages/vi/resources/roles/curating.mdx | 89 - .../vi/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../vi/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/vi/resources/tokenomics.mdx | 103 - .../src/pages/vi/subgraphs/_meta-titles.json | 6 - website/src/pages/vi/subgraphs/_meta.js | 13 - .../vi/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../vi/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/vi/subgraphs/billing.mdx | 216 - .../vi/subgraphs/developing/_meta-titles.json | 6 - .../pages/vi/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../vi/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 890 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1402 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../vi/subgraphs/developing/developer-faq.mdx | 148 - .../vi/subgraphs/developing/introduction.mdx | 31 - .../vi/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../vi/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/vi/subgraphs/explorer.mdx | 255 - .../pages/vi/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/vi/subgraphs/guides/_meta.js | 12 - .../vi/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/vi/subgraphs/guides/enums.mdx | 274 - .../pages/vi/subgraphs/guides/grafting.mdx | 202 - .../src/pages/vi/subgraphs/guides/near.mdx | 283 - .../pages/vi/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../vi/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/vi/subgraphs/querying/_meta.js | 13 - .../vi/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../vi/subgraphs/querying/graphql-api.mdx | 432 -- .../vi/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/vi/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/vi/subgraphs/quick-start.mdx | 186 - .../pages/vi/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/vi/substreams/_meta-titles.json | 4 - website/src/pages/vi/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/vi/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/vi/substreams/developing/sinks.mdx | 51 - .../vi/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/vi/substreams/introduction.mdx | 45 - .../src/pages/vi/substreams/publishing.mdx | 53 - .../src/pages/vi/substreams/quick-start.mdx | 42 - website/src/pages/vi/supported-networks.mdx | 28 - .../src/pages/vi/token-api/_meta-titles.json | 10 - website/src/pages/vi/token-api/_meta.js | 16 - .../src/pages/vi/token-api/endpoints/_meta.js | 4 - .../pages/vi/token-api/endpoints/pricing.mdx | 97 - .../pages/vi/token-api/endpoints/support.mdx | 23 - .../src/pages/vi/token-api/evm-dexs/_meta.js | 6 - .../src/pages/vi/token-api/evm-dexs/dexes.mdx | 9 - .../vi/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/vi/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/vi/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/vi/token-api/evm-nfts/_meta.js | 8 - .../vi/token-api/evm-nfts/collections.mdx | 16 - .../pages/vi/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/vi/token-api/evm-nfts/items.mdx | 9 - .../vi/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/vi/token-api/evm-nfts/sales.mdx | 9 - .../pages/vi/token-api/evm-nfts/transfers.mdx | 9 - .../pages/vi/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../vi/token-api/evm-tokens/balances.mdx | 9 - .../pages/vi/token-api/evm-tokens/holders.mdx | 9 - .../pages/vi/token-api/evm-tokens/tokens.mdx | 9 - .../vi/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/vi/token-api/faq.mdx | 109 - .../vi/token-api/guides/_meta-titles.json | 3 - .../src/pages/vi/token-api/guides/_meta.js | 3 - website/src/pages/vi/token-api/guides/gpt.mdx | 121 - .../pages/vi/token-api/monitoring/_meta.js | 5 - .../pages/vi/token-api/monitoring/health.mdx | 11 - .../vi/token-api/monitoring/networks.mdx | 9 - .../pages/vi/token-api/monitoring/version.mdx | 9 - .../src/pages/vi/token-api/quick-start.mdx | 77 - .../src/pages/vi/token-api/svm-dexs/_meta.js | 6 - .../src/pages/vi/token-api/svm-dexs/dexes.mdx | 9 - .../vi/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/vi/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/vi/token-api/svm-dexs/swaps.mdx | 9 - .../pages/vi/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../vi/token-api/svm-tokens/balances.mdx | 9 - .../pages/vi/token-api/svm-tokens/holders.mdx | 9 - .../pages/vi/token-api/svm-tokens/owner.mdx | 9 - .../pages/vi/token-api/svm-tokens/tokens.mdx | 9 - .../vi/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/vi/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/vi/token-api/tvm-dexs/dexes.mdx | 9 - .../vi/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/vi/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/vi/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/vi/token-api/tvm-tokens/_meta.js | 5 - .../pages/vi/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../vi/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/vi/translations.ts | 13 - website/src/pages/zh/about.mdx | 67 - .../src/pages/zh/ai-suite/_meta-titles.json | 6 - website/src/pages/zh/ai-suite/_meta.js | 7 - .../src/pages/zh/ai-suite/ai-introduction.mdx | 58 - .../pages/zh/ai-suite/subgraph-mcp/_meta.js | 6 - .../pages/zh/ai-suite/subgraph-mcp/claude.mdx | 169 - .../pages/zh/ai-suite/subgraph-mcp/cline.mdx | 99 - .../pages/zh/ai-suite/subgraph-mcp/cursor.mdx | 94 - .../zh/ai-suite/subgraph-mcp/introduction.mdx | 22 - .../pages/zh/ai-suite/token-api-mcp/_meta.js | 6 - .../zh/ai-suite/token-api-mcp/claude.mdx | 58 - .../pages/zh/ai-suite/token-api-mcp/cline.mdx | 52 - .../zh/ai-suite/token-api-mcp/cursor.mdx | 50 - .../ai-suite/token-api-mcp/introduction.mdx | 23 - .../src/pages/zh/archived/_meta-titles.json | 3 - website/src/pages/zh/archived/_meta.js | 6 - .../src/pages/zh/archived/arbitrum/_meta.js | 5 - .../zh/archived/arbitrum/arbitrum-faq.mdx | 79 - .../arbitrum/l2-transfer-tools-faq.mdx | 414 -- .../arbitrum/l2-transfer-tools-guide.mdx | 165 - website/src/pages/zh/archived/sunrise.mdx | 80 - website/src/pages/zh/contracts.json | 4 - website/src/pages/zh/contracts.mdx | 29 - website/src/pages/zh/docsearch.json | 42 - website/src/pages/zh/global.json | 78 - website/src/pages/zh/graph-horizon/_meta.js | 5 - .../zh/graph-horizon/migration-guide.mdx | 45 - .../src/pages/zh/graph-horizon/overview.mdx | 48 - .../pages/zh/graph-horizon/what-changes.mdx | 88 - website/src/pages/zh/hypergraph/_meta.js | 4 - website/src/pages/zh/hypergraph/faq.mdx | 76 - website/src/pages/zh/hypergraph/overview.mdx | 100 - website/src/pages/zh/index.json | 195 - .../src/pages/zh/indexing/_meta-titles.json | 3 - website/src/pages/zh/indexing/_meta.js | 10 - .../indexing/chain-integration-overview.mdx | 49 - .../zh/indexing/new-chain-integration.mdx | 70 - website/src/pages/zh/indexing/overview.mdx | 814 --- .../supported-network-requirements.mdx | 18 - website/src/pages/zh/indexing/tap.mdx | 189 - .../src/pages/zh/indexing/tooling/_meta.js | 5 - .../pages/zh/indexing/tooling/firehose.mdx | 24 - .../pages/zh/indexing/tooling/graph-node.mdx | 345 -- .../pages/zh/indexing/tooling/graphcast.mdx | 21 - .../src/pages/zh/resources/_meta-titles.json | 4 - website/src/pages/zh/resources/_meta.js | 10 - website/src/pages/zh/resources/benefits.mdx | 92 - website/src/pages/zh/resources/glossary.mdx | 81 - .../zh/resources/migration-guides/_meta.js | 4 - .../assemblyscript-migration-guide.mdx | 524 -- .../graphql-validations-migration-guide.mdx | 539 -- .../migration-guides/migrate-from-alchemy.mdx | 163 - website/src/pages/zh/resources/roles/_meta.js | 4 - .../src/pages/zh/resources/roles/curating.mdx | 89 - .../zh/resources/roles/delegating/_meta.js | 4 - .../resources/roles/delegating/delegating.mdx | 143 - .../roles/delegating/undelegating.mdx | 68 - .../zh/resources/subgraph-studio-faq.mdx | 31 - website/src/pages/zh/resources/tokenomics.mdx | 103 - .../src/pages/zh/subgraphs/_meta-titles.json | 6 - website/src/pages/zh/subgraphs/_meta.js | 13 - .../zh/subgraphs/best-practices/_meta.js | 8 - .../best-practices/avoid-eth-calls.mdx | 117 - .../subgraphs/best-practices/derivedfrom.mdx | 89 - .../best-practices/grafting-hotfix.mdx | 181 - .../immutable-entities-bytes-as-ids.mdx | 191 - .../zh/subgraphs/best-practices/pruning.mdx | 56 - .../subgraphs/best-practices/timeseries.mdx | 199 - website/src/pages/zh/subgraphs/billing.mdx | 216 - .../zh/subgraphs/developing/_meta-titles.json | 6 - .../pages/zh/subgraphs/developing/_meta.js | 11 - .../developing/creating/_meta-titles.json | 3 - .../zh/subgraphs/developing/creating/_meta.js | 13 - .../developing/creating/advanced.mdx | 563 -- .../creating/assemblyscript-mappings.mdx | 113 - .../developing/creating/graph-node-dev.mdx | 132 - .../developing/creating/graph-ts/CHANGELOG.md | 107 - .../developing/creating/graph-ts/README.md | 85 - .../creating/graph-ts/_meta-titles.json | 5 - .../developing/creating/graph-ts/_meta.js | 7 - .../developing/creating/graph-ts/api.mdx | 889 ---- .../creating/graph-ts/common-issues.mdx | 8 - .../developing/creating/install-the-cli.mdx | 103 - .../developing/creating/ql-schema.mdx | 324 -- .../creating/starting-your-subgraph.mdx | 35 - .../developing/creating/subgraph-manifest.mdx | 549 -- .../creating/unit-testing-framework.mdx | 1400 ----- .../subgraphs/developing/deploying/_meta.js | 4 - .../deploying/multiple-networks.mdx | 242 - .../deploying/using-subgraph-studio.mdx | 131 - .../zh/subgraphs/developing/developer-faq.mdx | 148 - .../zh/subgraphs/developing/introduction.mdx | 31 - .../zh/subgraphs/developing/managing/_meta.js | 4 - .../managing/deleting-a-subgraph.mdx | 30 - .../managing/transferring-a-subgraph.mdx | 42 - .../subgraphs/developing/publishing/_meta.js | 3 - .../publishing/publishing-a-subgraph.mdx | 95 - .../zh/subgraphs/developing/subgraphs.mdx | 86 - website/src/pages/zh/subgraphs/explorer.mdx | 255 - .../pages/zh/subgraphs/fair-use-policy.mdx | 51 - .../src/pages/zh/subgraphs/guides/_meta.js | 12 - .../zh/subgraphs/guides/contract-analyzer.mdx | 117 - .../src/pages/zh/subgraphs/guides/enums.mdx | 274 - .../pages/zh/subgraphs/guides/grafting.mdx | 202 - .../src/pages/zh/subgraphs/guides/near.mdx | 283 - .../pages/zh/subgraphs/guides/polymarket.mdx | 148 - .../guides/secure-api-keys-nextjs.mdx | 123 - .../subgraphs/guides/subgraph-composition.mdx | 132 - .../guides/subgraph-debug-forking.mdx | 101 - .../subgraphs/guides/subgraph-uncrashable.mdx | 29 - .../guides/transfer-to-the-graph.mdx | 104 - .../zh/subgraphs/querying/_meta-titles.json | 3 - .../src/pages/zh/subgraphs/querying/_meta.js | 13 - .../zh/subgraphs/querying/best-practices.mdx | 488 -- .../querying/distributed-systems.mdx | 134 - .../querying/from-an-application.mdx | 296 -- .../subgraphs/querying/graph-client/README.md | 611 --- .../querying/graph-client/_meta-titles.json | 3 - .../subgraphs/querying/graph-client/_meta.js | 5 - .../querying/graph-client/architecture.md | 103 - .../subgraphs/querying/graph-client/live.md | 43 - .../zh/subgraphs/querying/graphql-api.mdx | 432 -- .../zh/subgraphs/querying/introduction.mdx | 32 - .../subgraphs/querying/managing-api-keys.mdx | 34 - .../pages/zh/subgraphs/querying/python.mdx | 57 - .../querying/subgraph-id-vs-deployment-id.mdx | 27 - .../src/pages/zh/subgraphs/quick-start.mdx | 186 - .../pages/zh/subgraphs/upgrade-indexer.mdx | 25 - .../src/pages/zh/substreams/_meta-titles.json | 4 - website/src/pages/zh/substreams/_meta.js | 8 - .../substreams/developing/_meta-titles.json | 4 - .../pages/zh/substreams/developing/_meta.js | 7 - .../substreams/developing/dev-container.mdx | 48 - .../pages/zh/substreams/developing/sinks.mdx | 51 - .../zh/substreams/developing/solana/_meta.js | 4 - .../developing/solana/account-changes.mdx | 63 - .../developing/solana/transactions.mdx | 61 - .../src/pages/zh/substreams/introduction.mdx | 45 - .../src/pages/zh/substreams/publishing.mdx | 53 - .../src/pages/zh/substreams/quick-start.mdx | 42 - website/src/pages/zh/supported-networks.mdx | 28 - .../src/pages/zh/token-api/_meta-titles.json | 10 - website/src/pages/zh/token-api/_meta.js | 16 - .../src/pages/zh/token-api/endpoints/_meta.js | 4 - .../pages/zh/token-api/endpoints/pricing.mdx | 97 - .../pages/zh/token-api/endpoints/support.mdx | 23 - .../src/pages/zh/token-api/evm-dexs/_meta.js | 6 - .../src/pages/zh/token-api/evm-dexs/dexes.mdx | 9 - .../zh/token-api/evm-dexs/pools-ohlc.mdx | 11 - .../src/pages/zh/token-api/evm-dexs/pools.mdx | 9 - .../src/pages/zh/token-api/evm-dexs/swaps.mdx | 9 - .../src/pages/zh/token-api/evm-nfts/_meta.js | 8 - .../zh/token-api/evm-nfts/collections.mdx | 16 - .../pages/zh/token-api/evm-nfts/holders.mdx | 9 - .../src/pages/zh/token-api/evm-nfts/items.mdx | 9 - .../zh/token-api/evm-nfts/ownerships.mdx | 9 - .../src/pages/zh/token-api/evm-nfts/sales.mdx | 9 - .../pages/zh/token-api/evm-nfts/transfers.mdx | 9 - .../pages/zh/token-api/evm-tokens/_meta.js | 8 - .../evm-tokens/balances-historical.mdx | 11 - .../token-api/evm-tokens/balances-native.mdx | 9 - .../zh/token-api/evm-tokens/balances.mdx | 9 - .../pages/zh/token-api/evm-tokens/holders.mdx | 9 - .../pages/zh/token-api/evm-tokens/tokens.mdx | 9 - .../zh/token-api/evm-tokens/transfers.mdx | 9 - website/src/pages/zh/token-api/faq.mdx | 109 - .../zh/token-api/guides/_meta-titles.json | 3 - .../src/pages/zh/token-api/guides/_meta.js | 3 - website/src/pages/zh/token-api/guides/gpt.mdx | 121 - .../pages/zh/token-api/monitoring/_meta.js | 5 - .../pages/zh/token-api/monitoring/health.mdx | 11 - .../zh/token-api/monitoring/networks.mdx | 9 - .../pages/zh/token-api/monitoring/version.mdx | 9 - .../src/pages/zh/token-api/quick-start.mdx | 79 - .../src/pages/zh/token-api/svm-dexs/_meta.js | 6 - .../src/pages/zh/token-api/svm-dexs/dexes.mdx | 9 - .../zh/token-api/svm-dexs/pools-ohlc.mdx | 9 - .../src/pages/zh/token-api/svm-dexs/pools.mdx | 9 - .../src/pages/zh/token-api/svm-dexs/swaps.mdx | 9 - .../pages/zh/token-api/svm-tokens/_meta.js | 8 - .../token-api/svm-tokens/balances-native.mdx | 9 - .../zh/token-api/svm-tokens/balances.mdx | 9 - .../pages/zh/token-api/svm-tokens/holders.mdx | 9 - .../pages/zh/token-api/svm-tokens/owner.mdx | 9 - .../pages/zh/token-api/svm-tokens/tokens.mdx | 9 - .../zh/token-api/svm-tokens/transfers.mdx | 9 - .../src/pages/zh/token-api/tvm-dexs/_meta.js | 6 - .../src/pages/zh/token-api/tvm-dexs/dexes.mdx | 9 - .../zh/token-api/tvm-dexs/pools-ohlc.mdx | 11 - .../src/pages/zh/token-api/tvm-dexs/pools.mdx | 9 - .../src/pages/zh/token-api/tvm-dexs/swaps.mdx | 9 - .../pages/zh/token-api/tvm-tokens/_meta.js | 5 - .../pages/zh/token-api/tvm-tokens/tokens.mdx | 9 - .../token-api/tvm-tokens/transfers-native.mdx | 9 - .../zh/token-api/tvm-tokens/transfers.mdx | 9 - website/src/pages/zh/translations.ts | 13 - 4132 files changed, 1062 insertions(+), 372139 deletions(-) delete mode 100644 crowdin.yml delete mode 100644 website/src/pages/ar/about.mdx delete mode 100644 website/src/pages/ar/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/ar/ai-suite/_meta.js delete mode 100644 website/src/pages/ar/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/ar/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/ar/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/ar/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/ar/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/ar/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/ar/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/ar/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/ar/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/ar/archived/_meta-titles.json delete mode 100644 website/src/pages/ar/archived/_meta.js delete mode 100644 website/src/pages/ar/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/ar/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/ar/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/ar/archived/sunrise.mdx delete mode 100644 website/src/pages/ar/contracts.json delete mode 100644 website/src/pages/ar/contracts.mdx delete mode 100644 website/src/pages/ar/docsearch.json delete mode 100644 website/src/pages/ar/global.json delete mode 100644 website/src/pages/ar/graph-horizon/_meta.js delete mode 100644 website/src/pages/ar/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/ar/graph-horizon/overview.mdx delete mode 100644 website/src/pages/ar/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/ar/hypergraph/_meta.js delete mode 100644 website/src/pages/ar/hypergraph/faq.mdx delete mode 100644 website/src/pages/ar/hypergraph/overview.mdx delete mode 100644 website/src/pages/ar/index.json delete mode 100644 website/src/pages/ar/indexing/_meta-titles.json delete mode 100644 website/src/pages/ar/indexing/_meta.js delete mode 100644 website/src/pages/ar/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/ar/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/ar/indexing/overview.mdx delete mode 100644 website/src/pages/ar/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/ar/indexing/tap.mdx delete mode 100644 website/src/pages/ar/indexing/tooling/_meta.js delete mode 100644 website/src/pages/ar/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/ar/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/ar/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/ar/resources/_meta-titles.json delete mode 100644 website/src/pages/ar/resources/_meta.js delete mode 100644 website/src/pages/ar/resources/benefits.mdx delete mode 100644 website/src/pages/ar/resources/glossary.mdx delete mode 100644 website/src/pages/ar/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/ar/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/ar/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/ar/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/ar/resources/roles/_meta.js delete mode 100644 website/src/pages/ar/resources/roles/curating.mdx delete mode 100644 website/src/pages/ar/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/ar/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/ar/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/ar/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/ar/resources/tokenomics.mdx delete mode 100644 website/src/pages/ar/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/ar/subgraphs/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/ar/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/ar/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/ar/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/ar/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/ar/subgraphs/billing.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/ar/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/ar/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/ar/subgraphs/explorer.mdx delete mode 100644 website/src/pages/ar/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/ar/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/ar/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/ar/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/ar/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/ar/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/ar/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/ar/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/ar/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/ar/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/ar/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/ar/substreams/_meta-titles.json delete mode 100644 website/src/pages/ar/substreams/_meta.js delete mode 100644 website/src/pages/ar/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/ar/substreams/developing/_meta.js delete mode 100644 website/src/pages/ar/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/ar/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/ar/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/ar/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/ar/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/ar/substreams/introduction.mdx delete mode 100644 website/src/pages/ar/substreams/publishing.mdx delete mode 100644 website/src/pages/ar/substreams/quick-start.mdx delete mode 100644 website/src/pages/ar/supported-networks.mdx delete mode 100644 website/src/pages/ar/token-api/_meta-titles.json delete mode 100644 website/src/pages/ar/token-api/_meta.js delete mode 100644 website/src/pages/ar/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/ar/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/ar/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ar/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/ar/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/ar/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ar/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/ar/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/ar/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/ar/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/ar/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/ar/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/ar/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/ar/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/ar/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/ar/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/ar/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/ar/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ar/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/ar/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/ar/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/ar/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/ar/token-api/faq.mdx delete mode 100644 website/src/pages/ar/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/ar/token-api/guides/_meta.js delete mode 100644 website/src/pages/ar/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/ar/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/ar/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/ar/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/ar/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/ar/token-api/quick-start.mdx delete mode 100644 website/src/pages/ar/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/ar/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/ar/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ar/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/ar/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/ar/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/ar/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ar/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/ar/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/ar/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/ar/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/ar/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/ar/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/ar/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/ar/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ar/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/ar/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/ar/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/ar/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/ar/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/ar/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/ar/translations.ts delete mode 100644 website/src/pages/cs/about.mdx delete mode 100644 website/src/pages/cs/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/cs/ai-suite/_meta.js delete mode 100644 website/src/pages/cs/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/cs/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/cs/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/cs/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/cs/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/cs/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/cs/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/cs/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/cs/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/cs/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/cs/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/cs/archived/_meta-titles.json delete mode 100644 website/src/pages/cs/archived/_meta.js delete mode 100644 website/src/pages/cs/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/cs/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/cs/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/cs/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/cs/archived/sunrise.mdx delete mode 100644 website/src/pages/cs/contracts.json delete mode 100644 website/src/pages/cs/contracts.mdx delete mode 100644 website/src/pages/cs/docsearch.json delete mode 100644 website/src/pages/cs/global.json delete mode 100644 website/src/pages/cs/graph-horizon/_meta.js delete mode 100644 website/src/pages/cs/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/cs/graph-horizon/overview.mdx delete mode 100644 website/src/pages/cs/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/cs/hypergraph/_meta.js delete mode 100644 website/src/pages/cs/hypergraph/faq.mdx delete mode 100644 website/src/pages/cs/hypergraph/overview.mdx delete mode 100644 website/src/pages/cs/index.json delete mode 100644 website/src/pages/cs/indexing/_meta-titles.json delete mode 100644 website/src/pages/cs/indexing/_meta.js delete mode 100644 website/src/pages/cs/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/cs/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/cs/indexing/overview.mdx delete mode 100644 website/src/pages/cs/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/cs/indexing/tap.mdx delete mode 100644 website/src/pages/cs/indexing/tooling/_meta.js delete mode 100644 website/src/pages/cs/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/cs/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/cs/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/cs/resources/_meta-titles.json delete mode 100644 website/src/pages/cs/resources/_meta.js delete mode 100644 website/src/pages/cs/resources/benefits.mdx delete mode 100644 website/src/pages/cs/resources/glossary.mdx delete mode 100644 website/src/pages/cs/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/cs/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/cs/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/cs/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/cs/resources/roles/_meta.js delete mode 100644 website/src/pages/cs/resources/roles/curating.mdx delete mode 100644 website/src/pages/cs/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/cs/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/cs/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/cs/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/cs/resources/tokenomics.mdx delete mode 100644 website/src/pages/cs/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/cs/subgraphs/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/cs/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/cs/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/cs/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/cs/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/cs/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/cs/subgraphs/billing.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/cs/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/cs/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/cs/subgraphs/explorer.mdx delete mode 100644 website/src/pages/cs/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/cs/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/cs/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/cs/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/cs/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/cs/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/cs/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/cs/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/cs/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/cs/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/cs/substreams/_meta-titles.json delete mode 100644 website/src/pages/cs/substreams/_meta.js delete mode 100644 website/src/pages/cs/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/cs/substreams/developing/_meta.js delete mode 100644 website/src/pages/cs/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/cs/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/cs/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/cs/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/cs/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/cs/substreams/introduction.mdx delete mode 100644 website/src/pages/cs/substreams/publishing.mdx delete mode 100644 website/src/pages/cs/substreams/quick-start.mdx delete mode 100644 website/src/pages/cs/supported-networks.mdx delete mode 100644 website/src/pages/cs/token-api/_meta-titles.json delete mode 100644 website/src/pages/cs/token-api/_meta.js delete mode 100644 website/src/pages/cs/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/cs/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/cs/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/cs/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/cs/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/cs/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/cs/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/cs/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/cs/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/cs/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/cs/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/cs/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/cs/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/cs/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/cs/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/cs/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/cs/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/cs/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/cs/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/cs/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/cs/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/cs/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/cs/token-api/faq.mdx delete mode 100644 website/src/pages/cs/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/cs/token-api/guides/_meta.js delete mode 100644 website/src/pages/cs/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/cs/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/cs/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/cs/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/cs/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/cs/token-api/quick-start.mdx delete mode 100644 website/src/pages/cs/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/cs/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/cs/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/cs/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/cs/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/cs/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/cs/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/cs/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/cs/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/cs/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/cs/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/cs/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/cs/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/cs/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/cs/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/cs/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/cs/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/cs/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/cs/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/cs/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/cs/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/cs/translations.ts delete mode 100644 website/src/pages/de/about.mdx delete mode 100644 website/src/pages/de/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/de/ai-suite/_meta.js delete mode 100644 website/src/pages/de/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/de/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/de/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/de/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/de/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/de/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/de/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/de/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/de/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/de/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/de/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/de/archived/_meta-titles.json delete mode 100644 website/src/pages/de/archived/_meta.js delete mode 100644 website/src/pages/de/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/de/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/de/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/de/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/de/archived/sunrise.mdx delete mode 100644 website/src/pages/de/contracts.json delete mode 100644 website/src/pages/de/contracts.mdx delete mode 100644 website/src/pages/de/docsearch.json delete mode 100644 website/src/pages/de/global.json delete mode 100644 website/src/pages/de/graph-horizon/_meta.js delete mode 100644 website/src/pages/de/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/de/graph-horizon/overview.mdx delete mode 100644 website/src/pages/de/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/de/hypergraph/_meta.js delete mode 100644 website/src/pages/de/hypergraph/faq.mdx delete mode 100644 website/src/pages/de/hypergraph/overview.mdx delete mode 100644 website/src/pages/de/index.json delete mode 100644 website/src/pages/de/indexing/_meta-titles.json delete mode 100644 website/src/pages/de/indexing/_meta.js delete mode 100644 website/src/pages/de/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/de/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/de/indexing/overview.mdx delete mode 100644 website/src/pages/de/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/de/indexing/tap.mdx delete mode 100644 website/src/pages/de/indexing/tooling/_meta.js delete mode 100644 website/src/pages/de/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/de/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/de/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/de/resources/_meta-titles.json delete mode 100644 website/src/pages/de/resources/_meta.js delete mode 100644 website/src/pages/de/resources/benefits.mdx delete mode 100644 website/src/pages/de/resources/glossary.mdx delete mode 100644 website/src/pages/de/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/de/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/de/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/de/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/de/resources/roles/_meta.js delete mode 100644 website/src/pages/de/resources/roles/curating.mdx delete mode 100644 website/src/pages/de/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/de/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/de/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/de/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/de/resources/tokenomics.mdx delete mode 100644 website/src/pages/de/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/de/subgraphs/_meta.js delete mode 100644 website/src/pages/de/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/de/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/de/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/de/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/de/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/de/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/de/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/de/subgraphs/billing.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/de/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/de/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/de/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/de/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/de/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/de/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/de/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/de/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/de/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/de/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/de/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/de/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/de/subgraphs/explorer.mdx delete mode 100644 website/src/pages/de/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/de/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/de/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/de/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/de/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/de/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/de/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/de/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/de/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/de/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/de/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/de/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/de/substreams/_meta-titles.json delete mode 100644 website/src/pages/de/substreams/_meta.js delete mode 100644 website/src/pages/de/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/de/substreams/developing/_meta.js delete mode 100644 website/src/pages/de/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/de/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/de/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/de/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/de/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/de/substreams/introduction.mdx delete mode 100644 website/src/pages/de/substreams/publishing.mdx delete mode 100644 website/src/pages/de/substreams/quick-start.mdx delete mode 100644 website/src/pages/de/supported-networks.mdx delete mode 100644 website/src/pages/de/token-api/_meta-titles.json delete mode 100644 website/src/pages/de/token-api/_meta.js delete mode 100644 website/src/pages/de/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/de/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/de/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/de/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/de/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/de/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/de/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/de/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/de/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/de/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/de/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/de/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/de/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/de/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/de/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/de/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/de/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/de/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/de/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/de/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/de/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/de/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/de/token-api/faq.mdx delete mode 100644 website/src/pages/de/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/de/token-api/guides/_meta.js delete mode 100644 website/src/pages/de/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/de/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/de/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/de/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/de/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/de/token-api/quick-start.mdx delete mode 100644 website/src/pages/de/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/de/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/de/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/de/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/de/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/de/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/de/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/de/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/de/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/de/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/de/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/de/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/de/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/de/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/de/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/de/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/de/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/de/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/de/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/de/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/de/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/de/translations.ts delete mode 100644 website/src/pages/es/about.mdx delete mode 100644 website/src/pages/es/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/es/ai-suite/_meta.js delete mode 100644 website/src/pages/es/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/es/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/es/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/es/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/es/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/es/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/es/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/es/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/es/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/es/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/es/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/es/archived/_meta-titles.json delete mode 100644 website/src/pages/es/archived/_meta.js delete mode 100644 website/src/pages/es/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/es/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/es/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/es/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/es/archived/sunrise.mdx delete mode 100644 website/src/pages/es/contracts.json delete mode 100644 website/src/pages/es/contracts.mdx delete mode 100644 website/src/pages/es/docsearch.json delete mode 100644 website/src/pages/es/global.json delete mode 100644 website/src/pages/es/graph-horizon/_meta.js delete mode 100644 website/src/pages/es/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/es/graph-horizon/overview.mdx delete mode 100644 website/src/pages/es/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/es/hypergraph/_meta.js delete mode 100644 website/src/pages/es/hypergraph/faq.mdx delete mode 100644 website/src/pages/es/hypergraph/overview.mdx delete mode 100644 website/src/pages/es/index.json delete mode 100644 website/src/pages/es/indexing/_meta-titles.json delete mode 100644 website/src/pages/es/indexing/_meta.js delete mode 100644 website/src/pages/es/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/es/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/es/indexing/overview.mdx delete mode 100644 website/src/pages/es/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/es/indexing/tap.mdx delete mode 100644 website/src/pages/es/indexing/tooling/_meta.js delete mode 100644 website/src/pages/es/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/es/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/es/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/es/resources/_meta-titles.json delete mode 100644 website/src/pages/es/resources/_meta.js delete mode 100644 website/src/pages/es/resources/benefits.mdx delete mode 100644 website/src/pages/es/resources/glossary.mdx delete mode 100644 website/src/pages/es/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/es/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/es/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/es/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/es/resources/roles/_meta.js delete mode 100644 website/src/pages/es/resources/roles/curating.mdx delete mode 100644 website/src/pages/es/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/es/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/es/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/es/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/es/resources/tokenomics.mdx delete mode 100644 website/src/pages/es/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/es/subgraphs/_meta.js delete mode 100644 website/src/pages/es/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/es/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/es/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/es/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/es/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/es/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/es/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/es/subgraphs/billing.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/es/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/es/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/es/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/es/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/es/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/es/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/es/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/es/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/es/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/es/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/es/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/es/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/es/subgraphs/explorer.mdx delete mode 100644 website/src/pages/es/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/es/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/es/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/es/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/es/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/es/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/es/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/es/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/es/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/es/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/es/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/es/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/es/substreams/_meta-titles.json delete mode 100644 website/src/pages/es/substreams/_meta.js delete mode 100644 website/src/pages/es/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/es/substreams/developing/_meta.js delete mode 100644 website/src/pages/es/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/es/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/es/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/es/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/es/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/es/substreams/introduction.mdx delete mode 100644 website/src/pages/es/substreams/publishing.mdx delete mode 100644 website/src/pages/es/substreams/quick-start.mdx delete mode 100644 website/src/pages/es/supported-networks.mdx delete mode 100644 website/src/pages/es/token-api/_meta-titles.json delete mode 100644 website/src/pages/es/token-api/_meta.js delete mode 100644 website/src/pages/es/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/es/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/es/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/es/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/es/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/es/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/es/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/es/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/es/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/es/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/es/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/es/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/es/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/es/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/es/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/es/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/es/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/es/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/es/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/es/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/es/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/es/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/es/token-api/faq.mdx delete mode 100644 website/src/pages/es/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/es/token-api/guides/_meta.js delete mode 100644 website/src/pages/es/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/es/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/es/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/es/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/es/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/es/token-api/quick-start.mdx delete mode 100644 website/src/pages/es/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/es/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/es/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/es/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/es/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/es/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/es/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/es/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/es/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/es/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/es/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/es/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/es/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/es/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/es/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/es/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/es/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/es/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/es/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/es/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/es/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/es/translations.ts delete mode 100644 website/src/pages/fr/about.mdx delete mode 100644 website/src/pages/fr/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/fr/ai-suite/_meta.js delete mode 100644 website/src/pages/fr/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/fr/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/fr/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/fr/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/fr/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/fr/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/fr/archived/_meta-titles.json delete mode 100644 website/src/pages/fr/archived/_meta.js delete mode 100644 website/src/pages/fr/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/fr/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/fr/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/fr/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/fr/archived/sunrise.mdx delete mode 100644 website/src/pages/fr/contracts.json delete mode 100644 website/src/pages/fr/contracts.mdx delete mode 100644 website/src/pages/fr/docsearch.json delete mode 100644 website/src/pages/fr/global.json delete mode 100644 website/src/pages/fr/graph-horizon/_meta.js delete mode 100644 website/src/pages/fr/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/fr/graph-horizon/overview.mdx delete mode 100644 website/src/pages/fr/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/fr/hypergraph/_meta.js delete mode 100644 website/src/pages/fr/hypergraph/faq.mdx delete mode 100644 website/src/pages/fr/hypergraph/overview.mdx delete mode 100644 website/src/pages/fr/index.json delete mode 100644 website/src/pages/fr/indexing/_meta-titles.json delete mode 100644 website/src/pages/fr/indexing/_meta.js delete mode 100644 website/src/pages/fr/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/fr/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/fr/indexing/overview.mdx delete mode 100644 website/src/pages/fr/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/fr/indexing/tap.mdx delete mode 100644 website/src/pages/fr/indexing/tooling/_meta.js delete mode 100644 website/src/pages/fr/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/fr/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/fr/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/fr/resources/_meta-titles.json delete mode 100644 website/src/pages/fr/resources/_meta.js delete mode 100644 website/src/pages/fr/resources/benefits.mdx delete mode 100644 website/src/pages/fr/resources/glossary.mdx delete mode 100644 website/src/pages/fr/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/fr/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/fr/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/fr/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/fr/resources/roles/_meta.js delete mode 100644 website/src/pages/fr/resources/roles/curating.mdx delete mode 100644 website/src/pages/fr/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/fr/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/fr/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/fr/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/fr/resources/tokenomics.mdx delete mode 100644 website/src/pages/fr/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/fr/subgraphs/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/fr/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/fr/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/fr/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/fr/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/fr/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/fr/subgraphs/billing.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/fr/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/fr/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/fr/subgraphs/explorer.mdx delete mode 100644 website/src/pages/fr/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/fr/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/fr/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/fr/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/fr/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/fr/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/fr/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/fr/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/fr/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/fr/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/fr/substreams/_meta-titles.json delete mode 100644 website/src/pages/fr/substreams/_meta.js delete mode 100644 website/src/pages/fr/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/fr/substreams/developing/_meta.js delete mode 100644 website/src/pages/fr/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/fr/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/fr/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/fr/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/fr/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/fr/substreams/introduction.mdx delete mode 100644 website/src/pages/fr/substreams/publishing.mdx delete mode 100644 website/src/pages/fr/substreams/quick-start.mdx delete mode 100644 website/src/pages/fr/supported-networks.mdx delete mode 100644 website/src/pages/fr/token-api/_meta-titles.json delete mode 100644 website/src/pages/fr/token-api/_meta.js delete mode 100644 website/src/pages/fr/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/fr/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/fr/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/fr/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/fr/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/fr/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/fr/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/fr/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/fr/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/fr/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/fr/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/fr/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/fr/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/fr/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/fr/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/fr/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/fr/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/fr/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/fr/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/fr/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/fr/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/fr/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/fr/token-api/faq.mdx delete mode 100644 website/src/pages/fr/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/fr/token-api/guides/_meta.js delete mode 100644 website/src/pages/fr/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/fr/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/fr/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/fr/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/fr/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/fr/token-api/quick-start.mdx delete mode 100644 website/src/pages/fr/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/fr/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/fr/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/fr/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/fr/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/fr/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/fr/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/fr/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/fr/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/fr/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/fr/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/fr/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/fr/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/fr/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/fr/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/fr/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/fr/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/fr/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/fr/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/fr/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/fr/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/fr/translations.ts delete mode 100644 website/src/pages/hi/about.mdx delete mode 100644 website/src/pages/hi/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/hi/ai-suite/_meta.js delete mode 100644 website/src/pages/hi/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/hi/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/hi/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/hi/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/hi/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/hi/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/hi/archived/_meta-titles.json delete mode 100644 website/src/pages/hi/archived/_meta.js delete mode 100644 website/src/pages/hi/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/hi/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/hi/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/hi/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/hi/archived/sunrise.mdx delete mode 100644 website/src/pages/hi/contracts.json delete mode 100644 website/src/pages/hi/contracts.mdx delete mode 100644 website/src/pages/hi/docsearch.json delete mode 100644 website/src/pages/hi/global.json delete mode 100644 website/src/pages/hi/graph-horizon/_meta.js delete mode 100644 website/src/pages/hi/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/hi/graph-horizon/overview.mdx delete mode 100644 website/src/pages/hi/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/hi/hypergraph/_meta.js delete mode 100644 website/src/pages/hi/hypergraph/faq.mdx delete mode 100644 website/src/pages/hi/hypergraph/overview.mdx delete mode 100644 website/src/pages/hi/index.json delete mode 100644 website/src/pages/hi/indexing/_meta-titles.json delete mode 100644 website/src/pages/hi/indexing/_meta.js delete mode 100644 website/src/pages/hi/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/hi/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/hi/indexing/overview.mdx delete mode 100644 website/src/pages/hi/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/hi/indexing/tap.mdx delete mode 100644 website/src/pages/hi/indexing/tooling/_meta.js delete mode 100644 website/src/pages/hi/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/hi/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/hi/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/hi/resources/_meta-titles.json delete mode 100644 website/src/pages/hi/resources/_meta.js delete mode 100644 website/src/pages/hi/resources/benefits.mdx delete mode 100644 website/src/pages/hi/resources/glossary.mdx delete mode 100644 website/src/pages/hi/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/hi/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/hi/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/hi/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/hi/resources/roles/_meta.js delete mode 100644 website/src/pages/hi/resources/roles/curating.mdx delete mode 100644 website/src/pages/hi/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/hi/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/hi/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/hi/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/hi/resources/tokenomics.mdx delete mode 100644 website/src/pages/hi/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/hi/subgraphs/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/hi/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/hi/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/hi/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/hi/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/hi/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/hi/subgraphs/billing.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/hi/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/hi/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/hi/subgraphs/explorer.mdx delete mode 100644 website/src/pages/hi/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/hi/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/hi/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/hi/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/hi/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/hi/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/hi/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/hi/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/hi/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/hi/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/hi/substreams/_meta-titles.json delete mode 100644 website/src/pages/hi/substreams/_meta.js delete mode 100644 website/src/pages/hi/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/hi/substreams/developing/_meta.js delete mode 100644 website/src/pages/hi/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/hi/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/hi/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/hi/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/hi/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/hi/substreams/introduction.mdx delete mode 100644 website/src/pages/hi/substreams/publishing.mdx delete mode 100644 website/src/pages/hi/substreams/quick-start.mdx delete mode 100644 website/src/pages/hi/supported-networks.mdx delete mode 100644 website/src/pages/hi/token-api/_meta-titles.json delete mode 100644 website/src/pages/hi/token-api/_meta.js delete mode 100644 website/src/pages/hi/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/hi/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/hi/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/hi/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/hi/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/hi/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/hi/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/hi/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/hi/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/hi/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/hi/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/hi/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/hi/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/hi/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/hi/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/hi/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/hi/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/hi/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/hi/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/hi/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/hi/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/hi/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/hi/token-api/faq.mdx delete mode 100644 website/src/pages/hi/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/hi/token-api/guides/_meta.js delete mode 100644 website/src/pages/hi/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/hi/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/hi/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/hi/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/hi/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/hi/token-api/quick-start.mdx delete mode 100644 website/src/pages/hi/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/hi/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/hi/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/hi/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/hi/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/hi/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/hi/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/hi/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/hi/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/hi/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/hi/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/hi/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/hi/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/hi/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/hi/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/hi/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/hi/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/hi/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/hi/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/hi/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/hi/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/hi/translations.ts delete mode 100644 website/src/pages/it/about.mdx delete mode 100644 website/src/pages/it/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/it/ai-suite/_meta.js delete mode 100644 website/src/pages/it/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/it/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/it/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/it/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/it/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/it/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/it/archived/_meta-titles.json delete mode 100644 website/src/pages/it/archived/_meta.js delete mode 100644 website/src/pages/it/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/it/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/it/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/it/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/it/archived/sunrise.mdx delete mode 100644 website/src/pages/it/contracts.json delete mode 100644 website/src/pages/it/contracts.mdx delete mode 100644 website/src/pages/it/docsearch.json delete mode 100644 website/src/pages/it/global.json delete mode 100644 website/src/pages/it/graph-horizon/_meta.js delete mode 100644 website/src/pages/it/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/it/graph-horizon/overview.mdx delete mode 100644 website/src/pages/it/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/it/hypergraph/_meta.js delete mode 100644 website/src/pages/it/hypergraph/faq.mdx delete mode 100644 website/src/pages/it/hypergraph/overview.mdx delete mode 100644 website/src/pages/it/index.json delete mode 100644 website/src/pages/it/indexing/_meta-titles.json delete mode 100644 website/src/pages/it/indexing/_meta.js delete mode 100644 website/src/pages/it/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/it/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/it/indexing/overview.mdx delete mode 100644 website/src/pages/it/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/it/indexing/tap.mdx delete mode 100644 website/src/pages/it/indexing/tooling/_meta.js delete mode 100644 website/src/pages/it/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/it/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/it/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/it/resources/_meta-titles.json delete mode 100644 website/src/pages/it/resources/_meta.js delete mode 100644 website/src/pages/it/resources/benefits.mdx delete mode 100644 website/src/pages/it/resources/glossary.mdx delete mode 100644 website/src/pages/it/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/it/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/it/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/it/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/it/resources/roles/_meta.js delete mode 100644 website/src/pages/it/resources/roles/curating.mdx delete mode 100644 website/src/pages/it/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/it/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/it/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/it/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/it/resources/tokenomics.mdx delete mode 100644 website/src/pages/it/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/it/subgraphs/_meta.js delete mode 100644 website/src/pages/it/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/it/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/it/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/it/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/it/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/it/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/it/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/it/subgraphs/billing.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/it/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/it/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/it/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/it/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/it/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/it/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/it/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/it/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/it/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/it/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/it/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/it/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/it/subgraphs/explorer.mdx delete mode 100644 website/src/pages/it/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/it/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/it/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/it/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/it/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/it/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/it/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/it/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/it/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/it/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/it/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/it/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/it/substreams/_meta-titles.json delete mode 100644 website/src/pages/it/substreams/_meta.js delete mode 100644 website/src/pages/it/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/it/substreams/developing/_meta.js delete mode 100644 website/src/pages/it/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/it/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/it/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/it/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/it/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/it/substreams/introduction.mdx delete mode 100644 website/src/pages/it/substreams/publishing.mdx delete mode 100644 website/src/pages/it/substreams/quick-start.mdx delete mode 100644 website/src/pages/it/supported-networks.mdx delete mode 100644 website/src/pages/it/token-api/_meta-titles.json delete mode 100644 website/src/pages/it/token-api/_meta.js delete mode 100644 website/src/pages/it/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/it/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/it/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/it/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/it/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/it/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/it/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/it/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/it/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/it/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/it/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/it/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/it/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/it/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/it/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/it/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/it/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/it/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/it/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/it/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/it/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/it/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/it/token-api/faq.mdx delete mode 100644 website/src/pages/it/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/it/token-api/guides/_meta.js delete mode 100644 website/src/pages/it/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/it/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/it/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/it/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/it/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/it/token-api/quick-start.mdx delete mode 100644 website/src/pages/it/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/it/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/it/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/it/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/it/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/it/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/it/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/it/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/it/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/it/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/it/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/it/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/it/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/it/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/it/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/it/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/it/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/it/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/it/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/it/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/it/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/it/translations.ts delete mode 100644 website/src/pages/ja/about.mdx delete mode 100644 website/src/pages/ja/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/ja/ai-suite/_meta.js delete mode 100644 website/src/pages/ja/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/ja/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/ja/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/ja/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/ja/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/ja/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/ja/archived/_meta-titles.json delete mode 100644 website/src/pages/ja/archived/_meta.js delete mode 100644 website/src/pages/ja/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/ja/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/ja/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/ja/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/ja/archived/sunrise.mdx delete mode 100644 website/src/pages/ja/contracts.json delete mode 100644 website/src/pages/ja/contracts.mdx delete mode 100644 website/src/pages/ja/docsearch.json delete mode 100644 website/src/pages/ja/global.json delete mode 100644 website/src/pages/ja/graph-horizon/_meta.js delete mode 100644 website/src/pages/ja/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/ja/graph-horizon/overview.mdx delete mode 100644 website/src/pages/ja/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/ja/hypergraph/_meta.js delete mode 100644 website/src/pages/ja/hypergraph/faq.mdx delete mode 100644 website/src/pages/ja/hypergraph/overview.mdx delete mode 100644 website/src/pages/ja/index.json delete mode 100644 website/src/pages/ja/indexing/_meta-titles.json delete mode 100644 website/src/pages/ja/indexing/_meta.js delete mode 100644 website/src/pages/ja/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/ja/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/ja/indexing/overview.mdx delete mode 100644 website/src/pages/ja/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/ja/indexing/tap.mdx delete mode 100644 website/src/pages/ja/indexing/tooling/_meta.js delete mode 100644 website/src/pages/ja/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/ja/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/ja/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/ja/resources/_meta-titles.json delete mode 100644 website/src/pages/ja/resources/_meta.js delete mode 100644 website/src/pages/ja/resources/benefits.mdx delete mode 100644 website/src/pages/ja/resources/glossary.mdx delete mode 100644 website/src/pages/ja/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/ja/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/ja/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/ja/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/ja/resources/roles/_meta.js delete mode 100644 website/src/pages/ja/resources/roles/curating.mdx delete mode 100644 website/src/pages/ja/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/ja/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/ja/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/ja/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/ja/resources/tokenomics.mdx delete mode 100644 website/src/pages/ja/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/ja/subgraphs/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/ja/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/ja/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/ja/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/ja/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/ja/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/ja/subgraphs/billing.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/ja/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/ja/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/ja/subgraphs/explorer.mdx delete mode 100644 website/src/pages/ja/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/ja/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/ja/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/ja/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/ja/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/ja/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/ja/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/ja/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/ja/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/ja/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/ja/substreams/_meta-titles.json delete mode 100644 website/src/pages/ja/substreams/_meta.js delete mode 100644 website/src/pages/ja/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/ja/substreams/developing/_meta.js delete mode 100644 website/src/pages/ja/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/ja/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/ja/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/ja/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/ja/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/ja/substreams/introduction.mdx delete mode 100644 website/src/pages/ja/substreams/publishing.mdx delete mode 100644 website/src/pages/ja/substreams/quick-start.mdx delete mode 100644 website/src/pages/ja/supported-networks.mdx delete mode 100644 website/src/pages/ja/token-api/_meta-titles.json delete mode 100644 website/src/pages/ja/token-api/_meta.js delete mode 100644 website/src/pages/ja/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/ja/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/ja/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ja/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/ja/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/ja/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ja/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/ja/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/ja/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/ja/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/ja/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/ja/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/ja/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/ja/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/ja/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/ja/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/ja/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/ja/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ja/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/ja/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/ja/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/ja/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/ja/token-api/faq.mdx delete mode 100644 website/src/pages/ja/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/ja/token-api/guides/_meta.js delete mode 100644 website/src/pages/ja/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/ja/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/ja/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/ja/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/ja/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/ja/token-api/quick-start.mdx delete mode 100644 website/src/pages/ja/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/ja/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/ja/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ja/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/ja/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/ja/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/ja/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ja/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/ja/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/ja/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/ja/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/ja/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/ja/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/ja/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/ja/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ja/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/ja/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/ja/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/ja/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/ja/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/ja/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/ja/translations.ts delete mode 100644 website/src/pages/ko/about.mdx delete mode 100644 website/src/pages/ko/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/ko/ai-suite/_meta.js delete mode 100644 website/src/pages/ko/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/ko/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/ko/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/ko/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/ko/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/ko/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/ko/archived/_meta-titles.json delete mode 100644 website/src/pages/ko/archived/_meta.js delete mode 100644 website/src/pages/ko/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/ko/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/ko/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/ko/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/ko/archived/sunrise.mdx delete mode 100644 website/src/pages/ko/contracts.json delete mode 100644 website/src/pages/ko/contracts.mdx delete mode 100644 website/src/pages/ko/docsearch.json delete mode 100644 website/src/pages/ko/global.json delete mode 100644 website/src/pages/ko/graph-horizon/_meta.js delete mode 100644 website/src/pages/ko/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/ko/graph-horizon/overview.mdx delete mode 100644 website/src/pages/ko/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/ko/hypergraph/_meta.js delete mode 100644 website/src/pages/ko/hypergraph/faq.mdx delete mode 100644 website/src/pages/ko/hypergraph/overview.mdx delete mode 100644 website/src/pages/ko/index.json delete mode 100644 website/src/pages/ko/indexing/_meta-titles.json delete mode 100644 website/src/pages/ko/indexing/_meta.js delete mode 100644 website/src/pages/ko/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/ko/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/ko/indexing/overview.mdx delete mode 100644 website/src/pages/ko/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/ko/indexing/tap.mdx delete mode 100644 website/src/pages/ko/indexing/tooling/_meta.js delete mode 100644 website/src/pages/ko/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/ko/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/ko/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/ko/resources/_meta-titles.json delete mode 100644 website/src/pages/ko/resources/_meta.js delete mode 100644 website/src/pages/ko/resources/benefits.mdx delete mode 100644 website/src/pages/ko/resources/glossary.mdx delete mode 100644 website/src/pages/ko/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/ko/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/ko/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/ko/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/ko/resources/roles/_meta.js delete mode 100644 website/src/pages/ko/resources/roles/curating.mdx delete mode 100644 website/src/pages/ko/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/ko/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/ko/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/ko/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/ko/resources/tokenomics.mdx delete mode 100644 website/src/pages/ko/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/ko/subgraphs/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/ko/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/ko/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/ko/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/ko/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/ko/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/ko/subgraphs/billing.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/ko/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/ko/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/ko/subgraphs/explorer.mdx delete mode 100644 website/src/pages/ko/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/ko/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/ko/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/ko/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/ko/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/ko/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/ko/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/ko/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/ko/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/ko/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/ko/substreams/_meta-titles.json delete mode 100644 website/src/pages/ko/substreams/_meta.js delete mode 100644 website/src/pages/ko/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/ko/substreams/developing/_meta.js delete mode 100644 website/src/pages/ko/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/ko/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/ko/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/ko/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/ko/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/ko/substreams/introduction.mdx delete mode 100644 website/src/pages/ko/substreams/publishing.mdx delete mode 100644 website/src/pages/ko/substreams/quick-start.mdx delete mode 100644 website/src/pages/ko/supported-networks.mdx delete mode 100644 website/src/pages/ko/token-api/_meta-titles.json delete mode 100644 website/src/pages/ko/token-api/_meta.js delete mode 100644 website/src/pages/ko/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/ko/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/ko/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ko/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/ko/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/ko/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ko/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/ko/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/ko/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/ko/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/ko/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/ko/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/ko/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/ko/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/ko/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/ko/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/ko/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/ko/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ko/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/ko/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/ko/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/ko/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/ko/token-api/faq.mdx delete mode 100644 website/src/pages/ko/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/ko/token-api/guides/_meta.js delete mode 100644 website/src/pages/ko/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/ko/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/ko/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/ko/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/ko/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/ko/token-api/quick-start.mdx delete mode 100644 website/src/pages/ko/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/ko/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/ko/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ko/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/ko/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/ko/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/ko/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ko/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/ko/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/ko/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/ko/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/ko/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/ko/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/ko/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/ko/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ko/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/ko/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/ko/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/ko/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/ko/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/ko/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/ko/translations.ts delete mode 100644 website/src/pages/mr/about.mdx delete mode 100644 website/src/pages/mr/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/mr/ai-suite/_meta.js delete mode 100644 website/src/pages/mr/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/mr/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/mr/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/mr/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/mr/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/mr/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/mr/archived/_meta-titles.json delete mode 100644 website/src/pages/mr/archived/_meta.js delete mode 100644 website/src/pages/mr/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/mr/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/mr/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/mr/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/mr/archived/sunrise.mdx delete mode 100644 website/src/pages/mr/contracts.json delete mode 100644 website/src/pages/mr/contracts.mdx delete mode 100644 website/src/pages/mr/docsearch.json delete mode 100644 website/src/pages/mr/global.json delete mode 100644 website/src/pages/mr/graph-horizon/_meta.js delete mode 100644 website/src/pages/mr/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/mr/graph-horizon/overview.mdx delete mode 100644 website/src/pages/mr/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/mr/hypergraph/_meta.js delete mode 100644 website/src/pages/mr/hypergraph/faq.mdx delete mode 100644 website/src/pages/mr/hypergraph/overview.mdx delete mode 100644 website/src/pages/mr/index.json delete mode 100644 website/src/pages/mr/indexing/_meta-titles.json delete mode 100644 website/src/pages/mr/indexing/_meta.js delete mode 100644 website/src/pages/mr/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/mr/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/mr/indexing/overview.mdx delete mode 100644 website/src/pages/mr/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/mr/indexing/tap.mdx delete mode 100644 website/src/pages/mr/indexing/tooling/_meta.js delete mode 100644 website/src/pages/mr/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/mr/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/mr/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/mr/resources/_meta-titles.json delete mode 100644 website/src/pages/mr/resources/_meta.js delete mode 100644 website/src/pages/mr/resources/benefits.mdx delete mode 100644 website/src/pages/mr/resources/glossary.mdx delete mode 100644 website/src/pages/mr/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/mr/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/mr/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/mr/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/mr/resources/roles/_meta.js delete mode 100644 website/src/pages/mr/resources/roles/curating.mdx delete mode 100644 website/src/pages/mr/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/mr/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/mr/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/mr/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/mr/resources/tokenomics.mdx delete mode 100644 website/src/pages/mr/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/mr/subgraphs/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/mr/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/mr/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/mr/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/mr/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/mr/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/mr/subgraphs/billing.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/mr/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/mr/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/mr/subgraphs/explorer.mdx delete mode 100644 website/src/pages/mr/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/mr/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/mr/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/mr/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/mr/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/mr/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/mr/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/mr/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/mr/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/mr/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/mr/substreams/_meta-titles.json delete mode 100644 website/src/pages/mr/substreams/_meta.js delete mode 100644 website/src/pages/mr/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/mr/substreams/developing/_meta.js delete mode 100644 website/src/pages/mr/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/mr/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/mr/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/mr/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/mr/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/mr/substreams/introduction.mdx delete mode 100644 website/src/pages/mr/substreams/publishing.mdx delete mode 100644 website/src/pages/mr/substreams/quick-start.mdx delete mode 100644 website/src/pages/mr/supported-networks.mdx delete mode 100644 website/src/pages/mr/token-api/_meta-titles.json delete mode 100644 website/src/pages/mr/token-api/_meta.js delete mode 100644 website/src/pages/mr/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/mr/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/mr/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/mr/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/mr/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/mr/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/mr/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/mr/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/mr/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/mr/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/mr/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/mr/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/mr/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/mr/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/mr/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/mr/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/mr/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/mr/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/mr/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/mr/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/mr/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/mr/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/mr/token-api/faq.mdx delete mode 100644 website/src/pages/mr/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/mr/token-api/guides/_meta.js delete mode 100644 website/src/pages/mr/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/mr/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/mr/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/mr/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/mr/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/mr/token-api/quick-start.mdx delete mode 100644 website/src/pages/mr/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/mr/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/mr/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/mr/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/mr/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/mr/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/mr/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/mr/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/mr/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/mr/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/mr/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/mr/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/mr/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/mr/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/mr/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/mr/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/mr/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/mr/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/mr/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/mr/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/mr/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/mr/translations.ts delete mode 100644 website/src/pages/nl/about.mdx delete mode 100644 website/src/pages/nl/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/nl/ai-suite/_meta.js delete mode 100644 website/src/pages/nl/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/nl/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/nl/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/nl/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/nl/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/nl/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/nl/archived/_meta-titles.json delete mode 100644 website/src/pages/nl/archived/_meta.js delete mode 100644 website/src/pages/nl/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/nl/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/nl/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/nl/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/nl/archived/sunrise.mdx delete mode 100644 website/src/pages/nl/contracts.json delete mode 100644 website/src/pages/nl/contracts.mdx delete mode 100644 website/src/pages/nl/docsearch.json delete mode 100644 website/src/pages/nl/global.json delete mode 100644 website/src/pages/nl/graph-horizon/_meta.js delete mode 100644 website/src/pages/nl/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/nl/graph-horizon/overview.mdx delete mode 100644 website/src/pages/nl/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/nl/hypergraph/_meta.js delete mode 100644 website/src/pages/nl/hypergraph/faq.mdx delete mode 100644 website/src/pages/nl/hypergraph/overview.mdx delete mode 100644 website/src/pages/nl/index.json delete mode 100644 website/src/pages/nl/indexing/_meta-titles.json delete mode 100644 website/src/pages/nl/indexing/_meta.js delete mode 100644 website/src/pages/nl/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/nl/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/nl/indexing/overview.mdx delete mode 100644 website/src/pages/nl/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/nl/indexing/tap.mdx delete mode 100644 website/src/pages/nl/indexing/tooling/_meta.js delete mode 100644 website/src/pages/nl/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/nl/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/nl/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/nl/resources/_meta-titles.json delete mode 100644 website/src/pages/nl/resources/_meta.js delete mode 100644 website/src/pages/nl/resources/benefits.mdx delete mode 100644 website/src/pages/nl/resources/glossary.mdx delete mode 100644 website/src/pages/nl/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/nl/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/nl/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/nl/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/nl/resources/roles/_meta.js delete mode 100644 website/src/pages/nl/resources/roles/curating.mdx delete mode 100644 website/src/pages/nl/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/nl/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/nl/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/nl/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/nl/resources/tokenomics.mdx delete mode 100644 website/src/pages/nl/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/nl/subgraphs/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/nl/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/nl/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/nl/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/nl/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/nl/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/nl/subgraphs/billing.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/nl/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/nl/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/nl/subgraphs/explorer.mdx delete mode 100644 website/src/pages/nl/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/nl/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/nl/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/nl/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/nl/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/nl/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/nl/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/nl/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/nl/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/nl/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/nl/substreams/_meta-titles.json delete mode 100644 website/src/pages/nl/substreams/_meta.js delete mode 100644 website/src/pages/nl/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/nl/substreams/developing/_meta.js delete mode 100644 website/src/pages/nl/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/nl/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/nl/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/nl/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/nl/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/nl/substreams/introduction.mdx delete mode 100644 website/src/pages/nl/substreams/publishing.mdx delete mode 100644 website/src/pages/nl/substreams/quick-start.mdx delete mode 100644 website/src/pages/nl/supported-networks.mdx delete mode 100644 website/src/pages/nl/token-api/_meta-titles.json delete mode 100644 website/src/pages/nl/token-api/_meta.js delete mode 100644 website/src/pages/nl/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/nl/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/nl/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/nl/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/nl/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/nl/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/nl/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/nl/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/nl/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/nl/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/nl/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/nl/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/nl/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/nl/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/nl/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/nl/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/nl/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/nl/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/nl/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/nl/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/nl/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/nl/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/nl/token-api/faq.mdx delete mode 100644 website/src/pages/nl/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/nl/token-api/guides/_meta.js delete mode 100644 website/src/pages/nl/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/nl/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/nl/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/nl/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/nl/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/nl/token-api/quick-start.mdx delete mode 100644 website/src/pages/nl/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/nl/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/nl/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/nl/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/nl/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/nl/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/nl/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/nl/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/nl/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/nl/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/nl/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/nl/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/nl/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/nl/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/nl/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/nl/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/nl/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/nl/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/nl/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/nl/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/nl/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/nl/translations.ts delete mode 100644 website/src/pages/pl/about.mdx delete mode 100644 website/src/pages/pl/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/pl/ai-suite/_meta.js delete mode 100644 website/src/pages/pl/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/pl/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/pl/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/pl/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/pl/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/pl/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/pl/archived/_meta-titles.json delete mode 100644 website/src/pages/pl/archived/_meta.js delete mode 100644 website/src/pages/pl/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/pl/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/pl/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/pl/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/pl/archived/sunrise.mdx delete mode 100644 website/src/pages/pl/contracts.json delete mode 100644 website/src/pages/pl/contracts.mdx delete mode 100644 website/src/pages/pl/docsearch.json delete mode 100644 website/src/pages/pl/global.json delete mode 100644 website/src/pages/pl/graph-horizon/_meta.js delete mode 100644 website/src/pages/pl/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/pl/graph-horizon/overview.mdx delete mode 100644 website/src/pages/pl/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/pl/hypergraph/_meta.js delete mode 100644 website/src/pages/pl/hypergraph/faq.mdx delete mode 100644 website/src/pages/pl/hypergraph/overview.mdx delete mode 100644 website/src/pages/pl/index.json delete mode 100644 website/src/pages/pl/indexing/_meta-titles.json delete mode 100644 website/src/pages/pl/indexing/_meta.js delete mode 100644 website/src/pages/pl/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/pl/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/pl/indexing/overview.mdx delete mode 100644 website/src/pages/pl/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/pl/indexing/tap.mdx delete mode 100644 website/src/pages/pl/indexing/tooling/_meta.js delete mode 100644 website/src/pages/pl/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/pl/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/pl/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/pl/resources/_meta-titles.json delete mode 100644 website/src/pages/pl/resources/_meta.js delete mode 100644 website/src/pages/pl/resources/benefits.mdx delete mode 100644 website/src/pages/pl/resources/glossary.mdx delete mode 100644 website/src/pages/pl/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/pl/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/pl/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/pl/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/pl/resources/roles/_meta.js delete mode 100644 website/src/pages/pl/resources/roles/curating.mdx delete mode 100644 website/src/pages/pl/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/pl/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/pl/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/pl/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/pl/resources/tokenomics.mdx delete mode 100644 website/src/pages/pl/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/pl/subgraphs/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/pl/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/pl/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/pl/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/pl/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/pl/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/pl/subgraphs/billing.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/pl/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/pl/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/pl/subgraphs/explorer.mdx delete mode 100644 website/src/pages/pl/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/pl/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/pl/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/pl/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/pl/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/pl/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/pl/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/pl/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/pl/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/pl/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/pl/substreams/_meta-titles.json delete mode 100644 website/src/pages/pl/substreams/_meta.js delete mode 100644 website/src/pages/pl/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/pl/substreams/developing/_meta.js delete mode 100644 website/src/pages/pl/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/pl/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/pl/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/pl/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/pl/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/pl/substreams/introduction.mdx delete mode 100644 website/src/pages/pl/substreams/publishing.mdx delete mode 100644 website/src/pages/pl/substreams/quick-start.mdx delete mode 100644 website/src/pages/pl/supported-networks.mdx delete mode 100644 website/src/pages/pl/token-api/_meta-titles.json delete mode 100644 website/src/pages/pl/token-api/_meta.js delete mode 100644 website/src/pages/pl/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/pl/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/pl/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/pl/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/pl/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/pl/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/pl/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/pl/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/pl/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/pl/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/pl/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/pl/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/pl/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/pl/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/pl/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/pl/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/pl/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/pl/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/pl/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/pl/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/pl/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/pl/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/pl/token-api/faq.mdx delete mode 100644 website/src/pages/pl/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/pl/token-api/guides/_meta.js delete mode 100644 website/src/pages/pl/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/pl/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/pl/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/pl/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/pl/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/pl/token-api/quick-start.mdx delete mode 100644 website/src/pages/pl/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/pl/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/pl/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/pl/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/pl/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/pl/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/pl/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/pl/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/pl/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/pl/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/pl/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/pl/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/pl/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/pl/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/pl/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/pl/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/pl/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/pl/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/pl/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/pl/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/pl/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/pl/translations.ts delete mode 100644 website/src/pages/pt/about.mdx delete mode 100644 website/src/pages/pt/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/pt/ai-suite/_meta.js delete mode 100644 website/src/pages/pt/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/pt/archived/_meta-titles.json delete mode 100644 website/src/pages/pt/archived/_meta.js delete mode 100644 website/src/pages/pt/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/pt/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/pt/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/pt/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/pt/archived/sunrise.mdx delete mode 100644 website/src/pages/pt/contracts.json delete mode 100644 website/src/pages/pt/contracts.mdx delete mode 100644 website/src/pages/pt/docsearch.json delete mode 100644 website/src/pages/pt/global.json delete mode 100644 website/src/pages/pt/graph-horizon/_meta.js delete mode 100644 website/src/pages/pt/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/pt/graph-horizon/overview.mdx delete mode 100644 website/src/pages/pt/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/pt/hypergraph/_meta.js delete mode 100644 website/src/pages/pt/hypergraph/faq.mdx delete mode 100644 website/src/pages/pt/hypergraph/overview.mdx delete mode 100644 website/src/pages/pt/index.json delete mode 100644 website/src/pages/pt/indexing/_meta-titles.json delete mode 100644 website/src/pages/pt/indexing/_meta.js delete mode 100644 website/src/pages/pt/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/pt/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/pt/indexing/overview.mdx delete mode 100644 website/src/pages/pt/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/pt/indexing/tap.mdx delete mode 100644 website/src/pages/pt/indexing/tooling/_meta.js delete mode 100644 website/src/pages/pt/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/pt/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/pt/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/pt/resources/_meta-titles.json delete mode 100644 website/src/pages/pt/resources/_meta.js delete mode 100644 website/src/pages/pt/resources/benefits.mdx delete mode 100644 website/src/pages/pt/resources/glossary.mdx delete mode 100644 website/src/pages/pt/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/pt/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/pt/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/pt/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/pt/resources/roles/_meta.js delete mode 100644 website/src/pages/pt/resources/roles/curating.mdx delete mode 100644 website/src/pages/pt/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/pt/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/pt/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/pt/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/pt/resources/tokenomics.mdx delete mode 100644 website/src/pages/pt/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/pt/subgraphs/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/pt/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/pt/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/pt/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/pt/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/pt/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/pt/subgraphs/billing.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/pt/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/pt/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/pt/subgraphs/explorer.mdx delete mode 100644 website/src/pages/pt/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/pt/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/pt/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/pt/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/pt/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/pt/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/pt/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/pt/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/pt/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/pt/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/pt/substreams/_meta-titles.json delete mode 100644 website/src/pages/pt/substreams/_meta.js delete mode 100644 website/src/pages/pt/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/pt/substreams/developing/_meta.js delete mode 100644 website/src/pages/pt/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/pt/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/pt/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/pt/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/pt/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/pt/substreams/introduction.mdx delete mode 100644 website/src/pages/pt/substreams/publishing.mdx delete mode 100644 website/src/pages/pt/substreams/quick-start.mdx delete mode 100644 website/src/pages/pt/supported-networks.mdx delete mode 100644 website/src/pages/pt/token-api/_meta-titles.json delete mode 100644 website/src/pages/pt/token-api/_meta.js delete mode 100644 website/src/pages/pt/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/pt/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/pt/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/pt/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/pt/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/pt/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/pt/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/pt/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/pt/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/pt/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/pt/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/pt/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/pt/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/pt/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/pt/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/pt/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/pt/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/pt/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/pt/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/pt/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/pt/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/pt/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/pt/token-api/faq.mdx delete mode 100644 website/src/pages/pt/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/pt/token-api/guides/_meta.js delete mode 100644 website/src/pages/pt/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/pt/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/pt/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/pt/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/pt/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/pt/token-api/quick-start.mdx delete mode 100644 website/src/pages/pt/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/pt/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/pt/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/pt/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/pt/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/pt/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/pt/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/pt/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/pt/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/pt/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/pt/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/pt/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/pt/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/pt/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/pt/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/pt/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/pt/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/pt/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/pt/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/pt/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/pt/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/pt/translations.ts delete mode 100644 website/src/pages/ro/about.mdx delete mode 100644 website/src/pages/ro/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/ro/ai-suite/_meta.js delete mode 100644 website/src/pages/ro/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/ro/archived/_meta-titles.json delete mode 100644 website/src/pages/ro/archived/_meta.js delete mode 100644 website/src/pages/ro/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/ro/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/ro/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/ro/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/ro/archived/sunrise.mdx delete mode 100644 website/src/pages/ro/contracts.json delete mode 100644 website/src/pages/ro/contracts.mdx delete mode 100644 website/src/pages/ro/docsearch.json delete mode 100644 website/src/pages/ro/global.json delete mode 100644 website/src/pages/ro/graph-horizon/_meta.js delete mode 100644 website/src/pages/ro/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/ro/graph-horizon/overview.mdx delete mode 100644 website/src/pages/ro/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/ro/hypergraph/_meta.js delete mode 100644 website/src/pages/ro/hypergraph/faq.mdx delete mode 100644 website/src/pages/ro/hypergraph/overview.mdx delete mode 100644 website/src/pages/ro/index.json delete mode 100644 website/src/pages/ro/indexing/_meta-titles.json delete mode 100644 website/src/pages/ro/indexing/_meta.js delete mode 100644 website/src/pages/ro/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/ro/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/ro/indexing/overview.mdx delete mode 100644 website/src/pages/ro/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/ro/indexing/tap.mdx delete mode 100644 website/src/pages/ro/indexing/tooling/_meta.js delete mode 100644 website/src/pages/ro/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/ro/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/ro/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/ro/resources/_meta-titles.json delete mode 100644 website/src/pages/ro/resources/_meta.js delete mode 100644 website/src/pages/ro/resources/benefits.mdx delete mode 100644 website/src/pages/ro/resources/glossary.mdx delete mode 100644 website/src/pages/ro/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/ro/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/ro/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/ro/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/ro/resources/roles/_meta.js delete mode 100644 website/src/pages/ro/resources/roles/curating.mdx delete mode 100644 website/src/pages/ro/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/ro/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/ro/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/ro/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/ro/resources/tokenomics.mdx delete mode 100644 website/src/pages/ro/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/ro/subgraphs/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/ro/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/ro/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/ro/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/ro/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/ro/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/ro/subgraphs/billing.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/ro/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/ro/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/ro/subgraphs/explorer.mdx delete mode 100644 website/src/pages/ro/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/ro/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/ro/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/ro/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/ro/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/ro/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/ro/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/ro/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/ro/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/ro/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/ro/substreams/_meta-titles.json delete mode 100644 website/src/pages/ro/substreams/_meta.js delete mode 100644 website/src/pages/ro/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/ro/substreams/developing/_meta.js delete mode 100644 website/src/pages/ro/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/ro/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/ro/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/ro/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/ro/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/ro/substreams/introduction.mdx delete mode 100644 website/src/pages/ro/substreams/publishing.mdx delete mode 100644 website/src/pages/ro/substreams/quick-start.mdx delete mode 100644 website/src/pages/ro/supported-networks.mdx delete mode 100644 website/src/pages/ro/token-api/_meta-titles.json delete mode 100644 website/src/pages/ro/token-api/_meta.js delete mode 100644 website/src/pages/ro/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/ro/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/ro/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ro/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/ro/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/ro/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ro/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/ro/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/ro/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/ro/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/ro/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/ro/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/ro/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/ro/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/ro/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/ro/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/ro/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/ro/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ro/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/ro/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/ro/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/ro/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/ro/token-api/faq.mdx delete mode 100644 website/src/pages/ro/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/ro/token-api/guides/_meta.js delete mode 100644 website/src/pages/ro/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/ro/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/ro/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/ro/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/ro/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/ro/token-api/quick-start.mdx delete mode 100644 website/src/pages/ro/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/ro/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/ro/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ro/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/ro/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/ro/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/ro/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ro/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/ro/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/ro/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/ro/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/ro/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/ro/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/ro/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/ro/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ro/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/ro/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/ro/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/ro/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/ro/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/ro/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/ro/translations.ts delete mode 100644 website/src/pages/ru/about.mdx delete mode 100644 website/src/pages/ru/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/ru/ai-suite/_meta.js delete mode 100644 website/src/pages/ru/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/ru/archived/_meta-titles.json delete mode 100644 website/src/pages/ru/archived/_meta.js delete mode 100644 website/src/pages/ru/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/ru/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/ru/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/ru/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/ru/archived/sunrise.mdx delete mode 100644 website/src/pages/ru/contracts.json delete mode 100644 website/src/pages/ru/contracts.mdx delete mode 100644 website/src/pages/ru/docsearch.json delete mode 100644 website/src/pages/ru/global.json delete mode 100644 website/src/pages/ru/graph-horizon/_meta.js delete mode 100644 website/src/pages/ru/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/ru/graph-horizon/overview.mdx delete mode 100644 website/src/pages/ru/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/ru/hypergraph/_meta.js delete mode 100644 website/src/pages/ru/hypergraph/faq.mdx delete mode 100644 website/src/pages/ru/hypergraph/overview.mdx delete mode 100644 website/src/pages/ru/index.json delete mode 100644 website/src/pages/ru/indexing/_meta-titles.json delete mode 100644 website/src/pages/ru/indexing/_meta.js delete mode 100644 website/src/pages/ru/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/ru/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/ru/indexing/overview.mdx delete mode 100644 website/src/pages/ru/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/ru/indexing/tap.mdx delete mode 100644 website/src/pages/ru/indexing/tooling/_meta.js delete mode 100644 website/src/pages/ru/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/ru/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/ru/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/ru/resources/_meta-titles.json delete mode 100644 website/src/pages/ru/resources/_meta.js delete mode 100644 website/src/pages/ru/resources/benefits.mdx delete mode 100644 website/src/pages/ru/resources/glossary.mdx delete mode 100644 website/src/pages/ru/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/ru/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/ru/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/ru/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/ru/resources/roles/_meta.js delete mode 100644 website/src/pages/ru/resources/roles/curating.mdx delete mode 100644 website/src/pages/ru/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/ru/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/ru/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/ru/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/ru/resources/tokenomics.mdx delete mode 100644 website/src/pages/ru/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/ru/subgraphs/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/ru/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/ru/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/ru/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/ru/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/ru/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/ru/subgraphs/billing.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/ru/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/ru/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/ru/subgraphs/explorer.mdx delete mode 100644 website/src/pages/ru/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/ru/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/ru/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/ru/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/ru/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/ru/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/ru/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/ru/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/ru/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/ru/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/ru/substreams/_meta-titles.json delete mode 100644 website/src/pages/ru/substreams/_meta.js delete mode 100644 website/src/pages/ru/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/ru/substreams/developing/_meta.js delete mode 100644 website/src/pages/ru/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/ru/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/ru/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/ru/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/ru/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/ru/substreams/introduction.mdx delete mode 100644 website/src/pages/ru/substreams/publishing.mdx delete mode 100644 website/src/pages/ru/substreams/quick-start.mdx delete mode 100644 website/src/pages/ru/supported-networks.mdx delete mode 100644 website/src/pages/ru/token-api/_meta-titles.json delete mode 100644 website/src/pages/ru/token-api/_meta.js delete mode 100644 website/src/pages/ru/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/ru/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/ru/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ru/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/ru/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/ru/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ru/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/ru/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/ru/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/ru/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/ru/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/ru/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/ru/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/ru/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/ru/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/ru/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/ru/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/ru/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ru/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/ru/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/ru/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/ru/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/ru/token-api/faq.mdx delete mode 100644 website/src/pages/ru/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/ru/token-api/guides/_meta.js delete mode 100644 website/src/pages/ru/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/ru/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/ru/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/ru/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/ru/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/ru/token-api/quick-start.mdx delete mode 100644 website/src/pages/ru/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/ru/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/ru/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ru/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/ru/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/ru/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/ru/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ru/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/ru/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/ru/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/ru/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/ru/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/ru/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/ru/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/ru/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ru/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/ru/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/ru/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/ru/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/ru/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/ru/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/ru/translations.ts delete mode 100644 website/src/pages/sv/about.mdx delete mode 100644 website/src/pages/sv/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/sv/ai-suite/_meta.js delete mode 100644 website/src/pages/sv/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/sv/archived/_meta-titles.json delete mode 100644 website/src/pages/sv/archived/_meta.js delete mode 100644 website/src/pages/sv/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/sv/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/sv/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/sv/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/sv/archived/sunrise.mdx delete mode 100644 website/src/pages/sv/contracts.json delete mode 100644 website/src/pages/sv/contracts.mdx delete mode 100644 website/src/pages/sv/docsearch.json delete mode 100644 website/src/pages/sv/global.json delete mode 100644 website/src/pages/sv/graph-horizon/_meta.js delete mode 100644 website/src/pages/sv/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/sv/graph-horizon/overview.mdx delete mode 100644 website/src/pages/sv/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/sv/hypergraph/_meta.js delete mode 100644 website/src/pages/sv/hypergraph/faq.mdx delete mode 100644 website/src/pages/sv/hypergraph/overview.mdx delete mode 100644 website/src/pages/sv/index.json delete mode 100644 website/src/pages/sv/indexing/_meta-titles.json delete mode 100644 website/src/pages/sv/indexing/_meta.js delete mode 100644 website/src/pages/sv/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/sv/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/sv/indexing/overview.mdx delete mode 100644 website/src/pages/sv/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/sv/indexing/tap.mdx delete mode 100644 website/src/pages/sv/indexing/tooling/_meta.js delete mode 100644 website/src/pages/sv/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/sv/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/sv/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/sv/resources/_meta-titles.json delete mode 100644 website/src/pages/sv/resources/_meta.js delete mode 100644 website/src/pages/sv/resources/benefits.mdx delete mode 100644 website/src/pages/sv/resources/glossary.mdx delete mode 100644 website/src/pages/sv/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/sv/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/sv/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/sv/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/sv/resources/roles/_meta.js delete mode 100644 website/src/pages/sv/resources/roles/curating.mdx delete mode 100644 website/src/pages/sv/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/sv/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/sv/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/sv/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/sv/resources/tokenomics.mdx delete mode 100644 website/src/pages/sv/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/sv/subgraphs/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/sv/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/sv/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/sv/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/sv/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/sv/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/sv/subgraphs/billing.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/sv/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/sv/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/sv/subgraphs/explorer.mdx delete mode 100644 website/src/pages/sv/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/sv/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/sv/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/sv/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/sv/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/sv/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/sv/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/sv/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/sv/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/sv/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/sv/substreams/_meta-titles.json delete mode 100644 website/src/pages/sv/substreams/_meta.js delete mode 100644 website/src/pages/sv/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/sv/substreams/developing/_meta.js delete mode 100644 website/src/pages/sv/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/sv/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/sv/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/sv/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/sv/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/sv/substreams/introduction.mdx delete mode 100644 website/src/pages/sv/substreams/publishing.mdx delete mode 100644 website/src/pages/sv/substreams/quick-start.mdx delete mode 100644 website/src/pages/sv/supported-networks.mdx delete mode 100644 website/src/pages/sv/token-api/_meta-titles.json delete mode 100644 website/src/pages/sv/token-api/_meta.js delete mode 100644 website/src/pages/sv/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/sv/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/sv/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/sv/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/sv/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/sv/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/sv/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/sv/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/sv/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/sv/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/sv/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/sv/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/sv/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/sv/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/sv/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/sv/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/sv/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/sv/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/sv/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/sv/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/sv/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/sv/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/sv/token-api/faq.mdx delete mode 100644 website/src/pages/sv/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/sv/token-api/guides/_meta.js delete mode 100644 website/src/pages/sv/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/sv/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/sv/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/sv/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/sv/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/sv/token-api/quick-start.mdx delete mode 100644 website/src/pages/sv/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/sv/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/sv/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/sv/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/sv/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/sv/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/sv/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/sv/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/sv/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/sv/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/sv/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/sv/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/sv/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/sv/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/sv/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/sv/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/sv/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/sv/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/sv/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/sv/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/sv/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/sv/translations.ts delete mode 100644 website/src/pages/tr/about.mdx delete mode 100644 website/src/pages/tr/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/tr/ai-suite/_meta.js delete mode 100644 website/src/pages/tr/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/tr/archived/_meta-titles.json delete mode 100644 website/src/pages/tr/archived/_meta.js delete mode 100644 website/src/pages/tr/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/tr/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/tr/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/tr/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/tr/archived/sunrise.mdx delete mode 100644 website/src/pages/tr/contracts.json delete mode 100644 website/src/pages/tr/contracts.mdx delete mode 100644 website/src/pages/tr/docsearch.json delete mode 100644 website/src/pages/tr/global.json delete mode 100644 website/src/pages/tr/graph-horizon/_meta.js delete mode 100644 website/src/pages/tr/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/tr/graph-horizon/overview.mdx delete mode 100644 website/src/pages/tr/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/tr/hypergraph/_meta.js delete mode 100644 website/src/pages/tr/hypergraph/faq.mdx delete mode 100644 website/src/pages/tr/hypergraph/overview.mdx delete mode 100644 website/src/pages/tr/index.json delete mode 100644 website/src/pages/tr/indexing/_meta-titles.json delete mode 100644 website/src/pages/tr/indexing/_meta.js delete mode 100644 website/src/pages/tr/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/tr/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/tr/indexing/overview.mdx delete mode 100644 website/src/pages/tr/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/tr/indexing/tap.mdx delete mode 100644 website/src/pages/tr/indexing/tooling/_meta.js delete mode 100644 website/src/pages/tr/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/tr/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/tr/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/tr/resources/_meta-titles.json delete mode 100644 website/src/pages/tr/resources/_meta.js delete mode 100644 website/src/pages/tr/resources/benefits.mdx delete mode 100644 website/src/pages/tr/resources/glossary.mdx delete mode 100644 website/src/pages/tr/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/tr/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/tr/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/tr/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/tr/resources/roles/_meta.js delete mode 100644 website/src/pages/tr/resources/roles/curating.mdx delete mode 100644 website/src/pages/tr/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/tr/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/tr/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/tr/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/tr/resources/tokenomics.mdx delete mode 100644 website/src/pages/tr/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/tr/subgraphs/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/tr/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/tr/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/tr/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/tr/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/tr/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/tr/subgraphs/billing.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/tr/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/tr/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/tr/subgraphs/explorer.mdx delete mode 100644 website/src/pages/tr/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/tr/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/tr/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/tr/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/tr/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/tr/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/tr/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/tr/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/tr/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/tr/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/tr/substreams/_meta-titles.json delete mode 100644 website/src/pages/tr/substreams/_meta.js delete mode 100644 website/src/pages/tr/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/tr/substreams/developing/_meta.js delete mode 100644 website/src/pages/tr/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/tr/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/tr/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/tr/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/tr/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/tr/substreams/introduction.mdx delete mode 100644 website/src/pages/tr/substreams/publishing.mdx delete mode 100644 website/src/pages/tr/substreams/quick-start.mdx delete mode 100644 website/src/pages/tr/supported-networks.mdx delete mode 100644 website/src/pages/tr/token-api/_meta-titles.json delete mode 100644 website/src/pages/tr/token-api/_meta.js delete mode 100644 website/src/pages/tr/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/tr/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/tr/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/tr/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/tr/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/tr/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/tr/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/tr/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/tr/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/tr/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/tr/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/tr/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/tr/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/tr/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/tr/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/tr/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/tr/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/tr/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/tr/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/tr/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/tr/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/tr/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/tr/token-api/faq.mdx delete mode 100644 website/src/pages/tr/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/tr/token-api/guides/_meta.js delete mode 100644 website/src/pages/tr/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/tr/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/tr/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/tr/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/tr/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/tr/token-api/quick-start.mdx delete mode 100644 website/src/pages/tr/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/tr/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/tr/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/tr/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/tr/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/tr/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/tr/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/tr/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/tr/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/tr/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/tr/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/tr/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/tr/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/tr/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/tr/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/tr/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/tr/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/tr/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/tr/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/tr/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/tr/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/tr/translations.ts delete mode 100644 website/src/pages/uk/about.mdx delete mode 100644 website/src/pages/uk/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/uk/ai-suite/_meta.js delete mode 100644 website/src/pages/uk/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/uk/archived/_meta-titles.json delete mode 100644 website/src/pages/uk/archived/_meta.js delete mode 100644 website/src/pages/uk/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/uk/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/uk/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/uk/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/uk/archived/sunrise.mdx delete mode 100644 website/src/pages/uk/contracts.json delete mode 100644 website/src/pages/uk/contracts.mdx delete mode 100644 website/src/pages/uk/docsearch.json delete mode 100644 website/src/pages/uk/global.json delete mode 100644 website/src/pages/uk/graph-horizon/_meta.js delete mode 100644 website/src/pages/uk/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/uk/graph-horizon/overview.mdx delete mode 100644 website/src/pages/uk/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/uk/hypergraph/_meta.js delete mode 100644 website/src/pages/uk/hypergraph/faq.mdx delete mode 100644 website/src/pages/uk/hypergraph/overview.mdx delete mode 100644 website/src/pages/uk/index.json delete mode 100644 website/src/pages/uk/indexing/_meta-titles.json delete mode 100644 website/src/pages/uk/indexing/_meta.js delete mode 100644 website/src/pages/uk/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/uk/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/uk/indexing/overview.mdx delete mode 100644 website/src/pages/uk/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/uk/indexing/tap.mdx delete mode 100644 website/src/pages/uk/indexing/tooling/_meta.js delete mode 100644 website/src/pages/uk/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/uk/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/uk/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/uk/resources/_meta-titles.json delete mode 100644 website/src/pages/uk/resources/_meta.js delete mode 100644 website/src/pages/uk/resources/benefits.mdx delete mode 100644 website/src/pages/uk/resources/glossary.mdx delete mode 100644 website/src/pages/uk/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/uk/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/uk/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/uk/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/uk/resources/roles/_meta.js delete mode 100644 website/src/pages/uk/resources/roles/curating.mdx delete mode 100644 website/src/pages/uk/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/uk/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/uk/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/uk/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/uk/resources/tokenomics.mdx delete mode 100644 website/src/pages/uk/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/uk/subgraphs/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/uk/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/uk/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/uk/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/uk/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/uk/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/uk/subgraphs/billing.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/uk/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/uk/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/uk/subgraphs/explorer.mdx delete mode 100644 website/src/pages/uk/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/uk/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/uk/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/uk/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/uk/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/uk/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/uk/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/uk/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/uk/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/uk/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/uk/substreams/_meta-titles.json delete mode 100644 website/src/pages/uk/substreams/_meta.js delete mode 100644 website/src/pages/uk/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/uk/substreams/developing/_meta.js delete mode 100644 website/src/pages/uk/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/uk/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/uk/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/uk/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/uk/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/uk/substreams/introduction.mdx delete mode 100644 website/src/pages/uk/substreams/publishing.mdx delete mode 100644 website/src/pages/uk/substreams/quick-start.mdx delete mode 100644 website/src/pages/uk/supported-networks.mdx delete mode 100644 website/src/pages/uk/token-api/_meta-titles.json delete mode 100644 website/src/pages/uk/token-api/_meta.js delete mode 100644 website/src/pages/uk/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/uk/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/uk/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/uk/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/uk/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/uk/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/uk/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/uk/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/uk/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/uk/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/uk/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/uk/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/uk/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/uk/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/uk/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/uk/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/uk/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/uk/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/uk/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/uk/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/uk/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/uk/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/uk/token-api/faq.mdx delete mode 100644 website/src/pages/uk/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/uk/token-api/guides/_meta.js delete mode 100644 website/src/pages/uk/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/uk/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/uk/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/uk/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/uk/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/uk/token-api/quick-start.mdx delete mode 100644 website/src/pages/uk/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/uk/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/uk/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/uk/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/uk/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/uk/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/uk/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/uk/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/uk/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/uk/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/uk/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/uk/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/uk/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/uk/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/uk/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/uk/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/uk/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/uk/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/uk/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/uk/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/uk/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/uk/translations.ts delete mode 100644 website/src/pages/ur/about.mdx delete mode 100644 website/src/pages/ur/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/ur/ai-suite/_meta.js delete mode 100644 website/src/pages/ur/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/ur/archived/_meta-titles.json delete mode 100644 website/src/pages/ur/archived/_meta.js delete mode 100644 website/src/pages/ur/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/ur/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/ur/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/ur/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/ur/archived/sunrise.mdx delete mode 100644 website/src/pages/ur/contracts.json delete mode 100644 website/src/pages/ur/contracts.mdx delete mode 100644 website/src/pages/ur/docsearch.json delete mode 100644 website/src/pages/ur/global.json delete mode 100644 website/src/pages/ur/graph-horizon/_meta.js delete mode 100644 website/src/pages/ur/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/ur/graph-horizon/overview.mdx delete mode 100644 website/src/pages/ur/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/ur/hypergraph/_meta.js delete mode 100644 website/src/pages/ur/hypergraph/faq.mdx delete mode 100644 website/src/pages/ur/hypergraph/overview.mdx delete mode 100644 website/src/pages/ur/index.json delete mode 100644 website/src/pages/ur/indexing/_meta-titles.json delete mode 100644 website/src/pages/ur/indexing/_meta.js delete mode 100644 website/src/pages/ur/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/ur/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/ur/indexing/overview.mdx delete mode 100644 website/src/pages/ur/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/ur/indexing/tap.mdx delete mode 100644 website/src/pages/ur/indexing/tooling/_meta.js delete mode 100644 website/src/pages/ur/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/ur/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/ur/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/ur/resources/_meta-titles.json delete mode 100644 website/src/pages/ur/resources/_meta.js delete mode 100644 website/src/pages/ur/resources/benefits.mdx delete mode 100644 website/src/pages/ur/resources/glossary.mdx delete mode 100644 website/src/pages/ur/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/ur/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/ur/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/ur/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/ur/resources/roles/_meta.js delete mode 100644 website/src/pages/ur/resources/roles/curating.mdx delete mode 100644 website/src/pages/ur/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/ur/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/ur/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/ur/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/ur/resources/tokenomics.mdx delete mode 100644 website/src/pages/ur/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/ur/subgraphs/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/ur/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/ur/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/ur/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/ur/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/ur/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/ur/subgraphs/billing.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/ur/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/ur/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/ur/subgraphs/explorer.mdx delete mode 100644 website/src/pages/ur/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/ur/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/ur/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/ur/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/ur/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/ur/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/ur/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/ur/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/ur/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/ur/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/ur/substreams/_meta-titles.json delete mode 100644 website/src/pages/ur/substreams/_meta.js delete mode 100644 website/src/pages/ur/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/ur/substreams/developing/_meta.js delete mode 100644 website/src/pages/ur/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/ur/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/ur/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/ur/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/ur/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/ur/substreams/introduction.mdx delete mode 100644 website/src/pages/ur/substreams/publishing.mdx delete mode 100644 website/src/pages/ur/substreams/quick-start.mdx delete mode 100644 website/src/pages/ur/supported-networks.mdx delete mode 100644 website/src/pages/ur/token-api/_meta-titles.json delete mode 100644 website/src/pages/ur/token-api/_meta.js delete mode 100644 website/src/pages/ur/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/ur/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/ur/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ur/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/ur/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/ur/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ur/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/ur/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/ur/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/ur/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/ur/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/ur/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/ur/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/ur/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/ur/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/ur/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/ur/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/ur/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ur/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/ur/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/ur/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/ur/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/ur/token-api/faq.mdx delete mode 100644 website/src/pages/ur/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/ur/token-api/guides/_meta.js delete mode 100644 website/src/pages/ur/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/ur/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/ur/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/ur/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/ur/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/ur/token-api/quick-start.mdx delete mode 100644 website/src/pages/ur/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/ur/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/ur/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ur/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/ur/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/ur/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/ur/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/ur/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/ur/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/ur/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/ur/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/ur/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/ur/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/ur/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/ur/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/ur/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/ur/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/ur/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/ur/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/ur/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/ur/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/ur/translations.ts delete mode 100644 website/src/pages/vi/about.mdx delete mode 100644 website/src/pages/vi/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/vi/ai-suite/_meta.js delete mode 100644 website/src/pages/vi/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/vi/archived/_meta-titles.json delete mode 100644 website/src/pages/vi/archived/_meta.js delete mode 100644 website/src/pages/vi/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/vi/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/vi/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/vi/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/vi/archived/sunrise.mdx delete mode 100644 website/src/pages/vi/contracts.json delete mode 100644 website/src/pages/vi/contracts.mdx delete mode 100644 website/src/pages/vi/docsearch.json delete mode 100644 website/src/pages/vi/global.json delete mode 100644 website/src/pages/vi/graph-horizon/_meta.js delete mode 100644 website/src/pages/vi/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/vi/graph-horizon/overview.mdx delete mode 100644 website/src/pages/vi/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/vi/hypergraph/_meta.js delete mode 100644 website/src/pages/vi/hypergraph/faq.mdx delete mode 100644 website/src/pages/vi/hypergraph/overview.mdx delete mode 100644 website/src/pages/vi/index.json delete mode 100644 website/src/pages/vi/indexing/_meta-titles.json delete mode 100644 website/src/pages/vi/indexing/_meta.js delete mode 100644 website/src/pages/vi/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/vi/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/vi/indexing/overview.mdx delete mode 100644 website/src/pages/vi/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/vi/indexing/tap.mdx delete mode 100644 website/src/pages/vi/indexing/tooling/_meta.js delete mode 100644 website/src/pages/vi/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/vi/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/vi/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/vi/resources/_meta-titles.json delete mode 100644 website/src/pages/vi/resources/_meta.js delete mode 100644 website/src/pages/vi/resources/benefits.mdx delete mode 100644 website/src/pages/vi/resources/glossary.mdx delete mode 100644 website/src/pages/vi/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/vi/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/vi/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/vi/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/vi/resources/roles/_meta.js delete mode 100644 website/src/pages/vi/resources/roles/curating.mdx delete mode 100644 website/src/pages/vi/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/vi/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/vi/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/vi/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/vi/resources/tokenomics.mdx delete mode 100644 website/src/pages/vi/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/vi/subgraphs/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/vi/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/vi/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/vi/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/vi/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/vi/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/vi/subgraphs/billing.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/vi/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/vi/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/vi/subgraphs/explorer.mdx delete mode 100644 website/src/pages/vi/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/vi/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/vi/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/vi/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/vi/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/vi/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/vi/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/vi/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/vi/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/vi/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/vi/substreams/_meta-titles.json delete mode 100644 website/src/pages/vi/substreams/_meta.js delete mode 100644 website/src/pages/vi/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/vi/substreams/developing/_meta.js delete mode 100644 website/src/pages/vi/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/vi/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/vi/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/vi/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/vi/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/vi/substreams/introduction.mdx delete mode 100644 website/src/pages/vi/substreams/publishing.mdx delete mode 100644 website/src/pages/vi/substreams/quick-start.mdx delete mode 100644 website/src/pages/vi/supported-networks.mdx delete mode 100644 website/src/pages/vi/token-api/_meta-titles.json delete mode 100644 website/src/pages/vi/token-api/_meta.js delete mode 100644 website/src/pages/vi/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/vi/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/vi/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/vi/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/vi/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/vi/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/vi/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/vi/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/vi/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/vi/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/vi/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/vi/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/vi/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/vi/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/vi/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/vi/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/vi/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/vi/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/vi/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/vi/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/vi/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/vi/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/vi/token-api/faq.mdx delete mode 100644 website/src/pages/vi/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/vi/token-api/guides/_meta.js delete mode 100644 website/src/pages/vi/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/vi/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/vi/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/vi/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/vi/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/vi/token-api/quick-start.mdx delete mode 100644 website/src/pages/vi/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/vi/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/vi/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/vi/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/vi/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/vi/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/vi/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/vi/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/vi/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/vi/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/vi/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/vi/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/vi/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/vi/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/vi/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/vi/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/vi/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/vi/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/vi/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/vi/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/vi/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/vi/translations.ts delete mode 100644 website/src/pages/zh/about.mdx delete mode 100644 website/src/pages/zh/ai-suite/_meta-titles.json delete mode 100644 website/src/pages/zh/ai-suite/_meta.js delete mode 100644 website/src/pages/zh/ai-suite/ai-introduction.mdx delete mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/_meta.js delete mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/claude.mdx delete mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/cline.mdx delete mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/cursor.mdx delete mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/introduction.mdx delete mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/_meta.js delete mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/claude.mdx delete mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/cline.mdx delete mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/cursor.mdx delete mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/introduction.mdx delete mode 100644 website/src/pages/zh/archived/_meta-titles.json delete mode 100644 website/src/pages/zh/archived/_meta.js delete mode 100644 website/src/pages/zh/archived/arbitrum/_meta.js delete mode 100644 website/src/pages/zh/archived/arbitrum/arbitrum-faq.mdx delete mode 100644 website/src/pages/zh/archived/arbitrum/l2-transfer-tools-faq.mdx delete mode 100644 website/src/pages/zh/archived/arbitrum/l2-transfer-tools-guide.mdx delete mode 100644 website/src/pages/zh/archived/sunrise.mdx delete mode 100644 website/src/pages/zh/contracts.json delete mode 100644 website/src/pages/zh/contracts.mdx delete mode 100644 website/src/pages/zh/docsearch.json delete mode 100644 website/src/pages/zh/global.json delete mode 100644 website/src/pages/zh/graph-horizon/_meta.js delete mode 100644 website/src/pages/zh/graph-horizon/migration-guide.mdx delete mode 100644 website/src/pages/zh/graph-horizon/overview.mdx delete mode 100644 website/src/pages/zh/graph-horizon/what-changes.mdx delete mode 100644 website/src/pages/zh/hypergraph/_meta.js delete mode 100644 website/src/pages/zh/hypergraph/faq.mdx delete mode 100644 website/src/pages/zh/hypergraph/overview.mdx delete mode 100644 website/src/pages/zh/index.json delete mode 100644 website/src/pages/zh/indexing/_meta-titles.json delete mode 100644 website/src/pages/zh/indexing/_meta.js delete mode 100644 website/src/pages/zh/indexing/chain-integration-overview.mdx delete mode 100644 website/src/pages/zh/indexing/new-chain-integration.mdx delete mode 100644 website/src/pages/zh/indexing/overview.mdx delete mode 100644 website/src/pages/zh/indexing/supported-network-requirements.mdx delete mode 100644 website/src/pages/zh/indexing/tap.mdx delete mode 100644 website/src/pages/zh/indexing/tooling/_meta.js delete mode 100644 website/src/pages/zh/indexing/tooling/firehose.mdx delete mode 100644 website/src/pages/zh/indexing/tooling/graph-node.mdx delete mode 100644 website/src/pages/zh/indexing/tooling/graphcast.mdx delete mode 100644 website/src/pages/zh/resources/_meta-titles.json delete mode 100644 website/src/pages/zh/resources/_meta.js delete mode 100644 website/src/pages/zh/resources/benefits.mdx delete mode 100644 website/src/pages/zh/resources/glossary.mdx delete mode 100644 website/src/pages/zh/resources/migration-guides/_meta.js delete mode 100644 website/src/pages/zh/resources/migration-guides/assemblyscript-migration-guide.mdx delete mode 100644 website/src/pages/zh/resources/migration-guides/graphql-validations-migration-guide.mdx delete mode 100644 website/src/pages/zh/resources/migration-guides/migrate-from-alchemy.mdx delete mode 100644 website/src/pages/zh/resources/roles/_meta.js delete mode 100644 website/src/pages/zh/resources/roles/curating.mdx delete mode 100644 website/src/pages/zh/resources/roles/delegating/_meta.js delete mode 100644 website/src/pages/zh/resources/roles/delegating/delegating.mdx delete mode 100644 website/src/pages/zh/resources/roles/delegating/undelegating.mdx delete mode 100644 website/src/pages/zh/resources/subgraph-studio-faq.mdx delete mode 100644 website/src/pages/zh/resources/tokenomics.mdx delete mode 100644 website/src/pages/zh/subgraphs/_meta-titles.json delete mode 100644 website/src/pages/zh/subgraphs/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/best-practices/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/best-practices/avoid-eth-calls.mdx delete mode 100644 website/src/pages/zh/subgraphs/best-practices/derivedfrom.mdx delete mode 100644 website/src/pages/zh/subgraphs/best-practices/grafting-hotfix.mdx delete mode 100644 website/src/pages/zh/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx delete mode 100644 website/src/pages/zh/subgraphs/best-practices/pruning.mdx delete mode 100644 website/src/pages/zh/subgraphs/best-practices/timeseries.mdx delete mode 100644 website/src/pages/zh/subgraphs/billing.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/_meta-titles.json delete mode 100644 website/src/pages/zh/subgraphs/developing/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/_meta-titles.json delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/advanced.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/assemblyscript-mappings.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/graph-node-dev.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/graph-ts/CHANGELOG.md delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/graph-ts/README.md delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/graph-ts/_meta-titles.json delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/graph-ts/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/graph-ts/api.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/graph-ts/common-issues.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/install-the-cli.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/ql-schema.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/starting-your-subgraph.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/subgraph-manifest.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/creating/unit-testing-framework.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/deploying/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/developing/deploying/multiple-networks.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/deploying/using-subgraph-studio.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/developer-faq.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/introduction.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/managing/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/developing/managing/deleting-a-subgraph.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/managing/transferring-a-subgraph.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/publishing/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/developing/publishing/publishing-a-subgraph.mdx delete mode 100644 website/src/pages/zh/subgraphs/developing/subgraphs.mdx delete mode 100644 website/src/pages/zh/subgraphs/explorer.mdx delete mode 100644 website/src/pages/zh/subgraphs/fair-use-policy.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/guides/contract-analyzer.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/enums.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/grafting.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/near.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/polymarket.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/secure-api-keys-nextjs.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/subgraph-composition.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/subgraph-debug-forking.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/subgraph-uncrashable.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/transfer-to-the-graph.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/_meta-titles.json delete mode 100644 website/src/pages/zh/subgraphs/querying/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/querying/best-practices.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/distributed-systems.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/from-an-application.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/graph-client/README.md delete mode 100644 website/src/pages/zh/subgraphs/querying/graph-client/_meta-titles.json delete mode 100644 website/src/pages/zh/subgraphs/querying/graph-client/_meta.js delete mode 100644 website/src/pages/zh/subgraphs/querying/graph-client/architecture.md delete mode 100644 website/src/pages/zh/subgraphs/querying/graph-client/live.md delete mode 100644 website/src/pages/zh/subgraphs/querying/graphql-api.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/introduction.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/managing-api-keys.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/python.mdx delete mode 100644 website/src/pages/zh/subgraphs/querying/subgraph-id-vs-deployment-id.mdx delete mode 100644 website/src/pages/zh/subgraphs/quick-start.mdx delete mode 100644 website/src/pages/zh/subgraphs/upgrade-indexer.mdx delete mode 100644 website/src/pages/zh/substreams/_meta-titles.json delete mode 100644 website/src/pages/zh/substreams/_meta.js delete mode 100644 website/src/pages/zh/substreams/developing/_meta-titles.json delete mode 100644 website/src/pages/zh/substreams/developing/_meta.js delete mode 100644 website/src/pages/zh/substreams/developing/dev-container.mdx delete mode 100644 website/src/pages/zh/substreams/developing/sinks.mdx delete mode 100644 website/src/pages/zh/substreams/developing/solana/_meta.js delete mode 100644 website/src/pages/zh/substreams/developing/solana/account-changes.mdx delete mode 100644 website/src/pages/zh/substreams/developing/solana/transactions.mdx delete mode 100644 website/src/pages/zh/substreams/introduction.mdx delete mode 100644 website/src/pages/zh/substreams/publishing.mdx delete mode 100644 website/src/pages/zh/substreams/quick-start.mdx delete mode 100644 website/src/pages/zh/supported-networks.mdx delete mode 100644 website/src/pages/zh/token-api/_meta-titles.json delete mode 100644 website/src/pages/zh/token-api/_meta.js delete mode 100644 website/src/pages/zh/token-api/endpoints/_meta.js delete mode 100644 website/src/pages/zh/token-api/endpoints/pricing.mdx delete mode 100644 website/src/pages/zh/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/zh/token-api/evm-dexs/_meta.js delete mode 100644 website/src/pages/zh/token-api/evm-dexs/dexes.mdx delete mode 100644 website/src/pages/zh/token-api/evm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/zh/token-api/evm-dexs/pools.mdx delete mode 100644 website/src/pages/zh/token-api/evm-dexs/swaps.mdx delete mode 100644 website/src/pages/zh/token-api/evm-nfts/_meta.js delete mode 100644 website/src/pages/zh/token-api/evm-nfts/collections.mdx delete mode 100644 website/src/pages/zh/token-api/evm-nfts/holders.mdx delete mode 100644 website/src/pages/zh/token-api/evm-nfts/items.mdx delete mode 100644 website/src/pages/zh/token-api/evm-nfts/ownerships.mdx delete mode 100644 website/src/pages/zh/token-api/evm-nfts/sales.mdx delete mode 100644 website/src/pages/zh/token-api/evm-nfts/transfers.mdx delete mode 100644 website/src/pages/zh/token-api/evm-tokens/_meta.js delete mode 100644 website/src/pages/zh/token-api/evm-tokens/balances-historical.mdx delete mode 100644 website/src/pages/zh/token-api/evm-tokens/balances-native.mdx delete mode 100644 website/src/pages/zh/token-api/evm-tokens/balances.mdx delete mode 100644 website/src/pages/zh/token-api/evm-tokens/holders.mdx delete mode 100644 website/src/pages/zh/token-api/evm-tokens/tokens.mdx delete mode 100644 website/src/pages/zh/token-api/evm-tokens/transfers.mdx delete mode 100644 website/src/pages/zh/token-api/faq.mdx delete mode 100644 website/src/pages/zh/token-api/guides/_meta-titles.json delete mode 100644 website/src/pages/zh/token-api/guides/_meta.js delete mode 100644 website/src/pages/zh/token-api/guides/gpt.mdx delete mode 100644 website/src/pages/zh/token-api/monitoring/_meta.js delete mode 100644 website/src/pages/zh/token-api/monitoring/health.mdx delete mode 100644 website/src/pages/zh/token-api/monitoring/networks.mdx delete mode 100644 website/src/pages/zh/token-api/monitoring/version.mdx delete mode 100644 website/src/pages/zh/token-api/quick-start.mdx delete mode 100644 website/src/pages/zh/token-api/svm-dexs/_meta.js delete mode 100644 website/src/pages/zh/token-api/svm-dexs/dexes.mdx delete mode 100644 website/src/pages/zh/token-api/svm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/zh/token-api/svm-dexs/pools.mdx delete mode 100644 website/src/pages/zh/token-api/svm-dexs/swaps.mdx delete mode 100644 website/src/pages/zh/token-api/svm-tokens/_meta.js delete mode 100644 website/src/pages/zh/token-api/svm-tokens/balances-native.mdx delete mode 100644 website/src/pages/zh/token-api/svm-tokens/balances.mdx delete mode 100644 website/src/pages/zh/token-api/svm-tokens/holders.mdx delete mode 100644 website/src/pages/zh/token-api/svm-tokens/owner.mdx delete mode 100644 website/src/pages/zh/token-api/svm-tokens/tokens.mdx delete mode 100644 website/src/pages/zh/token-api/svm-tokens/transfers.mdx delete mode 100644 website/src/pages/zh/token-api/tvm-dexs/_meta.js delete mode 100644 website/src/pages/zh/token-api/tvm-dexs/dexes.mdx delete mode 100644 website/src/pages/zh/token-api/tvm-dexs/pools-ohlc.mdx delete mode 100644 website/src/pages/zh/token-api/tvm-dexs/pools.mdx delete mode 100644 website/src/pages/zh/token-api/tvm-dexs/swaps.mdx delete mode 100644 website/src/pages/zh/token-api/tvm-tokens/_meta.js delete mode 100644 website/src/pages/zh/token-api/tvm-tokens/tokens.mdx delete mode 100644 website/src/pages/zh/token-api/tvm-tokens/transfers-native.mdx delete mode 100644 website/src/pages/zh/token-api/tvm-tokens/transfers.mdx delete mode 100644 website/src/pages/zh/translations.ts diff --git a/.eslintrc.js b/.eslintrc.js index 1e82ce1151b3..33d15400acdd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -20,10 +20,7 @@ module.exports = { }, }, { - // Only lint the English pages because the Markdown for the other languages is auto-generated from English (via Crowdin). - // But include all languages when running the ESLint extension in VS Code (in case the user has "eslint.validate": ["mdx"]), - // otherwise there will be random errors since the non-English files don't match any ruleset. - files: [`website/src/pages/${isVSCode ? '' : 'en/'}**/*.{md,mdx}`], + files: ['website/src/pages/**/*.{md,mdx}'], excludedFiles: [ 'website/src/pages/*/subgraphs/developing/creating/graph-ts/*.md', 'website/src/pages/*/subgraphs/querying/graph-client/*.md', diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7b41e4ea2199..29ca1b713fbb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,10 +8,6 @@ Direct contributions are much appreciated for simple things (corrections, small Most of our docs are written in [Markdown](https://www.markdownguide.org/getting-started/), or more specifically, [MDX](https://mdxjs.com/docs/what-is-mdx/). The files that you’ll likely be updating are in [the `/website/src/pages/en` directory](https://github.com/graphprotocol/docs/tree/main/website/src/pages/en). -> [!NOTE] -> -> Changes should only be made to the English language version of pages, as translations are handled by [Crowdin](https://crowdin.com/). If you spot an issue with a translation, please open an issue to let us know! - Once you located the file that you want to update, click on “Edit” which will create a new forked repo. You can make your edits there, and submit a PR. Alternatively, you can manually fork the repo, create a branch in your fork and make all the edits you want before submitting a PR. You can optionally [run the application locally](https://github.com/graphprotocol/docs/blob/main/README.md) to review your changes in context. ## Adding new pages diff --git a/algolia-crawler.config.js b/algolia-crawler.config.js index f4054e069961..34442b914f43 100644 --- a/algolia-crawler.config.js +++ b/algolia-crawler.config.js @@ -1,18 +1,11 @@ +// Changes to this config should be manually mirrored to https://crawler.algolia.com/admin new Crawler({ appId: 'WQ5FYJCL00', apiKey: '[SECRET]', schedule: 'every 7 days', indexPrefix: '', rateLimit: 8, - startUrls: [ - 'https://thegraph.com/docs/en/', - 'https://thegraph.com/docs/ar/', - 'https://thegraph.com/docs/es/', - 'https://thegraph.com/docs/ja/', - 'https://thegraph.com/docs/ko/', - 'https://thegraph.com/docs/vi/', - 'https://thegraph.com/docs/zh/', - ], + startUrls: ['https://thegraph.com/docs/en/'], ignoreQueryParams: ['source', 'utm_*'], actions: [ { diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index 53d281e71250..000000000000 --- a/crowdin.yml +++ /dev/null @@ -1,14 +0,0 @@ -preserve_hierarchy: 1 -files: - - source: /website/src/pages/en/**/*.mdx - translation: /website/src/pages/%two_letters_code%/**/%original_file_name% - dest: /**/%original_file_name% - content_segmentation: 0 - - source: /website/src/pages/en/**/*.md - translation: /website/src/pages/%two_letters_code%/**/%original_file_name% - dest: /**/%original_file_name% - content_segmentation: 0 - - source: /website/src/pages/en/**/*.json - translation: /website/src/pages/%two_letters_code%/**/%original_file_name% - dest: /**/%original_file_name% - content_segmentation: 0 diff --git a/nginx.conf b/nginx.conf index dcd96f3bc584..91d75be021ee 100644 --- a/nginx.conf +++ b/nginx.conf @@ -51,125 +51,128 @@ http { # Redirect to `/en` if no language in URL and not an asset URL rewrite ^/docs/(?!(?:[a-zA-Z][a-zA-Z]|_next|img)(?:/|$))(.*)$ $scheme://$http_host/docs/en/$1 permanent; + # Redirect non-English language paths to `/en` + rewrite ^/docs/(?!en(?:/|$))[a-zA-Z][a-zA-Z](?:/(.*))?$ $scheme://$http_host/docs/en/$1 permanent; + # Permanent redirects (301) - rewrite ^/docs/([a-zA-Z][a-zA-Z])/about/introduction/$ $scheme://$http_host/docs/$1/about/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/arbitrum-faq/$ $scheme://$http_host/docs/$1/archived/arbitrum/arbitrum-faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/arbitrum/l2-transfer-tools-faq/$ $scheme://$http_host/docs/$1/archived/arbitrum/l2-transfer-tools-faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/arbitrum/l2-transfer-tools-guide/$ $scheme://$http_host/docs/$1/archived/arbitrum/l2-transfer-tools-guide/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/billing/$ $scheme://$http_host/docs/$1/subgraphs/billing/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/chain-integration-overview/$ $scheme://$http_host/docs/$1/indexing/chain-integration-overview/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/arweave/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/arweave/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/avoid-eth-calls/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/avoid-eth-calls/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/avoid-eth-calls/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/avoid-eth-calls/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/derivedfrom/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/derivedfrom/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/derivedfrom/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/derivedfrom/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/enums/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/enums/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/grafting-hotfix/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/grafting-hotfix/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/grafting-hotfix/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/grafting-hotfix/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/grafting/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/grafting/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/immutable-entities-bytes-as-ids/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/immutable-entities-bytes-as-ids/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/immutable-entities-bytes-as-ids/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/immutable-entities-bytes-as-ids/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/near/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/near/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/pruning/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/pruning/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/pruning/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/pruning/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/quick-start/$ $scheme://$http_host/docs/$1/subgraphs/quick-start/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/subgraph-debug-forking/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/subgraph-debug-forking/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/subgraph-uncrashable/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/subgraph-uncrashable/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/substreams-powered-subgraphs/$ $scheme://$http_host/docs/$1/substreams/sps/introduction/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/substreams-powered-subgraphs/$ $scheme://$http_host/docs/$1/substreams/sps/introduction/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/timeseries/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/timeseries/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/timeseries/$ $scheme://$http_host/docs/$1/subgraphs/best-practices/timeseries/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/cookbook/transfer-to-the-graph/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/transfer-to-the-graph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/cookbook/(.*)$ $scheme://$http_host/docs/$1/subgraphs/guides/$2 permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/curating/$ $scheme://$http_host/docs/$1/resources/roles/curating/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/delegating/$ $scheme://$http_host/docs/$1/resources/roles/delegating/delegating/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/deploying/deploy-using-subgraph-studio/$ $scheme://$http_host/docs/$1/subgraphs/developing/deploying/using-subgraph-studio/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/deploying/deploying-a-subgraph-to-studio/$ $scheme://$http_host/docs/$1/subgraphs/developing/deploying/using-subgraph-studio/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/deploying/multiple-networks/$ $scheme://$http_host/docs/$1/subgraphs/developing/deploying/multiple-networks/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/deploying/subgraph-studio-faqs/$ $scheme://$http_host/docs/$1/resources/subgraph-studio-faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/developing/deploying/subgraph-studio-faq/$ $scheme://$http_host/docs/$1/resources/subgraph-studio-faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/deploying/subgraph-studio/$ $scheme://$http_host/docs/$1/subgraphs/developing/deploying/using-subgraph-studio/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developer/quick-start/$ $scheme://$http_host/docs/$1/subgraphs/quick-start/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/assemblyscript-api/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/graph-ts/api/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/starting-your-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/starting-your-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/starting-your-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/install-the-cli/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/install-the-cli/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/ql-schema/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/ql-schema/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/assemblyscript-mappings/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/assemblyscript-mappings/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/advanced/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/advanced/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/defining-a-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/starting-your-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/developer-faqs/$ $scheme://$http_host/docs/$1/subgraphs/developing/developer-faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/graph-ts/api/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/graph-ts/api/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/graph-ts/CHANGELOG/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/graph-ts/CHANGELOG/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/graph-ts/common-issues/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/graph-ts/common-issues/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/graph-ts/README/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/graph-ts/README/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/substreams-powered-subgraphs-faq/$ $scheme://$http_host/docs/$1/substreams/sps/faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/supported-networks/$ $scheme://$http_host/docs/$1/supported-networks/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/unit-testing-framework/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/unit-testing-framework/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/explorer/$ $scheme://$http_host/docs/$1/subgraphs/explorer/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/firehose/$ $scheme://$http_host/docs/$1/indexing/tooling/firehose/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/glossary/$ $scheme://$http_host/docs/$1/resources/glossary/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/graph-assistant/quick-start/$ $scheme://$http_host/docs/$1/ai-suite/graph-assistant/quick-start/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/graphcast/$ $scheme://$http_host/docs/$1/indexing/tooling/graphcast/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/indexing/$ $scheme://$http_host/docs/$1/indexing/overview/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/managing/delete-a-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/managing/deleting-a-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/managing/deprecate-a-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/managing/deleting-a-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/managing/transfer-a-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/managing/transferring-a-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network-transition-faq/$ $scheme://$http_host/docs/$1/archived/arbitrum/arbitrum-faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network/benefits/$ $scheme://$http_host/docs/$1/resources/benefits/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network/contracts/$ $scheme://$http_host/docs/$1/contracts/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network/curating/$ $scheme://$http_host/docs/$1/resources/roles/curating/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network/delegating/$ $scheme://$http_host/docs/$1/resources/roles/delegating/delegating/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network/developing/$ $scheme://$http_host/docs/$1/subgraphs/developing/introduction/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network/explorer/$ $scheme://$http_host/docs/$1/subgraphs/explorer/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/network/indexing/$ $scheme://$http_host/docs/$1/indexing/overview/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/new-chain-integration/$ $scheme://$http_host/docs/$1/indexing/new-chain-integration/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/operating-graph-node/$ $scheme://$http_host/docs/$1/indexing/tooling/graph-node/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/publishing/publishing-a-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/publishing/publishing-a-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/distributed-systems/$ $scheme://$http_host/docs/$1/subgraphs/querying/distributed-systems/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/graph-client/README/$ $scheme://$http_host/docs/$1/subgraphs/querying/graph-client/README/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/graph-client/architecture/$ $scheme://$http_host/docs/$1/subgraphs/querying/graph-client/architecture/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/graph-client/live/$ $scheme://$http_host/docs/$1/subgraphs/querying/graph-client/live/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/graphql-api/$ $scheme://$http_host/docs/$1/subgraphs/querying/graphql-api/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/managing-api-keys/$ $scheme://$http_host/docs/$1/subgraphs/querying/managing-api-keys/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/querying-best-practices/$ $scheme://$http_host/docs/$1/subgraphs/querying/best-practices/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/querying-by-subgraph-id-vs-deployment-id/$ $scheme://$http_host/docs/$1/subgraphs/querying/subgraph-id-vs-deployment-id/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/querying-from-an-application/$ $scheme://$http_host/docs/$1/subgraphs/querying/from-an-application/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/querying-the-graph/$ $scheme://$http_host/docs/$1/subgraphs/querying/introduction/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/querying/querying-with-python/$ $scheme://$http_host/docs/$1/subgraphs/querying/python/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/quick-start/$ $scheme://$http_host/docs/$1/subgraphs/quick-start/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/release-notes/assemblyscript-migration-guide/$ $scheme://$http_host/docs/$1/resources/migration-guides/assemblyscript-migration-guide/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/resources/release-notes/assemblyscript-migration-guide/$ $scheme://$http_host/docs/$1/resources/migration-guides/assemblyscript-migration-guide/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/release-notes/graphql-validations-migration-guide/$ $scheme://$http_host/docs/$1/resources/migration-guides/graphql-validations-migration-guide/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/resources/release-notes/graphql-validations-migration-guide/$ $scheme://$http_host/docs/$1/resources/migration-guides/graphql-validations-migration-guide/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/sps/sps-faq/$ $scheme://$http_host/docs/$1/substreams/sps/faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/sps/(.*)$ $scheme://$http_host/docs/$1/substreams/sps/$2 permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/billing/$ $scheme://$http_host/docs/$1/subgraphs/billing/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/deploy-subgraph-studio/$ $scheme://$http_host/docs/$1/subgraphs/developing/deploying/using-subgraph-studio/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/managing-api-keys/$ $scheme://$http_host/docs/$1/subgraphs/querying/managing-api-keys/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/multisig/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/multisig/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/studio-faq/$ $scheme://$http_host/docs/$1/resources/subgraph-studio-faq/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/subgraph-studio/$ $scheme://$http_host/docs/$1/subgraphs/developing/deploying/using-subgraph-studio/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/transferring-subgraph-ownership/$ $scheme://$http_host/docs/$1/subgraphs/developing/managing/transferring-a-subgraph/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/$ $scheme://$http_host/docs/$1/subgraphs/quick-start/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/claude/$ $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$ $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cursor/$ $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$ $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/substreams/$ $scheme://$http_host/docs/$1/substreams/quick-start/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/substreams/developing/sinks/sinks/$ $scheme://$http_host/docs/$1/substreams/developing/sinks/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/substreams/sps/$ $scheme://$http_host/docs/$1/substreams/sps/introduction/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/sunrise/$ $scheme://$http_host/docs/$1/archived/sunrise/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/supported-network-requirements/$ $scheme://$http_host/docs/$1/indexing/supported-network-requirements/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/supported-networks/arweave/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/arweave/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/supported-networks/near/$ $scheme://$http_host/docs/$1/subgraphs/cookbook/near/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/tap/$ $scheme://$http_host/docs/$1/indexing/tap/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/tokenomics/$ $scheme://$http_host/docs/$1/resources/tokenomics/ permanent; - rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/$ $scheme://$http_host/docs/$1/token-api/quick-start/ 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/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; + rewrite ^/docs/en/about/introduction/$ $scheme://$http_host/docs/en/about/ permanent; + rewrite ^/docs/en/arbitrum-faq/$ $scheme://$http_host/docs/en/archived/arbitrum/arbitrum-faq/ permanent; + rewrite ^/docs/en/arbitrum/l2-transfer-tools-faq/$ $scheme://$http_host/docs/en/archived/arbitrum/l2-transfer-tools-faq/ permanent; + rewrite ^/docs/en/arbitrum/l2-transfer-tools-guide/$ $scheme://$http_host/docs/en/archived/arbitrum/l2-transfer-tools-guide/ permanent; + rewrite ^/docs/en/billing/$ $scheme://$http_host/docs/en/subgraphs/billing/ permanent; + rewrite ^/docs/en/chain-integration-overview/$ $scheme://$http_host/docs/en/indexing/chain-integration-overview/ permanent; + rewrite ^/docs/en/cookbook/arweave/$ $scheme://$http_host/docs/en/subgraphs/cookbook/arweave/ permanent; + rewrite ^/docs/en/cookbook/avoid-eth-calls/$ $scheme://$http_host/docs/en/subgraphs/best-practices/avoid-eth-calls/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/avoid-eth-calls/$ $scheme://$http_host/docs/en/subgraphs/best-practices/avoid-eth-calls/ permanent; + rewrite ^/docs/en/cookbook/derivedfrom/$ $scheme://$http_host/docs/en/subgraphs/best-practices/derivedfrom/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/derivedfrom/$ $scheme://$http_host/docs/en/subgraphs/best-practices/derivedfrom/ permanent; + rewrite ^/docs/en/cookbook/enums/$ $scheme://$http_host/docs/en/subgraphs/cookbook/enums/ permanent; + rewrite ^/docs/en/cookbook/grafting-hotfix/$ $scheme://$http_host/docs/en/subgraphs/best-practices/grafting-hotfix/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/grafting-hotfix/$ $scheme://$http_host/docs/en/subgraphs/best-practices/grafting-hotfix/ permanent; + rewrite ^/docs/en/cookbook/grafting/$ $scheme://$http_host/docs/en/subgraphs/cookbook/grafting/ permanent; + rewrite ^/docs/en/cookbook/immutable-entities-bytes-as-ids/$ $scheme://$http_host/docs/en/subgraphs/best-practices/immutable-entities-bytes-as-ids/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/immutable-entities-bytes-as-ids/$ $scheme://$http_host/docs/en/subgraphs/best-practices/immutable-entities-bytes-as-ids/ permanent; + rewrite ^/docs/en/cookbook/near/$ $scheme://$http_host/docs/en/subgraphs/cookbook/near/ permanent; + rewrite ^/docs/en/cookbook/pruning/$ $scheme://$http_host/docs/en/subgraphs/best-practices/pruning/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/pruning/$ $scheme://$http_host/docs/en/subgraphs/best-practices/pruning/ permanent; + rewrite ^/docs/en/cookbook/quick-start/$ $scheme://$http_host/docs/en/subgraphs/quick-start/ permanent; + rewrite ^/docs/en/cookbook/subgraph-debug-forking/$ $scheme://$http_host/docs/en/subgraphs/cookbook/subgraph-debug-forking/ permanent; + rewrite ^/docs/en/cookbook/subgraph-uncrashable/$ $scheme://$http_host/docs/en/subgraphs/cookbook/subgraph-uncrashable/ permanent; + rewrite ^/docs/en/cookbook/substreams-powered-subgraphs/$ $scheme://$http_host/docs/en/substreams/sps/introduction/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/substreams-powered-subgraphs/$ $scheme://$http_host/docs/en/substreams/sps/introduction/ permanent; + rewrite ^/docs/en/cookbook/timeseries/$ $scheme://$http_host/docs/en/subgraphs/best-practices/timeseries/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/timeseries/$ $scheme://$http_host/docs/en/subgraphs/best-practices/timeseries/ permanent; + rewrite ^/docs/en/cookbook/transfer-to-the-graph/$ $scheme://$http_host/docs/en/subgraphs/cookbook/transfer-to-the-graph/ permanent; + rewrite ^/docs/en/subgraphs/cookbook/(.*)$ $scheme://$http_host/docs/en/subgraphs/guides/$1 permanent; + rewrite ^/docs/en/curating/$ $scheme://$http_host/docs/en/resources/roles/curating/ permanent; + rewrite ^/docs/en/delegating/$ $scheme://$http_host/docs/en/resources/roles/delegating/delegating/ permanent; + rewrite ^/docs/en/deploying/deploy-using-subgraph-studio/$ $scheme://$http_host/docs/en/subgraphs/developing/deploying/using-subgraph-studio/ permanent; + rewrite ^/docs/en/deploying/deploying-a-subgraph-to-studio/$ $scheme://$http_host/docs/en/subgraphs/developing/deploying/using-subgraph-studio/ permanent; + rewrite ^/docs/en/deploying/multiple-networks/$ $scheme://$http_host/docs/en/subgraphs/developing/deploying/multiple-networks/ permanent; + rewrite ^/docs/en/deploying/subgraph-studio-faqs/$ $scheme://$http_host/docs/en/resources/subgraph-studio-faq/ permanent; + rewrite ^/docs/en/subgraphs/developing/deploying/subgraph-studio-faq/$ $scheme://$http_host/docs/en/resources/subgraph-studio-faq/ permanent; + rewrite ^/docs/en/deploying/subgraph-studio/$ $scheme://$http_host/docs/en/subgraphs/developing/deploying/using-subgraph-studio/ permanent; + rewrite ^/docs/en/developer/quick-start/$ $scheme://$http_host/docs/en/subgraphs/quick-start/ permanent; + rewrite ^/docs/en/developing/assemblyscript-api/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/graph-ts/api/ permanent; + rewrite ^/docs/en/developing/creating-a-subgraph/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/starting-your-subgraph/ permanent; + rewrite ^/docs/en/developing/creating-a-subgraph/starting-your-subgraph/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/starting-your-subgraph/ permanent; + rewrite ^/docs/en/developing/creating-a-subgraph/install-the-cli/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/install-the-cli/ permanent; + rewrite ^/docs/en/developing/creating-a-subgraph/ql-schema/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/ql-schema/ permanent; + rewrite ^/docs/en/developing/creating-a-subgraph/assemblyscript-mappings/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/assemblyscript-mappings/ permanent; + rewrite ^/docs/en/developing/creating-a-subgraph/advanced/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/advanced/ permanent; + rewrite ^/docs/en/developing/defining-a-subgraph/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/starting-your-subgraph/ permanent; + rewrite ^/docs/en/developing/developer-faqs/$ $scheme://$http_host/docs/en/subgraphs/developing/developer-faq/ permanent; + rewrite ^/docs/en/developing/graph-ts/api/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/graph-ts/api/ permanent; + rewrite ^/docs/en/developing/graph-ts/CHANGELOG/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/graph-ts/CHANGELOG/ permanent; + rewrite ^/docs/en/developing/graph-ts/common-issues/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/graph-ts/common-issues/ permanent; + rewrite ^/docs/en/developing/graph-ts/README/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/graph-ts/README/ permanent; + rewrite ^/docs/en/developing/substreams-powered-subgraphs-faq/$ $scheme://$http_host/docs/en/substreams/sps/faq/ permanent; + rewrite ^/docs/en/developing/supported-networks/$ $scheme://$http_host/docs/en/supported-networks/ permanent; + rewrite ^/docs/en/developing/unit-testing-framework/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/unit-testing-framework/ permanent; + rewrite ^/docs/en/explorer/$ $scheme://$http_host/docs/en/subgraphs/explorer/ permanent; + rewrite ^/docs/en/firehose/$ $scheme://$http_host/docs/en/indexing/tooling/firehose/ permanent; + rewrite ^/docs/en/glossary/$ $scheme://$http_host/docs/en/resources/glossary/ permanent; + rewrite ^/docs/en/graph-assistant/quick-start/$ $scheme://$http_host/docs/en/ai-suite/graph-assistant/quick-start/ permanent; + rewrite ^/docs/en/graphcast/$ $scheme://$http_host/docs/en/indexing/tooling/graphcast/ permanent; + rewrite ^/docs/en/indexing/$ $scheme://$http_host/docs/en/indexing/overview/ permanent; + rewrite ^/docs/en/managing/delete-a-subgraph/$ $scheme://$http_host/docs/en/subgraphs/developing/managing/deleting-a-subgraph/ permanent; + rewrite ^/docs/en/managing/deprecate-a-subgraph/$ $scheme://$http_host/docs/en/subgraphs/developing/managing/deleting-a-subgraph/ permanent; + rewrite ^/docs/en/managing/transfer-a-subgraph/$ $scheme://$http_host/docs/en/subgraphs/developing/managing/transferring-a-subgraph/ permanent; + rewrite ^/docs/en/network-transition-faq/$ $scheme://$http_host/docs/en/archived/arbitrum/arbitrum-faq/ permanent; + rewrite ^/docs/en/network/benefits/$ $scheme://$http_host/docs/en/resources/benefits/ permanent; + rewrite ^/docs/en/network/contracts/$ $scheme://$http_host/docs/en/contracts/ permanent; + rewrite ^/docs/en/network/curating/$ $scheme://$http_host/docs/en/resources/roles/curating/ permanent; + rewrite ^/docs/en/network/delegating/$ $scheme://$http_host/docs/en/resources/roles/delegating/delegating/ permanent; + rewrite ^/docs/en/network/developing/$ $scheme://$http_host/docs/en/subgraphs/developing/introduction/ permanent; + rewrite ^/docs/en/network/explorer/$ $scheme://$http_host/docs/en/subgraphs/explorer/ permanent; + rewrite ^/docs/en/network/indexing/$ $scheme://$http_host/docs/en/indexing/overview/ permanent; + rewrite ^/docs/en/new-chain-integration/$ $scheme://$http_host/docs/en/indexing/new-chain-integration/ permanent; + rewrite ^/docs/en/operating-graph-node/$ $scheme://$http_host/docs/en/indexing/tooling/graph-node/ permanent; + rewrite ^/docs/en/publishing/publishing-a-subgraph/$ $scheme://$http_host/docs/en/subgraphs/developing/publishing/publishing-a-subgraph/ permanent; + rewrite ^/docs/en/querying/distributed-systems/$ $scheme://$http_host/docs/en/subgraphs/querying/distributed-systems/ permanent; + rewrite ^/docs/en/querying/graph-client/README/$ $scheme://$http_host/docs/en/subgraphs/querying/graph-client/README/ permanent; + rewrite ^/docs/en/querying/graph-client/architecture/$ $scheme://$http_host/docs/en/subgraphs/querying/graph-client/architecture/ permanent; + rewrite ^/docs/en/querying/graph-client/live/$ $scheme://$http_host/docs/en/subgraphs/querying/graph-client/live/ permanent; + rewrite ^/docs/en/querying/graphql-api/$ $scheme://$http_host/docs/en/subgraphs/querying/graphql-api/ permanent; + rewrite ^/docs/en/querying/managing-api-keys/$ $scheme://$http_host/docs/en/subgraphs/querying/managing-api-keys/ permanent; + rewrite ^/docs/en/querying/querying-best-practices/$ $scheme://$http_host/docs/en/subgraphs/querying/best-practices/ permanent; + rewrite ^/docs/en/querying/querying-by-subgraph-id-vs-deployment-id/$ $scheme://$http_host/docs/en/subgraphs/querying/subgraph-id-vs-deployment-id/ permanent; + rewrite ^/docs/en/querying/querying-from-an-application/$ $scheme://$http_host/docs/en/subgraphs/querying/from-an-application/ permanent; + rewrite ^/docs/en/querying/querying-the-graph/$ $scheme://$http_host/docs/en/subgraphs/querying/introduction/ permanent; + rewrite ^/docs/en/querying/querying-with-python/$ $scheme://$http_host/docs/en/subgraphs/querying/python/ permanent; + rewrite ^/docs/en/quick-start/$ $scheme://$http_host/docs/en/subgraphs/quick-start/ permanent; + rewrite ^/docs/en/release-notes/assemblyscript-migration-guide/$ $scheme://$http_host/docs/en/resources/migration-guides/assemblyscript-migration-guide/ permanent; + rewrite ^/docs/en/resources/release-notes/assemblyscript-migration-guide/$ $scheme://$http_host/docs/en/resources/migration-guides/assemblyscript-migration-guide/ permanent; + rewrite ^/docs/en/release-notes/graphql-validations-migration-guide/$ $scheme://$http_host/docs/en/resources/migration-guides/graphql-validations-migration-guide/ permanent; + rewrite ^/docs/en/resources/release-notes/graphql-validations-migration-guide/$ $scheme://$http_host/docs/en/resources/migration-guides/graphql-validations-migration-guide/ permanent; + rewrite ^/docs/en/sps/sps-faq/$ $scheme://$http_host/docs/en/substreams/sps/faq/ permanent; + rewrite ^/docs/en/sps/(.*)$ $scheme://$http_host/docs/en/substreams/sps/$1 permanent; + rewrite ^/docs/en/studio/billing/$ $scheme://$http_host/docs/en/subgraphs/billing/ permanent; + rewrite ^/docs/en/studio/deploy-subgraph-studio/$ $scheme://$http_host/docs/en/subgraphs/developing/deploying/using-subgraph-studio/ permanent; + rewrite ^/docs/en/studio/managing-api-keys/$ $scheme://$http_host/docs/en/subgraphs/querying/managing-api-keys/ permanent; + rewrite ^/docs/en/studio/multisig/$ $scheme://$http_host/docs/en/subgraphs/cookbook/multisig/ permanent; + rewrite ^/docs/en/studio/studio-faq/$ $scheme://$http_host/docs/en/resources/subgraph-studio-faq/ permanent; + rewrite ^/docs/en/studio/subgraph-studio/$ $scheme://$http_host/docs/en/subgraphs/developing/deploying/using-subgraph-studio/ permanent; + rewrite ^/docs/en/studio/transferring-subgraph-ownership/$ $scheme://$http_host/docs/en/subgraphs/developing/managing/transferring-a-subgraph/ permanent; + rewrite ^/docs/en/subgraphs/$ $scheme://$http_host/docs/en/subgraphs/quick-start/ permanent; + rewrite ^/docs/en/subgraphs/mcp/claude/$ $scheme://$http_host/docs/en/ai-suite/subgraph-mcp/ permanent; + rewrite ^/docs/en/subgraphs/mcp/cline/$ $scheme://$http_host/docs/en/ai-suite/subgraph-mcp/ permanent; + rewrite ^/docs/en/subgraphs/mcp/cursor/$ $scheme://$http_host/docs/en/ai-suite/subgraph-mcp/ permanent; + rewrite ^/docs/en/subgraphs/mcp/cline/$ $scheme://$http_host/docs/en/ai-suite/subgraph-mcp/ permanent; + rewrite ^/docs/en/substreams/$ $scheme://$http_host/docs/en/substreams/quick-start/ permanent; + rewrite ^/docs/en/substreams/developing/sinks/sinks/$ $scheme://$http_host/docs/en/substreams/developing/sinks/ permanent; + rewrite ^/docs/en/substreams/sps/$ $scheme://$http_host/docs/en/substreams/sps/introduction/ permanent; + rewrite ^/docs/en/sunrise/$ $scheme://$http_host/docs/en/archived/sunrise/ permanent; + rewrite ^/docs/en/supported-network-requirements/$ $scheme://$http_host/docs/en/indexing/supported-network-requirements/ permanent; + rewrite ^/docs/en/supported-networks/arweave/$ $scheme://$http_host/docs/en/subgraphs/cookbook/arweave/ permanent; + rewrite ^/docs/en/supported-networks/near/$ $scheme://$http_host/docs/en/subgraphs/cookbook/near/ permanent; + rewrite ^/docs/en/tap/$ $scheme://$http_host/docs/en/indexing/tap/ permanent; + rewrite ^/docs/en/tokenomics/$ $scheme://$http_host/docs/en/resources/tokenomics/ permanent; + rewrite ^/docs/en/token-api/$ $scheme://$http_host/docs/en/token-api/quick-start/ permanent; + rewrite ^/docs/en/token-api/mcp/cline/$ $scheme://$http_host/docs/en/ai-suite/token-api-mcp/ permanent; + rewrite ^/docs/en/token-api/mcp/cline/$ $scheme://$http_host/docs/en/ai-suite/token-api-mcp/ permanent; + rewrite ^/docs/en/token-api/mcp/cline/$ $scheme://$http_host/docs/en/ai-suite/token-api-mcp/ permanent; + rewrite ^/docs/en/token-api/endpoint-pricing/$ $scheme://$http_host/docs/en/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; @@ -179,8 +182,8 @@ http { } # Use localized 404 pages for documentation paths - location ~ ^/docs/([a-zA-Z][a-zA-Z])/(.*) { - try_files $uri $uri.html $uri/index.html /docs/$1/404/index.html; + location ~ ^/docs/en/(.*) { + try_files $uri $uri.html $uri/index.html /docs/en/404/index.html; } error_page 500 502 503 504 /docs/50x/index.html; diff --git a/package.json b/package.json index f735eb270056..bb6ba588f1d8 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "graph-docs", "private": true, "version": "1.0.0", - "packageManager": "pnpm@10.26.0", + "packageManager": "pnpm@10.28.2", "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.3", + "@types/node": "^22.19.7", "eslint": "^8.57.1", "eslint-plugin-mdx": "^3.6.2", - "prettier": "^3.7.4", + "prettier": "^3.8.1", "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.3", + "turbo": "^2.8.0", "typescript": "^5.9.3" }, "resolutions": { diff --git a/packages/og-image/package.json b/packages/og-image/package.json index ff512c4fe11e..6a23dea4f73f 100644 --- a/packages/og-image/package.json +++ b/packages/og-image/package.json @@ -12,17 +12,17 @@ "dependencies": { "@resvg/resvg-wasm": "^2.6.2", "react": "^18.3.1", - "satori": "^0.18.3", + "satori": "^0.19.1", "yoga-wasm-web": "^0.3.3" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20251217.0", + "@cloudflare/workers-types": "^4.20260129.0", "@types/react": "^18.3.27", "jest-image-snapshot": "^6.5.1", "tsx": "4.20.4", "typescript": "^5.9.3", "vitest": "^2.1.9", - "wrangler": "^3.114.15" + "wrangler": "^3.114.17" }, "sideEffects": false } diff --git a/packages/remark-lint-restrict-elements/package.json b/packages/remark-lint-restrict-elements/package.json index acf873766b2e..362cd1496389 100644 --- a/packages/remark-lint-restrict-elements/package.json +++ b/packages/remark-lint-restrict-elements/package.json @@ -7,7 +7,7 @@ "author": "Dimitri POSTOLOV ", "dependencies": { "unified-lint-rule": "^3.0.1", - "unist-util-visit": "^5.0.0" + "unist-util-visit": "^5.1.0" }, "sideEffects": false } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7c15fa38d75..a4160e9fa224 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.3 - version: 22.19.3 + specifier: ^22.19.7 + version: 22.19.7 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.7.4 - version: 3.7.4 + specifier: ^3.8.1 + version: 3.8.1 prettier-plugin-tailwindcss: specifier: ^0.7.2 - version: 0.7.2(prettier@3.7.4) + version: 0.7.2(prettier@3.8.1) 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.3 - version: 2.6.3 + specifier: ^2.8.0 + version: 2.8.0 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -60,15 +60,15 @@ importers: specifier: ^18.3.1 version: 18.3.1 satori: - specifier: ^0.18.3 - version: 0.18.3 + specifier: ^0.19.1 + version: 0.19.1 yoga-wasm-web: specifier: ^0.3.3 version: 0.3.3 devDependencies: '@cloudflare/workers-types': - specifier: ^4.20251217.0 - version: 4.20251217.0 + specifier: ^4.20260129.0 + version: 4.20260129.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.3)(jsdom@24.1.3) + version: 2.1.9(@types/node@22.19.7)(jsdom@24.1.3) wrangler: - specifier: ^3.114.15 - version: 3.114.15(@cloudflare/workers-types@4.20251217.0) + specifier: ^3.114.17 + version: 3.114.17(@cloudflare/workers-types@4.20260129.0) packages/remark-lint-restrict-elements: dependencies: @@ -94,23 +94,23 @@ importers: specifier: ^3.0.1 version: 3.0.1 unist-util-visit: - specifier: ^5.0.0 - version: 5.0.0 + specifier: ^5.1.0 + version: 5.1.0 website: dependencies: '@docsearch/react': specifier: ^3.9.0 - version: 3.9.0(@algolia/client-search@5.46.1)(@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.47.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.28.0(typescript@5.9.3)) + version: 7.0.4(hardhat@2.28.4(typescript@5.9.3)) '@edgeandnode/gds': specifier: ^6.9.0 - version: 6.9.0(@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.28.0(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) + version: 6.9.0(@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.4(@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.28.4(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.4(@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.5.0 - version: 10.5.0(49b9d1080ccaa73b123ce3e8d6a65ecd) + version: 10.5.0(0164b0e48dafaf9f609c4d302e5b1300) '@emotion/react': specifier: ^11.14.0 version: 11.14.0(@types/react@18.3.27)(react@18.3.1) @@ -139,8 +139,8 @@ importers: specifier: ^3.0.0 version: 3.0.0 lodash: - specifier: ^4.17.21 - version: 4.17.21 + specifier: ^4.17.23 + version: 4.17.23 mdast-util-mdx-jsx: specifier: ^3.2.0 version: 3.2.0 @@ -148,11 +148,11 @@ importers: 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) + specifier: ^2.74.0 + version: 2.74.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) motion: - 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) + specifier: ^12.29.2 + version: 12.29.2(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.35 version: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -193,11 +193,11 @@ importers: specifier: ^4.0.1 version: 4.0.1 theme-ui: - specifier: ^0.17.2 - version: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + specifier: ^0.17.4 + version: 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) unist-util-visit: - specifier: ^5.0.0 - version: 5.0.0 + specifier: ^5.1.0 + version: 5.1.0 vfile: specifier: ^6.0.3 version: 6.0.3 @@ -209,8 +209,8 @@ importers: specifier: ^3.0.4 version: 3.0.4 '@types/lodash': - specifier: ^4.17.21 - version: 4.17.21 + specifier: ^4.17.23 + version: 4.17.23 '@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.3 - version: 22.19.3 + specifier: ^22.19.7 + version: 22.19.7 '@types/react': specifier: ^18.3.27 version: 18.3.27 @@ -256,8 +256,8 @@ packages: '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} - '@algolia/abtesting@1.12.1': - resolution: {integrity: sha512-Y+7e2uPe376OH5O73OB1+vR40ZhbV2kzGh/AR/dPCWguoBOp1IK0o+uZQLX+7i32RMMBEKl3pj6KVEav100Kvg==} + '@algolia/abtesting@1.13.0': + resolution: {integrity: sha512-Zrqam12iorp3FjiKMXSTpedGYznZ3hTEOAr2oCxI8tbF8bS1kQHClyDYNq/eV0ewMNLyFkgZVWjaS+8spsOYiQ==} 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.46.1': - resolution: {integrity: sha512-5SWfl0UGuKxMBYlU2Y9BnlIKKEyhFU5jHE9F9jAd8nbhxZNLk0y7fXE+AZeFtyK1lkVw6O4B/e6c3XIVVCkmqw==} + '@algolia/client-abtesting@5.47.0': + resolution: {integrity: sha512-aOpsdlgS9xTEvz47+nXmw8m0NtUiQbvGWNuSEb7fA46iPL5FxOmOUZkh8PREBJpZ0/H8fclSc7BMJCVr+Dn72w==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.46.1': - resolution: {integrity: sha512-496K6B1l/0Jvyp3MbW/YIgmm1a6nkTrKXBM7DoEy9YAOJ8GywGpa2UYjNCW1UrOTt+em1ECzDjRx7PIzTR9YvA==} + '@algolia/client-analytics@5.47.0': + resolution: {integrity: sha512-EcF4w7IvIk1sowrO7Pdy4Ako7x/S8+nuCgdk6En+u5jsaNQM4rTT09zjBPA+WQphXkA2mLrsMwge96rf6i7Mow==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.46.1': - resolution: {integrity: sha512-3u6AuZ1Kiss6V5JPuZfVIUYfPi8im06QBCgKqLg82GUBJ3SwhiTdSZFIEgz2mzFuitFdW1PQi3c/65zE/3FgIw==} + '@algolia/client-common@5.47.0': + resolution: {integrity: sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.46.1': - resolution: {integrity: sha512-LwuWjdO35HHl1rxtdn48t920Xl26Dl0SMxjxjFeAK/OwK/pIVfYjOZl/f3Pnm7Kixze+6HjpByVxEaqhTuAFaw==} + '@algolia/client-insights@5.47.0': + resolution: {integrity: sha512-Ci+cn/FDIsDxSKMRBEiyKrqybblbk8xugo6ujDN1GSTv9RIZxwxqZYuHfdLnLEwLlX7GB8pqVyqrUSlRnR+sJA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.46.1': - resolution: {integrity: sha512-6LvJAlfEsn9SVq63MYAFX2iUxztUK2Q7BVZtI1vN87lDiJ/tSVFKgKS/jBVO03A39ePxJQiFv6EKv7lmoGlWtQ==} + '@algolia/client-personalization@5.47.0': + resolution: {integrity: sha512-gsLnHPZmWcX0T3IigkDL2imCNtsQ7dR5xfnwiFsb+uTHCuYQt+IwSNjsd8tok6HLGLzZrliSaXtB5mfGBtYZvQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.46.1': - resolution: {integrity: sha512-9GLUCyGGo7YOXHcNqbzca82XYHJTbuiI6iT0FTGc0BrnV2N4OcrznUuVKic/duiLSun5gcy/G2Bciw5Sav9f9w==} + '@algolia/client-query-suggestions@5.47.0': + resolution: {integrity: sha512-PDOw0s8WSlR2fWFjPQldEpmm/gAoUgLigvC3k/jCSi/DzigdGX6RdC0Gh1RR1P8Cbk5KOWYDuL3TNzdYwkfDyA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.46.1': - resolution: {integrity: sha512-NL76o/BoEgU4ObY5oBEC3o6KSPpuXsnSta00tAxTm1iKUWOGR34DQEKhUt8xMHhMKleUNPM/rLPFiIVtfsGU8w==} + '@algolia/client-search@5.47.0': + resolution: {integrity: sha512-b5hlU69CuhnS2Rqgsz7uSW0t4VqrLMLTPbUpEl0QVz56rsSwr1Sugyogrjb493sWDA+XU1FU5m9eB8uH7MoI0g==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.46.1': - resolution: {integrity: sha512-52Nc8WKC1FFXsdlXlTMl1Re/pTAbd2DiJiNdYmgHiikZcfF96G+Opx4qKiLUG1q7zp9e+ahNwXF6ED0XChMywg==} + '@algolia/ingestion@1.47.0': + resolution: {integrity: sha512-WvwwXp5+LqIGISK3zHRApLT1xkuEk320/EGeD7uYy+K8WwDd5OjXnhjuXRhYr1685KnkvWkq1rQ/ihCJjOfHpQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.46.1': - resolution: {integrity: sha512-1x2/2Y/eqz6l3QcEZ8u/zMhSCpjlhePyizJd3sXrmg031HjayYT5+IxikjpqkdF7TU/deCTd/TFUcxLJ2ZHXiQ==} + '@algolia/monitoring@1.47.0': + resolution: {integrity: sha512-j2EUFKAlzM0TE4GRfkDE3IDfkVeJdcbBANWzK16Tb3RHz87WuDfQ9oeEW6XiRE1/bEkq2xf4MvZesvSeQrZRDA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.46.1': - resolution: {integrity: sha512-SSd3KlQuplxV3aRs5+Z09XilFesgpPjtCG7BGRxLTVje5hn9BLmhjO4W3gKw01INUt44Z1r0Fwx5uqnhAouunA==} + '@algolia/recommend@5.47.0': + resolution: {integrity: sha512-+kTSE4aQ1ARj2feXyN+DMq0CIDHJwZw1kpxIunedkmpWUg8k3TzFwWsMCzJVkF2nu1UcFbl7xsIURz3Q3XwOXA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.46.1': - resolution: {integrity: sha512-3GfCwudeW6/3caKSdmOP6RXZEL4F3GiemCaXEStkTt2Re8f7NcGYAAZnGlHsCzvhlNEuDzPYdYxh4UweY8l/2w==} + '@algolia/requester-browser-xhr@5.47.0': + resolution: {integrity: sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.46.1': - resolution: {integrity: sha512-JUAxYfmnLYTVtAOFxVvXJ4GDHIhMuaP7JGyZXa/nCk3P8RrN5FCNTdRyftSnxyzwSIAd8qH3CjdBS9WwxxqcHQ==} + '@algolia/requester-fetch@5.47.0': + resolution: {integrity: sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.46.1': - resolution: {integrity: sha512-VwbhV1xvTGiek3d2pOS6vNBC4dtbNadyRT+i1niZpGhOJWz1XnfhxNboVbXPGAyMJYz7kDrolbDvEzIDT93uUA==} + '@algolia/requester-node-http@5.47.0': + resolution: {integrity: sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA==} engines: {node: '>= 14.0.0'} '@alloc/quick-lru@5.2.0': @@ -346,20 +346,20 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.27.1': @@ -370,25 +370,25 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} '@base-ui-components/react@1.0.0-alpha.7': @@ -468,8 +468,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20251217.0': - resolution: {integrity: sha512-qdVSqCza5Bv23E0DFET+8SEl9fM1F16WHC0HGoYLlDAyWF7rK2HhkPCdUEOp8DsJXwANWvNOkFdJfE1kLYGHYg==} + '@cloudflare/workers-types@4.20260129.0': + resolution: {integrity: sha512-ytqtGV7L60HI/BL/p6tY1A5DIIlNl0NX+wiNeGTyB6e65x1HEeZrceVzL5RsVws7xMsBpF+2VAlm/3ga3c7Txg==} '@corex/deepmerge@4.0.43': resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==} @@ -574,11 +574,11 @@ packages: next: optional: true - '@emnapi/core@1.7.1': - resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -642,12 +642,12 @@ packages: '@ensdomains/content-hash@3.1.0-rc.1': resolution: {integrity: sha512-OzdkXgdFmduzcJKU4KRkkJkQHnm5p7m7FkX8k+bHOEoOIzc0ueGT/Jay4nnb60wNk1wSHRmzY+hHBMpFDiGReg==} - '@ensdomains/dnsprovejs@0.5.2': - resolution: {integrity: sha512-lSuYnUvUV+kBviQ82XUldtpiE0lA4gWrCilsoCWbTKtc/fH6re9NaTkhbPEy/7OF96MMAG1BDnuoTsfSMAzFBg==} + '@ensdomains/dnsprovejs@0.5.1': + resolution: {integrity: sha512-nfm4ggpK5YBVwVwLZKF9WPjRGRTL9aUxX2O4pqv/AnQCz3WeGHsW7VhVFLj2s4EoWSzCXwR1E6nuqgUwnH692w==} engines: {node: '>=16.8'} - '@ensdomains/ensjs@4.2.0': - resolution: {integrity: sha512-6E8LnKCJ45HySx8PSlepL8VfHJg0PgQRmP1xM8Snu9IcOkSpwI1LEiGOUYfEHX/I7yEglGSYMyGgeiqk0LeCcw==} + '@ensdomains/ensjs@4.2.2': + resolution: {integrity: sha512-nnnceOb1sWYNp9UrSVXjV8tXuT9OzoRhRZz8S69vYlbVkFBoHKn1Cme+SC618iJH9xu8Ia2XsB3CDlzR1ejlHQ==} engines: {node: '>=22'} peerDependencies: viem: ^2.9.2 @@ -1244,8 +1244,8 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -1376,14 +1376,14 @@ packages: engines: {node: '>=18'} hasBin: true - '@floating-ui/core@1.7.3': - resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + '@floating-ui/core@1.7.4': + resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} - '@floating-ui/dom@1.7.4': - resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + '@floating-ui/dom@1.7.5': + resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} - '@floating-ui/react-dom@2.1.6': - resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + '@floating-ui/react-dom@2.1.7': + resolution: {integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1394,8 +1394,8 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/react@0.27.16': - resolution: {integrity: sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==} + '@floating-ui/react@0.27.17': + resolution: {integrity: sha512-LGVZKHwmWGg6MRHjLLgsfyaX2y2aCNgnD1zT/E6B+/h+vxg+nIJUqHPAlTzsHDyqdgEpJ1Np5kxWuFEErXzoGg==} peerDependencies: react: '>=17.0.0' react-dom: '>=17.0.0' @@ -1488,67 +1488,79 @@ packages: resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} @@ -1684,36 +1696,42 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/simple-git-linux-arm64-musl@0.1.22': resolution: {integrity: sha512-MOs7fPyJiU/wqOpKzAOmOpxJ/TZfP4JwmvPad/cXTOWYwwyppMlXFRms3i98EU3HOazI/wMU2Ksfda3+TBluWA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/simple-git-linux-ppc64-gnu@0.1.22': resolution: {integrity: sha512-L59dR30VBShRUIZ5/cQHU25upNgKS0AMQ7537J6LCIUEFwwXrKORZKJ8ceR+s3Sr/4jempWVvMdjEpFDE4HYww==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@napi-rs/simple-git-linux-s390x-gnu@0.1.22': resolution: {integrity: sha512-4FHkPlCSIZUGC6HiADffbe6NVoTBMd65pIwcd40IDbtFKOgFMBA+pWRqKiQ21FERGH16Zed7XHJJoY3jpOqtmQ==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] + libc: [glibc] '@napi-rs/simple-git-linux-x64-gnu@0.1.22': resolution: {integrity: sha512-Ei1tM5Ho/dwknF3pOzqkNW9Iv8oFzRxE8uOhrITcdlpxRxVrBVptUF6/0WPdvd7R9747D/q61QG/AVyWsWLFKw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/simple-git-linux-x64-musl@0.1.22': resolution: {integrity: sha512-zRYxg7it0p3rLyEJYoCoL2PQJNgArVLyNavHW03TFUAYkYi5bxQ/UFNVpgxMaXohr5yu7qCBqeo9j4DWeysalg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/simple-git-win32-arm64-msvc@0.1.22': resolution: {integrity: sha512-XGFR1fj+Y9cWACcovV2Ey/R2xQOZKs8t+7KHPerYdJ4PtjVzGznI4c2EBHXtdOIYvkw7tL5rZ7FN1HJKdD5Quw==} @@ -1766,24 +1784,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@next/swc-linux-arm64-musl@14.2.33': resolution: {integrity: sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@next/swc-linux-x64-gnu@14.2.33': resolution: {integrity: sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@next/swc-linux-x64-musl@14.2.33': resolution: {integrity: sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@next/swc-win32-arm64-msvc@14.2.33': resolution: {integrity: sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==} @@ -1856,36 +1878,36 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@nomicfoundation/edr-darwin-arm64@0.12.0-next.17': - resolution: {integrity: sha512-gI9/9ysLeAid0+VSTBeutxOJ0/Rrh00niGkGL9+4lR577igDY+v55XGN0oBMST49ILS0f12J6ZY90LG8sxPXmQ==} + '@nomicfoundation/edr-darwin-arm64@0.12.0-next.22': + resolution: {integrity: sha512-TpEBSKyMZJEPvYwBPYclC2b+qobKjn1YhVa7aJ1R7RMPy5dJ/PqsrUK5UuUFFybBqoIorru5NTcsyCMWP5T/Fg==} engines: {node: '>= 20'} - '@nomicfoundation/edr-darwin-x64@0.12.0-next.17': - resolution: {integrity: sha512-zSZtwf584RkIyb8awELDt7ctskogH0p4pmqOC4vhykc8ODOv2XLuG1IgeE4WgYhWGZOufbCtgLfpJQrWqN6mmw==} + '@nomicfoundation/edr-darwin-x64@0.12.0-next.22': + resolution: {integrity: sha512-aK/+m8xUkR4u+czTVGU06nSFVH43AY6XCBoR2YjO8SglAAjCSTWK3WAfVb6FcsriMmKv4PrvoyHLMbMP+fXcGA==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.17': - resolution: {integrity: sha512-WjdfgV6B7gT5Q0NXtSIWyeK8gzaJX5HK6/jclYVHarWuEtS1LFgePYgMjK8rmm7IRTkM9RsE/PCuQEP1nrSsuA==} + '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.22': + resolution: {integrity: sha512-W5vXMleG14hVzRYGPEwlHLJ6iiQE8Qh63Uj538nAz4YUI6wWSgUOZE7K2Gt1EdujZGnrt7kfDslgJ96n4nKQZw==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.17': - resolution: {integrity: sha512-26rObKhhCDb9JkZbToyr7JVZo4tSVAFvzoJSJVmvpOl0LOHrfFsgVQu2n/8cNkwMAqulPubKL2E0jdnmEoZjWA==} + '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.22': + resolution: {integrity: sha512-VDp7EB3iY8MH/fFVcgEzLDGYmtS6j2honNc0RNUCFECKPrdsngGrTG8p+YFxyVjq2m5GEsdyKo4e+BKhaUNPdg==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.17': - resolution: {integrity: sha512-dPkHScIf/CU6h6k3k4HNUnQyQcVSLKanviHCAcs5HkviiJPxvVtOMMvtNBxoIvKZRxGFxf2eutcqQW4ZV1wRQQ==} + '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.22': + resolution: {integrity: sha512-XL6oA3ymRSQYyvg6hF1KIax6V/9vlWr5gJ8GPHVVODk1a/YfuEEY1osN5Zmo6aztUkSGKwSuac/3Ax7rfDDiSg==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.17': - resolution: {integrity: sha512-5Ixe/bpyWZxC3AjIb8EomAOK44ajemBVx/lZRHZiWSBlwQpbSWriYAtKjKcReQQPwuYVjnFpAD2AtuCvseIjHw==} + '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.22': + resolution: {integrity: sha512-hmkRIXxWa9P0PwfXOAO6WUw11GyV5gpxcMunqWBTkwZ4QW/hi/CkXmlLo6VHd6ceCwpUNLhCGndBtrOPrNRi4A==} engines: {node: '>= 20'} - '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.17': - resolution: {integrity: sha512-29YlvdgofSdXG1mUzIuH4kMXu1lmVc1hvYWUGWEH59L+LaakdhfJ/Wu5izeclKkrTh729Amtk/Hk1m29kFOO8A==} + '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.22': + resolution: {integrity: sha512-X7f+7KUMm00trsXAHCHJa+x1fc3QAbk2sBctyOgpET+GLrfCXbxqrccKi7op8f0zTweAVGg1Hsc8SjjC7kwFLw==} engines: {node: '>= 20'} - '@nomicfoundation/edr@0.12.0-next.17': - resolution: {integrity: sha512-Y8Kwqd5JpBmI/Kst6NJ/bZ81FeJea9J6WEwoSRTZnEvwfqW9dk9PI8zJs2UJpOACL1fXEPvN+doETbxT9EhwXA==} + '@nomicfoundation/edr@0.12.0-next.22': + resolution: {integrity: sha512-JigYWf2stjpDxSndBsxRoobQHK8kz4SAVaHtTIKQLIHbsBwymE8i120Ejne6Jk+Ndc5CsNINXB8/bK6vLPe9jA==} engines: {node: '>= 20'} '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': @@ -3015,113 +3037,141 @@ packages: resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==} engines: {node: '>= 10'} - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + '@rollup/rollup-android-arm-eabi@4.57.0': + resolution: {integrity: sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + '@rollup/rollup-android-arm64@4.57.0': + resolution: {integrity: sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + '@rollup/rollup-darwin-arm64@4.57.0': + resolution: {integrity: sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + '@rollup/rollup-darwin-x64@4.57.0': + resolution: {integrity: sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + '@rollup/rollup-freebsd-arm64@4.57.0': + resolution: {integrity: sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + '@rollup/rollup-freebsd-x64@4.57.0': + resolution: {integrity: sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': + resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==} cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + '@rollup/rollup-linux-arm-musleabihf@4.57.0': + resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==} cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + '@rollup/rollup-linux-arm64-gnu@4.57.0': + resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + '@rollup/rollup-linux-arm64-musl@4.57.0': + resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==} cpu: [arm64] os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.57.0': + resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==} + cpu: [loong64] + os: [linux] + libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + '@rollup/rollup-linux-loong64-musl@4.57.0': + resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==} cpu: [loong64] os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.57.0': + resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + '@rollup/rollup-linux-ppc64-musl@4.57.0': + resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==} cpu: [ppc64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + '@rollup/rollup-linux-riscv64-gnu@4.57.0': + resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==} cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + '@rollup/rollup-linux-riscv64-musl@4.57.0': + resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==} cpu: [riscv64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + '@rollup/rollup-linux-s390x-gnu@4.57.0': + resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + '@rollup/rollup-linux-x64-gnu@4.57.0': + resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + '@rollup/rollup-linux-x64-musl@4.57.0': + resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==} cpu: [x64] os: [linux] + libc: [musl] - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + '@rollup/rollup-openbsd-x64@4.57.0': + resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.57.0': + resolution: {integrity: sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + '@rollup/rollup-win32-arm64-msvc@4.57.0': + resolution: {integrity: sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + '@rollup/rollup-win32-ia32-msvc@4.57.0': + resolution: {integrity: sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + '@rollup/rollup-win32-x64-gnu@4.57.0': + resolution: {integrity: sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + '@rollup/rollup-win32-x64-msvc@4.57.0': + resolution: {integrity: sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==} cpu: [x64] os: [win32] @@ -3186,32 +3236,32 @@ packages: '@shikijs/core@1.29.2': resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} - '@shikijs/core@3.20.0': - resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==} + '@shikijs/core@3.21.0': + resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==} '@shikijs/engine-javascript@1.29.2': resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} - '@shikijs/engine-javascript@3.20.0': - resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==} + '@shikijs/engine-javascript@3.21.0': + resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==} '@shikijs/engine-oniguruma@1.29.2': resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - '@shikijs/engine-oniguruma@3.20.0': - resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==} + '@shikijs/engine-oniguruma@3.21.0': + resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==} '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - '@shikijs/langs@3.20.0': - resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==} + '@shikijs/langs@3.21.0': + resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==} '@shikijs/themes@1.29.2': resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - '@shikijs/themes@3.20.0': - resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==} + '@shikijs/themes@3.21.0': + resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==} '@shikijs/twoslash@1.29.2': resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==} @@ -3219,8 +3269,8 @@ packages: '@shikijs/types@1.29.2': resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - '@shikijs/types@3.20.0': - resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==} + '@shikijs/types@3.21.0': + resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -3275,8 +3325,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/helpers@0.5.18': + resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==} '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} @@ -3286,28 +3336,28 @@ packages: peerDependencies: tailwindcss: '>=3.2.0' - '@tanem/react-nprogress@5.0.56': - resolution: {integrity: sha512-OI5rXB6jxC/RLJqnIuaKNXu3qQ6Lf3+g1HqkqGz01E25iV3pZFYBihMdGsEeg/4pAm0O7xo/umcAA3jsdeibHA==} + '@tanem/react-nprogress@5.0.58': + resolution: {integrity: sha512-VbO2PF/lYwyV5axQTLQWrC2l7amVadCikg/WnpncdgkGHzcWgkdV/h+SoYgkB2cfc8yQm0Qpv9DCGK8q4wWvsw==} 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/query-core@5.90.12': - resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} + '@tanstack/query-core@5.90.20': + resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==} - '@tanstack/react-query@5.90.12': - resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==} + '@tanstack/react-query@5.90.20': + resolution: {integrity: sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-virtual@3.13.13': - resolution: {integrity: sha512-4o6oPMDvQv+9gMi8rE6gWmsOjtUZUYIJHv7EB+GblyYdi8U6OqLl8rhHWIUZSL1dUU2dPwTdTgybCKf9EjIrQg==} + '@tanstack/react-virtual@3.13.18': + resolution: {integrity: sha512-dZkhyfahpvlaV0rIKnvQiVoWPyURppl6w4m9IwMDpuIjcJ1sD9YGWrt0wISvgU7ewACXx2Ct46WPgI6qAD4v6A==} 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.13': - resolution: {integrity: sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==} + '@tanstack/virtual-core@3.13.18': + resolution: {integrity: sha512-Mx86Hqu1k39icq2Zusq+Ey2J6dDWTjDvEv43PJtRCoEYTLyfaPnxIQ6iy7YAOK0NV/qOEmZQ/uCufrppZxTgcg==} '@theguild/remark-mermaid@0.1.3': resolution: {integrity: sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw==} @@ -3317,45 +3367,45 @@ packages: '@theguild/remark-npm2yarn@0.3.3': resolution: {integrity: sha512-ma6DvR03gdbvwqfKx1omqhg9May/VYGdMHvTzB4VuxkyS7KzfZ/lzrj43hmcsggpMje0x7SADA/pcMph0ejRnA==} - '@theme-ui/color-modes@0.17.2': - resolution: {integrity: sha512-VSycDWzmEPZwZyJGbA83yKPzjzWzE88FQPRKT3QMHsvoD5dUXlF5tFOg0gEPu2cMhKbSWLCFi/Rtj7ANJDSF/w==} + '@theme-ui/color-modes@0.17.4': + resolution: {integrity: sha512-YToAiH4eHSUl/tCeZM1la9994NP70aKicAVC9RzmkV6k95gz1ka9cbziM0qVPGv1+WNcEy8EA2taueaxXjyiUA==} peerDependencies: '@emotion/react': ^11.13.3 react: '>=18' - '@theme-ui/components@0.17.2': - resolution: {integrity: sha512-CJeflLU2P6g+B7xn0NsAaWBiRlN3BknYX8lozTBlRwg53sHlHsbQzumtVerlWUlIa+muMx8kCxJYypYBAiaHhg==} + '@theme-ui/components@0.17.4': + resolution: {integrity: sha512-8J4h6/ym5KjRLC8lKbJ1Sr4BjS+UlhuGc0w6KcJJ9YTyeC1mEKo55h3BxTwol1uzWgyKu8wzJNbauiPc2mFsqA==} peerDependencies: '@emotion/react': ^11.13.3 - '@theme-ui/theme-provider': ^0.17.2 + '@theme-ui/theme-provider': ^0.17.4 react: '>=18' - '@theme-ui/core@0.17.2': - resolution: {integrity: sha512-PMBaFCh/9HTlUZJFZRxZJoy+w/SVOJCr7v3s7XF5qyGcCuAB5tLv+fjcKpALaZ6QBT1SkHWd07AyTHrs0V2uRw==} + '@theme-ui/core@0.17.4': + resolution: {integrity: sha512-Thi46ulVpTbsU+DafydCrt6AftWvG+NicsA62MasObd0sbrfPPZVjuZdEt6yNDwzWXaI2UjNmJa8G4Uty+ALrA==} peerDependencies: '@emotion/react': ^11.13.3 react: '>=18' - '@theme-ui/css@0.17.2': - resolution: {integrity: sha512-sYeurC8WbZBLumt8qO7rM6ZDyvneMh6JojeZov3uwu4Ty2iis8rhqGGK8LD1SfwsWcV8pu3AivQ9xyvWZeaQrw==} + '@theme-ui/css@0.17.4': + resolution: {integrity: sha512-lyitzWdqszEK+T76ad4XUYQM+UCUadeFqMsjjKB8E461oQHxCKuV7fY/SRJr6hP/Zxk/mAEQnwNp2wjc0z8OIA==} peerDependencies: '@emotion/react': ^11.11.1 - '@theme-ui/global@0.17.2': - resolution: {integrity: sha512-yH4Gv/ESDKlxDLz0u5lR3EWAZLfnb4T0Zn1d1LnO7mHv/9dVbF+MA/ogCWLi8Xvs5/u1+RMSJkPfHWfw+Xp5AQ==} + '@theme-ui/global@0.17.4': + resolution: {integrity: sha512-zCpfZ2OgBfveE/3fX8WmQYd6RujujlHybqNE3jUodYUoE2ZEO7papqk4eQPRpk58miYIiOBLUaxOC69wVNPjEA==} peerDependencies: '@emotion/react': ^11.13.3 react: '>=18' - '@theme-ui/match-media@0.17.2': - resolution: {integrity: sha512-kfCcSh35OQ/oPlKYnmipW3ZdgxgbNdejwjtYnKaQtGBQrE/Z/IiSg5MJuztI7w35dfOPtbbUZMTe8JMa34C/iA==} + '@theme-ui/match-media@0.17.4': + resolution: {integrity: sha512-AxqtKqXmMNtdu9KK05hLsT4sCznB2hilIt9MUV1DMuxI/HB1DS+d7xDfX7xAwFpsefXrTUBKrMp+V30i2zQyOg==} peerDependencies: - '@theme-ui/core': ^0.17.2 - '@theme-ui/css': ^0.17.2 + '@theme-ui/core': ^0.17.4 + '@theme-ui/css': ^0.17.4 react: '>=18' - '@theme-ui/theme-provider@0.17.2': - resolution: {integrity: sha512-Y454eONQU42xHaA6oyWmc3+ViRnKjpi0SAh9zFcz+WmJ2SJVZQ4A8XWXnJHjpq38DFju/AyeEfI4puZRHTkgjQ==} + '@theme-ui/theme-provider@0.17.4': + resolution: {integrity: sha512-A79XVNdkyLydTZFFsheWDsjOW16dSOAFhbByrJfM/9Y+4iJoaoQfFJ3IoCUvS7dBYgwTiPOBiEyeBgpDDTyclw==} peerDependencies: '@emotion/react': ^11.13.3 react: '>=18' @@ -3447,8 +3497,8 @@ packages: '@types/d3-selection@3.0.11': resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} - '@types/d3-shape@3.1.7': - resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} '@types/d3-time-format@4.0.3': resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} @@ -3495,11 +3545,11 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/katex@0.16.7': - resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} - '@types/lodash@4.17.21': - resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} + '@types/lodash@4.17.23': + resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -3517,8 +3567,8 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@22.19.3': - resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} + '@types/node@22.19.7': + resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -3629,8 +3679,8 @@ packages: resolution: {integrity: sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==} engines: {node: '>=10'} - '@uniswap/sdk-core@7.10.0': - resolution: {integrity: sha512-tT0yYqcUxqFknVrcD97yFO2MHd810u4zK5IvGZiH2CpOwC82yeb5OSOIyePcP3iEl4V1Vp0gIhTzIL1TlALm2g==} + '@uniswap/sdk-core@7.10.1': + resolution: {integrity: sha512-MOhGAjGMqrd95p+te6tBK8pHgHCVMRTs5imqZk2aTqLoKgu6KzEGllifHb70ME6I4Q2p9eIPpX3xjfh4MKFT2w==} engines: {node: '>=10'} '@uniswap/swap-router-contracts@1.3.1': @@ -3702,41 +3752,49 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] + libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -3791,13 +3849,13 @@ packages: '@vitest/utils@2.1.9': resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} - '@web3icons/common@0.11.36': - resolution: {integrity: sha512-vJO3yp6D3hNJsSyyecOW7BAzHSdvLlnOlus8YbXUQh56xjkjdD2F49Z4q1OYthvdH5KFBlBxU1C04ndkPokdIA==} + '@web3icons/common@0.11.44': + resolution: {integrity: sha512-elPi7B1kuWj/O+4+gShXB7W8mIex4mMmY0eP8nXXSzSU+OIHKjNEQ6FQxB3p4KXlD6uMinuekxFiA/f1vLwUJA==} peerDependencies: typescript: ^5.0.0 - '@web3icons/react@4.1.7': - resolution: {integrity: sha512-mwvZndLrLHhoigmIh/tRySq99vgs0mx344rhnlQ08R86/T4X8LclGHzmR0IQAuR3tY4+NUcc5Ag/G0ZL8USMOw==} + '@web3icons/react@4.1.15': + resolution: {integrity: sha512-0Ubv/Jc+fep18CkmwtwW74FwnzVlGwfkc9czznRrMc/jpyD1ighT33a4gZsISQsfmEfqS/T39njbrETcd96zeA==} peerDependencies: react: ^18.0.0 || ^19.0.0 @@ -3887,8 +3945,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.46.1: - resolution: {integrity: sha512-39ol8Ulqb3MntofkXHlrcXKyU8BU0PXvQrXPBIX6eXj/EO4VT7651mhGVORI2oF8ydya9nFzT3fYDoqme/KL6w==} + algoliasearch@5.47.0: + resolution: {integrity: sha512-AGtz2U7zOV4DlsuYV84tLp2tBbA7RPtLA44jbVH4TTpDcc1dIWmULjHSsunlhscbzDydnjuFlNhflR3nV4VJaQ==} engines: {node: '>= 14.0.0'} ansi-align@3.0.1: @@ -4017,8 +4075,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.11.0: - resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} + axe-core@4.11.1: + resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} engines: {node: '>=4'} axobject-query@4.1.0: @@ -4049,8 +4107,8 @@ packages: base64-sol@1.0.1: resolution: {integrity: sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==} - baseline-browser-mapping@2.9.10: - resolution: {integrity: sha512-2VIKvDx8Z1a9rTB2eCkdPE5nSe28XnA+qivGnWHoB40hMMt/h1hSz0960Zqsn6ZyxWXUie0EBdElKv8may20AA==} + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true bech32@1.1.4: @@ -4160,8 +4218,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001760: - resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + caniuse-lite@1.0.30001766: + resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4193,8 +4251,8 @@ packages: charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} chevrotain-allstar@0.3.1: @@ -4464,8 +4522,8 @@ packages: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} - d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} engines: {node: '>=12'} d3-geo@3.1.1: @@ -4605,8 +4663,8 @@ packages: decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - decode-named-character-reference@1.2.0: - resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} @@ -4661,8 +4719,8 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + diff@5.2.2: + resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: @@ -4705,8 +4763,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + electron-to-chromium@1.5.282: + resolution: {integrity: sha512-FCPkJtpst28UmFzd903iU7PdeVTfY0KAeJy+Lk0GLZRwgwYHn/irRcaCbQQOmr5Vytc/7rcavsYLvTM8RiHYhQ==} elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -4951,8 +5009,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -5061,8 +5119,8 @@ packages: resolution: {integrity: sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA==} hasBin: true - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -5147,8 +5205,8 @@ packages: fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - framer-motion@12.23.26: - resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==} + framer-motion@12.29.2: + resolution: {integrity: sha512-lSNRzBJk4wuIy0emYQ/nfZ7eWhqud2umPKw2QAQki6uKhZPKm2hRQHeQoHTG9MIvfobb+A/LbEWPJU794ZUKrg==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -5320,8 +5378,8 @@ packages: peerDependencies: hardhat: ^2.0.0 - hardhat@2.28.0: - resolution: {integrity: sha512-A3yBISI18EcnY2IR7Ny2xZF33Q3qH01yrWapeWbyGOiJm/386SasWjbHRHYgUlZ3YWJETIMh7wYfMUaXrofTDQ==} + hardhat@2.28.4: + resolution: {integrity: sha512-iQC4WNWjWMz7cVVFqzEBNisUQ/EEEJrWysJ2hRAMTnfXJx6Y11UXdmtz4dHIzvGL0z27XCCaJrcApDPH0KaZEg==} hasBin: true peerDependencies: ts-node: '*' @@ -5837,8 +5895,8 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} - katex@0.16.27: - resolution: {integrity: sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==} + katex@0.16.28: + resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==} hasBin: true keccak@3.0.4: @@ -5916,8 +5974,8 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - lodash-es@4.17.22: - resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -5925,6 +5983,9 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -5942,8 +6003,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} engines: {node: 20 || >=22} lru_map@0.3.3: @@ -6191,8 +6252,8 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - miniflare@3.20250718.2: - resolution: {integrity: sha512-cW/NQPBKc+fb0FwcEu+z/v93DZd+/6q/AF0iR0VFELtNPOsCvLalq6ndO743A7wfZtFxMxvuDQUXNx3aKQhOwA==} + miniflare@3.20250718.3: + resolution: {integrity: sha512-JuPrDJhwLrNLEJiNLWO7ZzJrv/Vv9kZuwMYCfv0LskQDM6Eonw4OvywO3CH/wCGjgHzha/qyjUh8JQ068TjDgQ==} engines: {node: '>=16.13'} hasBin: true @@ -6231,8 +6292,9 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mixpanel-browser@2.72.0: - resolution: {integrity: sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA==} + mixpanel-browser@2.74.0: + resolution: {integrity: sha512-FWifdAaI+8zKEROb9T+gy0NRZB0gaCC5iy20rDjZ3C+KCwCsJcITT6lAYErWbwwmk3Ei34JBjLsnrDLPYj+hOw==} + engines: {node: '>=20 <26'} mj-context-menu@0.6.1: resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} @@ -6248,14 +6310,14 @@ packages: engines: {node: '>= 14.0.0'} hasBin: true - motion-dom@12.23.23: - resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==} + motion-dom@12.29.2: + resolution: {integrity: sha512-/k+NuycVV8pykxyiTCoFzIVLA95Nb1BFIVvfSu9L50/6K6qNeAYtkxXILy/LRutt7AzaYDc2myj0wkCVVYAPPA==} - motion-utils@12.23.6: - resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + motion-utils@12.29.2: + resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} - motion@12.23.26: - resolution: {integrity: sha512-Ll8XhVxY8LXMVYTCfme27WH2GjBrCIzY4+ndr5QKxsK+YwCtOi2B/oBi5jcIbik5doXuWT/4KKDOVAZJkeY5VQ==} + motion@12.29.2: + resolution: {integrity: sha512-jMpHdAzEDF1QQ055cB+1lOBLdJ6ialVWl6QQzpJI2OvmHequ7zFVHM2mx0HNAy+Tu4omUlApfC+4vnkX0geEOg==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -6476,8 +6538,8 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - ox@0.10.5: - resolution: {integrity: sha512-mXJRiZswmX46abrzNkJpTN9sPJ/Rhevsp5Dfg0z80D55aoLNmEV4oN+/+feSNW593c2CnHavMqSVBanpJ0lUkQ==} + ox@0.11.3: + resolution: {integrity: sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: @@ -6752,8 +6814,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -6802,8 +6864,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} querystringify@2.2.0: @@ -6925,8 +6987,8 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react-virtuoso@4.17.0: - resolution: {integrity: sha512-od3pi2v13v31uzn5zPXC2u3ouISFCVhjFVFch2VvS2Cx7pWA2F1aJa3XhNTN2F07M3lhfnMnsmGeH+7wZICr7w==} + react-virtuoso@4.18.1: + resolution: {integrity: sha512-KF474cDwaSb9+SJ380xruBB4P+yGWcVkcu26HtMqYNMTYlYbrNy8vqMkE+GpAApPPufJqgOLMoWMFG/3pJMXUA==} peerDependencies: react: '>=16 || >=17 || >= 18 || >= 19' react-dom: '>=16 || >=17 || >= 18 || >=19' @@ -7138,8 +7200,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + rollup@4.57.0: + resolution: {integrity: sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7180,8 +7242,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - satori@0.18.3: - resolution: {integrity: sha512-T3DzWNmnrfVmk2gCIlAxLRLbGkfp3K7TyRva+Byyojqu83BNvnMeqVeYRdmUw4TKCsyH4RiQ/KuF/I4yEzgR5A==} + satori@0.19.1: + resolution: {integrity: sha512-/XaT/JiWLfNlgjlQdde4wXB1/6F+FEze9c3OW2QIH0ywsfOrY57YOetgESWyOFHW3JfEQ6dJAo2U9Xwb7+DDAw==} engines: {node: '>=16'} saxes@6.0.0: @@ -7247,8 +7309,8 @@ packages: shiki@1.29.2: resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} - shiki@3.20.0: - resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==} + shiki@3.21.0: + resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -7521,16 +7583,16 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - tabbable@6.3.0: - resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} tailwindcss@3.4.19: resolution: {integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==} @@ -7540,8 +7602,8 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - theme-ui@0.17.2: - resolution: {integrity: sha512-BuyJ7lkgGzmI63YPA90WYB+X4LbJTMm+j1a/qxjdl7evhLKRZkEE4Xs3bv66g9T+fuqq2T2TMrcY0BMzpWkOtQ==} + theme-ui@0.17.4: + resolution: {integrity: sha512-kvmkAntXv/x362zdn7S9R16y+nIkNvT3jHJIc/g3k1kDeX6HQdkXf6w2yPK+GXIlPytJ9rx4Vvu03E59JlhxMQ==} peerDependencies: '@emotion/react': '>=11.1.1' react: '>=18' @@ -7680,38 +7742,38 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.6.3: - resolution: {integrity: sha512-BlJJDc1CQ7SK5Y5qnl7AzpkvKSnpkfPmnA+HeU/sgny3oHZckPV2776ebO2M33CYDSor7+8HQwaodY++IINhYg==} + turbo-darwin-64@2.8.0: + resolution: {integrity: sha512-N7f4PYqz25yk8c5kituk09bJ89tE4wPPqKXgYccT6nbEQnGnrdvlyCHLyqViNObTgjjrddqjb1hmDkv7VcxE0g==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.6.3: - resolution: {integrity: sha512-MwVt7rBKiOK7zdYerenfCRTypefw4kZCue35IJga9CH1+S50+KTiCkT6LBqo0hHeoH2iKuI0ldTF2a0aB72z3w==} + turbo-darwin-arm64@2.8.0: + resolution: {integrity: sha512-eVzejaP5fn51gmJAPW68U6mSjFaAZ26rPiE36mMdk+tMC4XBGmJHT/fIgrhcrXMvINCl27RF8VmguRe+MBlSuQ==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.6.3: - resolution: {integrity: sha512-cqpcw+dXxbnPtNnzeeSyWprjmuFVpHJqKcs7Jym5oXlu/ZcovEASUIUZVN3OGEM6Y/OTyyw0z09tOHNt5yBAVg==} + turbo-linux-64@2.8.0: + resolution: {integrity: sha512-ILR45zviYae3icf4cmUISdj8X17ybNcMh3Ms4cRdJF5sS50qDDTv8qeWqO/lPeHsu6r43gVWDofbDZYVuXYL7Q==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.6.3: - resolution: {integrity: sha512-MterpZQmjXyr4uM7zOgFSFL3oRdNKeflY7nsjxJb2TklsYqiu3Z9pQ4zRVFFH8n0mLGna7MbQMZuKoWqqHb45w==} + turbo-linux-arm64@2.8.0: + resolution: {integrity: sha512-z9pUa8ENFuHmadPfjEYMRWlXO82t1F/XBDx2XTg+cWWRZHf85FnEB6D4ForJn/GoKEEvwdPhFLzvvhOssom2ug==} cpu: [arm64] os: [linux] - turbo-windows-64@2.6.3: - resolution: {integrity: sha512-biDU70v9dLwnBdLf+daoDlNJVvqOOP8YEjqNipBHzgclbQlXbsi6Gqqelp5er81Qo3BiRgmTNx79oaZQTPb07Q==} + turbo-windows-64@2.8.0: + resolution: {integrity: sha512-J6juRSRjmSErEqJCv7nVIq2DgZ2NHXqyeV8NQTFSyIvrThKiWe7FDOO6oYpuR06+C1NW82aoN4qQt4/gYvz25w==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.6.3: - resolution: {integrity: sha512-dDHVKpSeukah3VsI/xMEKeTnV9V9cjlpFSUs4bmsUiLu3Yv2ENlgVEZv65wxbeE0bh0jjpmElDT+P1KaCxArQQ==} + turbo-windows-arm64@2.8.0: + resolution: {integrity: sha512-qarBZvCu6uka35739TS+y/3CBU3zScrVAfohAkKHG+So+93Wn+5tKArs8HrO2fuTaGou8fMIeTV7V5NgzCVkSQ==} cpu: [arm64] os: [win32] - turbo@2.6.3: - resolution: {integrity: sha512-bf6YKUv11l5Xfcmg76PyWoy/e2vbkkxFNBGJSnfdSXQC33ZiUfutYh6IXidc5MhsnrFkWfdNNLyaRk+kHMLlwA==} + turbo@2.8.0: + resolution: {integrity: sha512-hYbxnLEdvJF+DLALS+Ia+PbfNtn0sDP0hH2u9AFoskSUDmcVHSrtwHpzdX94MrRJKo9D9tYxY3MyP20gnlrWyA==} hasBin: true twoslash-protocol@0.2.12: @@ -7776,8 +7838,8 @@ packages: resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} hasBin: true - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} @@ -7847,8 +7909,8 @@ packages: unist-util-visit@3.1.0: resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} universal-cookie@7.2.2: resolution: {integrity: sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ==} @@ -7958,8 +8020,8 @@ packages: victory-vendor@36.9.2: resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} - viem@2.43.1: - resolution: {integrity: sha512-S33pBNlRvOlVv4+L94Z8ydCMDB1j0cuHFUvaC28i6OTxw3uY1P4M3h1YDFK8YC1H9/lIbeBTTvCRhi0FqU/2iw==} + viem@2.45.0: + resolution: {integrity: sha512-iVA9qrAgRdtpWa80lCZ6Jri6XzmLOwwA1wagX2HnKejKeliFLpON0KOdyfqvcy+gUpBVP59LBxP2aKiL3aj8fg==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -8067,6 +8129,7 @@ packages: whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} @@ -8088,8 +8151,8 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} which@2.0.2: @@ -8126,8 +8189,8 @@ packages: workerpool@6.5.1: resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - wrangler@3.114.15: - resolution: {integrity: sha512-OpGikaV6t7AGXZImtGnVXI8WUnqBMFBCQcZzqKmQi0T/pZ5h8iSKhEZf7ItVB8bAG56yswHnWWYyANWF/Jj/JA==} + wrangler@3.114.17: + resolution: {integrity: sha512-tAvf7ly+tB+zwwrmjsCyJ2pJnnc7SZhbnNwXbH+OIdVas3zTSmjcZOjmLKcGGptssAA3RyTKhcF9BvKZzMUycA==} engines: {node: '>=16.17.0'} hasBin: true peerDependencies: @@ -8183,6 +8246,18 @@ packages: utf-8-validate: optional: true + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -8250,8 +8325,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.2.1: - resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -8262,117 +8337,117 @@ snapshots: '@adraffy/ens-normalize@1.11.1': {} - '@algolia/abtesting@1.12.1': + '@algolia/abtesting@1.13.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1)': + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1) - '@algolia/client-search': 5.46.1 - algoliasearch: 5.46.1 + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) + '@algolia/client-search': 5.47.0 + algoliasearch: 5.47.0 - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1)': + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)': dependencies: - '@algolia/client-search': 5.46.1 - algoliasearch: 5.46.1 + '@algolia/client-search': 5.47.0 + algoliasearch: 5.47.0 - '@algolia/client-abtesting@5.46.1': + '@algolia/client-abtesting@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-analytics@5.46.1': + '@algolia/client-analytics@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-common@5.46.1': {} + '@algolia/client-common@5.47.0': {} - '@algolia/client-insights@5.46.1': + '@algolia/client-insights@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-personalization@5.46.1': + '@algolia/client-personalization@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-query-suggestions@5.46.1': + '@algolia/client-query-suggestions@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-search@5.46.1': + '@algolia/client-search@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/ingestion@1.46.1': + '@algolia/ingestion@1.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/monitoring@1.46.1': + '@algolia/monitoring@1.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/recommend@5.46.1': + '@algolia/recommend@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/requester-browser-xhr@5.46.1': + '@algolia/requester-browser-xhr@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 + '@algolia/client-common': 5.47.0 - '@algolia/requester-fetch@5.46.1': + '@algolia/requester-fetch@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 + '@algolia/client-common': 5.47.0 - '@algolia/requester-node-http@5.46.1': + '@algolia/requester-node-http@5.47.0': dependencies: - '@algolia/client-common': 5.46.1 + '@algolia/client-common': 5.47.0 '@alloc/quick-lru@5.2.0': {} @@ -8394,26 +8469,26 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.28.6': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/generator@7.28.5': + '@babel/generator@7.28.6': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-globals@7.28.0': {} - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color @@ -8421,39 +8496,39 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': + '@babel/parser@7.28.6': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/runtime@7.28.4': {} + '@babel/runtime@7.28.6': {} - '@babel/template@7.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - '@babel/traverse@7.28.5': + '@babel/traverse@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.28.5': + '@babel/types@7.28.6': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 '@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)': dependencies: - '@babel/runtime': 7.28.4 - '@floating-ui/react': 0.27.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.6 + '@floating-ui/react': 0.27.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@floating-ui/utils': 0.2.10 '@react-aria/overlays': 3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) prop-types: 15.8.1 @@ -8509,7 +8584,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20250718.0': optional: true - '@cloudflare/workers-types@4.20251217.0': {} + '@cloudflare/workers-types@4.20260129.0': {} '@corex/deepmerge@4.0.43': {} @@ -8539,12 +8614,12 @@ snapshots: '@docsearch/css@3.9.0': {} - '@docsearch/react@3.9.0(@algolia/client-search@5.46.1)(@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.47.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.46.1)(algoliasearch@5.46.1)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.46.1)(algoliasearch@5.46.1) + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) '@docsearch/css': 3.9.0 - algoliasearch: 5.46.1 + algoliasearch: 5.47.0 optionalDependencies: '@types/react': 18.3.27 react: 18.3.1 @@ -8553,13 +8628,13 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@edgeandnode/common@7.0.4(hardhat@2.28.0(typescript@5.9.3))': + '@edgeandnode/common@7.0.4(hardhat@2.28.4(typescript@5.9.3))': dependencies: '@ethersproject/providers': 5.8.0 '@pinax/graph-networks-registry': 0.6.7 - '@uniswap/sdk-core': 7.10.0 + '@uniswap/sdk-core': 7.10.1 '@uniswap/v3-core': 1.0.1 - '@uniswap/v3-sdk': 3.27.0(hardhat@2.28.0(typescript@5.9.3)) + '@uniswap/v3-sdk': 3.27.0(hardhat@2.28.4(typescript@5.9.3)) dataloader: 2.2.3 dayjs: 1.11.19 decimal.js: 10.6.0 @@ -8573,13 +8648,13 @@ snapshots: - hardhat - utf-8-validate - '@edgeandnode/ens@2.3.1(typescript@5.9.3)(viem@2.43.1(typescript@5.9.3)(zod@3.25.76))': + '@edgeandnode/ens@2.3.1(typescript@5.9.3)(viem@2.45.0(typescript@5.9.3)(zod@3.25.76))': dependencies: - '@ensdomains/ensjs': 4.2.0(typescript@5.9.3)(viem@2.43.1(typescript@5.9.3)(zod@3.25.76))(zod@4.2.1) + '@ensdomains/ensjs': 4.2.2(typescript@5.9.3)(viem@2.45.0(typescript@5.9.3)(zod@3.25.76))(zod@4.3.6) graphql: 16.12.0 graphql-request: 7.4.0(graphql@16.12.0) - viem: 2.43.1(typescript@5.9.3)(zod@3.25.76) - zod: 4.2.1 + viem: 2.45.0(typescript@5.9.3)(zod@3.25.76) + zod: 4.3.6 transitivePeerDependencies: - typescript @@ -8606,14 +8681,14 @@ snapshots: - eslint-plugin-import-x - supports-color - '@edgeandnode/gds@6.9.0(@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.28.0(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/gds@6.9.0(@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.4(@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.28.4(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.4(@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.28.0(typescript@5.9.3)) + '@edgeandnode/common': 7.0.4(hardhat@2.28.4(typescript@5.9.3)) '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) '@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) + '@floating-ui/react-dom': 2.1.7(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) '@radix-ui/react-accordion': 1.2.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) @@ -8631,18 +8706,18 @@ snapshots: '@react-aria/utils': 3.32.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.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.1.7(react@18.3.1)(typescript@5.9.3) + '@tanem/react-nprogress': 5.0.58(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/match-media': 0.17.4(@theme-ui/core@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)))(react@18.3.1) + '@web3icons/react': 4.1.15(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.3 dayjs: 1.11.19 escape-string-regexp: 5.0.0 ethers: 5.8.0 - lodash: 4.17.21 + lodash: 4.17.23 md5: 2.3.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) + motion: 12.29.2(@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 @@ -8655,11 +8730,11 @@ snapshots: react-image-crop: 11.0.10(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.17.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-virtuoso: 4.18.1(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.20.0 + shiki: 3.21.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) + theme-ui: 0.17.4(@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 @@ -8682,11 +8757,11 @@ snapshots: - utf-8-validate - yaml - '@edgeandnode/go@10.5.0(49b9d1080ccaa73b123ce3e8d6a65ecd)': + '@edgeandnode/go@10.5.0(0164b0e48dafaf9f609c4d302e5b1300)': dependencies: - '@edgeandnode/common': 7.0.4(hardhat@2.28.0(typescript@5.9.3)) - '@edgeandnode/ens': 2.3.1(typescript@5.9.3)(viem@2.43.1(typescript@5.9.3)(zod@3.25.76)) - '@edgeandnode/gds': 6.9.0(@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.28.0(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/common': 7.0.4(hardhat@2.28.4(typescript@5.9.3)) + '@edgeandnode/ens': 2.3.1(typescript@5.9.3)(viem@2.45.0(typescript@5.9.3)(zod@3.25.76)) + '@edgeandnode/gds': 6.9.0(@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.4(@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.28.4(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.4(@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) @@ -8694,17 +8769,17 @@ 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.32.0(react-dom@18.3.1(react@18.3.1))(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.1.7(react@18.3.1)(typescript@5.9.3) + '@tanstack/react-query': 5.90.20(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@web3icons/react': 4.1.15(react@18.3.1)(typescript@5.9.3) escape-string-regexp: 5.0.0 graphql: 16.12.0 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) + motion: 12.29.2(@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.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) + theme-ui: 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) optionalDependencies: next: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: @@ -8715,13 +8790,13 @@ snapshots: - typescript - yaml - '@emnapi/core@1.7.1': + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.1': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -8733,8 +8808,8 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.28.4 + '@babel/helper-module-imports': 7.28.6 + '@babel/runtime': 7.28.6 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -8769,7 +8844,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -8821,25 +8896,25 @@ snapshots: '@noble/curves': 1.9.7 '@scure/base': 1.2.6 - '@ensdomains/dnsprovejs@0.5.2': + '@ensdomains/dnsprovejs@0.5.1': dependencies: '@noble/hashes': 1.8.0 dns-packet: 5.6.1 typescript-logging: 1.0.1 - '@ensdomains/ensjs@4.2.0(typescript@5.9.3)(viem@2.43.1(typescript@5.9.3)(zod@3.25.76))(zod@4.2.1)': + '@ensdomains/ensjs@4.2.2(typescript@5.9.3)(viem@2.45.0(typescript@5.9.3)(zod@3.25.76))(zod@4.3.6)': 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.2.3(typescript@5.9.3)(zod@4.2.1) + '@ensdomains/dnsprovejs': 0.5.1 + abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) dns-packet: 5.6.1 graphql: 16.12.0 graphql-request: 7.1.2(graphql@16.12.0) pako: 2.1.0 ts-pattern: 5.9.0 - viem: 2.43.1(typescript@5.9.3)(zod@3.25.76) + viem: 2.45.0(typescript@5.9.3)(zod@3.25.76) transitivePeerDependencies: - typescript - zod @@ -9145,7 +9220,7 @@ snapshots: '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 @@ -9473,36 +9548,36 @@ snapshots: - supports-color - utf-8-validate - '@floating-ui/core@1.7.3': + '@floating-ui/core@1.7.4': dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.4': + '@floating-ui/dom@1.7.5': dependencies: - '@floating-ui/core': 1.7.3 + '@floating-ui/core': 1.7.4 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.7.4 + '@floating-ui/dom': 1.7.5 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) '@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-dom': 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@floating-ui/utils': 0.2.10 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - tabbable: 6.3.0 + tabbable: 6.4.0 - '@floating-ui/react@0.27.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react@0.27.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-dom': 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@floating-ui/utils': 0.2.10 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - tabbable: 6.3.0 + tabbable: 6.4.0 '@floating-ui/utils@0.2.10': {} @@ -9551,7 +9626,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.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/interactions': 3.26.0(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) + '@tanstack/react-virtual': 3.13.18(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) @@ -9644,7 +9719,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.7.1 + '@emnapi/runtime': 1.8.1 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -9655,20 +9730,20 @@ snapshots: '@internationalized/date@3.10.1': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@internationalized/message@3.1.8': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 intl-messageformat: 10.7.18 '@internationalized/number@3.6.5': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@internationalized/string@3.2.7': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@isaacs/balanced-match@4.0.1': {} @@ -9731,7 +9806,7 @@ snapshots: unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -9839,8 +9914,8 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -9917,33 +9992,33 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@nolyfill/is-core-module@1.0.39': {} - '@nomicfoundation/edr-darwin-arm64@0.12.0-next.17': {} + '@nomicfoundation/edr-darwin-arm64@0.12.0-next.22': {} - '@nomicfoundation/edr-darwin-x64@0.12.0-next.17': {} + '@nomicfoundation/edr-darwin-x64@0.12.0-next.22': {} - '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.17': {} + '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.22': {} - '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.17': {} + '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.22': {} - '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.17': {} + '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.22': {} - '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.17': {} + '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.22': {} - '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.17': {} + '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.22': {} - '@nomicfoundation/edr@0.12.0-next.17': + '@nomicfoundation/edr@0.12.0-next.22': dependencies: - '@nomicfoundation/edr-darwin-arm64': 0.12.0-next.17 - '@nomicfoundation/edr-darwin-x64': 0.12.0-next.17 - '@nomicfoundation/edr-linux-arm64-gnu': 0.12.0-next.17 - '@nomicfoundation/edr-linux-arm64-musl': 0.12.0-next.17 - '@nomicfoundation/edr-linux-x64-gnu': 0.12.0-next.17 - '@nomicfoundation/edr-linux-x64-musl': 0.12.0-next.17 - '@nomicfoundation/edr-win32-x64-msvc': 0.12.0-next.17 + '@nomicfoundation/edr-darwin-arm64': 0.12.0-next.22 + '@nomicfoundation/edr-darwin-x64': 0.12.0-next.22 + '@nomicfoundation/edr-linux-arm64-gnu': 0.12.0-next.22 + '@nomicfoundation/edr-linux-arm64-musl': 0.12.0-next.22 + '@nomicfoundation/edr-linux-x64-gnu': 0.12.0-next.22 + '@nomicfoundation/edr-linux-x64-musl': 0.12.0-next.22 + '@nomicfoundation/edr-win32-x64-msvc': 0.12.0-next.22 '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': optional: true @@ -10292,7 +10367,7 @@ snapshots: '@radix-ui/react-popper@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)': dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-dom': 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-arrow': 1.1.7(@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-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) @@ -10533,7 +10608,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/breadcrumbs': 3.7.17(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10545,7 +10620,7 @@ snapshots: '@react-stately/toggle': 3.9.3(react@18.3.1) '@react-types/button': 3.14.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10560,7 +10635,7 @@ snapshots: '@react-types/button': 3.14.1(react@18.3.1) '@react-types/calendar': 3.8.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10576,7 +10651,7 @@ snapshots: '@react-stately/toggle': 3.9.3(react@18.3.1) '@react-types/checkbox': 3.10.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10594,7 +10669,7 @@ snapshots: '@react-stately/form': 3.2.2(react@18.3.1) '@react-types/color': 3.1.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10615,7 +10690,7 @@ snapshots: '@react-types/button': 3.14.1(react@18.3.1) '@react-types/combobox': 3.13.10(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10638,7 +10713,7 @@ snapshots: '@react-types/datepicker': 3.13.3(react@18.3.1) '@react-types/dialog': 3.5.22(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10649,7 +10724,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/dialog': 3.5.22(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10659,7 +10734,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-stately/disclosure': 3.0.9(react@18.3.1) '@react-types/button': 3.14.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10675,7 +10750,7 @@ snapshots: '@react-stately/dnd': 3.7.2(react@18.3.1) '@react-types/button': 3.14.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10684,7 +10759,7 @@ snapshots: '@react-aria/interactions': 3.26.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 clsx: 2.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10695,7 +10770,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-stately/form': 3.2.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10713,7 +10788,7 @@ snapshots: '@react-types/checkbox': 3.10.2(react@18.3.1) '@react-types/grid': 3.3.6(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10728,7 +10803,7 @@ snapshots: '@react-stately/list': 3.13.2(react@18.3.1) '@react-stately/tree': 3.9.4(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10741,7 +10816,7 @@ snapshots: '@react-aria/ssr': 3.9.10(react@18.3.1) '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10751,7 +10826,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-stately/flags': 3.1.2 '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10759,7 +10834,7 @@ snapshots: dependencies: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10767,7 +10842,7 @@ snapshots: dependencies: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.6.0(react@18.3.1) @@ -10778,7 +10853,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/link': 3.6.5(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10792,13 +10867,13 @@ snapshots: '@react-stately/list': 3.13.2(react@18.3.1) '@react-types/listbox': 3.7.4(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) '@react-aria/live-announcer@3.4.4': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@react-aria/menu@3.19.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -10815,7 +10890,7 @@ snapshots: '@react-types/button': 3.14.1(react@18.3.1) '@react-types/menu': 3.10.5(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10824,7 +10899,7 @@ snapshots: '@react-aria/progress': 3.4.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/meter': 3.4.13(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10840,7 +10915,7 @@ snapshots: '@react-types/button': 3.14.1(react@18.3.1) '@react-types/numberfield': 3.8.16(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10856,7 +10931,7 @@ snapshots: '@react-types/button': 3.14.1(react@18.3.1) '@react-types/overlays': 3.9.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10867,7 +10942,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/progress': 3.5.16(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10882,7 +10957,7 @@ snapshots: '@react-stately/radio': 3.11.3(react@18.3.1) '@react-types/radio': 3.9.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10895,7 +10970,7 @@ snapshots: '@react-types/button': 3.14.1(react@18.3.1) '@react-types/searchfield': 3.6.6(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10914,7 +10989,7 @@ snapshots: '@react-types/button': 3.14.1(react@18.3.1) '@react-types/select': 3.12.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10926,7 +11001,7 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-stately/selection': 3.20.7(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10934,7 +11009,7 @@ snapshots: dependencies: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10947,7 +11022,7 @@ snapshots: '@react-stately/slider': 3.7.3(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/slider': 3.8.2(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10958,13 +11033,13 @@ snapshots: '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/button': 3.14.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) '@react-aria/ssr@3.9.10(react@18.3.1)': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-aria/switch@3.7.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -10973,7 +11048,7 @@ snapshots: '@react-stately/toggle': 3.9.3(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/switch': 3.5.15(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10993,7 +11068,7 @@ snapshots: '@react-types/grid': 3.3.6(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/table': 3.13.4(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11006,7 +11081,7 @@ snapshots: '@react-stately/tabs': 3.8.7(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/tabs': 3.3.20(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11021,7 +11096,7 @@ snapshots: '@react-stately/list': 3.13.2(react@18.3.1) '@react-types/button': 3.14.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11035,7 +11110,7 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/textfield': 3.12.6(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11048,7 +11123,7 @@ snapshots: '@react-stately/toast': 3.1.2(react@18.3.1) '@react-types/button': 3.14.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11059,7 +11134,7 @@ snapshots: '@react-stately/toggle': 3.9.3(react@18.3.1) '@react-types/checkbox': 3.10.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11069,7 +11144,7 @@ snapshots: '@react-aria/i18n': 3.12.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11080,7 +11155,7 @@ snapshots: '@react-stately/tooltip': 3.5.9(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/tooltip': 3.5.0(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11093,7 +11168,7 @@ snapshots: '@react-stately/tree': 3.9.4(react@18.3.1) '@react-types/button': 3.14.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11103,7 +11178,7 @@ snapshots: '@react-stately/flags': 3.1.2 '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 clsx: 2.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11113,7 +11188,7 @@ snapshots: '@react-aria/interactions': 3.26.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.32.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11129,7 +11204,7 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/calendar': 3.8.1(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/checkbox@3.7.3(react@18.3.1)': @@ -11138,13 +11213,13 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/checkbox': 3.10.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/collections@3.12.8(react@18.3.1)': dependencies: '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/color@3.9.3(react@18.3.1)': @@ -11157,7 +11232,7 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/color': 3.1.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/combobox@3.12.1(react@18.3.1)': @@ -11169,7 +11244,7 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/combobox': 3.13.10(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/datepicker@3.15.3(react@18.3.1)': @@ -11181,31 +11256,31 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/datepicker': 3.13.3(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/disclosure@3.0.9(react@18.3.1)': dependencies: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/dnd@3.7.2(react@18.3.1)': dependencies: '@react-stately/selection': 3.20.7(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/flags@3.1.2': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@react-stately/form@3.2.2(react@18.3.1)': dependencies: '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/grid@3.11.7(react@18.3.1)': @@ -11214,7 +11289,7 @@ snapshots: '@react-stately/selection': 3.20.7(react@18.3.1) '@react-types/grid': 3.3.6(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/list@3.13.2(react@18.3.1)': @@ -11223,7 +11298,7 @@ snapshots: '@react-stately/selection': 3.20.7(react@18.3.1) '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/menu@3.9.9(react@18.3.1)': @@ -11231,7 +11306,7 @@ snapshots: '@react-stately/overlays': 3.6.21(react@18.3.1) '@react-types/menu': 3.10.5(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/numberfield@3.10.3(react@18.3.1)': @@ -11240,14 +11315,14 @@ snapshots: '@react-stately/form': 3.2.2(react@18.3.1) '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/numberfield': 3.8.16(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/overlays@3.6.21(react@18.3.1)': dependencies: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/overlays': 3.9.2(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/radio@3.11.3(react@18.3.1)': @@ -11256,14 +11331,14 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/radio': 3.9.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/searchfield@3.5.17(react@18.3.1)': dependencies: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/searchfield': 3.6.6(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/select@3.9.0(react@18.3.1)': @@ -11274,7 +11349,7 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/select': 3.12.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/selection@3.20.7(react@18.3.1)': @@ -11282,7 +11357,7 @@ snapshots: '@react-stately/collections': 3.12.8(react@18.3.1) '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/slider@3.7.3(react@18.3.1)': @@ -11290,7 +11365,7 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/slider': 3.8.2(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/table@3.15.2(react@18.3.1)': @@ -11303,7 +11378,7 @@ snapshots: '@react-types/grid': 3.3.6(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/table': 3.13.4(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/tabs@3.8.7(react@18.3.1)': @@ -11311,12 +11386,12 @@ snapshots: '@react-stately/list': 3.13.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) '@react-types/tabs': 3.3.20(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/toast@3.1.2(react@18.3.1)': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 use-sync-external-store: 1.6.0(react@18.3.1) @@ -11325,14 +11400,14 @@ snapshots: '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/checkbox': 3.10.2(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/tooltip@3.5.9(react@18.3.1)': dependencies: '@react-stately/overlays': 3.6.21(react@18.3.1) '@react-types/tooltip': 3.5.0(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/tree@3.9.4(react@18.3.1)': @@ -11341,12 +11416,12 @@ snapshots: '@react-stately/selection': 3.20.7(react@18.3.1) '@react-stately/utils': 3.11.0(react@18.3.1) '@react-types/shared': 3.32.1(react@18.3.1) - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-stately/utils@3.11.0(react@18.3.1)': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 react: 18.3.1 '@react-types/breadcrumbs@3.7.17(react@18.3.1)': @@ -11491,8 +11566,8 @@ snapshots: '@readme/better-ajv-errors@2.4.0(ajv@8.17.1)': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.28.4 + '@babel/code-frame': 7.28.6 + '@babel/runtime': 7.28.6 '@humanwhocodes/momoa': 2.0.4 ajv: 8.17.1 jsonpointer: 5.0.1 @@ -11503,7 +11578,7 @@ snapshots: '@readme/httpsnippet@11.0.0': dependencies: - qs: 6.14.0 + qs: 6.14.1 stringify-object: 3.3.0 '@readme/openapi-parser@4.1.2(openapi-types@12.1.3)': @@ -11520,70 +11595,79 @@ snapshots: '@resvg/resvg-wasm@2.6.2': {} - '@rollup/rollup-android-arm-eabi@4.53.5': + '@rollup/rollup-android-arm-eabi@4.57.0': + optional: true + + '@rollup/rollup-android-arm64@4.57.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.57.0': + optional: true + + '@rollup/rollup-darwin-x64@4.57.0': optional: true - '@rollup/rollup-android-arm64@4.53.5': + '@rollup/rollup-freebsd-arm64@4.57.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': + '@rollup/rollup-freebsd-x64@4.57.0': optional: true - '@rollup/rollup-darwin-x64@4.53.5': + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': + '@rollup/rollup-linux-arm-musleabihf@4.57.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': + '@rollup/rollup-linux-arm64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + '@rollup/rollup-linux-arm64-musl@4.57.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': + '@rollup/rollup-linux-loong64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': + '@rollup/rollup-linux-loong64-musl@4.57.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': + '@rollup/rollup-linux-ppc64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': + '@rollup/rollup-linux-ppc64-musl@4.57.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-musl@4.57.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': + '@rollup/rollup-linux-s390x-gnu@4.57.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': + '@rollup/rollup-linux-x64-gnu@4.57.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': + '@rollup/rollup-linux-x64-musl@4.57.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': + '@rollup/rollup-openbsd-x64@4.57.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': + '@rollup/rollup-openharmony-arm64@4.57.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': + '@rollup/rollup-win32-arm64-msvc@4.57.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': + '@rollup/rollup-win32-ia32-msvc@4.57.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': + '@rollup/rollup-win32-x64-gnu@4.57.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': + '@rollup/rollup-win32-x64-msvc@4.57.0': optional: true '@rtsao/scc@1.1.0': {} @@ -11685,9 +11769,9 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/core@3.20.0': + '@shikijs/core@3.21.0': dependencies: - '@shikijs/types': 3.20.0 + '@shikijs/types': 3.21.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 @@ -11698,9 +11782,9 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 2.3.0 - '@shikijs/engine-javascript@3.20.0': + '@shikijs/engine-javascript@3.21.0': dependencies: - '@shikijs/types': 3.20.0 + '@shikijs/types': 3.21.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.4 @@ -11709,26 +11793,26 @@ snapshots: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.20.0': + '@shikijs/engine-oniguruma@3.21.0': dependencies: - '@shikijs/types': 3.20.0 + '@shikijs/types': 3.21.0 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/langs@3.20.0': + '@shikijs/langs@3.21.0': dependencies: - '@shikijs/types': 3.20.0 + '@shikijs/types': 3.21.0 '@shikijs/themes@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/themes@3.20.0': + '@shikijs/themes@3.21.0': dependencies: - '@shikijs/types': 3.20.0 + '@shikijs/types': 3.21.0 '@shikijs/twoslash@1.29.2(typescript@5.9.3)': dependencies: @@ -11744,7 +11828,7 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.20.0': + '@shikijs/types@3.21.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -11815,7 +11899,7 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.17': + '@swc/helpers@0.5.18': dependencies: tslib: 2.8.1 @@ -11828,90 +11912,90 @@ snapshots: dependencies: 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)': + '@tanem/react-nprogress@5.0.58(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 hoist-non-react-statics: 3.3.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/query-core@5.90.12': {} + '@tanstack/query-core@5.90.20': {} - '@tanstack/react-query@5.90.12(react@18.3.1)': + '@tanstack/react-query@5.90.20(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.90.12 + '@tanstack/query-core': 5.90.20 react: 18.3.1 - '@tanstack/react-virtual@3.13.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.13.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/virtual-core': 3.13.13 + '@tanstack/virtual-core': 3.13.18 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/virtual-core@3.13.13': {} + '@tanstack/virtual-core@3.13.18': {} '@theguild/remark-mermaid@0.1.3(react@18.3.1)': dependencies: mermaid: 11.12.2 react: 18.3.1 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 '@theguild/remark-npm2yarn@0.3.3': dependencies: npm-to-yarn: 3.0.1 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 - '@theme-ui/color-modes@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': + '@theme-ui/color-modes@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: '@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) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/core': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) deepmerge: 4.3.1 react: 18.3.1 - '@theme-ui/components@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))(react@18.3.1)': + '@theme-ui/components@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/theme-provider@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) '@styled-system/color': 5.1.2 '@styled-system/should-forward-prop': 5.1.5 '@styled-system/space': 5.1.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)) - '@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) + '@theme-ui/core': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/theme-provider': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) '@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)': + '@theme-ui/core@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: '@emotion/react': 11.14.0(@types/react@18.3.27)(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/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) deepmerge: 4.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/css@0.17.4(@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.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)': + '@theme-ui/global@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: '@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) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/core': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) 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)': + '@theme-ui/match-media@0.17.4(@theme-ui/core@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)))(react@18.3.1)': dependencies: - '@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/core': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) 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)': + '@theme-ui/theme-provider@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) - '@theme-ui/color-modes': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(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) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/color-modes': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/core': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) react: 18.3.1 '@ts-morph/common@0.28.1': @@ -11927,7 +12011,7 @@ snapshots: '@types/concat-stream@2.0.3': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.7 '@types/cookie@0.6.0': {} @@ -11998,7 +12082,7 @@ snapshots: '@types/d3-selection@3.0.11': {} - '@types/d3-shape@3.1.7': + '@types/d3-shape@3.1.8': dependencies: '@types/d3-path': 3.1.1 @@ -12043,7 +12127,7 @@ snapshots: '@types/d3-scale': 4.0.9 '@types/d3-scale-chromatic': 3.1.0 '@types/d3-selection': 3.0.11 - '@types/d3-shape': 3.1.7 + '@types/d3-shape': 3.1.8 '@types/d3-time': 3.0.4 '@types/d3-time-format': 4.0.3 '@types/d3-timer': 3.0.2 @@ -12074,9 +12158,9 @@ snapshots: '@types/json5@0.0.29': {} - '@types/katex@0.16.7': {} + '@types/katex@0.16.8': {} - '@types/lodash@4.17.21': {} + '@types/lodash@4.17.23': {} '@types/mdast@4.0.4': dependencies: @@ -12086,7 +12170,7 @@ snapshots: '@types/mixpanel-browser@2.66.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)': dependencies: - mixpanel-browser: 2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) + mixpanel-browser: 2.74.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) transitivePeerDependencies: - '@mixpanel/rrweb-utils' @@ -12096,7 +12180,7 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@22.19.3': + '@types/node@22.19.7': dependencies: undici-types: 6.21.0 @@ -12203,7 +12287,7 @@ snapshots: '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 @@ -12231,7 +12315,7 @@ snapshots: '@uniswap/lib@4.0.1-alpha': {} - '@uniswap/sdk-core@7.10.0': + '@uniswap/sdk-core@7.10.1': dependencies: '@ethersproject/address': 5.8.0 '@ethersproject/bytes': 5.8.0 @@ -12243,14 +12327,14 @@ snapshots: tiny-invariant: 1.3.3 toformat: 2.0.0 - '@uniswap/swap-router-contracts@1.3.1(hardhat@2.28.0(typescript@5.9.3))': + '@uniswap/swap-router-contracts@1.3.1(hardhat@2.28.4(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.28.0(typescript@5.9.3)) + hardhat-watcher: 2.5.0(hardhat@2.28.4(typescript@5.9.3)) transitivePeerDependencies: - hardhat @@ -12268,12 +12352,12 @@ snapshots: '@uniswap/v3-core': 1.0.1 base64-sol: 1.0.1 - '@uniswap/v3-sdk@3.27.0(hardhat@2.28.0(typescript@5.9.3))': + '@uniswap/v3-sdk@3.27.0(hardhat@2.28.4(typescript@5.9.3))': dependencies: '@ethersproject/abi': 5.8.0 '@ethersproject/solidity': 5.8.0 - '@uniswap/sdk-core': 7.10.0 - '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.28.0(typescript@5.9.3)) + '@uniswap/sdk-core': 7.10.1 + '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.28.4(typescript@5.9.3)) '@uniswap/v3-periphery': 1.4.4 '@uniswap/v3-staker': 1.0.0 tiny-invariant: 1.3.3 @@ -12355,13 +12439,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@22.19.3))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@22.19.7))': 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.3) + vite: 5.4.21(@types/node@22.19.7) '@vitest/pretty-format@2.1.9': dependencies: @@ -12388,13 +12472,13 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 - '@web3icons/common@0.11.36(typescript@5.9.3)': + '@web3icons/common@0.11.44(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@web3icons/react@4.1.7(react@18.3.1)(typescript@5.9.3)': + '@web3icons/react@4.1.15(react@18.3.1)(typescript@5.9.3)': dependencies: - '@web3icons/common': 0.11.36(typescript@5.9.3) + '@web3icons/common': 0.11.44(typescript@5.9.3) react: 18.3.1 transitivePeerDependencies: - typescript @@ -12420,10 +12504,10 @@ snapshots: typescript: 5.9.3 zod: 3.25.76 - abitype@1.2.3(typescript@5.9.3)(zod@4.2.1): + abitype@1.2.3(typescript@5.9.3)(zod@4.3.6): optionalDependencies: typescript: 5.9.3 - zod: 4.2.1 + zod: 4.3.6 acorn-jsx@5.3.2(acorn@8.15.0): dependencies: @@ -12470,22 +12554,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.46.1: - dependencies: - '@algolia/abtesting': 1.12.1 - '@algolia/client-abtesting': 5.46.1 - '@algolia/client-analytics': 5.46.1 - '@algolia/client-common': 5.46.1 - '@algolia/client-insights': 5.46.1 - '@algolia/client-personalization': 5.46.1 - '@algolia/client-query-suggestions': 5.46.1 - '@algolia/client-search': 5.46.1 - '@algolia/ingestion': 1.46.1 - '@algolia/monitoring': 1.46.1 - '@algolia/recommend': 5.46.1 - '@algolia/requester-browser-xhr': 5.46.1 - '@algolia/requester-fetch': 5.46.1 - '@algolia/requester-node-http': 5.46.1 + algoliasearch@5.47.0: + dependencies: + '@algolia/abtesting': 1.13.0 + '@algolia/client-abtesting': 5.47.0 + '@algolia/client-analytics': 5.47.0 + '@algolia/client-common': 5.47.0 + '@algolia/client-insights': 5.47.0 + '@algolia/client-personalization': 5.47.0 + '@algolia/client-query-suggestions': 5.47.0 + '@algolia/client-search': 5.47.0 + '@algolia/ingestion': 1.47.0 + '@algolia/monitoring': 1.47.0 + '@algolia/recommend': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 ansi-align@3.0.1: dependencies: @@ -12618,7 +12702,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001760 + caniuse-lite: 1.0.30001766 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -12628,13 +12712,13 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axe-core@4.11.0: {} + axe-core@4.11.1: {} axobject-query@4.1.0: {} babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 cosmiconfig: 7.1.0 resolve: 1.22.11 @@ -12650,7 +12734,7 @@ snapshots: base64-sol@1.0.1: {} - baseline-browser-mapping@2.9.10: {} + baseline-browser-mapping@2.9.19: {} bech32@1.1.4: {} @@ -12716,9 +12800,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.10 - caniuse-lite: 1.0.30001760 - electron-to-chromium: 1.5.267 + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001766 + electron-to-chromium: 1.5.282 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -12767,14 +12851,14 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001760: {} + caniuse-lite@1.0.30001766: {} ccount@2.0.1: {} chai@5.3.3: dependencies: assertion-error: 2.0.1 - check-error: 2.1.1 + check-error: 2.1.3 deep-eql: 5.0.2 loupe: 3.2.1 pathval: 2.0.1 @@ -12796,12 +12880,12 @@ snapshots: charenc@0.0.2: {} - check-error@2.1.1: {} + check-error@2.1.3: {} chevrotain-allstar@0.3.1(chevrotain@11.0.3): dependencies: chevrotain: 11.0.3 - lodash-es: 4.17.22 + lodash-es: 4.17.23 chevrotain@11.0.3: dependencies: @@ -13052,7 +13136,7 @@ snapshots: d3-quadtree: 3.0.1 d3-timer: 3.0.1 - d3-format@3.1.0: {} + d3-format@3.1.2: {} d3-geo@3.1.1: dependencies: @@ -13087,7 +13171,7 @@ snapshots: d3-scale@4.0.2: dependencies: d3-array: 3.2.4 - d3-format: 3.1.0 + d3-format: 3.1.2 d3-interpolate: 3.0.1 d3-time: 3.1.0 d3-time-format: 4.1.0 @@ -13144,7 +13228,7 @@ snapshots: d3-ease: 3.0.1 d3-fetch: 3.0.1 d3-force: 3.0.0 - d3-format: 3.1.0 + d3-format: 3.1.2 d3-geo: 3.1.1 d3-hierarchy: 3.1.2 d3-interpolate: 3.0.1 @@ -13165,7 +13249,7 @@ snapshots: dagre-d3-es@7.0.13: dependencies: d3: 7.9.0 - lodash-es: 4.17.22 + lodash-es: 4.17.23 damerau-levenshtein@1.0.8: {} @@ -13214,7 +13298,7 @@ snapshots: decimal.js@10.6.0: {} - decode-named-character-reference@1.2.0: + decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -13263,7 +13347,7 @@ snapshots: didyoumean@1.2.2: {} - diff@5.2.0: {} + diff@5.2.2: {} dir-glob@3.0.1: dependencies: @@ -13285,7 +13369,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 csstype: 3.2.3 dompurify@3.3.1: @@ -13304,7 +13388,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.267: {} + electron-to-chromium@1.5.282: {} elliptic@6.6.1: dependencies: @@ -13400,7 +13484,7 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 es-define-property@1.0.1: {} @@ -13612,10 +13696,10 @@ snapshots: remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-stringify: 11.0.0 - synckit: 0.11.11 + synckit: 0.11.12 unified: 11.0.5 unified-engine: 11.2.2 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 uvu: 0.5.6 vfile: 6.0.3 transitivePeerDependencies: @@ -13668,7 +13752,7 @@ snapshots: array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.11.0 + axe-core: 4.11.1 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -13691,7 +13775,7 @@ snapshots: remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-stringify: 11.0.0 - synckit: 0.11.11 + synckit: 0.11.12 unified: 11.0.5 vfile: 6.0.3 transitivePeerDependencies: @@ -13744,7 +13828,7 @@ snapshots: eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) '@eslint-community/regexpp': 4.12.2 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 @@ -13761,7 +13845,7 @@ snapshots: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -13801,7 +13885,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -13958,7 +14042,7 @@ snapshots: dependencies: strnum: 2.1.2 - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -14000,7 +14084,7 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.0 - rollup: 4.53.5 + rollup: 4.57.0 flat-cache@3.2.0: dependencies: @@ -14039,10 +14123,10 @@ snapshots: fraction.js@5.3.4: {} - 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): + framer-motion@12.29.2(@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 + motion-dom: 12.29.2 + motion-utils: 12.29.2 tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 @@ -14231,16 +14315,16 @@ snapshots: hachure-fill@0.5.2: {} - hardhat-watcher@2.5.0(hardhat@2.28.0(typescript@5.9.3)): + hardhat-watcher@2.5.0(hardhat@2.28.4(typescript@5.9.3)): dependencies: chokidar: 3.6.0 - hardhat: 2.28.0(typescript@5.9.3) + hardhat: 2.28.4(typescript@5.9.3) - hardhat@2.28.0(typescript@5.9.3): + hardhat@2.28.4(typescript@5.9.3): dependencies: '@ethereumjs/util': 9.1.0 '@ethersproject/abi': 5.8.0 - '@nomicfoundation/edr': 0.12.0-next.17 + '@nomicfoundation/edr': 0.12.0-next.22 '@nomicfoundation/solidity-analyzer': 0.1.2 '@sentry/node': 5.30.0 adm-zip: 0.4.16 @@ -14260,7 +14344,7 @@ snapshots: io-ts: 1.10.4 json-stream-stringify: 3.1.6 keccak: 3.0.4 - lodash: 4.17.21 + lodash: 4.17.23 micro-eth-signer: 0.14.0 mnemonist: 0.38.5 mocha: 10.8.2 @@ -14376,7 +14460,7 @@ snapshots: mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -14736,7 +14820,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 is-unicode-supported@0.1.0: {} @@ -14793,7 +14877,7 @@ snapshots: chalk: 4.1.2 get-stdin: 5.0.1 glur: 1.1.2 - lodash: 4.17.21 + lodash: 4.17.23 pixelmatch: 5.3.0 pngjs: 3.4.0 ssim.js: 3.5.0 @@ -14840,7 +14924,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.18.3 + ws: 8.19.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -14880,7 +14964,7 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 - katex@0.16.27: + katex@0.16.28: dependencies: commander: 8.3.0 @@ -14953,12 +15037,14 @@ snapshots: lodash-es@4.17.21: {} - lodash-es@4.17.22: {} + lodash-es@4.17.23: {} lodash.merge@4.6.2: {} lodash@4.17.21: {} + lodash@4.17.23: {} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 @@ -14974,7 +15060,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.4: {} + lru-cache@11.2.5: {} lru_map@0.3.3: {} @@ -15018,7 +15104,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 micromark: 4.0.2 @@ -15174,7 +15260,7 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 mdast-util-to-markdown@2.1.2: @@ -15186,7 +15272,7 @@ snapshots: mdast-util-to-string: 4.0.0 micromark-util-classify-character: 2.0.1 micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 zwitch: 2.0.4 mdast-util-to-string@4.0.0: @@ -15213,9 +15299,9 @@ snapshots: dagre-d3-es: 7.0.13 dayjs: 1.11.19 dompurify: 3.3.1 - katex: 0.16.27 + katex: 0.16.28 khroma: 2.1.0 - lodash-es: 4.17.22 + lodash-es: 4.17.23 marked: 16.4.2 roughjs: 4.6.6 stylis: 4.3.6 @@ -15236,7 +15322,7 @@ snapshots: micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -15320,9 +15406,9 @@ snapshots: micromark-extension-math@3.1.0: dependencies: - '@types/katex': 0.16.7 + '@types/katex': 0.16.8 devlop: 1.1.0 - katex: 0.16.27 + katex: 0.16.28 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 @@ -15449,7 +15535,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -15497,7 +15583,7 @@ snapshots: dependencies: '@types/debug': 4.1.12 debug: 4.4.3(supports-color@8.1.1) - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -15532,7 +15618,7 @@ snapshots: mimic-fn@4.0.0: {} - miniflare@3.20250718.2: + miniflare@3.20250718.3: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 @@ -15579,7 +15665,7 @@ snapshots: mitt@3.0.1: {} - mixpanel-browser@2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2): + mixpanel-browser@2.74.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2): dependencies: '@mixpanel/rrweb': 2.0.0-alpha.18.2 '@mixpanel/rrweb-plugin-console-record': 2.0.0-alpha.18.2(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)(@mixpanel/rrweb@2.0.0-alpha.18.2) @@ -15593,7 +15679,7 @@ snapshots: acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.1 + ufo: 1.6.3 mnemonist@0.38.5: dependencies: @@ -15605,7 +15691,7 @@ snapshots: browser-stdout: 1.3.1 chokidar: 3.6.0 debug: 4.4.3(supports-color@8.1.1) - diff: 5.2.0 + diff: 5.2.2 escape-string-regexp: 4.0.0 find-up: 5.0.0 glob: 8.1.0 @@ -15622,15 +15708,15 @@ snapshots: yargs-parser: 20.2.9 yargs-unparser: 2.0.0 - motion-dom@12.23.23: + motion-dom@12.29.2: dependencies: - motion-utils: 12.23.6 + motion-utils: 12.29.2 - motion-utils@12.23.6: {} + motion-utils@12.29.2: {} - motion@12.23.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + motion@12.29.2(@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.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + framer-motion: 12.29.2(@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 @@ -15676,7 +15762,7 @@ snapshots: '@next/env': 14.2.35 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001760 + caniuse-lite: 1.0.30001766 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -15714,7 +15800,7 @@ snapshots: graceful-fs: 4.2.11 gray-matter: 4.0.3 hast-util-to-estree: 3.1.3 - katex: 0.16.27 + katex: 0.16.28 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.1.0 mdast-util-to-hast: 13.2.1 @@ -15736,7 +15822,7 @@ snapshots: slash: 5.1.0 title: 4.0.1 unist-util-remove: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 yaml: 2.8.2 zod: 3.25.76 zod-validation-error: 3.5.4(zod@3.25.76) @@ -15902,7 +15988,7 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - ox@0.10.5(typescript@5.9.3)(zod@3.25.76): + ox@0.11.3(typescript@5.9.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -15955,21 +16041,21 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-json@7.1.1: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 error-ex: 1.3.4 json-parse-even-better-errors: 3.0.2 lines-and-columns: 2.0.4 @@ -16011,7 +16097,7 @@ snapshots: path-scurry@2.0.1: dependencies: - lru-cache: 11.2.4 + lru-cache: 11.2.5 minipass: 7.1.2 path-to-regexp@6.3.0: {} @@ -16106,13 +16192,13 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-tailwindcss@0.7.2(prettier@3.7.4): + prettier-plugin-tailwindcss@0.7.2(prettier@3.8.1): dependencies: - prettier: 3.7.4 + prettier: 3.8.1 prettier@2.8.8: {} - prettier@3.7.4: {} + prettier@3.8.1: {} printable-characters@1.0.42: {} @@ -16152,7 +16238,7 @@ snapshots: punycode@2.3.1: {} - qs@6.14.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -16271,7 +16357,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -16318,14 +16404,14 @@ snapshots: react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.3.1 react-dom: 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): + react-virtuoso@4.18.1(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) @@ -16365,7 +16451,7 @@ snapshots: dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 - lodash: 4.17.21 + lodash: 4.17.23 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 @@ -16445,10 +16531,10 @@ snapshots: rehype-katex@7.0.1: dependencies: '@types/hast': 3.0.4 - '@types/katex': 0.16.7 + '@types/katex': 0.16.8 hast-util-from-html-isomorphic: 2.0.0 hast-util-to-text: 4.0.2 - katex: 0.16.27 + katex: 0.16.28 unist-util-visit-parents: 6.0.2 vfile: 6.0.3 @@ -16478,7 +16564,7 @@ snapshots: rehype-parse: 9.0.1 shiki: 1.29.2 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 rehype-raw@7.0.0: dependencies: @@ -16589,7 +16675,7 @@ snapshots: retext: 9.0.0 retext-smartypants: 6.2.0 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 remark-stringify@11.0.0: dependencies: @@ -16640,7 +16726,7 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 retext-stringify@4.0.0: dependencies: @@ -16679,32 +16765,35 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@4.53.5: + rollup@4.57.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 + '@rollup/rollup-android-arm-eabi': 4.57.0 + '@rollup/rollup-android-arm64': 4.57.0 + '@rollup/rollup-darwin-arm64': 4.57.0 + '@rollup/rollup-darwin-x64': 4.57.0 + '@rollup/rollup-freebsd-arm64': 4.57.0 + '@rollup/rollup-freebsd-x64': 4.57.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.0 + '@rollup/rollup-linux-arm-musleabihf': 4.57.0 + '@rollup/rollup-linux-arm64-gnu': 4.57.0 + '@rollup/rollup-linux-arm64-musl': 4.57.0 + '@rollup/rollup-linux-loong64-gnu': 4.57.0 + '@rollup/rollup-linux-loong64-musl': 4.57.0 + '@rollup/rollup-linux-ppc64-gnu': 4.57.0 + '@rollup/rollup-linux-ppc64-musl': 4.57.0 + '@rollup/rollup-linux-riscv64-gnu': 4.57.0 + '@rollup/rollup-linux-riscv64-musl': 4.57.0 + '@rollup/rollup-linux-s390x-gnu': 4.57.0 + '@rollup/rollup-linux-x64-gnu': 4.57.0 + '@rollup/rollup-linux-x64-musl': 4.57.0 + '@rollup/rollup-openbsd-x64': 4.57.0 + '@rollup/rollup-openharmony-arm64': 4.57.0 + '@rollup/rollup-win32-arm64-msvc': 4.57.0 + '@rollup/rollup-win32-ia32-msvc': 4.57.0 + '@rollup/rollup-win32-x64-gnu': 4.57.0 + '@rollup/rollup-win32-x64-msvc': 4.57.0 fsevents: 2.3.3 roughjs@4.6.6: @@ -16751,7 +16840,7 @@ snapshots: safer-buffer@2.1.2: {} - satori@0.18.3: + satori@0.19.1: dependencies: '@shuding/opentype.js': 1.4.0-beta.0 css-background-parser: 0.1.0 @@ -16860,14 +16949,14 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shiki@3.20.0: + shiki@3.21.0: dependencies: - '@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/core': 3.21.0 + '@shikijs/engine-javascript': 3.21.0 + '@shikijs/engine-oniguruma': 3.21.0 + '@shikijs/langs': 3.21.0 + '@shikijs/themes': 3.21.0 + '@shikijs/types': 3.21.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -17176,13 +17265,13 @@ snapshots: symbol-tree@3.2.4: {} - synckit@0.11.11: + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 system-architecture@0.1.0: {} - tabbable@6.3.0: {} + tabbable@6.4.0: {} tailwindcss@3.4.19(tsx@4.20.4)(yaml@2.8.2): dependencies: @@ -17214,15 +17303,15 @@ snapshots: text-table@0.2.0: {} - theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1): + theme-ui@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1): dependencies: '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) - '@theme-ui/color-modes': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) - '@theme-ui/components': 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))(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) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) - '@theme-ui/global': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(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) + '@theme-ui/color-modes': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/components': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/theme-provider@0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@theme-ui/core': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/global': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/theme-provider': 0.17.4(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) react: 18.3.1 thenify-all@1.6.0: @@ -17332,7 +17421,7 @@ snapshots: 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.2) resolve-from: 5.0.0 - rollup: 4.53.5 + rollup: 4.57.0 source-map: 0.7.6 sucrase: 3.35.1 tinyexec: 0.3.2 @@ -17354,32 +17443,32 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.6.3: + turbo-darwin-64@2.8.0: optional: true - turbo-darwin-arm64@2.6.3: + turbo-darwin-arm64@2.8.0: optional: true - turbo-linux-64@2.6.3: + turbo-linux-64@2.8.0: optional: true - turbo-linux-arm64@2.6.3: + turbo-linux-arm64@2.8.0: optional: true - turbo-windows-64@2.6.3: + turbo-windows-64@2.8.0: optional: true - turbo-windows-arm64@2.6.3: + turbo-windows-arm64@2.8.0: optional: true - turbo@2.6.3: + turbo@2.8.0: optionalDependencies: - 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 + turbo-darwin-64: 2.8.0 + turbo-darwin-arm64: 2.8.0 + turbo-linux-64: 2.8.0 + turbo-linux-arm64: 2.8.0 + turbo-windows-64: 2.8.0 + turbo-windows-arm64: 2.8.0 twoslash-protocol@0.2.12: {} @@ -17448,7 +17537,7 @@ snapshots: ua-parser-js@1.0.41: {} - ufo@1.6.1: {} + ufo@1.6.3: {} unbox-primitive@1.1.0: dependencies: @@ -17469,7 +17558,7 @@ snapshots: exsolve: 1.0.8 ohash: 2.0.11 pathe: 2.0.3 - ufo: 1.6.1 + ufo: 1.6.3 unicode-trie@2.0.0: dependencies: @@ -17481,7 +17570,7 @@ snapshots: '@types/concat-stream': 2.0.3 '@types/debug': 4.1.12 '@types/is-empty': 1.2.3 - '@types/node': 22.19.3 + '@types/node': 22.19.7 '@types/unist': 3.0.3 concat-stream: 2.0.0 debug: 4.4.3(supports-color@8.1.1) @@ -17553,7 +17642,7 @@ snapshots: unist-util-remove-position@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 unist-util-remove@4.0.0: dependencies: @@ -17585,7 +17674,7 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 4.1.1 - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 @@ -17675,7 +17764,7 @@ snapshots: uvu@0.5.6: dependencies: dequal: 2.0.3 - diff: 5.2.0 + diff: 5.2.2 kleur: 4.1.5 sade: 1.8.1 @@ -17728,7 +17817,7 @@ snapshots: '@types/d3-ease': 3.0.2 '@types/d3-interpolate': 3.0.4 '@types/d3-scale': 4.0.9 - '@types/d3-shape': 3.1.7 + '@types/d3-shape': 3.1.8 '@types/d3-time': 3.0.4 '@types/d3-timer': 3.0.2 d3-array: 3.2.4 @@ -17739,7 +17828,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - viem@2.43.1(typescript@5.9.3)(zod@3.25.76): + viem@2.45.0(typescript@5.9.3)(zod@3.25.76): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 @@ -17747,7 +17836,7 @@ snapshots: '@scure/bip39': 1.6.0 abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) isows: 1.0.7(ws@8.18.3) - ox: 0.10.5(typescript@5.9.3)(zod@3.25.76) + ox: 0.11.3(typescript@5.9.3)(zod@3.25.76) ws: 8.18.3 optionalDependencies: typescript: 5.9.3 @@ -17756,13 +17845,13 @@ snapshots: - utf-8-validate - zod - vite-node@2.1.9(@types/node@22.19.3): + vite-node@2.1.9(@types/node@22.19.7): 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.3) + vite: 5.4.21(@types/node@22.19.7) transitivePeerDependencies: - '@types/node' - less @@ -17774,19 +17863,19 @@ snapshots: - supports-color - terser - vite@5.4.21(@types/node@22.19.3): + vite@5.4.21(@types/node@22.19.7): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.57.0 optionalDependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.7 fsevents: 2.3.3 - vitest@2.1.9(@types/node@22.19.3)(jsdom@24.1.3): + vitest@2.1.9(@types/node@22.19.7)(jsdom@24.1.3): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.3)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.7)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -17802,11 +17891,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.21(@types/node@22.19.3) - vite-node: 2.1.9(@types/node@22.19.3) + vite: 5.4.21(@types/node@22.19.7) + vite-node: 2.1.9(@types/node@22.19.7) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.7 jsdom: 24.1.3 transitivePeerDependencies: - less @@ -17883,7 +17972,7 @@ snapshots: isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 which-collection@1.0.2: dependencies: @@ -17892,7 +17981,7 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-typed-array@1.1.19: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -17933,7 +18022,7 @@ snapshots: workerpool@6.5.1: {} - wrangler@3.114.15(@cloudflare/workers-types@4.20251217.0): + wrangler@3.114.17(@cloudflare/workers-types@4.20260129.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) @@ -17941,12 +18030,12 @@ snapshots: '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) blake3-wasm: 2.1.5 esbuild: 0.17.19 - miniflare: 3.20250718.2 + miniflare: 3.20250718.3 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.14 workerd: 1.20250718.0 optionalDependencies: - '@cloudflare/workers-types': 4.20251217.0 + '@cloudflare/workers-types': 4.20260129.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: @@ -17973,6 +18062,8 @@ snapshots: ws@8.18.3: {} + ws@8.19.0: {} + xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} @@ -18032,6 +18123,6 @@ snapshots: zod@3.25.76: {} - zod@4.2.1: {} + zod@4.3.6: {} zwitch@2.0.4: {} diff --git a/website/next.config.js b/website/next.config.js index 6dcdb79cfa32..8c295caf4440 100644 --- a/website/next.config.js +++ b/website/next.config.js @@ -32,6 +32,7 @@ const withNextra = nextra({ defaultShowCopyCode: false, readingTime: true, transformPageMap(pageMap) { + // TODO: Remove all locale-related code and move `pages/en` to just `pages` const route = pageMap[0] && 'route' in pageMap[0] ? pageMap[0].route : undefined const locale = typeof route === 'string' ? route.slice(1, 3) : defaultLocale const t = (/** @type {string} */ key) => diff --git a/website/package.json b/website/package.json index 9f461af2247e..2b7cfcb16231 100644 --- a/website/package.json +++ b/website/package.json @@ -30,11 +30,11 @@ "fetch-har": "^11.1.1", "hast": "^1.0.0", "hast-util-whitespace": "^3.0.0", - "lodash": "^4.17.21", + "lodash": "^4.17.23", "mdast-util-mdx-jsx": "^3.2.0", "mdast-util-to-hast": "^13.2.1", - "mixpanel-browser": "^2.72.0", - "motion": "^12.23.26", + "mixpanel-browser": "^2.74.0", + "motion": "^12.29.2", "next": "^14.2.35", "next-seo": "^6.8.0", "next-sitemap": "^4.2.3", @@ -48,17 +48,17 @@ "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", + "theme-ui": "^0.17.4", + "unist-util-visit": "^5.1.0", "vfile": "^6.0.3", "zod": "^3.25.76" }, "devDependencies": { "@types/hast": "^3.0.4", - "@types/lodash": "^4.17.21", + "@types/lodash": "^4.17.23", "@types/mdast": "^4.0.4", "@types/mixpanel-browser": "^2.66.0", - "@types/node": "^22.19.3", + "@types/node": "^22.19.7", "@types/react": "^18.3.27", "@types/react-dom": "^18.3.7", "@types/vfile": "^4.0.0", diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt index c0a8265106b5..222170ce9c61 100644 --- a/website/route-lockfile.txt +++ b/website/route-lockfile.txt @@ -1,868 +1,4 @@ / -> /en/ -/ar/ -/ar/404/ -/ar/about/ -/ar/ai-suite/ai-introduction/ -/ar/ai-suite/subgraph-mcp/claude/ -/ar/ai-suite/subgraph-mcp/cline/ -/ar/ai-suite/subgraph-mcp/cursor/ -/ar/ai-suite/subgraph-mcp/introduction/ -/ar/ai-suite/token-api-mcp/claude/ -/ar/ai-suite/token-api-mcp/cline/ -/ar/ai-suite/token-api-mcp/cursor/ -/ar/ai-suite/token-api-mcp/introduction/ -/ar/archived/arbitrum/arbitrum-faq/ -/ar/archived/arbitrum/l2-transfer-tools-faq/ -/ar/archived/arbitrum/l2-transfer-tools-guide/ -/ar/archived/sunrise/ -/ar/contracts/ -/ar/graph-horizon/migration-guide/ -/ar/graph-horizon/overview/ -/ar/graph-horizon/what-changes/ -/ar/hypergraph/faq/ -/ar/hypergraph/overview/ -/ar/indexing/chain-integration-overview/ -/ar/indexing/new-chain-integration/ -/ar/indexing/overview/ -/ar/indexing/supported-network-requirements/ -/ar/indexing/tap/ -/ar/indexing/tooling/firehose/ -/ar/indexing/tooling/graph-node/ -/ar/indexing/tooling/graphcast/ -/ar/resources/benefits/ -/ar/resources/glossary/ -/ar/resources/migration-guides/assemblyscript-migration-guide/ -/ar/resources/migration-guides/graphql-validations-migration-guide/ -/ar/resources/migration-guides/migrate-from-alchemy/ -/ar/resources/roles/curating/ -/ar/resources/roles/delegating/delegating/ -/ar/resources/roles/delegating/undelegating/ -/ar/resources/subgraph-studio-faq/ -/ar/resources/tokenomics/ -/ar/subgraphs/best-practices/avoid-eth-calls/ -/ar/subgraphs/best-practices/derivedfrom/ -/ar/subgraphs/best-practices/grafting-hotfix/ -/ar/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/ar/subgraphs/best-practices/pruning/ -/ar/subgraphs/best-practices/timeseries/ -/ar/subgraphs/billing/ -/ar/subgraphs/developing/creating/advanced/ -/ar/subgraphs/developing/creating/assemblyscript-mappings/ -/ar/subgraphs/developing/creating/graph-node-dev/ -/ar/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/ar/subgraphs/developing/creating/graph-ts/README/ -/ar/subgraphs/developing/creating/graph-ts/api/ -/ar/subgraphs/developing/creating/graph-ts/common-issues/ -/ar/subgraphs/developing/creating/install-the-cli/ -/ar/subgraphs/developing/creating/ql-schema/ -/ar/subgraphs/developing/creating/starting-your-subgraph/ -/ar/subgraphs/developing/creating/subgraph-manifest/ -/ar/subgraphs/developing/creating/unit-testing-framework/ -/ar/subgraphs/developing/deploying/multiple-networks/ -/ar/subgraphs/developing/deploying/using-subgraph-studio/ -/ar/subgraphs/developing/developer-faq/ -/ar/subgraphs/developing/introduction/ -/ar/subgraphs/developing/managing/deleting-a-subgraph/ -/ar/subgraphs/developing/managing/transferring-a-subgraph/ -/ar/subgraphs/developing/publishing/publishing-a-subgraph/ -/ar/subgraphs/developing/subgraphs/ -/ar/subgraphs/explorer/ -/ar/subgraphs/fair-use-policy/ -/ar/subgraphs/guides/contract-analyzer/ -/ar/subgraphs/guides/enums/ -/ar/subgraphs/guides/grafting/ -/ar/subgraphs/guides/near/ -/ar/subgraphs/guides/polymarket/ -/ar/subgraphs/guides/secure-api-keys-nextjs/ -/ar/subgraphs/guides/subgraph-composition/ -/ar/subgraphs/guides/subgraph-debug-forking/ -/ar/subgraphs/guides/subgraph-uncrashable/ -/ar/subgraphs/guides/transfer-to-the-graph/ -/ar/subgraphs/querying/best-practices/ -/ar/subgraphs/querying/distributed-systems/ -/ar/subgraphs/querying/from-an-application/ -/ar/subgraphs/querying/graph-client/README/ -/ar/subgraphs/querying/graph-client/architecture/ -/ar/subgraphs/querying/graph-client/live/ -/ar/subgraphs/querying/graphql-api/ -/ar/subgraphs/querying/introduction/ -/ar/subgraphs/querying/managing-api-keys/ -/ar/subgraphs/querying/python/ -/ar/subgraphs/querying/subgraph-id-vs-deployment-id/ -/ar/subgraphs/quick-start/ -/ar/subgraphs/upgrade-indexer/ -/ar/substreams/developing/dev-container/ -/ar/substreams/developing/sinks/ -/ar/substreams/developing/solana/account-changes/ -/ar/substreams/developing/solana/transactions/ -/ar/substreams/introduction/ -/ar/substreams/publishing/ -/ar/substreams/quick-start/ -/ar/supported-networks/ -/ar/supported-networks/abstract-testnet/ -/ar/supported-networks/abstract/ -/ar/supported-networks/apechain-curtis/ -/ar/supported-networks/apechain/ -/ar/supported-networks/arbitrum-nova/ -/ar/supported-networks/arbitrum-one/ -/ar/supported-networks/arbitrum-sepolia/ -/ar/supported-networks/arc-testnet/ -/ar/supported-networks/autonomys-chronos/ -/ar/supported-networks/autonomys/ -/ar/supported-networks/avalanche/ -/ar/supported-networks/base-sepolia/ -/ar/supported-networks/base/ -/ar/supported-networks/berachain-bepolia/ -/ar/supported-networks/berachain/ -/ar/supported-networks/blast-mainnet/ -/ar/supported-networks/blast-testnet/ -/ar/supported-networks/bnb-op/ -/ar/supported-networks/bnb-svm/ -/ar/supported-networks/boba-testnet/ -/ar/supported-networks/boba/ -/ar/supported-networks/botanix-testnet/ -/ar/supported-networks/botanix/ -/ar/supported-networks/bsc/ -/ar/supported-networks/btc/ -/ar/supported-networks/celo-sepolia/ -/ar/supported-networks/celo/ -/ar/supported-networks/chapel/ -/ar/supported-networks/chiliz-testnet/ -/ar/supported-networks/chiliz/ -/ar/supported-networks/corn-testnet/ -/ar/supported-networks/corn/ -/ar/supported-networks/cronos/ -/ar/supported-networks/eos/ -/ar/supported-networks/etherlink-mainnet/ -/ar/supported-networks/etherlink-shadownet/ -/ar/supported-networks/etherlink-testnet/ -/ar/supported-networks/fantom-testnet/ -/ar/supported-networks/fantom/ -/ar/supported-networks/fraxtal/ -/ar/supported-networks/fuji/ -/ar/supported-networks/fuse-testnet/ -/ar/supported-networks/fuse/ -/ar/supported-networks/gnosis-chiado-cl/ -/ar/supported-networks/gnosis-chiado/ -/ar/supported-networks/gnosis-cl/ -/ar/supported-networks/gnosis/ -/ar/supported-networks/hashkeychain-sepolia/ -/ar/supported-networks/hashkeychain/ -/ar/supported-networks/hemi-sepolia/ -/ar/supported-networks/hemi/ -/ar/supported-networks/holesky/ -/ar/supported-networks/hoodi-cl/ -/ar/supported-networks/hoodi/ -/ar/supported-networks/injective-evm-testnet/ -/ar/supported-networks/injective-evm/ -/ar/supported-networks/injective-mainnet/ -/ar/supported-networks/injective-testnet/ -/ar/supported-networks/ink-sepolia/ -/ar/supported-networks/ink/ -/ar/supported-networks/iotex-testnet/ -/ar/supported-networks/iotex/ -/ar/supported-networks/joc-testnet/ -/ar/supported-networks/joc/ -/ar/supported-networks/jungle4/ -/ar/supported-networks/kaia-testnet/ -/ar/supported-networks/kaia/ -/ar/supported-networks/katana-tatara/ -/ar/supported-networks/katana/ -/ar/supported-networks/kylin/ -/ar/supported-networks/lens-testnet/ -/ar/supported-networks/lens/ -/ar/supported-networks/linea-sepolia/ -/ar/supported-networks/linea/ -/ar/supported-networks/litecoin/ -/ar/supported-networks/lumia/ -/ar/supported-networks/mainnet-cl/ -/ar/supported-networks/mainnet/ -/ar/supported-networks/manta/ -/ar/supported-networks/mantra-mainnet/ -/ar/supported-networks/mantra-testnet/ -/ar/supported-networks/matic/ -/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/ -/ar/supported-networks/mode-mainnet/ -/ar/supported-networks/monad-testnet/ -/ar/supported-networks/monad/ -/ar/supported-networks/moonbeam/ -/ar/supported-networks/moonriver/ -/ar/supported-networks/near-mainnet/ -/ar/supported-networks/near-testnet/ -/ar/supported-networks/neox-testnet/ -/ar/supported-networks/neox/ -/ar/supported-networks/optimism-sepolia/ -/ar/supported-networks/optimism/ -/ar/supported-networks/peaq/ -/ar/supported-networks/polkadot-testnet/ -/ar/supported-networks/polygon-amoy/ -/ar/supported-networks/polygon-zkevm-cardona/ -/ar/supported-networks/polygon-zkevm/ -/ar/supported-networks/ronin/ -/ar/supported-networks/rootstock-testnet/ -/ar/supported-networks/rootstock/ -/ar/supported-networks/scroll-sepolia/ -/ar/supported-networks/scroll/ -/ar/supported-networks/sei-atlantic/ -/ar/supported-networks/sei-mainnet/ -/ar/supported-networks/sepolia-cl/ -/ar/supported-networks/sepolia/ -/ar/supported-networks/solana-accounts/ -/ar/supported-networks/solana-devnet/ -/ar/supported-networks/solana-mainnet-beta/ -/ar/supported-networks/soneium-testnet/ -/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/ -/ar/supported-networks/stellar-testnet/ -/ar/supported-networks/stellar/ -/ar/supported-networks/swellchain-sepolia/ -/ar/supported-networks/swellchain/ -/ar/supported-networks/telos-testnet/ -/ar/supported-networks/telos/ -/ar/supported-networks/tron-evm/ -/ar/supported-networks/tron/ -/ar/supported-networks/ultra/ -/ar/supported-networks/unichain-testnet/ -/ar/supported-networks/unichain/ -/ar/supported-networks/vana-moksha/ -/ar/supported-networks/vana/ -/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/ -/ar/supported-networks/zilliqa-testnet/ -/ar/supported-networks/zilliqa/ -/ar/supported-networks/zksync-era-sepolia/ -/ar/supported-networks/zksync-era/ -/ar/supported-networks/zora/ -/ar/token-api/endpoint-pricing/ -/ar/token-api/evm-dexs/dexes/ -/ar/token-api/evm-dexs/pools-ohlc/ -/ar/token-api/evm-dexs/pools/ -/ar/token-api/evm-dexs/swaps/ -/ar/token-api/evm-nfts/collections/ -/ar/token-api/evm-nfts/holders/ -/ar/token-api/evm-nfts/items/ -/ar/token-api/evm-nfts/ownerships/ -/ar/token-api/evm-nfts/sales/ -/ar/token-api/evm-nfts/transfers/ -/ar/token-api/evm-tokens/balances-historical/ -/ar/token-api/evm-tokens/balances-native/ -/ar/token-api/evm-tokens/balances/ -/ar/token-api/evm-tokens/holders/ -/ar/token-api/evm-tokens/tokens/ -/ar/token-api/evm-tokens/transfers/ -/ar/token-api/faq/ -/ar/token-api/monitoring/health/ -/ar/token-api/monitoring/networks/ -/ar/token-api/monitoring/version/ -/ar/token-api/quick-start/ -/ar/token-api/svm-dexs/dexes/ -/ar/token-api/svm-dexs/pools-ohlc/ -/ar/token-api/svm-dexs/pools/ -/ar/token-api/svm-dexs/swaps/ -/ar/token-api/svm-tokens/balances-native/ -/ar/token-api/svm-tokens/balances/ -/ar/token-api/svm-tokens/holders/ -/ar/token-api/svm-tokens/owner/ -/ar/token-api/svm-tokens/tokens/ -/ar/token-api/svm-tokens/transfers/ -/ar/token-api/tvm-dexs/dexes/ -/ar/token-api/tvm-dexs/pools-ohlc/ -/ar/token-api/tvm-dexs/swaps/ -/ar/token-api/tvm-tokens/tokens/ -/ar/token-api/tvm-tokens/transfers-native/ -/ar/token-api/tvm-tokens/transfers/ -/cs/ -/cs/404/ -/cs/about/ -/cs/ai-suite/ai-introduction/ -/cs/ai-suite/subgraph-mcp/claude/ -/cs/ai-suite/subgraph-mcp/cline/ -/cs/ai-suite/subgraph-mcp/cursor/ -/cs/ai-suite/subgraph-mcp/introduction/ -/cs/ai-suite/token-api-mcp/claude/ -/cs/ai-suite/token-api-mcp/cline/ -/cs/ai-suite/token-api-mcp/cursor/ -/cs/ai-suite/token-api-mcp/introduction/ -/cs/archived/arbitrum/arbitrum-faq/ -/cs/archived/arbitrum/l2-transfer-tools-faq/ -/cs/archived/arbitrum/l2-transfer-tools-guide/ -/cs/archived/sunrise/ -/cs/contracts/ -/cs/graph-horizon/migration-guide/ -/cs/graph-horizon/overview/ -/cs/graph-horizon/what-changes/ -/cs/hypergraph/faq/ -/cs/hypergraph/overview/ -/cs/indexing/chain-integration-overview/ -/cs/indexing/new-chain-integration/ -/cs/indexing/overview/ -/cs/indexing/supported-network-requirements/ -/cs/indexing/tap/ -/cs/indexing/tooling/firehose/ -/cs/indexing/tooling/graph-node/ -/cs/indexing/tooling/graphcast/ -/cs/resources/benefits/ -/cs/resources/glossary/ -/cs/resources/migration-guides/assemblyscript-migration-guide/ -/cs/resources/migration-guides/graphql-validations-migration-guide/ -/cs/resources/migration-guides/migrate-from-alchemy/ -/cs/resources/roles/curating/ -/cs/resources/roles/delegating/delegating/ -/cs/resources/roles/delegating/undelegating/ -/cs/resources/subgraph-studio-faq/ -/cs/resources/tokenomics/ -/cs/subgraphs/best-practices/avoid-eth-calls/ -/cs/subgraphs/best-practices/derivedfrom/ -/cs/subgraphs/best-practices/grafting-hotfix/ -/cs/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/cs/subgraphs/best-practices/pruning/ -/cs/subgraphs/best-practices/timeseries/ -/cs/subgraphs/billing/ -/cs/subgraphs/developing/creating/advanced/ -/cs/subgraphs/developing/creating/assemblyscript-mappings/ -/cs/subgraphs/developing/creating/graph-node-dev/ -/cs/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/cs/subgraphs/developing/creating/graph-ts/README/ -/cs/subgraphs/developing/creating/graph-ts/api/ -/cs/subgraphs/developing/creating/graph-ts/common-issues/ -/cs/subgraphs/developing/creating/install-the-cli/ -/cs/subgraphs/developing/creating/ql-schema/ -/cs/subgraphs/developing/creating/starting-your-subgraph/ -/cs/subgraphs/developing/creating/subgraph-manifest/ -/cs/subgraphs/developing/creating/unit-testing-framework/ -/cs/subgraphs/developing/deploying/multiple-networks/ -/cs/subgraphs/developing/deploying/using-subgraph-studio/ -/cs/subgraphs/developing/developer-faq/ -/cs/subgraphs/developing/introduction/ -/cs/subgraphs/developing/managing/deleting-a-subgraph/ -/cs/subgraphs/developing/managing/transferring-a-subgraph/ -/cs/subgraphs/developing/publishing/publishing-a-subgraph/ -/cs/subgraphs/developing/subgraphs/ -/cs/subgraphs/explorer/ -/cs/subgraphs/fair-use-policy/ -/cs/subgraphs/guides/contract-analyzer/ -/cs/subgraphs/guides/enums/ -/cs/subgraphs/guides/grafting/ -/cs/subgraphs/guides/near/ -/cs/subgraphs/guides/polymarket/ -/cs/subgraphs/guides/secure-api-keys-nextjs/ -/cs/subgraphs/guides/subgraph-composition/ -/cs/subgraphs/guides/subgraph-debug-forking/ -/cs/subgraphs/guides/subgraph-uncrashable/ -/cs/subgraphs/guides/transfer-to-the-graph/ -/cs/subgraphs/querying/best-practices/ -/cs/subgraphs/querying/distributed-systems/ -/cs/subgraphs/querying/from-an-application/ -/cs/subgraphs/querying/graph-client/README/ -/cs/subgraphs/querying/graph-client/architecture/ -/cs/subgraphs/querying/graph-client/live/ -/cs/subgraphs/querying/graphql-api/ -/cs/subgraphs/querying/introduction/ -/cs/subgraphs/querying/managing-api-keys/ -/cs/subgraphs/querying/python/ -/cs/subgraphs/querying/subgraph-id-vs-deployment-id/ -/cs/subgraphs/quick-start/ -/cs/subgraphs/upgrade-indexer/ -/cs/substreams/developing/dev-container/ -/cs/substreams/developing/sinks/ -/cs/substreams/developing/solana/account-changes/ -/cs/substreams/developing/solana/transactions/ -/cs/substreams/introduction/ -/cs/substreams/publishing/ -/cs/substreams/quick-start/ -/cs/supported-networks/ -/cs/supported-networks/abstract-testnet/ -/cs/supported-networks/abstract/ -/cs/supported-networks/apechain-curtis/ -/cs/supported-networks/apechain/ -/cs/supported-networks/arbitrum-nova/ -/cs/supported-networks/arbitrum-one/ -/cs/supported-networks/arbitrum-sepolia/ -/cs/supported-networks/arc-testnet/ -/cs/supported-networks/autonomys-chronos/ -/cs/supported-networks/autonomys/ -/cs/supported-networks/avalanche/ -/cs/supported-networks/base-sepolia/ -/cs/supported-networks/base/ -/cs/supported-networks/berachain-bepolia/ -/cs/supported-networks/berachain/ -/cs/supported-networks/blast-mainnet/ -/cs/supported-networks/blast-testnet/ -/cs/supported-networks/bnb-op/ -/cs/supported-networks/bnb-svm/ -/cs/supported-networks/boba-testnet/ -/cs/supported-networks/boba/ -/cs/supported-networks/botanix-testnet/ -/cs/supported-networks/botanix/ -/cs/supported-networks/bsc/ -/cs/supported-networks/btc/ -/cs/supported-networks/celo-sepolia/ -/cs/supported-networks/celo/ -/cs/supported-networks/chapel/ -/cs/supported-networks/chiliz-testnet/ -/cs/supported-networks/chiliz/ -/cs/supported-networks/corn-testnet/ -/cs/supported-networks/corn/ -/cs/supported-networks/cronos/ -/cs/supported-networks/eos/ -/cs/supported-networks/etherlink-mainnet/ -/cs/supported-networks/etherlink-shadownet/ -/cs/supported-networks/etherlink-testnet/ -/cs/supported-networks/fantom-testnet/ -/cs/supported-networks/fantom/ -/cs/supported-networks/fraxtal/ -/cs/supported-networks/fuji/ -/cs/supported-networks/fuse-testnet/ -/cs/supported-networks/fuse/ -/cs/supported-networks/gnosis-chiado-cl/ -/cs/supported-networks/gnosis-chiado/ -/cs/supported-networks/gnosis-cl/ -/cs/supported-networks/gnosis/ -/cs/supported-networks/hashkeychain-sepolia/ -/cs/supported-networks/hashkeychain/ -/cs/supported-networks/hemi-sepolia/ -/cs/supported-networks/hemi/ -/cs/supported-networks/holesky/ -/cs/supported-networks/hoodi-cl/ -/cs/supported-networks/hoodi/ -/cs/supported-networks/injective-evm-testnet/ -/cs/supported-networks/injective-evm/ -/cs/supported-networks/injective-mainnet/ -/cs/supported-networks/injective-testnet/ -/cs/supported-networks/ink-sepolia/ -/cs/supported-networks/ink/ -/cs/supported-networks/iotex-testnet/ -/cs/supported-networks/iotex/ -/cs/supported-networks/joc-testnet/ -/cs/supported-networks/joc/ -/cs/supported-networks/jungle4/ -/cs/supported-networks/kaia-testnet/ -/cs/supported-networks/kaia/ -/cs/supported-networks/katana-tatara/ -/cs/supported-networks/katana/ -/cs/supported-networks/kylin/ -/cs/supported-networks/lens-testnet/ -/cs/supported-networks/lens/ -/cs/supported-networks/linea-sepolia/ -/cs/supported-networks/linea/ -/cs/supported-networks/litecoin/ -/cs/supported-networks/lumia/ -/cs/supported-networks/mainnet-cl/ -/cs/supported-networks/mainnet/ -/cs/supported-networks/manta/ -/cs/supported-networks/mantra-mainnet/ -/cs/supported-networks/mantra-testnet/ -/cs/supported-networks/matic/ -/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/ -/cs/supported-networks/mode-mainnet/ -/cs/supported-networks/monad-testnet/ -/cs/supported-networks/monad/ -/cs/supported-networks/moonbeam/ -/cs/supported-networks/moonriver/ -/cs/supported-networks/near-mainnet/ -/cs/supported-networks/near-testnet/ -/cs/supported-networks/neox-testnet/ -/cs/supported-networks/neox/ -/cs/supported-networks/optimism-sepolia/ -/cs/supported-networks/optimism/ -/cs/supported-networks/peaq/ -/cs/supported-networks/polkadot-testnet/ -/cs/supported-networks/polygon-amoy/ -/cs/supported-networks/polygon-zkevm-cardona/ -/cs/supported-networks/polygon-zkevm/ -/cs/supported-networks/ronin/ -/cs/supported-networks/rootstock-testnet/ -/cs/supported-networks/rootstock/ -/cs/supported-networks/scroll-sepolia/ -/cs/supported-networks/scroll/ -/cs/supported-networks/sei-atlantic/ -/cs/supported-networks/sei-mainnet/ -/cs/supported-networks/sepolia-cl/ -/cs/supported-networks/sepolia/ -/cs/supported-networks/solana-accounts/ -/cs/supported-networks/solana-devnet/ -/cs/supported-networks/solana-mainnet-beta/ -/cs/supported-networks/soneium-testnet/ -/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/ -/cs/supported-networks/stellar-testnet/ -/cs/supported-networks/stellar/ -/cs/supported-networks/swellchain-sepolia/ -/cs/supported-networks/swellchain/ -/cs/supported-networks/telos-testnet/ -/cs/supported-networks/telos/ -/cs/supported-networks/tron-evm/ -/cs/supported-networks/tron/ -/cs/supported-networks/ultra/ -/cs/supported-networks/unichain-testnet/ -/cs/supported-networks/unichain/ -/cs/supported-networks/vana-moksha/ -/cs/supported-networks/vana/ -/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/ -/cs/supported-networks/zilliqa-testnet/ -/cs/supported-networks/zilliqa/ -/cs/supported-networks/zksync-era-sepolia/ -/cs/supported-networks/zksync-era/ -/cs/supported-networks/zora/ -/cs/token-api/endpoint-pricing/ -/cs/token-api/evm-dexs/dexes/ -/cs/token-api/evm-dexs/pools-ohlc/ -/cs/token-api/evm-dexs/pools/ -/cs/token-api/evm-dexs/swaps/ -/cs/token-api/evm-nfts/collections/ -/cs/token-api/evm-nfts/holders/ -/cs/token-api/evm-nfts/items/ -/cs/token-api/evm-nfts/ownerships/ -/cs/token-api/evm-nfts/sales/ -/cs/token-api/evm-nfts/transfers/ -/cs/token-api/evm-tokens/balances-historical/ -/cs/token-api/evm-tokens/balances-native/ -/cs/token-api/evm-tokens/balances/ -/cs/token-api/evm-tokens/holders/ -/cs/token-api/evm-tokens/tokens/ -/cs/token-api/evm-tokens/transfers/ -/cs/token-api/faq/ -/cs/token-api/monitoring/health/ -/cs/token-api/monitoring/networks/ -/cs/token-api/monitoring/version/ -/cs/token-api/quick-start/ -/cs/token-api/svm-dexs/dexes/ -/cs/token-api/svm-dexs/pools-ohlc/ -/cs/token-api/svm-dexs/pools/ -/cs/token-api/svm-dexs/swaps/ -/cs/token-api/svm-tokens/balances-native/ -/cs/token-api/svm-tokens/balances/ -/cs/token-api/svm-tokens/holders/ -/cs/token-api/svm-tokens/owner/ -/cs/token-api/svm-tokens/tokens/ -/cs/token-api/svm-tokens/transfers/ -/cs/token-api/tvm-dexs/dexes/ -/cs/token-api/tvm-dexs/pools-ohlc/ -/cs/token-api/tvm-dexs/swaps/ -/cs/token-api/tvm-tokens/tokens/ -/cs/token-api/tvm-tokens/transfers-native/ -/cs/token-api/tvm-tokens/transfers/ -/de/ -/de/404/ -/de/about/ -/de/ai-suite/ai-introduction/ -/de/ai-suite/subgraph-mcp/claude/ -/de/ai-suite/subgraph-mcp/cline/ -/de/ai-suite/subgraph-mcp/cursor/ -/de/ai-suite/subgraph-mcp/introduction/ -/de/ai-suite/token-api-mcp/claude/ -/de/ai-suite/token-api-mcp/cline/ -/de/ai-suite/token-api-mcp/cursor/ -/de/ai-suite/token-api-mcp/introduction/ -/de/archived/arbitrum/arbitrum-faq/ -/de/archived/arbitrum/l2-transfer-tools-faq/ -/de/archived/arbitrum/l2-transfer-tools-guide/ -/de/archived/sunrise/ -/de/contracts/ -/de/graph-horizon/migration-guide/ -/de/graph-horizon/overview/ -/de/graph-horizon/what-changes/ -/de/hypergraph/faq/ -/de/hypergraph/overview/ -/de/indexing/chain-integration-overview/ -/de/indexing/new-chain-integration/ -/de/indexing/overview/ -/de/indexing/supported-network-requirements/ -/de/indexing/tap/ -/de/indexing/tooling/firehose/ -/de/indexing/tooling/graph-node/ -/de/indexing/tooling/graphcast/ -/de/resources/benefits/ -/de/resources/glossary/ -/de/resources/migration-guides/assemblyscript-migration-guide/ -/de/resources/migration-guides/graphql-validations-migration-guide/ -/de/resources/migration-guides/migrate-from-alchemy/ -/de/resources/roles/curating/ -/de/resources/roles/delegating/delegating/ -/de/resources/roles/delegating/undelegating/ -/de/resources/subgraph-studio-faq/ -/de/resources/tokenomics/ -/de/subgraphs/best-practices/avoid-eth-calls/ -/de/subgraphs/best-practices/derivedfrom/ -/de/subgraphs/best-practices/grafting-hotfix/ -/de/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/de/subgraphs/best-practices/pruning/ -/de/subgraphs/best-practices/timeseries/ -/de/subgraphs/billing/ -/de/subgraphs/developing/creating/advanced/ -/de/subgraphs/developing/creating/assemblyscript-mappings/ -/de/subgraphs/developing/creating/graph-node-dev/ -/de/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/de/subgraphs/developing/creating/graph-ts/README/ -/de/subgraphs/developing/creating/graph-ts/api/ -/de/subgraphs/developing/creating/graph-ts/common-issues/ -/de/subgraphs/developing/creating/install-the-cli/ -/de/subgraphs/developing/creating/ql-schema/ -/de/subgraphs/developing/creating/starting-your-subgraph/ -/de/subgraphs/developing/creating/subgraph-manifest/ -/de/subgraphs/developing/creating/unit-testing-framework/ -/de/subgraphs/developing/deploying/multiple-networks/ -/de/subgraphs/developing/deploying/using-subgraph-studio/ -/de/subgraphs/developing/developer-faq/ -/de/subgraphs/developing/introduction/ -/de/subgraphs/developing/managing/deleting-a-subgraph/ -/de/subgraphs/developing/managing/transferring-a-subgraph/ -/de/subgraphs/developing/publishing/publishing-a-subgraph/ -/de/subgraphs/developing/subgraphs/ -/de/subgraphs/explorer/ -/de/subgraphs/fair-use-policy/ -/de/subgraphs/guides/contract-analyzer/ -/de/subgraphs/guides/enums/ -/de/subgraphs/guides/grafting/ -/de/subgraphs/guides/near/ -/de/subgraphs/guides/polymarket/ -/de/subgraphs/guides/secure-api-keys-nextjs/ -/de/subgraphs/guides/subgraph-composition/ -/de/subgraphs/guides/subgraph-debug-forking/ -/de/subgraphs/guides/subgraph-uncrashable/ -/de/subgraphs/guides/transfer-to-the-graph/ -/de/subgraphs/querying/best-practices/ -/de/subgraphs/querying/distributed-systems/ -/de/subgraphs/querying/from-an-application/ -/de/subgraphs/querying/graph-client/README/ -/de/subgraphs/querying/graph-client/architecture/ -/de/subgraphs/querying/graph-client/live/ -/de/subgraphs/querying/graphql-api/ -/de/subgraphs/querying/introduction/ -/de/subgraphs/querying/managing-api-keys/ -/de/subgraphs/querying/python/ -/de/subgraphs/querying/subgraph-id-vs-deployment-id/ -/de/subgraphs/quick-start/ -/de/subgraphs/upgrade-indexer/ -/de/substreams/developing/dev-container/ -/de/substreams/developing/sinks/ -/de/substreams/developing/solana/account-changes/ -/de/substreams/developing/solana/transactions/ -/de/substreams/introduction/ -/de/substreams/publishing/ -/de/substreams/quick-start/ -/de/supported-networks/ -/de/supported-networks/abstract-testnet/ -/de/supported-networks/abstract/ -/de/supported-networks/apechain-curtis/ -/de/supported-networks/apechain/ -/de/supported-networks/arbitrum-nova/ -/de/supported-networks/arbitrum-one/ -/de/supported-networks/arbitrum-sepolia/ -/de/supported-networks/arc-testnet/ -/de/supported-networks/autonomys-chronos/ -/de/supported-networks/autonomys/ -/de/supported-networks/avalanche/ -/de/supported-networks/base-sepolia/ -/de/supported-networks/base/ -/de/supported-networks/berachain-bepolia/ -/de/supported-networks/berachain/ -/de/supported-networks/blast-mainnet/ -/de/supported-networks/blast-testnet/ -/de/supported-networks/bnb-op/ -/de/supported-networks/bnb-svm/ -/de/supported-networks/boba-testnet/ -/de/supported-networks/boba/ -/de/supported-networks/botanix-testnet/ -/de/supported-networks/botanix/ -/de/supported-networks/bsc/ -/de/supported-networks/btc/ -/de/supported-networks/celo-sepolia/ -/de/supported-networks/celo/ -/de/supported-networks/chapel/ -/de/supported-networks/chiliz-testnet/ -/de/supported-networks/chiliz/ -/de/supported-networks/corn-testnet/ -/de/supported-networks/corn/ -/de/supported-networks/cronos/ -/de/supported-networks/eos/ -/de/supported-networks/etherlink-mainnet/ -/de/supported-networks/etherlink-shadownet/ -/de/supported-networks/etherlink-testnet/ -/de/supported-networks/fantom-testnet/ -/de/supported-networks/fantom/ -/de/supported-networks/fraxtal/ -/de/supported-networks/fuji/ -/de/supported-networks/fuse-testnet/ -/de/supported-networks/fuse/ -/de/supported-networks/gnosis-chiado-cl/ -/de/supported-networks/gnosis-chiado/ -/de/supported-networks/gnosis-cl/ -/de/supported-networks/gnosis/ -/de/supported-networks/hashkeychain-sepolia/ -/de/supported-networks/hashkeychain/ -/de/supported-networks/hemi-sepolia/ -/de/supported-networks/hemi/ -/de/supported-networks/holesky/ -/de/supported-networks/hoodi-cl/ -/de/supported-networks/hoodi/ -/de/supported-networks/injective-evm-testnet/ -/de/supported-networks/injective-evm/ -/de/supported-networks/injective-mainnet/ -/de/supported-networks/injective-testnet/ -/de/supported-networks/ink-sepolia/ -/de/supported-networks/ink/ -/de/supported-networks/iotex-testnet/ -/de/supported-networks/iotex/ -/de/supported-networks/joc-testnet/ -/de/supported-networks/joc/ -/de/supported-networks/jungle4/ -/de/supported-networks/kaia-testnet/ -/de/supported-networks/kaia/ -/de/supported-networks/katana-tatara/ -/de/supported-networks/katana/ -/de/supported-networks/kylin/ -/de/supported-networks/lens-testnet/ -/de/supported-networks/lens/ -/de/supported-networks/linea-sepolia/ -/de/supported-networks/linea/ -/de/supported-networks/litecoin/ -/de/supported-networks/lumia/ -/de/supported-networks/mainnet-cl/ -/de/supported-networks/mainnet/ -/de/supported-networks/manta/ -/de/supported-networks/mantra-mainnet/ -/de/supported-networks/mantra-testnet/ -/de/supported-networks/matic/ -/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/ -/de/supported-networks/mode-mainnet/ -/de/supported-networks/monad-testnet/ -/de/supported-networks/monad/ -/de/supported-networks/moonbeam/ -/de/supported-networks/moonriver/ -/de/supported-networks/near-mainnet/ -/de/supported-networks/near-testnet/ -/de/supported-networks/neox-testnet/ -/de/supported-networks/neox/ -/de/supported-networks/optimism-sepolia/ -/de/supported-networks/optimism/ -/de/supported-networks/peaq/ -/de/supported-networks/polkadot-testnet/ -/de/supported-networks/polygon-amoy/ -/de/supported-networks/polygon-zkevm-cardona/ -/de/supported-networks/polygon-zkevm/ -/de/supported-networks/ronin/ -/de/supported-networks/rootstock-testnet/ -/de/supported-networks/rootstock/ -/de/supported-networks/scroll-sepolia/ -/de/supported-networks/scroll/ -/de/supported-networks/sei-atlantic/ -/de/supported-networks/sei-mainnet/ -/de/supported-networks/sepolia-cl/ -/de/supported-networks/sepolia/ -/de/supported-networks/solana-accounts/ -/de/supported-networks/solana-devnet/ -/de/supported-networks/solana-mainnet-beta/ -/de/supported-networks/soneium-testnet/ -/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/ -/de/supported-networks/stellar-testnet/ -/de/supported-networks/stellar/ -/de/supported-networks/swellchain-sepolia/ -/de/supported-networks/swellchain/ -/de/supported-networks/telos-testnet/ -/de/supported-networks/telos/ -/de/supported-networks/tron-evm/ -/de/supported-networks/tron/ -/de/supported-networks/ultra/ -/de/supported-networks/unichain-testnet/ -/de/supported-networks/unichain/ -/de/supported-networks/vana-moksha/ -/de/supported-networks/vana/ -/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/ -/de/supported-networks/zilliqa-testnet/ -/de/supported-networks/zilliqa/ -/de/supported-networks/zksync-era-sepolia/ -/de/supported-networks/zksync-era/ -/de/supported-networks/zora/ -/de/token-api/endpoint-pricing/ -/de/token-api/evm-dexs/dexes/ -/de/token-api/evm-dexs/pools-ohlc/ -/de/token-api/evm-dexs/pools/ -/de/token-api/evm-dexs/swaps/ -/de/token-api/evm-nfts/collections/ -/de/token-api/evm-nfts/holders/ -/de/token-api/evm-nfts/items/ -/de/token-api/evm-nfts/ownerships/ -/de/token-api/evm-nfts/sales/ -/de/token-api/evm-nfts/transfers/ -/de/token-api/evm-tokens/balances-historical/ -/de/token-api/evm-tokens/balances-native/ -/de/token-api/evm-tokens/balances/ -/de/token-api/evm-tokens/holders/ -/de/token-api/evm-tokens/tokens/ -/de/token-api/evm-tokens/transfers/ -/de/token-api/faq/ -/de/token-api/monitoring/health/ -/de/token-api/monitoring/networks/ -/de/token-api/monitoring/version/ -/de/token-api/quick-start/ -/de/token-api/svm-dexs/dexes/ -/de/token-api/svm-dexs/pools-ohlc/ -/de/token-api/svm-dexs/pools/ -/de/token-api/svm-dexs/swaps/ -/de/token-api/svm-tokens/balances-native/ -/de/token-api/svm-tokens/balances/ -/de/token-api/svm-tokens/holders/ -/de/token-api/svm-tokens/owner/ -/de/token-api/svm-tokens/tokens/ -/de/token-api/svm-tokens/transfers/ -/de/token-api/tvm-dexs/dexes/ -/de/token-api/tvm-dexs/pools-ohlc/ -/de/token-api/tvm-dexs/swaps/ -/de/token-api/tvm-tokens/tokens/ -/de/token-api/tvm-tokens/transfers-native/ -/de/token-api/tvm-tokens/transfers/ /en/ /en/404/ /en/about/ @@ -940,6 +76,7 @@ /en/subgraphs/guides/secure-api-keys-nextjs/ /en/subgraphs/guides/subgraph-composition/ /en/subgraphs/guides/subgraph-debug-forking/ +/en/subgraphs/guides/subgraph-linter/ /en/subgraphs/guides/subgraph-uncrashable/ /en/subgraphs/guides/transfer-to-the-graph/ /en/subgraphs/querying/best-practices/ @@ -979,7 +116,6 @@ /en/supported-networks/berachain-bepolia/ /en/supported-networks/berachain/ /en/supported-networks/blast-mainnet/ -/en/supported-networks/blast-testnet/ /en/supported-networks/bnb-op/ /en/supported-networks/bnb-svm/ /en/supported-networks/boba-testnet/ @@ -1004,7 +140,6 @@ /en/supported-networks/fantom/ /en/supported-networks/fraxtal/ /en/supported-networks/fuji/ -/en/supported-networks/fuse-testnet/ /en/supported-networks/fuse/ /en/supported-networks/gnosis-chiado-cl/ /en/supported-networks/gnosis-chiado/ @@ -1014,7 +149,6 @@ /en/supported-networks/hashkeychain/ /en/supported-networks/hemi-sepolia/ /en/supported-networks/hemi/ -/en/supported-networks/holesky/ /en/supported-networks/hoodi-cl/ /en/supported-networks/hoodi/ /en/supported-networks/injective-evm-testnet/ @@ -1030,11 +164,8 @@ /en/supported-networks/jungle4/ /en/supported-networks/kaia-testnet/ /en/supported-networks/kaia/ -/en/supported-networks/katana-tatara/ /en/supported-networks/katana/ /en/supported-networks/kylin/ -/en/supported-networks/lens-testnet/ -/en/supported-networks/lens/ /en/supported-networks/linea-sepolia/ /en/supported-networks/linea/ /en/supported-networks/litecoin/ @@ -1046,11 +177,9 @@ /en/supported-networks/mantra-testnet/ /en/supported-networks/matic/ /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/ /en/supported-networks/mode-mainnet/ /en/supported-networks/monad-testnet/ @@ -1094,6 +223,7 @@ /en/supported-networks/swellchain/ /en/supported-networks/telos-testnet/ /en/supported-networks/telos/ +/en/supported-networks/tempo-andantino/ /en/supported-networks/tron-evm/ /en/supported-networks/tron/ /en/supported-networks/ultra/ @@ -1113,7 +243,8 @@ /en/supported-networks/zksync-era-sepolia/ /en/supported-networks/zksync-era/ /en/supported-networks/zora/ -/en/token-api/endpoint-pricing/ +/en/token-api/endpoints/pricing/ +/en/token-api/endpoints/support/ /en/token-api/evm-dexs/dexes/ /en/token-api/evm-dexs/pools-ohlc/ /en/token-api/evm-dexs/pools/ @@ -1148,3832 +279,8 @@ /en/token-api/svm-tokens/transfers/ /en/token-api/tvm-dexs/dexes/ /en/token-api/tvm-dexs/pools-ohlc/ +/en/token-api/tvm-dexs/pools/ /en/token-api/tvm-dexs/swaps/ /en/token-api/tvm-tokens/tokens/ /en/token-api/tvm-tokens/transfers-native/ /en/token-api/tvm-tokens/transfers/ -/es/ -/es/404/ -/es/about/ -/es/ai-suite/ai-introduction/ -/es/ai-suite/subgraph-mcp/claude/ -/es/ai-suite/subgraph-mcp/cline/ -/es/ai-suite/subgraph-mcp/cursor/ -/es/ai-suite/subgraph-mcp/introduction/ -/es/ai-suite/token-api-mcp/claude/ -/es/ai-suite/token-api-mcp/cline/ -/es/ai-suite/token-api-mcp/cursor/ -/es/ai-suite/token-api-mcp/introduction/ -/es/archived/arbitrum/arbitrum-faq/ -/es/archived/arbitrum/l2-transfer-tools-faq/ -/es/archived/arbitrum/l2-transfer-tools-guide/ -/es/archived/sunrise/ -/es/contracts/ -/es/graph-horizon/migration-guide/ -/es/graph-horizon/overview/ -/es/graph-horizon/what-changes/ -/es/hypergraph/faq/ -/es/hypergraph/overview/ -/es/indexing/chain-integration-overview/ -/es/indexing/new-chain-integration/ -/es/indexing/overview/ -/es/indexing/supported-network-requirements/ -/es/indexing/tap/ -/es/indexing/tooling/firehose/ -/es/indexing/tooling/graph-node/ -/es/indexing/tooling/graphcast/ -/es/resources/benefits/ -/es/resources/glossary/ -/es/resources/migration-guides/assemblyscript-migration-guide/ -/es/resources/migration-guides/graphql-validations-migration-guide/ -/es/resources/migration-guides/migrate-from-alchemy/ -/es/resources/roles/curating/ -/es/resources/roles/delegating/delegating/ -/es/resources/roles/delegating/undelegating/ -/es/resources/subgraph-studio-faq/ -/es/resources/tokenomics/ -/es/subgraphs/best-practices/avoid-eth-calls/ -/es/subgraphs/best-practices/derivedfrom/ -/es/subgraphs/best-practices/grafting-hotfix/ -/es/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/es/subgraphs/best-practices/pruning/ -/es/subgraphs/best-practices/timeseries/ -/es/subgraphs/billing/ -/es/subgraphs/developing/creating/advanced/ -/es/subgraphs/developing/creating/assemblyscript-mappings/ -/es/subgraphs/developing/creating/graph-node-dev/ -/es/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/es/subgraphs/developing/creating/graph-ts/README/ -/es/subgraphs/developing/creating/graph-ts/api/ -/es/subgraphs/developing/creating/graph-ts/common-issues/ -/es/subgraphs/developing/creating/install-the-cli/ -/es/subgraphs/developing/creating/ql-schema/ -/es/subgraphs/developing/creating/starting-your-subgraph/ -/es/subgraphs/developing/creating/subgraph-manifest/ -/es/subgraphs/developing/creating/unit-testing-framework/ -/es/subgraphs/developing/deploying/multiple-networks/ -/es/subgraphs/developing/deploying/using-subgraph-studio/ -/es/subgraphs/developing/developer-faq/ -/es/subgraphs/developing/introduction/ -/es/subgraphs/developing/managing/deleting-a-subgraph/ -/es/subgraphs/developing/managing/transferring-a-subgraph/ -/es/subgraphs/developing/publishing/publishing-a-subgraph/ -/es/subgraphs/developing/subgraphs/ -/es/subgraphs/explorer/ -/es/subgraphs/fair-use-policy/ -/es/subgraphs/guides/contract-analyzer/ -/es/subgraphs/guides/enums/ -/es/subgraphs/guides/grafting/ -/es/subgraphs/guides/near/ -/es/subgraphs/guides/polymarket/ -/es/subgraphs/guides/secure-api-keys-nextjs/ -/es/subgraphs/guides/subgraph-composition/ -/es/subgraphs/guides/subgraph-debug-forking/ -/es/subgraphs/guides/subgraph-uncrashable/ -/es/subgraphs/guides/transfer-to-the-graph/ -/es/subgraphs/querying/best-practices/ -/es/subgraphs/querying/distributed-systems/ -/es/subgraphs/querying/from-an-application/ -/es/subgraphs/querying/graph-client/README/ -/es/subgraphs/querying/graph-client/architecture/ -/es/subgraphs/querying/graph-client/live/ -/es/subgraphs/querying/graphql-api/ -/es/subgraphs/querying/introduction/ -/es/subgraphs/querying/managing-api-keys/ -/es/subgraphs/querying/python/ -/es/subgraphs/querying/subgraph-id-vs-deployment-id/ -/es/subgraphs/quick-start/ -/es/subgraphs/upgrade-indexer/ -/es/substreams/developing/dev-container/ -/es/substreams/developing/sinks/ -/es/substreams/developing/solana/account-changes/ -/es/substreams/developing/solana/transactions/ -/es/substreams/introduction/ -/es/substreams/publishing/ -/es/substreams/quick-start/ -/es/supported-networks/ -/es/supported-networks/abstract-testnet/ -/es/supported-networks/abstract/ -/es/supported-networks/apechain-curtis/ -/es/supported-networks/apechain/ -/es/supported-networks/arbitrum-nova/ -/es/supported-networks/arbitrum-one/ -/es/supported-networks/arbitrum-sepolia/ -/es/supported-networks/arc-testnet/ -/es/supported-networks/autonomys-chronos/ -/es/supported-networks/autonomys/ -/es/supported-networks/avalanche/ -/es/supported-networks/base-sepolia/ -/es/supported-networks/base/ -/es/supported-networks/berachain-bepolia/ -/es/supported-networks/berachain/ -/es/supported-networks/blast-mainnet/ -/es/supported-networks/blast-testnet/ -/es/supported-networks/bnb-op/ -/es/supported-networks/bnb-svm/ -/es/supported-networks/boba-testnet/ -/es/supported-networks/boba/ -/es/supported-networks/botanix-testnet/ -/es/supported-networks/botanix/ -/es/supported-networks/bsc/ -/es/supported-networks/btc/ -/es/supported-networks/celo-sepolia/ -/es/supported-networks/celo/ -/es/supported-networks/chapel/ -/es/supported-networks/chiliz-testnet/ -/es/supported-networks/chiliz/ -/es/supported-networks/corn-testnet/ -/es/supported-networks/corn/ -/es/supported-networks/cronos/ -/es/supported-networks/eos/ -/es/supported-networks/etherlink-mainnet/ -/es/supported-networks/etherlink-shadownet/ -/es/supported-networks/etherlink-testnet/ -/es/supported-networks/fantom-testnet/ -/es/supported-networks/fantom/ -/es/supported-networks/fraxtal/ -/es/supported-networks/fuji/ -/es/supported-networks/fuse-testnet/ -/es/supported-networks/fuse/ -/es/supported-networks/gnosis-chiado-cl/ -/es/supported-networks/gnosis-chiado/ -/es/supported-networks/gnosis-cl/ -/es/supported-networks/gnosis/ -/es/supported-networks/hashkeychain-sepolia/ -/es/supported-networks/hashkeychain/ -/es/supported-networks/hemi-sepolia/ -/es/supported-networks/hemi/ -/es/supported-networks/holesky/ -/es/supported-networks/hoodi-cl/ -/es/supported-networks/hoodi/ -/es/supported-networks/injective-evm-testnet/ -/es/supported-networks/injective-evm/ -/es/supported-networks/injective-mainnet/ -/es/supported-networks/injective-testnet/ -/es/supported-networks/ink-sepolia/ -/es/supported-networks/ink/ -/es/supported-networks/iotex-testnet/ -/es/supported-networks/iotex/ -/es/supported-networks/joc-testnet/ -/es/supported-networks/joc/ -/es/supported-networks/jungle4/ -/es/supported-networks/kaia-testnet/ -/es/supported-networks/kaia/ -/es/supported-networks/katana-tatara/ -/es/supported-networks/katana/ -/es/supported-networks/kylin/ -/es/supported-networks/lens-testnet/ -/es/supported-networks/lens/ -/es/supported-networks/linea-sepolia/ -/es/supported-networks/linea/ -/es/supported-networks/litecoin/ -/es/supported-networks/lumia/ -/es/supported-networks/mainnet-cl/ -/es/supported-networks/mainnet/ -/es/supported-networks/manta/ -/es/supported-networks/mantra-mainnet/ -/es/supported-networks/mantra-testnet/ -/es/supported-networks/matic/ -/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/ -/es/supported-networks/mode-mainnet/ -/es/supported-networks/monad-testnet/ -/es/supported-networks/monad/ -/es/supported-networks/moonbeam/ -/es/supported-networks/moonriver/ -/es/supported-networks/near-mainnet/ -/es/supported-networks/near-testnet/ -/es/supported-networks/neox-testnet/ -/es/supported-networks/neox/ -/es/supported-networks/optimism-sepolia/ -/es/supported-networks/optimism/ -/es/supported-networks/peaq/ -/es/supported-networks/polkadot-testnet/ -/es/supported-networks/polygon-amoy/ -/es/supported-networks/polygon-zkevm-cardona/ -/es/supported-networks/polygon-zkevm/ -/es/supported-networks/ronin/ -/es/supported-networks/rootstock-testnet/ -/es/supported-networks/rootstock/ -/es/supported-networks/scroll-sepolia/ -/es/supported-networks/scroll/ -/es/supported-networks/sei-atlantic/ -/es/supported-networks/sei-mainnet/ -/es/supported-networks/sepolia-cl/ -/es/supported-networks/sepolia/ -/es/supported-networks/solana-accounts/ -/es/supported-networks/solana-devnet/ -/es/supported-networks/solana-mainnet-beta/ -/es/supported-networks/soneium-testnet/ -/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/ -/es/supported-networks/stellar-testnet/ -/es/supported-networks/stellar/ -/es/supported-networks/swellchain-sepolia/ -/es/supported-networks/swellchain/ -/es/supported-networks/telos-testnet/ -/es/supported-networks/telos/ -/es/supported-networks/tron-evm/ -/es/supported-networks/tron/ -/es/supported-networks/ultra/ -/es/supported-networks/unichain-testnet/ -/es/supported-networks/unichain/ -/es/supported-networks/vana-moksha/ -/es/supported-networks/vana/ -/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/ -/es/supported-networks/zilliqa-testnet/ -/es/supported-networks/zilliqa/ -/es/supported-networks/zksync-era-sepolia/ -/es/supported-networks/zksync-era/ -/es/supported-networks/zora/ -/es/token-api/endpoint-pricing/ -/es/token-api/evm-dexs/dexes/ -/es/token-api/evm-dexs/pools-ohlc/ -/es/token-api/evm-dexs/pools/ -/es/token-api/evm-dexs/swaps/ -/es/token-api/evm-nfts/collections/ -/es/token-api/evm-nfts/holders/ -/es/token-api/evm-nfts/items/ -/es/token-api/evm-nfts/ownerships/ -/es/token-api/evm-nfts/sales/ -/es/token-api/evm-nfts/transfers/ -/es/token-api/evm-tokens/balances-historical/ -/es/token-api/evm-tokens/balances-native/ -/es/token-api/evm-tokens/balances/ -/es/token-api/evm-tokens/holders/ -/es/token-api/evm-tokens/tokens/ -/es/token-api/evm-tokens/transfers/ -/es/token-api/faq/ -/es/token-api/monitoring/health/ -/es/token-api/monitoring/networks/ -/es/token-api/monitoring/version/ -/es/token-api/quick-start/ -/es/token-api/svm-dexs/dexes/ -/es/token-api/svm-dexs/pools-ohlc/ -/es/token-api/svm-dexs/pools/ -/es/token-api/svm-dexs/swaps/ -/es/token-api/svm-tokens/balances-native/ -/es/token-api/svm-tokens/balances/ -/es/token-api/svm-tokens/holders/ -/es/token-api/svm-tokens/owner/ -/es/token-api/svm-tokens/tokens/ -/es/token-api/svm-tokens/transfers/ -/es/token-api/tvm-dexs/dexes/ -/es/token-api/tvm-dexs/pools-ohlc/ -/es/token-api/tvm-dexs/swaps/ -/es/token-api/tvm-tokens/tokens/ -/es/token-api/tvm-tokens/transfers-native/ -/es/token-api/tvm-tokens/transfers/ -/fr/ -/fr/404/ -/fr/about/ -/fr/ai-suite/ai-introduction/ -/fr/ai-suite/subgraph-mcp/claude/ -/fr/ai-suite/subgraph-mcp/cline/ -/fr/ai-suite/subgraph-mcp/cursor/ -/fr/ai-suite/subgraph-mcp/introduction/ -/fr/ai-suite/token-api-mcp/claude/ -/fr/ai-suite/token-api-mcp/cline/ -/fr/ai-suite/token-api-mcp/cursor/ -/fr/ai-suite/token-api-mcp/introduction/ -/fr/archived/arbitrum/arbitrum-faq/ -/fr/archived/arbitrum/l2-transfer-tools-faq/ -/fr/archived/arbitrum/l2-transfer-tools-guide/ -/fr/archived/sunrise/ -/fr/contracts/ -/fr/graph-horizon/migration-guide/ -/fr/graph-horizon/overview/ -/fr/graph-horizon/what-changes/ -/fr/hypergraph/faq/ -/fr/hypergraph/overview/ -/fr/indexing/chain-integration-overview/ -/fr/indexing/new-chain-integration/ -/fr/indexing/overview/ -/fr/indexing/supported-network-requirements/ -/fr/indexing/tap/ -/fr/indexing/tooling/firehose/ -/fr/indexing/tooling/graph-node/ -/fr/indexing/tooling/graphcast/ -/fr/resources/benefits/ -/fr/resources/glossary/ -/fr/resources/migration-guides/assemblyscript-migration-guide/ -/fr/resources/migration-guides/graphql-validations-migration-guide/ -/fr/resources/migration-guides/migrate-from-alchemy/ -/fr/resources/roles/curating/ -/fr/resources/roles/delegating/delegating/ -/fr/resources/roles/delegating/undelegating/ -/fr/resources/subgraph-studio-faq/ -/fr/resources/tokenomics/ -/fr/subgraphs/best-practices/avoid-eth-calls/ -/fr/subgraphs/best-practices/derivedfrom/ -/fr/subgraphs/best-practices/grafting-hotfix/ -/fr/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/fr/subgraphs/best-practices/pruning/ -/fr/subgraphs/best-practices/timeseries/ -/fr/subgraphs/billing/ -/fr/subgraphs/developing/creating/advanced/ -/fr/subgraphs/developing/creating/assemblyscript-mappings/ -/fr/subgraphs/developing/creating/graph-node-dev/ -/fr/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/fr/subgraphs/developing/creating/graph-ts/README/ -/fr/subgraphs/developing/creating/graph-ts/api/ -/fr/subgraphs/developing/creating/graph-ts/common-issues/ -/fr/subgraphs/developing/creating/install-the-cli/ -/fr/subgraphs/developing/creating/ql-schema/ -/fr/subgraphs/developing/creating/starting-your-subgraph/ -/fr/subgraphs/developing/creating/subgraph-manifest/ -/fr/subgraphs/developing/creating/unit-testing-framework/ -/fr/subgraphs/developing/deploying/multiple-networks/ -/fr/subgraphs/developing/deploying/using-subgraph-studio/ -/fr/subgraphs/developing/developer-faq/ -/fr/subgraphs/developing/introduction/ -/fr/subgraphs/developing/managing/deleting-a-subgraph/ -/fr/subgraphs/developing/managing/transferring-a-subgraph/ -/fr/subgraphs/developing/publishing/publishing-a-subgraph/ -/fr/subgraphs/developing/subgraphs/ -/fr/subgraphs/explorer/ -/fr/subgraphs/fair-use-policy/ -/fr/subgraphs/guides/contract-analyzer/ -/fr/subgraphs/guides/enums/ -/fr/subgraphs/guides/grafting/ -/fr/subgraphs/guides/near/ -/fr/subgraphs/guides/polymarket/ -/fr/subgraphs/guides/secure-api-keys-nextjs/ -/fr/subgraphs/guides/subgraph-composition/ -/fr/subgraphs/guides/subgraph-debug-forking/ -/fr/subgraphs/guides/subgraph-uncrashable/ -/fr/subgraphs/guides/transfer-to-the-graph/ -/fr/subgraphs/querying/best-practices/ -/fr/subgraphs/querying/distributed-systems/ -/fr/subgraphs/querying/from-an-application/ -/fr/subgraphs/querying/graph-client/README/ -/fr/subgraphs/querying/graph-client/architecture/ -/fr/subgraphs/querying/graph-client/live/ -/fr/subgraphs/querying/graphql-api/ -/fr/subgraphs/querying/introduction/ -/fr/subgraphs/querying/managing-api-keys/ -/fr/subgraphs/querying/python/ -/fr/subgraphs/querying/subgraph-id-vs-deployment-id/ -/fr/subgraphs/quick-start/ -/fr/subgraphs/upgrade-indexer/ -/fr/substreams/developing/dev-container/ -/fr/substreams/developing/sinks/ -/fr/substreams/developing/solana/account-changes/ -/fr/substreams/developing/solana/transactions/ -/fr/substreams/introduction/ -/fr/substreams/publishing/ -/fr/substreams/quick-start/ -/fr/supported-networks/ -/fr/supported-networks/abstract-testnet/ -/fr/supported-networks/abstract/ -/fr/supported-networks/apechain-curtis/ -/fr/supported-networks/apechain/ -/fr/supported-networks/arbitrum-nova/ -/fr/supported-networks/arbitrum-one/ -/fr/supported-networks/arbitrum-sepolia/ -/fr/supported-networks/arc-testnet/ -/fr/supported-networks/autonomys-chronos/ -/fr/supported-networks/autonomys/ -/fr/supported-networks/avalanche/ -/fr/supported-networks/base-sepolia/ -/fr/supported-networks/base/ -/fr/supported-networks/berachain-bepolia/ -/fr/supported-networks/berachain/ -/fr/supported-networks/blast-mainnet/ -/fr/supported-networks/blast-testnet/ -/fr/supported-networks/bnb-op/ -/fr/supported-networks/bnb-svm/ -/fr/supported-networks/boba-testnet/ -/fr/supported-networks/boba/ -/fr/supported-networks/botanix-testnet/ -/fr/supported-networks/botanix/ -/fr/supported-networks/bsc/ -/fr/supported-networks/btc/ -/fr/supported-networks/celo-sepolia/ -/fr/supported-networks/celo/ -/fr/supported-networks/chapel/ -/fr/supported-networks/chiliz-testnet/ -/fr/supported-networks/chiliz/ -/fr/supported-networks/corn-testnet/ -/fr/supported-networks/corn/ -/fr/supported-networks/cronos/ -/fr/supported-networks/eos/ -/fr/supported-networks/etherlink-mainnet/ -/fr/supported-networks/etherlink-shadownet/ -/fr/supported-networks/etherlink-testnet/ -/fr/supported-networks/fantom-testnet/ -/fr/supported-networks/fantom/ -/fr/supported-networks/fraxtal/ -/fr/supported-networks/fuji/ -/fr/supported-networks/fuse-testnet/ -/fr/supported-networks/fuse/ -/fr/supported-networks/gnosis-chiado-cl/ -/fr/supported-networks/gnosis-chiado/ -/fr/supported-networks/gnosis-cl/ -/fr/supported-networks/gnosis/ -/fr/supported-networks/hashkeychain-sepolia/ -/fr/supported-networks/hashkeychain/ -/fr/supported-networks/hemi-sepolia/ -/fr/supported-networks/hemi/ -/fr/supported-networks/holesky/ -/fr/supported-networks/hoodi-cl/ -/fr/supported-networks/hoodi/ -/fr/supported-networks/injective-evm-testnet/ -/fr/supported-networks/injective-evm/ -/fr/supported-networks/injective-mainnet/ -/fr/supported-networks/injective-testnet/ -/fr/supported-networks/ink-sepolia/ -/fr/supported-networks/ink/ -/fr/supported-networks/iotex-testnet/ -/fr/supported-networks/iotex/ -/fr/supported-networks/joc-testnet/ -/fr/supported-networks/joc/ -/fr/supported-networks/jungle4/ -/fr/supported-networks/kaia-testnet/ -/fr/supported-networks/kaia/ -/fr/supported-networks/katana-tatara/ -/fr/supported-networks/katana/ -/fr/supported-networks/kylin/ -/fr/supported-networks/lens-testnet/ -/fr/supported-networks/lens/ -/fr/supported-networks/linea-sepolia/ -/fr/supported-networks/linea/ -/fr/supported-networks/litecoin/ -/fr/supported-networks/lumia/ -/fr/supported-networks/mainnet-cl/ -/fr/supported-networks/mainnet/ -/fr/supported-networks/manta/ -/fr/supported-networks/mantra-mainnet/ -/fr/supported-networks/mantra-testnet/ -/fr/supported-networks/matic/ -/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/ -/fr/supported-networks/mode-mainnet/ -/fr/supported-networks/monad-testnet/ -/fr/supported-networks/monad/ -/fr/supported-networks/moonbeam/ -/fr/supported-networks/moonriver/ -/fr/supported-networks/near-mainnet/ -/fr/supported-networks/near-testnet/ -/fr/supported-networks/neox-testnet/ -/fr/supported-networks/neox/ -/fr/supported-networks/optimism-sepolia/ -/fr/supported-networks/optimism/ -/fr/supported-networks/peaq/ -/fr/supported-networks/polkadot-testnet/ -/fr/supported-networks/polygon-amoy/ -/fr/supported-networks/polygon-zkevm-cardona/ -/fr/supported-networks/polygon-zkevm/ -/fr/supported-networks/ronin/ -/fr/supported-networks/rootstock-testnet/ -/fr/supported-networks/rootstock/ -/fr/supported-networks/scroll-sepolia/ -/fr/supported-networks/scroll/ -/fr/supported-networks/sei-atlantic/ -/fr/supported-networks/sei-mainnet/ -/fr/supported-networks/sepolia-cl/ -/fr/supported-networks/sepolia/ -/fr/supported-networks/solana-accounts/ -/fr/supported-networks/solana-devnet/ -/fr/supported-networks/solana-mainnet-beta/ -/fr/supported-networks/soneium-testnet/ -/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/ -/fr/supported-networks/stellar-testnet/ -/fr/supported-networks/stellar/ -/fr/supported-networks/swellchain-sepolia/ -/fr/supported-networks/swellchain/ -/fr/supported-networks/telos-testnet/ -/fr/supported-networks/telos/ -/fr/supported-networks/tron-evm/ -/fr/supported-networks/tron/ -/fr/supported-networks/ultra/ -/fr/supported-networks/unichain-testnet/ -/fr/supported-networks/unichain/ -/fr/supported-networks/vana-moksha/ -/fr/supported-networks/vana/ -/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/ -/fr/supported-networks/zilliqa-testnet/ -/fr/supported-networks/zilliqa/ -/fr/supported-networks/zksync-era-sepolia/ -/fr/supported-networks/zksync-era/ -/fr/supported-networks/zora/ -/fr/token-api/endpoint-pricing/ -/fr/token-api/evm-dexs/dexes/ -/fr/token-api/evm-dexs/pools-ohlc/ -/fr/token-api/evm-dexs/pools/ -/fr/token-api/evm-dexs/swaps/ -/fr/token-api/evm-nfts/collections/ -/fr/token-api/evm-nfts/holders/ -/fr/token-api/evm-nfts/items/ -/fr/token-api/evm-nfts/ownerships/ -/fr/token-api/evm-nfts/sales/ -/fr/token-api/evm-nfts/transfers/ -/fr/token-api/evm-tokens/balances-historical/ -/fr/token-api/evm-tokens/balances-native/ -/fr/token-api/evm-tokens/balances/ -/fr/token-api/evm-tokens/holders/ -/fr/token-api/evm-tokens/tokens/ -/fr/token-api/evm-tokens/transfers/ -/fr/token-api/faq/ -/fr/token-api/monitoring/health/ -/fr/token-api/monitoring/networks/ -/fr/token-api/monitoring/version/ -/fr/token-api/quick-start/ -/fr/token-api/svm-dexs/dexes/ -/fr/token-api/svm-dexs/pools-ohlc/ -/fr/token-api/svm-dexs/pools/ -/fr/token-api/svm-dexs/swaps/ -/fr/token-api/svm-tokens/balances-native/ -/fr/token-api/svm-tokens/balances/ -/fr/token-api/svm-tokens/holders/ -/fr/token-api/svm-tokens/owner/ -/fr/token-api/svm-tokens/tokens/ -/fr/token-api/svm-tokens/transfers/ -/fr/token-api/tvm-dexs/dexes/ -/fr/token-api/tvm-dexs/pools-ohlc/ -/fr/token-api/tvm-dexs/swaps/ -/fr/token-api/tvm-tokens/tokens/ -/fr/token-api/tvm-tokens/transfers-native/ -/fr/token-api/tvm-tokens/transfers/ -/hi/ -/hi/404/ -/hi/about/ -/hi/ai-suite/ai-introduction/ -/hi/ai-suite/subgraph-mcp/claude/ -/hi/ai-suite/subgraph-mcp/cline/ -/hi/ai-suite/subgraph-mcp/cursor/ -/hi/ai-suite/subgraph-mcp/introduction/ -/hi/ai-suite/token-api-mcp/claude/ -/hi/ai-suite/token-api-mcp/cline/ -/hi/ai-suite/token-api-mcp/cursor/ -/hi/ai-suite/token-api-mcp/introduction/ -/hi/archived/arbitrum/arbitrum-faq/ -/hi/archived/arbitrum/l2-transfer-tools-faq/ -/hi/archived/arbitrum/l2-transfer-tools-guide/ -/hi/archived/sunrise/ -/hi/contracts/ -/hi/graph-horizon/migration-guide/ -/hi/graph-horizon/overview/ -/hi/graph-horizon/what-changes/ -/hi/hypergraph/faq/ -/hi/hypergraph/overview/ -/hi/indexing/chain-integration-overview/ -/hi/indexing/new-chain-integration/ -/hi/indexing/overview/ -/hi/indexing/supported-network-requirements/ -/hi/indexing/tap/ -/hi/indexing/tooling/firehose/ -/hi/indexing/tooling/graph-node/ -/hi/indexing/tooling/graphcast/ -/hi/resources/benefits/ -/hi/resources/glossary/ -/hi/resources/migration-guides/assemblyscript-migration-guide/ -/hi/resources/migration-guides/graphql-validations-migration-guide/ -/hi/resources/migration-guides/migrate-from-alchemy/ -/hi/resources/roles/curating/ -/hi/resources/roles/delegating/delegating/ -/hi/resources/roles/delegating/undelegating/ -/hi/resources/subgraph-studio-faq/ -/hi/resources/tokenomics/ -/hi/subgraphs/best-practices/avoid-eth-calls/ -/hi/subgraphs/best-practices/derivedfrom/ -/hi/subgraphs/best-practices/grafting-hotfix/ -/hi/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/hi/subgraphs/best-practices/pruning/ -/hi/subgraphs/best-practices/timeseries/ -/hi/subgraphs/billing/ -/hi/subgraphs/developing/creating/advanced/ -/hi/subgraphs/developing/creating/assemblyscript-mappings/ -/hi/subgraphs/developing/creating/graph-node-dev/ -/hi/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/hi/subgraphs/developing/creating/graph-ts/README/ -/hi/subgraphs/developing/creating/graph-ts/api/ -/hi/subgraphs/developing/creating/graph-ts/common-issues/ -/hi/subgraphs/developing/creating/install-the-cli/ -/hi/subgraphs/developing/creating/ql-schema/ -/hi/subgraphs/developing/creating/starting-your-subgraph/ -/hi/subgraphs/developing/creating/subgraph-manifest/ -/hi/subgraphs/developing/creating/unit-testing-framework/ -/hi/subgraphs/developing/deploying/multiple-networks/ -/hi/subgraphs/developing/deploying/using-subgraph-studio/ -/hi/subgraphs/developing/developer-faq/ -/hi/subgraphs/developing/introduction/ -/hi/subgraphs/developing/managing/deleting-a-subgraph/ -/hi/subgraphs/developing/managing/transferring-a-subgraph/ -/hi/subgraphs/developing/publishing/publishing-a-subgraph/ -/hi/subgraphs/developing/subgraphs/ -/hi/subgraphs/explorer/ -/hi/subgraphs/fair-use-policy/ -/hi/subgraphs/guides/contract-analyzer/ -/hi/subgraphs/guides/enums/ -/hi/subgraphs/guides/grafting/ -/hi/subgraphs/guides/near/ -/hi/subgraphs/guides/polymarket/ -/hi/subgraphs/guides/secure-api-keys-nextjs/ -/hi/subgraphs/guides/subgraph-composition/ -/hi/subgraphs/guides/subgraph-debug-forking/ -/hi/subgraphs/guides/subgraph-uncrashable/ -/hi/subgraphs/guides/transfer-to-the-graph/ -/hi/subgraphs/querying/best-practices/ -/hi/subgraphs/querying/distributed-systems/ -/hi/subgraphs/querying/from-an-application/ -/hi/subgraphs/querying/graph-client/README/ -/hi/subgraphs/querying/graph-client/architecture/ -/hi/subgraphs/querying/graph-client/live/ -/hi/subgraphs/querying/graphql-api/ -/hi/subgraphs/querying/introduction/ -/hi/subgraphs/querying/managing-api-keys/ -/hi/subgraphs/querying/python/ -/hi/subgraphs/querying/subgraph-id-vs-deployment-id/ -/hi/subgraphs/quick-start/ -/hi/subgraphs/upgrade-indexer/ -/hi/substreams/developing/dev-container/ -/hi/substreams/developing/sinks/ -/hi/substreams/developing/solana/account-changes/ -/hi/substreams/developing/solana/transactions/ -/hi/substreams/introduction/ -/hi/substreams/publishing/ -/hi/substreams/quick-start/ -/hi/supported-networks/ -/hi/supported-networks/abstract-testnet/ -/hi/supported-networks/abstract/ -/hi/supported-networks/apechain-curtis/ -/hi/supported-networks/apechain/ -/hi/supported-networks/arbitrum-nova/ -/hi/supported-networks/arbitrum-one/ -/hi/supported-networks/arbitrum-sepolia/ -/hi/supported-networks/arc-testnet/ -/hi/supported-networks/autonomys-chronos/ -/hi/supported-networks/autonomys/ -/hi/supported-networks/avalanche/ -/hi/supported-networks/base-sepolia/ -/hi/supported-networks/base/ -/hi/supported-networks/berachain-bepolia/ -/hi/supported-networks/berachain/ -/hi/supported-networks/blast-mainnet/ -/hi/supported-networks/blast-testnet/ -/hi/supported-networks/bnb-op/ -/hi/supported-networks/bnb-svm/ -/hi/supported-networks/boba-testnet/ -/hi/supported-networks/boba/ -/hi/supported-networks/botanix-testnet/ -/hi/supported-networks/botanix/ -/hi/supported-networks/bsc/ -/hi/supported-networks/btc/ -/hi/supported-networks/celo-sepolia/ -/hi/supported-networks/celo/ -/hi/supported-networks/chapel/ -/hi/supported-networks/chiliz-testnet/ -/hi/supported-networks/chiliz/ -/hi/supported-networks/corn-testnet/ -/hi/supported-networks/corn/ -/hi/supported-networks/cronos/ -/hi/supported-networks/eos/ -/hi/supported-networks/etherlink-mainnet/ -/hi/supported-networks/etherlink-shadownet/ -/hi/supported-networks/etherlink-testnet/ -/hi/supported-networks/fantom-testnet/ -/hi/supported-networks/fantom/ -/hi/supported-networks/fraxtal/ -/hi/supported-networks/fuji/ -/hi/supported-networks/fuse-testnet/ -/hi/supported-networks/fuse/ -/hi/supported-networks/gnosis-chiado-cl/ -/hi/supported-networks/gnosis-chiado/ -/hi/supported-networks/gnosis-cl/ -/hi/supported-networks/gnosis/ -/hi/supported-networks/hashkeychain-sepolia/ -/hi/supported-networks/hashkeychain/ -/hi/supported-networks/hemi-sepolia/ -/hi/supported-networks/hemi/ -/hi/supported-networks/holesky/ -/hi/supported-networks/hoodi-cl/ -/hi/supported-networks/hoodi/ -/hi/supported-networks/injective-evm-testnet/ -/hi/supported-networks/injective-evm/ -/hi/supported-networks/injective-mainnet/ -/hi/supported-networks/injective-testnet/ -/hi/supported-networks/ink-sepolia/ -/hi/supported-networks/ink/ -/hi/supported-networks/iotex-testnet/ -/hi/supported-networks/iotex/ -/hi/supported-networks/joc-testnet/ -/hi/supported-networks/joc/ -/hi/supported-networks/jungle4/ -/hi/supported-networks/kaia-testnet/ -/hi/supported-networks/kaia/ -/hi/supported-networks/katana-tatara/ -/hi/supported-networks/katana/ -/hi/supported-networks/kylin/ -/hi/supported-networks/lens-testnet/ -/hi/supported-networks/lens/ -/hi/supported-networks/linea-sepolia/ -/hi/supported-networks/linea/ -/hi/supported-networks/litecoin/ -/hi/supported-networks/lumia/ -/hi/supported-networks/mainnet-cl/ -/hi/supported-networks/mainnet/ -/hi/supported-networks/manta/ -/hi/supported-networks/mantra-mainnet/ -/hi/supported-networks/mantra-testnet/ -/hi/supported-networks/matic/ -/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/ -/hi/supported-networks/mode-mainnet/ -/hi/supported-networks/monad-testnet/ -/hi/supported-networks/monad/ -/hi/supported-networks/moonbeam/ -/hi/supported-networks/moonriver/ -/hi/supported-networks/near-mainnet/ -/hi/supported-networks/near-testnet/ -/hi/supported-networks/neox-testnet/ -/hi/supported-networks/neox/ -/hi/supported-networks/optimism-sepolia/ -/hi/supported-networks/optimism/ -/hi/supported-networks/peaq/ -/hi/supported-networks/polkadot-testnet/ -/hi/supported-networks/polygon-amoy/ -/hi/supported-networks/polygon-zkevm-cardona/ -/hi/supported-networks/polygon-zkevm/ -/hi/supported-networks/ronin/ -/hi/supported-networks/rootstock-testnet/ -/hi/supported-networks/rootstock/ -/hi/supported-networks/scroll-sepolia/ -/hi/supported-networks/scroll/ -/hi/supported-networks/sei-atlantic/ -/hi/supported-networks/sei-mainnet/ -/hi/supported-networks/sepolia-cl/ -/hi/supported-networks/sepolia/ -/hi/supported-networks/solana-accounts/ -/hi/supported-networks/solana-devnet/ -/hi/supported-networks/solana-mainnet-beta/ -/hi/supported-networks/soneium-testnet/ -/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/ -/hi/supported-networks/stellar-testnet/ -/hi/supported-networks/stellar/ -/hi/supported-networks/swellchain-sepolia/ -/hi/supported-networks/swellchain/ -/hi/supported-networks/telos-testnet/ -/hi/supported-networks/telos/ -/hi/supported-networks/tron-evm/ -/hi/supported-networks/tron/ -/hi/supported-networks/ultra/ -/hi/supported-networks/unichain-testnet/ -/hi/supported-networks/unichain/ -/hi/supported-networks/vana-moksha/ -/hi/supported-networks/vana/ -/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/ -/hi/supported-networks/zilliqa-testnet/ -/hi/supported-networks/zilliqa/ -/hi/supported-networks/zksync-era-sepolia/ -/hi/supported-networks/zksync-era/ -/hi/supported-networks/zora/ -/hi/token-api/endpoint-pricing/ -/hi/token-api/evm-dexs/dexes/ -/hi/token-api/evm-dexs/pools-ohlc/ -/hi/token-api/evm-dexs/pools/ -/hi/token-api/evm-dexs/swaps/ -/hi/token-api/evm-nfts/collections/ -/hi/token-api/evm-nfts/holders/ -/hi/token-api/evm-nfts/items/ -/hi/token-api/evm-nfts/ownerships/ -/hi/token-api/evm-nfts/sales/ -/hi/token-api/evm-nfts/transfers/ -/hi/token-api/evm-tokens/balances-historical/ -/hi/token-api/evm-tokens/balances-native/ -/hi/token-api/evm-tokens/balances/ -/hi/token-api/evm-tokens/holders/ -/hi/token-api/evm-tokens/tokens/ -/hi/token-api/evm-tokens/transfers/ -/hi/token-api/faq/ -/hi/token-api/monitoring/health/ -/hi/token-api/monitoring/networks/ -/hi/token-api/monitoring/version/ -/hi/token-api/quick-start/ -/hi/token-api/svm-dexs/dexes/ -/hi/token-api/svm-dexs/pools-ohlc/ -/hi/token-api/svm-dexs/pools/ -/hi/token-api/svm-dexs/swaps/ -/hi/token-api/svm-tokens/balances-native/ -/hi/token-api/svm-tokens/balances/ -/hi/token-api/svm-tokens/holders/ -/hi/token-api/svm-tokens/owner/ -/hi/token-api/svm-tokens/tokens/ -/hi/token-api/svm-tokens/transfers/ -/hi/token-api/tvm-dexs/dexes/ -/hi/token-api/tvm-dexs/pools-ohlc/ -/hi/token-api/tvm-dexs/swaps/ -/hi/token-api/tvm-tokens/tokens/ -/hi/token-api/tvm-tokens/transfers-native/ -/hi/token-api/tvm-tokens/transfers/ -/it/ -/it/404/ -/it/about/ -/it/ai-suite/ai-introduction/ -/it/ai-suite/subgraph-mcp/claude/ -/it/ai-suite/subgraph-mcp/cline/ -/it/ai-suite/subgraph-mcp/cursor/ -/it/ai-suite/subgraph-mcp/introduction/ -/it/ai-suite/token-api-mcp/claude/ -/it/ai-suite/token-api-mcp/cline/ -/it/ai-suite/token-api-mcp/cursor/ -/it/ai-suite/token-api-mcp/introduction/ -/it/archived/arbitrum/arbitrum-faq/ -/it/archived/arbitrum/l2-transfer-tools-faq/ -/it/archived/arbitrum/l2-transfer-tools-guide/ -/it/archived/sunrise/ -/it/contracts/ -/it/graph-horizon/migration-guide/ -/it/graph-horizon/overview/ -/it/graph-horizon/what-changes/ -/it/hypergraph/faq/ -/it/hypergraph/overview/ -/it/indexing/chain-integration-overview/ -/it/indexing/new-chain-integration/ -/it/indexing/overview/ -/it/indexing/supported-network-requirements/ -/it/indexing/tap/ -/it/indexing/tooling/firehose/ -/it/indexing/tooling/graph-node/ -/it/indexing/tooling/graphcast/ -/it/resources/benefits/ -/it/resources/glossary/ -/it/resources/migration-guides/assemblyscript-migration-guide/ -/it/resources/migration-guides/graphql-validations-migration-guide/ -/it/resources/migration-guides/migrate-from-alchemy/ -/it/resources/roles/curating/ -/it/resources/roles/delegating/delegating/ -/it/resources/roles/delegating/undelegating/ -/it/resources/subgraph-studio-faq/ -/it/resources/tokenomics/ -/it/subgraphs/best-practices/avoid-eth-calls/ -/it/subgraphs/best-practices/derivedfrom/ -/it/subgraphs/best-practices/grafting-hotfix/ -/it/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/it/subgraphs/best-practices/pruning/ -/it/subgraphs/best-practices/timeseries/ -/it/subgraphs/billing/ -/it/subgraphs/developing/creating/advanced/ -/it/subgraphs/developing/creating/assemblyscript-mappings/ -/it/subgraphs/developing/creating/graph-node-dev/ -/it/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/it/subgraphs/developing/creating/graph-ts/README/ -/it/subgraphs/developing/creating/graph-ts/api/ -/it/subgraphs/developing/creating/graph-ts/common-issues/ -/it/subgraphs/developing/creating/install-the-cli/ -/it/subgraphs/developing/creating/ql-schema/ -/it/subgraphs/developing/creating/starting-your-subgraph/ -/it/subgraphs/developing/creating/subgraph-manifest/ -/it/subgraphs/developing/creating/unit-testing-framework/ -/it/subgraphs/developing/deploying/multiple-networks/ -/it/subgraphs/developing/deploying/using-subgraph-studio/ -/it/subgraphs/developing/developer-faq/ -/it/subgraphs/developing/introduction/ -/it/subgraphs/developing/managing/deleting-a-subgraph/ -/it/subgraphs/developing/managing/transferring-a-subgraph/ -/it/subgraphs/developing/publishing/publishing-a-subgraph/ -/it/subgraphs/developing/subgraphs/ -/it/subgraphs/explorer/ -/it/subgraphs/fair-use-policy/ -/it/subgraphs/guides/contract-analyzer/ -/it/subgraphs/guides/enums/ -/it/subgraphs/guides/grafting/ -/it/subgraphs/guides/near/ -/it/subgraphs/guides/polymarket/ -/it/subgraphs/guides/secure-api-keys-nextjs/ -/it/subgraphs/guides/subgraph-composition/ -/it/subgraphs/guides/subgraph-debug-forking/ -/it/subgraphs/guides/subgraph-uncrashable/ -/it/subgraphs/guides/transfer-to-the-graph/ -/it/subgraphs/querying/best-practices/ -/it/subgraphs/querying/distributed-systems/ -/it/subgraphs/querying/from-an-application/ -/it/subgraphs/querying/graph-client/README/ -/it/subgraphs/querying/graph-client/architecture/ -/it/subgraphs/querying/graph-client/live/ -/it/subgraphs/querying/graphql-api/ -/it/subgraphs/querying/introduction/ -/it/subgraphs/querying/managing-api-keys/ -/it/subgraphs/querying/python/ -/it/subgraphs/querying/subgraph-id-vs-deployment-id/ -/it/subgraphs/quick-start/ -/it/subgraphs/upgrade-indexer/ -/it/substreams/developing/dev-container/ -/it/substreams/developing/sinks/ -/it/substreams/developing/solana/account-changes/ -/it/substreams/developing/solana/transactions/ -/it/substreams/introduction/ -/it/substreams/publishing/ -/it/substreams/quick-start/ -/it/supported-networks/ -/it/supported-networks/abstract-testnet/ -/it/supported-networks/abstract/ -/it/supported-networks/apechain-curtis/ -/it/supported-networks/apechain/ -/it/supported-networks/arbitrum-nova/ -/it/supported-networks/arbitrum-one/ -/it/supported-networks/arbitrum-sepolia/ -/it/supported-networks/arc-testnet/ -/it/supported-networks/autonomys-chronos/ -/it/supported-networks/autonomys/ -/it/supported-networks/avalanche/ -/it/supported-networks/base-sepolia/ -/it/supported-networks/base/ -/it/supported-networks/berachain-bepolia/ -/it/supported-networks/berachain/ -/it/supported-networks/blast-mainnet/ -/it/supported-networks/blast-testnet/ -/it/supported-networks/bnb-op/ -/it/supported-networks/bnb-svm/ -/it/supported-networks/boba-testnet/ -/it/supported-networks/boba/ -/it/supported-networks/botanix-testnet/ -/it/supported-networks/botanix/ -/it/supported-networks/bsc/ -/it/supported-networks/btc/ -/it/supported-networks/celo-sepolia/ -/it/supported-networks/celo/ -/it/supported-networks/chapel/ -/it/supported-networks/chiliz-testnet/ -/it/supported-networks/chiliz/ -/it/supported-networks/corn-testnet/ -/it/supported-networks/corn/ -/it/supported-networks/cronos/ -/it/supported-networks/eos/ -/it/supported-networks/etherlink-mainnet/ -/it/supported-networks/etherlink-shadownet/ -/it/supported-networks/etherlink-testnet/ -/it/supported-networks/fantom-testnet/ -/it/supported-networks/fantom/ -/it/supported-networks/fraxtal/ -/it/supported-networks/fuji/ -/it/supported-networks/fuse-testnet/ -/it/supported-networks/fuse/ -/it/supported-networks/gnosis-chiado-cl/ -/it/supported-networks/gnosis-chiado/ -/it/supported-networks/gnosis-cl/ -/it/supported-networks/gnosis/ -/it/supported-networks/hashkeychain-sepolia/ -/it/supported-networks/hashkeychain/ -/it/supported-networks/hemi-sepolia/ -/it/supported-networks/hemi/ -/it/supported-networks/holesky/ -/it/supported-networks/hoodi-cl/ -/it/supported-networks/hoodi/ -/it/supported-networks/injective-evm-testnet/ -/it/supported-networks/injective-evm/ -/it/supported-networks/injective-mainnet/ -/it/supported-networks/injective-testnet/ -/it/supported-networks/ink-sepolia/ -/it/supported-networks/ink/ -/it/supported-networks/iotex-testnet/ -/it/supported-networks/iotex/ -/it/supported-networks/joc-testnet/ -/it/supported-networks/joc/ -/it/supported-networks/jungle4/ -/it/supported-networks/kaia-testnet/ -/it/supported-networks/kaia/ -/it/supported-networks/katana-tatara/ -/it/supported-networks/katana/ -/it/supported-networks/kylin/ -/it/supported-networks/lens-testnet/ -/it/supported-networks/lens/ -/it/supported-networks/linea-sepolia/ -/it/supported-networks/linea/ -/it/supported-networks/litecoin/ -/it/supported-networks/lumia/ -/it/supported-networks/mainnet-cl/ -/it/supported-networks/mainnet/ -/it/supported-networks/manta/ -/it/supported-networks/mantra-mainnet/ -/it/supported-networks/mantra-testnet/ -/it/supported-networks/matic/ -/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/ -/it/supported-networks/mode-mainnet/ -/it/supported-networks/monad-testnet/ -/it/supported-networks/monad/ -/it/supported-networks/moonbeam/ -/it/supported-networks/moonriver/ -/it/supported-networks/near-mainnet/ -/it/supported-networks/near-testnet/ -/it/supported-networks/neox-testnet/ -/it/supported-networks/neox/ -/it/supported-networks/optimism-sepolia/ -/it/supported-networks/optimism/ -/it/supported-networks/peaq/ -/it/supported-networks/polkadot-testnet/ -/it/supported-networks/polygon-amoy/ -/it/supported-networks/polygon-zkevm-cardona/ -/it/supported-networks/polygon-zkevm/ -/it/supported-networks/ronin/ -/it/supported-networks/rootstock-testnet/ -/it/supported-networks/rootstock/ -/it/supported-networks/scroll-sepolia/ -/it/supported-networks/scroll/ -/it/supported-networks/sei-atlantic/ -/it/supported-networks/sei-mainnet/ -/it/supported-networks/sepolia-cl/ -/it/supported-networks/sepolia/ -/it/supported-networks/solana-accounts/ -/it/supported-networks/solana-devnet/ -/it/supported-networks/solana-mainnet-beta/ -/it/supported-networks/soneium-testnet/ -/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/ -/it/supported-networks/stellar-testnet/ -/it/supported-networks/stellar/ -/it/supported-networks/swellchain-sepolia/ -/it/supported-networks/swellchain/ -/it/supported-networks/telos-testnet/ -/it/supported-networks/telos/ -/it/supported-networks/tron-evm/ -/it/supported-networks/tron/ -/it/supported-networks/ultra/ -/it/supported-networks/unichain-testnet/ -/it/supported-networks/unichain/ -/it/supported-networks/vana-moksha/ -/it/supported-networks/vana/ -/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/ -/it/supported-networks/zilliqa-testnet/ -/it/supported-networks/zilliqa/ -/it/supported-networks/zksync-era-sepolia/ -/it/supported-networks/zksync-era/ -/it/supported-networks/zora/ -/it/token-api/endpoint-pricing/ -/it/token-api/evm-dexs/dexes/ -/it/token-api/evm-dexs/pools-ohlc/ -/it/token-api/evm-dexs/pools/ -/it/token-api/evm-dexs/swaps/ -/it/token-api/evm-nfts/collections/ -/it/token-api/evm-nfts/holders/ -/it/token-api/evm-nfts/items/ -/it/token-api/evm-nfts/ownerships/ -/it/token-api/evm-nfts/sales/ -/it/token-api/evm-nfts/transfers/ -/it/token-api/evm-tokens/balances-historical/ -/it/token-api/evm-tokens/balances-native/ -/it/token-api/evm-tokens/balances/ -/it/token-api/evm-tokens/holders/ -/it/token-api/evm-tokens/tokens/ -/it/token-api/evm-tokens/transfers/ -/it/token-api/faq/ -/it/token-api/monitoring/health/ -/it/token-api/monitoring/networks/ -/it/token-api/monitoring/version/ -/it/token-api/quick-start/ -/it/token-api/svm-dexs/dexes/ -/it/token-api/svm-dexs/pools-ohlc/ -/it/token-api/svm-dexs/pools/ -/it/token-api/svm-dexs/swaps/ -/it/token-api/svm-tokens/balances-native/ -/it/token-api/svm-tokens/balances/ -/it/token-api/svm-tokens/holders/ -/it/token-api/svm-tokens/owner/ -/it/token-api/svm-tokens/tokens/ -/it/token-api/svm-tokens/transfers/ -/it/token-api/tvm-dexs/dexes/ -/it/token-api/tvm-dexs/pools-ohlc/ -/it/token-api/tvm-dexs/swaps/ -/it/token-api/tvm-tokens/tokens/ -/it/token-api/tvm-tokens/transfers-native/ -/it/token-api/tvm-tokens/transfers/ -/ja/ -/ja/404/ -/ja/about/ -/ja/ai-suite/ai-introduction/ -/ja/ai-suite/subgraph-mcp/claude/ -/ja/ai-suite/subgraph-mcp/cline/ -/ja/ai-suite/subgraph-mcp/cursor/ -/ja/ai-suite/subgraph-mcp/introduction/ -/ja/ai-suite/token-api-mcp/claude/ -/ja/ai-suite/token-api-mcp/cline/ -/ja/ai-suite/token-api-mcp/cursor/ -/ja/ai-suite/token-api-mcp/introduction/ -/ja/archived/arbitrum/arbitrum-faq/ -/ja/archived/arbitrum/l2-transfer-tools-faq/ -/ja/archived/arbitrum/l2-transfer-tools-guide/ -/ja/archived/sunrise/ -/ja/contracts/ -/ja/graph-horizon/migration-guide/ -/ja/graph-horizon/overview/ -/ja/graph-horizon/what-changes/ -/ja/hypergraph/faq/ -/ja/hypergraph/overview/ -/ja/indexing/chain-integration-overview/ -/ja/indexing/new-chain-integration/ -/ja/indexing/overview/ -/ja/indexing/supported-network-requirements/ -/ja/indexing/tap/ -/ja/indexing/tooling/firehose/ -/ja/indexing/tooling/graph-node/ -/ja/indexing/tooling/graphcast/ -/ja/resources/benefits/ -/ja/resources/glossary/ -/ja/resources/migration-guides/assemblyscript-migration-guide/ -/ja/resources/migration-guides/graphql-validations-migration-guide/ -/ja/resources/migration-guides/migrate-from-alchemy/ -/ja/resources/roles/curating/ -/ja/resources/roles/delegating/delegating/ -/ja/resources/roles/delegating/undelegating/ -/ja/resources/subgraph-studio-faq/ -/ja/resources/tokenomics/ -/ja/subgraphs/best-practices/avoid-eth-calls/ -/ja/subgraphs/best-practices/derivedfrom/ -/ja/subgraphs/best-practices/grafting-hotfix/ -/ja/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/ja/subgraphs/best-practices/pruning/ -/ja/subgraphs/best-practices/timeseries/ -/ja/subgraphs/billing/ -/ja/subgraphs/developing/creating/advanced/ -/ja/subgraphs/developing/creating/assemblyscript-mappings/ -/ja/subgraphs/developing/creating/graph-node-dev/ -/ja/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/ja/subgraphs/developing/creating/graph-ts/README/ -/ja/subgraphs/developing/creating/graph-ts/api/ -/ja/subgraphs/developing/creating/graph-ts/common-issues/ -/ja/subgraphs/developing/creating/install-the-cli/ -/ja/subgraphs/developing/creating/ql-schema/ -/ja/subgraphs/developing/creating/starting-your-subgraph/ -/ja/subgraphs/developing/creating/subgraph-manifest/ -/ja/subgraphs/developing/creating/unit-testing-framework/ -/ja/subgraphs/developing/deploying/multiple-networks/ -/ja/subgraphs/developing/deploying/using-subgraph-studio/ -/ja/subgraphs/developing/developer-faq/ -/ja/subgraphs/developing/introduction/ -/ja/subgraphs/developing/managing/deleting-a-subgraph/ -/ja/subgraphs/developing/managing/transferring-a-subgraph/ -/ja/subgraphs/developing/publishing/publishing-a-subgraph/ -/ja/subgraphs/developing/subgraphs/ -/ja/subgraphs/explorer/ -/ja/subgraphs/fair-use-policy/ -/ja/subgraphs/guides/contract-analyzer/ -/ja/subgraphs/guides/enums/ -/ja/subgraphs/guides/grafting/ -/ja/subgraphs/guides/near/ -/ja/subgraphs/guides/polymarket/ -/ja/subgraphs/guides/secure-api-keys-nextjs/ -/ja/subgraphs/guides/subgraph-composition/ -/ja/subgraphs/guides/subgraph-debug-forking/ -/ja/subgraphs/guides/subgraph-uncrashable/ -/ja/subgraphs/guides/transfer-to-the-graph/ -/ja/subgraphs/querying/best-practices/ -/ja/subgraphs/querying/distributed-systems/ -/ja/subgraphs/querying/from-an-application/ -/ja/subgraphs/querying/graph-client/README/ -/ja/subgraphs/querying/graph-client/architecture/ -/ja/subgraphs/querying/graph-client/live/ -/ja/subgraphs/querying/graphql-api/ -/ja/subgraphs/querying/introduction/ -/ja/subgraphs/querying/managing-api-keys/ -/ja/subgraphs/querying/python/ -/ja/subgraphs/querying/subgraph-id-vs-deployment-id/ -/ja/subgraphs/quick-start/ -/ja/subgraphs/upgrade-indexer/ -/ja/substreams/developing/dev-container/ -/ja/substreams/developing/sinks/ -/ja/substreams/developing/solana/account-changes/ -/ja/substreams/developing/solana/transactions/ -/ja/substreams/introduction/ -/ja/substreams/publishing/ -/ja/substreams/quick-start/ -/ja/supported-networks/ -/ja/supported-networks/abstract-testnet/ -/ja/supported-networks/abstract/ -/ja/supported-networks/apechain-curtis/ -/ja/supported-networks/apechain/ -/ja/supported-networks/arbitrum-nova/ -/ja/supported-networks/arbitrum-one/ -/ja/supported-networks/arbitrum-sepolia/ -/ja/supported-networks/arc-testnet/ -/ja/supported-networks/autonomys-chronos/ -/ja/supported-networks/autonomys/ -/ja/supported-networks/avalanche/ -/ja/supported-networks/base-sepolia/ -/ja/supported-networks/base/ -/ja/supported-networks/berachain-bepolia/ -/ja/supported-networks/berachain/ -/ja/supported-networks/blast-mainnet/ -/ja/supported-networks/blast-testnet/ -/ja/supported-networks/bnb-op/ -/ja/supported-networks/bnb-svm/ -/ja/supported-networks/boba-testnet/ -/ja/supported-networks/boba/ -/ja/supported-networks/botanix-testnet/ -/ja/supported-networks/botanix/ -/ja/supported-networks/bsc/ -/ja/supported-networks/btc/ -/ja/supported-networks/celo-sepolia/ -/ja/supported-networks/celo/ -/ja/supported-networks/chapel/ -/ja/supported-networks/chiliz-testnet/ -/ja/supported-networks/chiliz/ -/ja/supported-networks/corn-testnet/ -/ja/supported-networks/corn/ -/ja/supported-networks/cronos/ -/ja/supported-networks/eos/ -/ja/supported-networks/etherlink-mainnet/ -/ja/supported-networks/etherlink-shadownet/ -/ja/supported-networks/etherlink-testnet/ -/ja/supported-networks/fantom-testnet/ -/ja/supported-networks/fantom/ -/ja/supported-networks/fraxtal/ -/ja/supported-networks/fuji/ -/ja/supported-networks/fuse-testnet/ -/ja/supported-networks/fuse/ -/ja/supported-networks/gnosis-chiado-cl/ -/ja/supported-networks/gnosis-chiado/ -/ja/supported-networks/gnosis-cl/ -/ja/supported-networks/gnosis/ -/ja/supported-networks/hashkeychain-sepolia/ -/ja/supported-networks/hashkeychain/ -/ja/supported-networks/hemi-sepolia/ -/ja/supported-networks/hemi/ -/ja/supported-networks/holesky/ -/ja/supported-networks/hoodi-cl/ -/ja/supported-networks/hoodi/ -/ja/supported-networks/injective-evm-testnet/ -/ja/supported-networks/injective-evm/ -/ja/supported-networks/injective-mainnet/ -/ja/supported-networks/injective-testnet/ -/ja/supported-networks/ink-sepolia/ -/ja/supported-networks/ink/ -/ja/supported-networks/iotex-testnet/ -/ja/supported-networks/iotex/ -/ja/supported-networks/joc-testnet/ -/ja/supported-networks/joc/ -/ja/supported-networks/jungle4/ -/ja/supported-networks/kaia-testnet/ -/ja/supported-networks/kaia/ -/ja/supported-networks/katana-tatara/ -/ja/supported-networks/katana/ -/ja/supported-networks/kylin/ -/ja/supported-networks/lens-testnet/ -/ja/supported-networks/lens/ -/ja/supported-networks/linea-sepolia/ -/ja/supported-networks/linea/ -/ja/supported-networks/litecoin/ -/ja/supported-networks/lumia/ -/ja/supported-networks/mainnet-cl/ -/ja/supported-networks/mainnet/ -/ja/supported-networks/manta/ -/ja/supported-networks/mantra-mainnet/ -/ja/supported-networks/mantra-testnet/ -/ja/supported-networks/matic/ -/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/ -/ja/supported-networks/mode-mainnet/ -/ja/supported-networks/monad-testnet/ -/ja/supported-networks/monad/ -/ja/supported-networks/moonbeam/ -/ja/supported-networks/moonriver/ -/ja/supported-networks/near-mainnet/ -/ja/supported-networks/near-testnet/ -/ja/supported-networks/neox-testnet/ -/ja/supported-networks/neox/ -/ja/supported-networks/optimism-sepolia/ -/ja/supported-networks/optimism/ -/ja/supported-networks/peaq/ -/ja/supported-networks/polkadot-testnet/ -/ja/supported-networks/polygon-amoy/ -/ja/supported-networks/polygon-zkevm-cardona/ -/ja/supported-networks/polygon-zkevm/ -/ja/supported-networks/ronin/ -/ja/supported-networks/rootstock-testnet/ -/ja/supported-networks/rootstock/ -/ja/supported-networks/scroll-sepolia/ -/ja/supported-networks/scroll/ -/ja/supported-networks/sei-atlantic/ -/ja/supported-networks/sei-mainnet/ -/ja/supported-networks/sepolia-cl/ -/ja/supported-networks/sepolia/ -/ja/supported-networks/solana-accounts/ -/ja/supported-networks/solana-devnet/ -/ja/supported-networks/solana-mainnet-beta/ -/ja/supported-networks/soneium-testnet/ -/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/ -/ja/supported-networks/stellar-testnet/ -/ja/supported-networks/stellar/ -/ja/supported-networks/swellchain-sepolia/ -/ja/supported-networks/swellchain/ -/ja/supported-networks/telos-testnet/ -/ja/supported-networks/telos/ -/ja/supported-networks/tron-evm/ -/ja/supported-networks/tron/ -/ja/supported-networks/ultra/ -/ja/supported-networks/unichain-testnet/ -/ja/supported-networks/unichain/ -/ja/supported-networks/vana-moksha/ -/ja/supported-networks/vana/ -/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/ -/ja/supported-networks/zilliqa-testnet/ -/ja/supported-networks/zilliqa/ -/ja/supported-networks/zksync-era-sepolia/ -/ja/supported-networks/zksync-era/ -/ja/supported-networks/zora/ -/ja/token-api/endpoint-pricing/ -/ja/token-api/evm-dexs/dexes/ -/ja/token-api/evm-dexs/pools-ohlc/ -/ja/token-api/evm-dexs/pools/ -/ja/token-api/evm-dexs/swaps/ -/ja/token-api/evm-nfts/collections/ -/ja/token-api/evm-nfts/holders/ -/ja/token-api/evm-nfts/items/ -/ja/token-api/evm-nfts/ownerships/ -/ja/token-api/evm-nfts/sales/ -/ja/token-api/evm-nfts/transfers/ -/ja/token-api/evm-tokens/balances-historical/ -/ja/token-api/evm-tokens/balances-native/ -/ja/token-api/evm-tokens/balances/ -/ja/token-api/evm-tokens/holders/ -/ja/token-api/evm-tokens/tokens/ -/ja/token-api/evm-tokens/transfers/ -/ja/token-api/faq/ -/ja/token-api/monitoring/health/ -/ja/token-api/monitoring/networks/ -/ja/token-api/monitoring/version/ -/ja/token-api/quick-start/ -/ja/token-api/svm-dexs/dexes/ -/ja/token-api/svm-dexs/pools-ohlc/ -/ja/token-api/svm-dexs/pools/ -/ja/token-api/svm-dexs/swaps/ -/ja/token-api/svm-tokens/balances-native/ -/ja/token-api/svm-tokens/balances/ -/ja/token-api/svm-tokens/holders/ -/ja/token-api/svm-tokens/owner/ -/ja/token-api/svm-tokens/tokens/ -/ja/token-api/svm-tokens/transfers/ -/ja/token-api/tvm-dexs/dexes/ -/ja/token-api/tvm-dexs/pools-ohlc/ -/ja/token-api/tvm-dexs/swaps/ -/ja/token-api/tvm-tokens/tokens/ -/ja/token-api/tvm-tokens/transfers-native/ -/ja/token-api/tvm-tokens/transfers/ -/ko/about/ -/ko/ai-suite/ai-introduction/ -/ko/ai-suite/subgraph-mcp/claude/ -/ko/ai-suite/subgraph-mcp/cline/ -/ko/ai-suite/subgraph-mcp/cursor/ -/ko/ai-suite/subgraph-mcp/introduction/ -/ko/ai-suite/token-api-mcp/claude/ -/ko/ai-suite/token-api-mcp/cline/ -/ko/ai-suite/token-api-mcp/cursor/ -/ko/ai-suite/token-api-mcp/introduction/ -/ko/archived/arbitrum/arbitrum-faq/ -/ko/archived/arbitrum/l2-transfer-tools-faq/ -/ko/archived/arbitrum/l2-transfer-tools-guide/ -/ko/archived/sunrise/ -/ko/contracts/ -/ko/graph-horizon/migration-guide/ -/ko/graph-horizon/overview/ -/ko/graph-horizon/what-changes/ -/ko/hypergraph/faq/ -/ko/hypergraph/overview/ -/ko/indexing/chain-integration-overview/ -/ko/indexing/new-chain-integration/ -/ko/indexing/overview/ -/ko/indexing/supported-network-requirements/ -/ko/indexing/tap/ -/ko/indexing/tooling/firehose/ -/ko/indexing/tooling/graph-node/ -/ko/indexing/tooling/graphcast/ -/ko/resources/benefits/ -/ko/resources/glossary/ -/ko/resources/migration-guides/assemblyscript-migration-guide/ -/ko/resources/migration-guides/graphql-validations-migration-guide/ -/ko/resources/migration-guides/migrate-from-alchemy/ -/ko/resources/roles/curating/ -/ko/resources/roles/delegating/delegating/ -/ko/resources/roles/delegating/undelegating/ -/ko/resources/subgraph-studio-faq/ -/ko/resources/tokenomics/ -/ko/subgraphs/best-practices/avoid-eth-calls/ -/ko/subgraphs/best-practices/derivedfrom/ -/ko/subgraphs/best-practices/grafting-hotfix/ -/ko/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/ko/subgraphs/best-practices/pruning/ -/ko/subgraphs/best-practices/timeseries/ -/ko/subgraphs/billing/ -/ko/subgraphs/developing/creating/advanced/ -/ko/subgraphs/developing/creating/assemblyscript-mappings/ -/ko/subgraphs/developing/creating/graph-node-dev/ -/ko/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/ko/subgraphs/developing/creating/graph-ts/README/ -/ko/subgraphs/developing/creating/graph-ts/api/ -/ko/subgraphs/developing/creating/graph-ts/common-issues/ -/ko/subgraphs/developing/creating/install-the-cli/ -/ko/subgraphs/developing/creating/ql-schema/ -/ko/subgraphs/developing/creating/starting-your-subgraph/ -/ko/subgraphs/developing/creating/subgraph-manifest/ -/ko/subgraphs/developing/creating/unit-testing-framework/ -/ko/subgraphs/developing/deploying/multiple-networks/ -/ko/subgraphs/developing/deploying/using-subgraph-studio/ -/ko/subgraphs/developing/developer-faq/ -/ko/subgraphs/developing/introduction/ -/ko/subgraphs/developing/managing/deleting-a-subgraph/ -/ko/subgraphs/developing/managing/transferring-a-subgraph/ -/ko/subgraphs/developing/publishing/publishing-a-subgraph/ -/ko/subgraphs/developing/subgraphs/ -/ko/subgraphs/explorer/ -/ko/subgraphs/fair-use-policy/ -/ko/subgraphs/guides/contract-analyzer/ -/ko/subgraphs/guides/enums/ -/ko/subgraphs/guides/grafting/ -/ko/subgraphs/guides/near/ -/ko/subgraphs/guides/polymarket/ -/ko/subgraphs/guides/secure-api-keys-nextjs/ -/ko/subgraphs/guides/subgraph-composition/ -/ko/subgraphs/guides/subgraph-debug-forking/ -/ko/subgraphs/guides/subgraph-uncrashable/ -/ko/subgraphs/guides/transfer-to-the-graph/ -/ko/subgraphs/querying/best-practices/ -/ko/subgraphs/querying/distributed-systems/ -/ko/subgraphs/querying/from-an-application/ -/ko/subgraphs/querying/graph-client/README/ -/ko/subgraphs/querying/graph-client/architecture/ -/ko/subgraphs/querying/graph-client/live/ -/ko/subgraphs/querying/graphql-api/ -/ko/subgraphs/querying/introduction/ -/ko/subgraphs/querying/managing-api-keys/ -/ko/subgraphs/querying/python/ -/ko/subgraphs/querying/subgraph-id-vs-deployment-id/ -/ko/subgraphs/quick-start/ -/ko/subgraphs/upgrade-indexer/ -/ko/substreams/developing/dev-container/ -/ko/substreams/developing/sinks/ -/ko/substreams/developing/solana/account-changes/ -/ko/substreams/developing/solana/transactions/ -/ko/substreams/introduction/ -/ko/substreams/publishing/ -/ko/substreams/quick-start/ -/ko/supported-networks/ -/ko/token-api/endpoint-pricing/ -/ko/token-api/evm-dexs/dexes/ -/ko/token-api/evm-dexs/pools-ohlc/ -/ko/token-api/evm-dexs/pools/ -/ko/token-api/evm-dexs/swaps/ -/ko/token-api/evm-nfts/collections/ -/ko/token-api/evm-nfts/holders/ -/ko/token-api/evm-nfts/items/ -/ko/token-api/evm-nfts/ownerships/ -/ko/token-api/evm-nfts/sales/ -/ko/token-api/evm-nfts/transfers/ -/ko/token-api/evm-tokens/balances-historical/ -/ko/token-api/evm-tokens/balances-native/ -/ko/token-api/evm-tokens/balances/ -/ko/token-api/evm-tokens/holders/ -/ko/token-api/evm-tokens/tokens/ -/ko/token-api/evm-tokens/transfers/ -/ko/token-api/faq/ -/ko/token-api/monitoring/health/ -/ko/token-api/monitoring/networks/ -/ko/token-api/monitoring/version/ -/ko/token-api/quick-start/ -/ko/token-api/svm-dexs/dexes/ -/ko/token-api/svm-dexs/pools-ohlc/ -/ko/token-api/svm-dexs/pools/ -/ko/token-api/svm-dexs/swaps/ -/ko/token-api/svm-tokens/balances-native/ -/ko/token-api/svm-tokens/balances/ -/ko/token-api/svm-tokens/holders/ -/ko/token-api/svm-tokens/owner/ -/ko/token-api/svm-tokens/tokens/ -/ko/token-api/svm-tokens/transfers/ -/ko/token-api/tvm-dexs/dexes/ -/ko/token-api/tvm-dexs/pools-ohlc/ -/ko/token-api/tvm-dexs/swaps/ -/ko/token-api/tvm-tokens/tokens/ -/ko/token-api/tvm-tokens/transfers-native/ -/ko/token-api/tvm-tokens/transfers/ -/mr/ -/mr/404/ -/mr/about/ -/mr/ai-suite/ai-introduction/ -/mr/ai-suite/subgraph-mcp/claude/ -/mr/ai-suite/subgraph-mcp/cline/ -/mr/ai-suite/subgraph-mcp/cursor/ -/mr/ai-suite/subgraph-mcp/introduction/ -/mr/ai-suite/token-api-mcp/claude/ -/mr/ai-suite/token-api-mcp/cline/ -/mr/ai-suite/token-api-mcp/cursor/ -/mr/ai-suite/token-api-mcp/introduction/ -/mr/archived/arbitrum/arbitrum-faq/ -/mr/archived/arbitrum/l2-transfer-tools-faq/ -/mr/archived/arbitrum/l2-transfer-tools-guide/ -/mr/archived/sunrise/ -/mr/contracts/ -/mr/graph-horizon/migration-guide/ -/mr/graph-horizon/overview/ -/mr/graph-horizon/what-changes/ -/mr/hypergraph/faq/ -/mr/hypergraph/overview/ -/mr/indexing/chain-integration-overview/ -/mr/indexing/new-chain-integration/ -/mr/indexing/overview/ -/mr/indexing/supported-network-requirements/ -/mr/indexing/tap/ -/mr/indexing/tooling/firehose/ -/mr/indexing/tooling/graph-node/ -/mr/indexing/tooling/graphcast/ -/mr/resources/benefits/ -/mr/resources/glossary/ -/mr/resources/migration-guides/assemblyscript-migration-guide/ -/mr/resources/migration-guides/graphql-validations-migration-guide/ -/mr/resources/migration-guides/migrate-from-alchemy/ -/mr/resources/roles/curating/ -/mr/resources/roles/delegating/delegating/ -/mr/resources/roles/delegating/undelegating/ -/mr/resources/subgraph-studio-faq/ -/mr/resources/tokenomics/ -/mr/subgraphs/best-practices/avoid-eth-calls/ -/mr/subgraphs/best-practices/derivedfrom/ -/mr/subgraphs/best-practices/grafting-hotfix/ -/mr/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/mr/subgraphs/best-practices/pruning/ -/mr/subgraphs/best-practices/timeseries/ -/mr/subgraphs/billing/ -/mr/subgraphs/developing/creating/advanced/ -/mr/subgraphs/developing/creating/assemblyscript-mappings/ -/mr/subgraphs/developing/creating/graph-node-dev/ -/mr/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/mr/subgraphs/developing/creating/graph-ts/README/ -/mr/subgraphs/developing/creating/graph-ts/api/ -/mr/subgraphs/developing/creating/graph-ts/common-issues/ -/mr/subgraphs/developing/creating/install-the-cli/ -/mr/subgraphs/developing/creating/ql-schema/ -/mr/subgraphs/developing/creating/starting-your-subgraph/ -/mr/subgraphs/developing/creating/subgraph-manifest/ -/mr/subgraphs/developing/creating/unit-testing-framework/ -/mr/subgraphs/developing/deploying/multiple-networks/ -/mr/subgraphs/developing/deploying/using-subgraph-studio/ -/mr/subgraphs/developing/developer-faq/ -/mr/subgraphs/developing/introduction/ -/mr/subgraphs/developing/managing/deleting-a-subgraph/ -/mr/subgraphs/developing/managing/transferring-a-subgraph/ -/mr/subgraphs/developing/publishing/publishing-a-subgraph/ -/mr/subgraphs/developing/subgraphs/ -/mr/subgraphs/explorer/ -/mr/subgraphs/fair-use-policy/ -/mr/subgraphs/guides/contract-analyzer/ -/mr/subgraphs/guides/enums/ -/mr/subgraphs/guides/grafting/ -/mr/subgraphs/guides/near/ -/mr/subgraphs/guides/polymarket/ -/mr/subgraphs/guides/secure-api-keys-nextjs/ -/mr/subgraphs/guides/subgraph-composition/ -/mr/subgraphs/guides/subgraph-debug-forking/ -/mr/subgraphs/guides/subgraph-uncrashable/ -/mr/subgraphs/guides/transfer-to-the-graph/ -/mr/subgraphs/querying/best-practices/ -/mr/subgraphs/querying/distributed-systems/ -/mr/subgraphs/querying/from-an-application/ -/mr/subgraphs/querying/graph-client/README/ -/mr/subgraphs/querying/graph-client/architecture/ -/mr/subgraphs/querying/graph-client/live/ -/mr/subgraphs/querying/graphql-api/ -/mr/subgraphs/querying/introduction/ -/mr/subgraphs/querying/managing-api-keys/ -/mr/subgraphs/querying/python/ -/mr/subgraphs/querying/subgraph-id-vs-deployment-id/ -/mr/subgraphs/quick-start/ -/mr/subgraphs/upgrade-indexer/ -/mr/substreams/developing/dev-container/ -/mr/substreams/developing/sinks/ -/mr/substreams/developing/solana/account-changes/ -/mr/substreams/developing/solana/transactions/ -/mr/substreams/introduction/ -/mr/substreams/publishing/ -/mr/substreams/quick-start/ -/mr/supported-networks/ -/mr/supported-networks/abstract-testnet/ -/mr/supported-networks/abstract/ -/mr/supported-networks/apechain-curtis/ -/mr/supported-networks/apechain/ -/mr/supported-networks/arbitrum-nova/ -/mr/supported-networks/arbitrum-one/ -/mr/supported-networks/arbitrum-sepolia/ -/mr/supported-networks/arc-testnet/ -/mr/supported-networks/autonomys-chronos/ -/mr/supported-networks/autonomys/ -/mr/supported-networks/avalanche/ -/mr/supported-networks/base-sepolia/ -/mr/supported-networks/base/ -/mr/supported-networks/berachain-bepolia/ -/mr/supported-networks/berachain/ -/mr/supported-networks/blast-mainnet/ -/mr/supported-networks/blast-testnet/ -/mr/supported-networks/bnb-op/ -/mr/supported-networks/bnb-svm/ -/mr/supported-networks/boba-testnet/ -/mr/supported-networks/boba/ -/mr/supported-networks/botanix-testnet/ -/mr/supported-networks/botanix/ -/mr/supported-networks/bsc/ -/mr/supported-networks/btc/ -/mr/supported-networks/celo-sepolia/ -/mr/supported-networks/celo/ -/mr/supported-networks/chapel/ -/mr/supported-networks/chiliz-testnet/ -/mr/supported-networks/chiliz/ -/mr/supported-networks/corn-testnet/ -/mr/supported-networks/corn/ -/mr/supported-networks/cronos/ -/mr/supported-networks/eos/ -/mr/supported-networks/etherlink-mainnet/ -/mr/supported-networks/etherlink-shadownet/ -/mr/supported-networks/etherlink-testnet/ -/mr/supported-networks/fantom-testnet/ -/mr/supported-networks/fantom/ -/mr/supported-networks/fraxtal/ -/mr/supported-networks/fuji/ -/mr/supported-networks/fuse-testnet/ -/mr/supported-networks/fuse/ -/mr/supported-networks/gnosis-chiado-cl/ -/mr/supported-networks/gnosis-chiado/ -/mr/supported-networks/gnosis-cl/ -/mr/supported-networks/gnosis/ -/mr/supported-networks/hashkeychain-sepolia/ -/mr/supported-networks/hashkeychain/ -/mr/supported-networks/hemi-sepolia/ -/mr/supported-networks/hemi/ -/mr/supported-networks/holesky/ -/mr/supported-networks/hoodi-cl/ -/mr/supported-networks/hoodi/ -/mr/supported-networks/injective-evm-testnet/ -/mr/supported-networks/injective-evm/ -/mr/supported-networks/injective-mainnet/ -/mr/supported-networks/injective-testnet/ -/mr/supported-networks/ink-sepolia/ -/mr/supported-networks/ink/ -/mr/supported-networks/iotex-testnet/ -/mr/supported-networks/iotex/ -/mr/supported-networks/joc-testnet/ -/mr/supported-networks/joc/ -/mr/supported-networks/jungle4/ -/mr/supported-networks/kaia-testnet/ -/mr/supported-networks/kaia/ -/mr/supported-networks/katana-tatara/ -/mr/supported-networks/katana/ -/mr/supported-networks/kylin/ -/mr/supported-networks/lens-testnet/ -/mr/supported-networks/lens/ -/mr/supported-networks/linea-sepolia/ -/mr/supported-networks/linea/ -/mr/supported-networks/litecoin/ -/mr/supported-networks/lumia/ -/mr/supported-networks/mainnet-cl/ -/mr/supported-networks/mainnet/ -/mr/supported-networks/manta/ -/mr/supported-networks/mantra-mainnet/ -/mr/supported-networks/mantra-testnet/ -/mr/supported-networks/matic/ -/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/ -/mr/supported-networks/mode-mainnet/ -/mr/supported-networks/monad-testnet/ -/mr/supported-networks/monad/ -/mr/supported-networks/moonbeam/ -/mr/supported-networks/moonriver/ -/mr/supported-networks/near-mainnet/ -/mr/supported-networks/near-testnet/ -/mr/supported-networks/neox-testnet/ -/mr/supported-networks/neox/ -/mr/supported-networks/optimism-sepolia/ -/mr/supported-networks/optimism/ -/mr/supported-networks/peaq/ -/mr/supported-networks/polkadot-testnet/ -/mr/supported-networks/polygon-amoy/ -/mr/supported-networks/polygon-zkevm-cardona/ -/mr/supported-networks/polygon-zkevm/ -/mr/supported-networks/ronin/ -/mr/supported-networks/rootstock-testnet/ -/mr/supported-networks/rootstock/ -/mr/supported-networks/scroll-sepolia/ -/mr/supported-networks/scroll/ -/mr/supported-networks/sei-atlantic/ -/mr/supported-networks/sei-mainnet/ -/mr/supported-networks/sepolia-cl/ -/mr/supported-networks/sepolia/ -/mr/supported-networks/solana-accounts/ -/mr/supported-networks/solana-devnet/ -/mr/supported-networks/solana-mainnet-beta/ -/mr/supported-networks/soneium-testnet/ -/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/ -/mr/supported-networks/stellar-testnet/ -/mr/supported-networks/stellar/ -/mr/supported-networks/swellchain-sepolia/ -/mr/supported-networks/swellchain/ -/mr/supported-networks/telos-testnet/ -/mr/supported-networks/telos/ -/mr/supported-networks/tron-evm/ -/mr/supported-networks/tron/ -/mr/supported-networks/ultra/ -/mr/supported-networks/unichain-testnet/ -/mr/supported-networks/unichain/ -/mr/supported-networks/vana-moksha/ -/mr/supported-networks/vana/ -/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/ -/mr/supported-networks/zilliqa-testnet/ -/mr/supported-networks/zilliqa/ -/mr/supported-networks/zksync-era-sepolia/ -/mr/supported-networks/zksync-era/ -/mr/supported-networks/zora/ -/mr/token-api/endpoint-pricing/ -/mr/token-api/evm-dexs/dexes/ -/mr/token-api/evm-dexs/pools-ohlc/ -/mr/token-api/evm-dexs/pools/ -/mr/token-api/evm-dexs/swaps/ -/mr/token-api/evm-nfts/collections/ -/mr/token-api/evm-nfts/holders/ -/mr/token-api/evm-nfts/items/ -/mr/token-api/evm-nfts/ownerships/ -/mr/token-api/evm-nfts/sales/ -/mr/token-api/evm-nfts/transfers/ -/mr/token-api/evm-tokens/balances-historical/ -/mr/token-api/evm-tokens/balances-native/ -/mr/token-api/evm-tokens/balances/ -/mr/token-api/evm-tokens/holders/ -/mr/token-api/evm-tokens/tokens/ -/mr/token-api/evm-tokens/transfers/ -/mr/token-api/faq/ -/mr/token-api/monitoring/health/ -/mr/token-api/monitoring/networks/ -/mr/token-api/monitoring/version/ -/mr/token-api/quick-start/ -/mr/token-api/svm-dexs/dexes/ -/mr/token-api/svm-dexs/pools-ohlc/ -/mr/token-api/svm-dexs/pools/ -/mr/token-api/svm-dexs/swaps/ -/mr/token-api/svm-tokens/balances-native/ -/mr/token-api/svm-tokens/balances/ -/mr/token-api/svm-tokens/holders/ -/mr/token-api/svm-tokens/owner/ -/mr/token-api/svm-tokens/tokens/ -/mr/token-api/svm-tokens/transfers/ -/mr/token-api/tvm-dexs/dexes/ -/mr/token-api/tvm-dexs/pools-ohlc/ -/mr/token-api/tvm-dexs/swaps/ -/mr/token-api/tvm-tokens/tokens/ -/mr/token-api/tvm-tokens/transfers-native/ -/mr/token-api/tvm-tokens/transfers/ -/nl/about/ -/nl/ai-suite/ai-introduction/ -/nl/ai-suite/subgraph-mcp/claude/ -/nl/ai-suite/subgraph-mcp/cline/ -/nl/ai-suite/subgraph-mcp/cursor/ -/nl/ai-suite/subgraph-mcp/introduction/ -/nl/ai-suite/token-api-mcp/claude/ -/nl/ai-suite/token-api-mcp/cline/ -/nl/ai-suite/token-api-mcp/cursor/ -/nl/ai-suite/token-api-mcp/introduction/ -/nl/archived/arbitrum/arbitrum-faq/ -/nl/archived/arbitrum/l2-transfer-tools-faq/ -/nl/archived/arbitrum/l2-transfer-tools-guide/ -/nl/archived/sunrise/ -/nl/contracts/ -/nl/graph-horizon/migration-guide/ -/nl/graph-horizon/overview/ -/nl/graph-horizon/what-changes/ -/nl/hypergraph/faq/ -/nl/hypergraph/overview/ -/nl/indexing/chain-integration-overview/ -/nl/indexing/new-chain-integration/ -/nl/indexing/overview/ -/nl/indexing/supported-network-requirements/ -/nl/indexing/tap/ -/nl/indexing/tooling/firehose/ -/nl/indexing/tooling/graph-node/ -/nl/indexing/tooling/graphcast/ -/nl/resources/benefits/ -/nl/resources/glossary/ -/nl/resources/migration-guides/assemblyscript-migration-guide/ -/nl/resources/migration-guides/graphql-validations-migration-guide/ -/nl/resources/migration-guides/migrate-from-alchemy/ -/nl/resources/roles/curating/ -/nl/resources/roles/delegating/delegating/ -/nl/resources/roles/delegating/undelegating/ -/nl/resources/subgraph-studio-faq/ -/nl/resources/tokenomics/ -/nl/subgraphs/best-practices/avoid-eth-calls/ -/nl/subgraphs/best-practices/derivedfrom/ -/nl/subgraphs/best-practices/grafting-hotfix/ -/nl/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/nl/subgraphs/best-practices/pruning/ -/nl/subgraphs/best-practices/timeseries/ -/nl/subgraphs/billing/ -/nl/subgraphs/developing/creating/advanced/ -/nl/subgraphs/developing/creating/assemblyscript-mappings/ -/nl/subgraphs/developing/creating/graph-node-dev/ -/nl/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/nl/subgraphs/developing/creating/graph-ts/README/ -/nl/subgraphs/developing/creating/graph-ts/api/ -/nl/subgraphs/developing/creating/graph-ts/common-issues/ -/nl/subgraphs/developing/creating/install-the-cli/ -/nl/subgraphs/developing/creating/ql-schema/ -/nl/subgraphs/developing/creating/starting-your-subgraph/ -/nl/subgraphs/developing/creating/subgraph-manifest/ -/nl/subgraphs/developing/creating/unit-testing-framework/ -/nl/subgraphs/developing/deploying/multiple-networks/ -/nl/subgraphs/developing/deploying/using-subgraph-studio/ -/nl/subgraphs/developing/developer-faq/ -/nl/subgraphs/developing/introduction/ -/nl/subgraphs/developing/managing/deleting-a-subgraph/ -/nl/subgraphs/developing/managing/transferring-a-subgraph/ -/nl/subgraphs/developing/publishing/publishing-a-subgraph/ -/nl/subgraphs/developing/subgraphs/ -/nl/subgraphs/explorer/ -/nl/subgraphs/fair-use-policy/ -/nl/subgraphs/guides/contract-analyzer/ -/nl/subgraphs/guides/enums/ -/nl/subgraphs/guides/grafting/ -/nl/subgraphs/guides/near/ -/nl/subgraphs/guides/polymarket/ -/nl/subgraphs/guides/secure-api-keys-nextjs/ -/nl/subgraphs/guides/subgraph-composition/ -/nl/subgraphs/guides/subgraph-debug-forking/ -/nl/subgraphs/guides/subgraph-uncrashable/ -/nl/subgraphs/guides/transfer-to-the-graph/ -/nl/subgraphs/querying/best-practices/ -/nl/subgraphs/querying/distributed-systems/ -/nl/subgraphs/querying/from-an-application/ -/nl/subgraphs/querying/graph-client/README/ -/nl/subgraphs/querying/graph-client/architecture/ -/nl/subgraphs/querying/graph-client/live/ -/nl/subgraphs/querying/graphql-api/ -/nl/subgraphs/querying/introduction/ -/nl/subgraphs/querying/managing-api-keys/ -/nl/subgraphs/querying/python/ -/nl/subgraphs/querying/subgraph-id-vs-deployment-id/ -/nl/subgraphs/quick-start/ -/nl/subgraphs/upgrade-indexer/ -/nl/substreams/developing/dev-container/ -/nl/substreams/developing/sinks/ -/nl/substreams/developing/solana/account-changes/ -/nl/substreams/developing/solana/transactions/ -/nl/substreams/introduction/ -/nl/substreams/publishing/ -/nl/substreams/quick-start/ -/nl/supported-networks/ -/nl/token-api/endpoint-pricing/ -/nl/token-api/evm-dexs/dexes/ -/nl/token-api/evm-dexs/pools-ohlc/ -/nl/token-api/evm-dexs/pools/ -/nl/token-api/evm-dexs/swaps/ -/nl/token-api/evm-nfts/collections/ -/nl/token-api/evm-nfts/holders/ -/nl/token-api/evm-nfts/items/ -/nl/token-api/evm-nfts/ownerships/ -/nl/token-api/evm-nfts/sales/ -/nl/token-api/evm-nfts/transfers/ -/nl/token-api/evm-tokens/balances-historical/ -/nl/token-api/evm-tokens/balances-native/ -/nl/token-api/evm-tokens/balances/ -/nl/token-api/evm-tokens/holders/ -/nl/token-api/evm-tokens/tokens/ -/nl/token-api/evm-tokens/transfers/ -/nl/token-api/faq/ -/nl/token-api/monitoring/health/ -/nl/token-api/monitoring/networks/ -/nl/token-api/monitoring/version/ -/nl/token-api/quick-start/ -/nl/token-api/svm-dexs/dexes/ -/nl/token-api/svm-dexs/pools-ohlc/ -/nl/token-api/svm-dexs/pools/ -/nl/token-api/svm-dexs/swaps/ -/nl/token-api/svm-tokens/balances-native/ -/nl/token-api/svm-tokens/balances/ -/nl/token-api/svm-tokens/holders/ -/nl/token-api/svm-tokens/owner/ -/nl/token-api/svm-tokens/tokens/ -/nl/token-api/svm-tokens/transfers/ -/nl/token-api/tvm-dexs/dexes/ -/nl/token-api/tvm-dexs/pools-ohlc/ -/nl/token-api/tvm-dexs/swaps/ -/nl/token-api/tvm-tokens/tokens/ -/nl/token-api/tvm-tokens/transfers-native/ -/nl/token-api/tvm-tokens/transfers/ -/pl/about/ -/pl/ai-suite/ai-introduction/ -/pl/ai-suite/subgraph-mcp/claude/ -/pl/ai-suite/subgraph-mcp/cline/ -/pl/ai-suite/subgraph-mcp/cursor/ -/pl/ai-suite/subgraph-mcp/introduction/ -/pl/ai-suite/token-api-mcp/claude/ -/pl/ai-suite/token-api-mcp/cline/ -/pl/ai-suite/token-api-mcp/cursor/ -/pl/ai-suite/token-api-mcp/introduction/ -/pl/archived/arbitrum/arbitrum-faq/ -/pl/archived/arbitrum/l2-transfer-tools-faq/ -/pl/archived/arbitrum/l2-transfer-tools-guide/ -/pl/archived/sunrise/ -/pl/contracts/ -/pl/graph-horizon/migration-guide/ -/pl/graph-horizon/overview/ -/pl/graph-horizon/what-changes/ -/pl/hypergraph/faq/ -/pl/hypergraph/overview/ -/pl/indexing/chain-integration-overview/ -/pl/indexing/new-chain-integration/ -/pl/indexing/overview/ -/pl/indexing/supported-network-requirements/ -/pl/indexing/tap/ -/pl/indexing/tooling/firehose/ -/pl/indexing/tooling/graph-node/ -/pl/indexing/tooling/graphcast/ -/pl/resources/benefits/ -/pl/resources/glossary/ -/pl/resources/migration-guides/assemblyscript-migration-guide/ -/pl/resources/migration-guides/graphql-validations-migration-guide/ -/pl/resources/migration-guides/migrate-from-alchemy/ -/pl/resources/roles/curating/ -/pl/resources/roles/delegating/delegating/ -/pl/resources/roles/delegating/undelegating/ -/pl/resources/subgraph-studio-faq/ -/pl/resources/tokenomics/ -/pl/subgraphs/best-practices/avoid-eth-calls/ -/pl/subgraphs/best-practices/derivedfrom/ -/pl/subgraphs/best-practices/grafting-hotfix/ -/pl/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/pl/subgraphs/best-practices/pruning/ -/pl/subgraphs/best-practices/timeseries/ -/pl/subgraphs/billing/ -/pl/subgraphs/developing/creating/advanced/ -/pl/subgraphs/developing/creating/assemblyscript-mappings/ -/pl/subgraphs/developing/creating/graph-node-dev/ -/pl/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/pl/subgraphs/developing/creating/graph-ts/README/ -/pl/subgraphs/developing/creating/graph-ts/api/ -/pl/subgraphs/developing/creating/graph-ts/common-issues/ -/pl/subgraphs/developing/creating/install-the-cli/ -/pl/subgraphs/developing/creating/ql-schema/ -/pl/subgraphs/developing/creating/starting-your-subgraph/ -/pl/subgraphs/developing/creating/subgraph-manifest/ -/pl/subgraphs/developing/creating/unit-testing-framework/ -/pl/subgraphs/developing/deploying/multiple-networks/ -/pl/subgraphs/developing/deploying/using-subgraph-studio/ -/pl/subgraphs/developing/developer-faq/ -/pl/subgraphs/developing/introduction/ -/pl/subgraphs/developing/managing/deleting-a-subgraph/ -/pl/subgraphs/developing/managing/transferring-a-subgraph/ -/pl/subgraphs/developing/publishing/publishing-a-subgraph/ -/pl/subgraphs/developing/subgraphs/ -/pl/subgraphs/explorer/ -/pl/subgraphs/fair-use-policy/ -/pl/subgraphs/guides/contract-analyzer/ -/pl/subgraphs/guides/enums/ -/pl/subgraphs/guides/grafting/ -/pl/subgraphs/guides/near/ -/pl/subgraphs/guides/polymarket/ -/pl/subgraphs/guides/secure-api-keys-nextjs/ -/pl/subgraphs/guides/subgraph-composition/ -/pl/subgraphs/guides/subgraph-debug-forking/ -/pl/subgraphs/guides/subgraph-uncrashable/ -/pl/subgraphs/guides/transfer-to-the-graph/ -/pl/subgraphs/querying/best-practices/ -/pl/subgraphs/querying/distributed-systems/ -/pl/subgraphs/querying/from-an-application/ -/pl/subgraphs/querying/graph-client/README/ -/pl/subgraphs/querying/graph-client/architecture/ -/pl/subgraphs/querying/graph-client/live/ -/pl/subgraphs/querying/graphql-api/ -/pl/subgraphs/querying/introduction/ -/pl/subgraphs/querying/managing-api-keys/ -/pl/subgraphs/querying/python/ -/pl/subgraphs/querying/subgraph-id-vs-deployment-id/ -/pl/subgraphs/quick-start/ -/pl/subgraphs/upgrade-indexer/ -/pl/substreams/developing/dev-container/ -/pl/substreams/developing/sinks/ -/pl/substreams/developing/solana/account-changes/ -/pl/substreams/developing/solana/transactions/ -/pl/substreams/introduction/ -/pl/substreams/publishing/ -/pl/substreams/quick-start/ -/pl/supported-networks/ -/pl/token-api/endpoint-pricing/ -/pl/token-api/evm-dexs/dexes/ -/pl/token-api/evm-dexs/pools-ohlc/ -/pl/token-api/evm-dexs/pools/ -/pl/token-api/evm-dexs/swaps/ -/pl/token-api/evm-nfts/collections/ -/pl/token-api/evm-nfts/holders/ -/pl/token-api/evm-nfts/items/ -/pl/token-api/evm-nfts/ownerships/ -/pl/token-api/evm-nfts/sales/ -/pl/token-api/evm-nfts/transfers/ -/pl/token-api/evm-tokens/balances-historical/ -/pl/token-api/evm-tokens/balances-native/ -/pl/token-api/evm-tokens/balances/ -/pl/token-api/evm-tokens/holders/ -/pl/token-api/evm-tokens/tokens/ -/pl/token-api/evm-tokens/transfers/ -/pl/token-api/faq/ -/pl/token-api/monitoring/health/ -/pl/token-api/monitoring/networks/ -/pl/token-api/monitoring/version/ -/pl/token-api/quick-start/ -/pl/token-api/svm-dexs/dexes/ -/pl/token-api/svm-dexs/pools-ohlc/ -/pl/token-api/svm-dexs/pools/ -/pl/token-api/svm-dexs/swaps/ -/pl/token-api/svm-tokens/balances-native/ -/pl/token-api/svm-tokens/balances/ -/pl/token-api/svm-tokens/holders/ -/pl/token-api/svm-tokens/owner/ -/pl/token-api/svm-tokens/tokens/ -/pl/token-api/svm-tokens/transfers/ -/pl/token-api/tvm-dexs/dexes/ -/pl/token-api/tvm-dexs/pools-ohlc/ -/pl/token-api/tvm-dexs/swaps/ -/pl/token-api/tvm-tokens/tokens/ -/pl/token-api/tvm-tokens/transfers-native/ -/pl/token-api/tvm-tokens/transfers/ -/pt/ -/pt/404/ -/pt/about/ -/pt/ai-suite/ai-introduction/ -/pt/ai-suite/subgraph-mcp/claude/ -/pt/ai-suite/subgraph-mcp/cline/ -/pt/ai-suite/subgraph-mcp/cursor/ -/pt/ai-suite/subgraph-mcp/introduction/ -/pt/ai-suite/token-api-mcp/claude/ -/pt/ai-suite/token-api-mcp/cline/ -/pt/ai-suite/token-api-mcp/cursor/ -/pt/ai-suite/token-api-mcp/introduction/ -/pt/archived/arbitrum/arbitrum-faq/ -/pt/archived/arbitrum/l2-transfer-tools-faq/ -/pt/archived/arbitrum/l2-transfer-tools-guide/ -/pt/archived/sunrise/ -/pt/contracts/ -/pt/graph-horizon/migration-guide/ -/pt/graph-horizon/overview/ -/pt/graph-horizon/what-changes/ -/pt/hypergraph/faq/ -/pt/hypergraph/overview/ -/pt/indexing/chain-integration-overview/ -/pt/indexing/new-chain-integration/ -/pt/indexing/overview/ -/pt/indexing/supported-network-requirements/ -/pt/indexing/tap/ -/pt/indexing/tooling/firehose/ -/pt/indexing/tooling/graph-node/ -/pt/indexing/tooling/graphcast/ -/pt/resources/benefits/ -/pt/resources/glossary/ -/pt/resources/migration-guides/assemblyscript-migration-guide/ -/pt/resources/migration-guides/graphql-validations-migration-guide/ -/pt/resources/migration-guides/migrate-from-alchemy/ -/pt/resources/roles/curating/ -/pt/resources/roles/delegating/delegating/ -/pt/resources/roles/delegating/undelegating/ -/pt/resources/subgraph-studio-faq/ -/pt/resources/tokenomics/ -/pt/subgraphs/best-practices/avoid-eth-calls/ -/pt/subgraphs/best-practices/derivedfrom/ -/pt/subgraphs/best-practices/grafting-hotfix/ -/pt/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/pt/subgraphs/best-practices/pruning/ -/pt/subgraphs/best-practices/timeseries/ -/pt/subgraphs/billing/ -/pt/subgraphs/developing/creating/advanced/ -/pt/subgraphs/developing/creating/assemblyscript-mappings/ -/pt/subgraphs/developing/creating/graph-node-dev/ -/pt/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/pt/subgraphs/developing/creating/graph-ts/README/ -/pt/subgraphs/developing/creating/graph-ts/api/ -/pt/subgraphs/developing/creating/graph-ts/common-issues/ -/pt/subgraphs/developing/creating/install-the-cli/ -/pt/subgraphs/developing/creating/ql-schema/ -/pt/subgraphs/developing/creating/starting-your-subgraph/ -/pt/subgraphs/developing/creating/subgraph-manifest/ -/pt/subgraphs/developing/creating/unit-testing-framework/ -/pt/subgraphs/developing/deploying/multiple-networks/ -/pt/subgraphs/developing/deploying/using-subgraph-studio/ -/pt/subgraphs/developing/developer-faq/ -/pt/subgraphs/developing/introduction/ -/pt/subgraphs/developing/managing/deleting-a-subgraph/ -/pt/subgraphs/developing/managing/transferring-a-subgraph/ -/pt/subgraphs/developing/publishing/publishing-a-subgraph/ -/pt/subgraphs/developing/subgraphs/ -/pt/subgraphs/explorer/ -/pt/subgraphs/fair-use-policy/ -/pt/subgraphs/guides/contract-analyzer/ -/pt/subgraphs/guides/enums/ -/pt/subgraphs/guides/grafting/ -/pt/subgraphs/guides/near/ -/pt/subgraphs/guides/polymarket/ -/pt/subgraphs/guides/secure-api-keys-nextjs/ -/pt/subgraphs/guides/subgraph-composition/ -/pt/subgraphs/guides/subgraph-debug-forking/ -/pt/subgraphs/guides/subgraph-uncrashable/ -/pt/subgraphs/guides/transfer-to-the-graph/ -/pt/subgraphs/querying/best-practices/ -/pt/subgraphs/querying/distributed-systems/ -/pt/subgraphs/querying/from-an-application/ -/pt/subgraphs/querying/graph-client/README/ -/pt/subgraphs/querying/graph-client/architecture/ -/pt/subgraphs/querying/graph-client/live/ -/pt/subgraphs/querying/graphql-api/ -/pt/subgraphs/querying/introduction/ -/pt/subgraphs/querying/managing-api-keys/ -/pt/subgraphs/querying/python/ -/pt/subgraphs/querying/subgraph-id-vs-deployment-id/ -/pt/subgraphs/quick-start/ -/pt/subgraphs/upgrade-indexer/ -/pt/substreams/developing/dev-container/ -/pt/substreams/developing/sinks/ -/pt/substreams/developing/solana/account-changes/ -/pt/substreams/developing/solana/transactions/ -/pt/substreams/introduction/ -/pt/substreams/publishing/ -/pt/substreams/quick-start/ -/pt/supported-networks/ -/pt/supported-networks/abstract-testnet/ -/pt/supported-networks/abstract/ -/pt/supported-networks/apechain-curtis/ -/pt/supported-networks/apechain/ -/pt/supported-networks/arbitrum-nova/ -/pt/supported-networks/arbitrum-one/ -/pt/supported-networks/arbitrum-sepolia/ -/pt/supported-networks/arc-testnet/ -/pt/supported-networks/autonomys-chronos/ -/pt/supported-networks/autonomys/ -/pt/supported-networks/avalanche/ -/pt/supported-networks/base-sepolia/ -/pt/supported-networks/base/ -/pt/supported-networks/berachain-bepolia/ -/pt/supported-networks/berachain/ -/pt/supported-networks/blast-mainnet/ -/pt/supported-networks/blast-testnet/ -/pt/supported-networks/bnb-op/ -/pt/supported-networks/bnb-svm/ -/pt/supported-networks/boba-testnet/ -/pt/supported-networks/boba/ -/pt/supported-networks/botanix-testnet/ -/pt/supported-networks/botanix/ -/pt/supported-networks/bsc/ -/pt/supported-networks/btc/ -/pt/supported-networks/celo-sepolia/ -/pt/supported-networks/celo/ -/pt/supported-networks/chapel/ -/pt/supported-networks/chiliz-testnet/ -/pt/supported-networks/chiliz/ -/pt/supported-networks/corn-testnet/ -/pt/supported-networks/corn/ -/pt/supported-networks/cronos/ -/pt/supported-networks/eos/ -/pt/supported-networks/etherlink-mainnet/ -/pt/supported-networks/etherlink-shadownet/ -/pt/supported-networks/etherlink-testnet/ -/pt/supported-networks/fantom-testnet/ -/pt/supported-networks/fantom/ -/pt/supported-networks/fraxtal/ -/pt/supported-networks/fuji/ -/pt/supported-networks/fuse-testnet/ -/pt/supported-networks/fuse/ -/pt/supported-networks/gnosis-chiado-cl/ -/pt/supported-networks/gnosis-chiado/ -/pt/supported-networks/gnosis-cl/ -/pt/supported-networks/gnosis/ -/pt/supported-networks/hashkeychain-sepolia/ -/pt/supported-networks/hashkeychain/ -/pt/supported-networks/hemi-sepolia/ -/pt/supported-networks/hemi/ -/pt/supported-networks/holesky/ -/pt/supported-networks/hoodi-cl/ -/pt/supported-networks/hoodi/ -/pt/supported-networks/injective-evm-testnet/ -/pt/supported-networks/injective-evm/ -/pt/supported-networks/injective-mainnet/ -/pt/supported-networks/injective-testnet/ -/pt/supported-networks/ink-sepolia/ -/pt/supported-networks/ink/ -/pt/supported-networks/iotex-testnet/ -/pt/supported-networks/iotex/ -/pt/supported-networks/joc-testnet/ -/pt/supported-networks/joc/ -/pt/supported-networks/jungle4/ -/pt/supported-networks/kaia-testnet/ -/pt/supported-networks/kaia/ -/pt/supported-networks/katana-tatara/ -/pt/supported-networks/katana/ -/pt/supported-networks/kylin/ -/pt/supported-networks/lens-testnet/ -/pt/supported-networks/lens/ -/pt/supported-networks/linea-sepolia/ -/pt/supported-networks/linea/ -/pt/supported-networks/litecoin/ -/pt/supported-networks/lumia/ -/pt/supported-networks/mainnet-cl/ -/pt/supported-networks/mainnet/ -/pt/supported-networks/manta/ -/pt/supported-networks/mantra-mainnet/ -/pt/supported-networks/mantra-testnet/ -/pt/supported-networks/matic/ -/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/ -/pt/supported-networks/mode-mainnet/ -/pt/supported-networks/monad-testnet/ -/pt/supported-networks/monad/ -/pt/supported-networks/moonbeam/ -/pt/supported-networks/moonriver/ -/pt/supported-networks/near-mainnet/ -/pt/supported-networks/near-testnet/ -/pt/supported-networks/neox-testnet/ -/pt/supported-networks/neox/ -/pt/supported-networks/optimism-sepolia/ -/pt/supported-networks/optimism/ -/pt/supported-networks/peaq/ -/pt/supported-networks/polkadot-testnet/ -/pt/supported-networks/polygon-amoy/ -/pt/supported-networks/polygon-zkevm-cardona/ -/pt/supported-networks/polygon-zkevm/ -/pt/supported-networks/ronin/ -/pt/supported-networks/rootstock-testnet/ -/pt/supported-networks/rootstock/ -/pt/supported-networks/scroll-sepolia/ -/pt/supported-networks/scroll/ -/pt/supported-networks/sei-atlantic/ -/pt/supported-networks/sei-mainnet/ -/pt/supported-networks/sepolia-cl/ -/pt/supported-networks/sepolia/ -/pt/supported-networks/solana-accounts/ -/pt/supported-networks/solana-devnet/ -/pt/supported-networks/solana-mainnet-beta/ -/pt/supported-networks/soneium-testnet/ -/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/ -/pt/supported-networks/stellar-testnet/ -/pt/supported-networks/stellar/ -/pt/supported-networks/swellchain-sepolia/ -/pt/supported-networks/swellchain/ -/pt/supported-networks/telos-testnet/ -/pt/supported-networks/telos/ -/pt/supported-networks/tron-evm/ -/pt/supported-networks/tron/ -/pt/supported-networks/ultra/ -/pt/supported-networks/unichain-testnet/ -/pt/supported-networks/unichain/ -/pt/supported-networks/vana-moksha/ -/pt/supported-networks/vana/ -/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/ -/pt/supported-networks/zilliqa-testnet/ -/pt/supported-networks/zilliqa/ -/pt/supported-networks/zksync-era-sepolia/ -/pt/supported-networks/zksync-era/ -/pt/supported-networks/zora/ -/pt/token-api/endpoint-pricing/ -/pt/token-api/evm-dexs/dexes/ -/pt/token-api/evm-dexs/pools-ohlc/ -/pt/token-api/evm-dexs/pools/ -/pt/token-api/evm-dexs/swaps/ -/pt/token-api/evm-nfts/collections/ -/pt/token-api/evm-nfts/holders/ -/pt/token-api/evm-nfts/items/ -/pt/token-api/evm-nfts/ownerships/ -/pt/token-api/evm-nfts/sales/ -/pt/token-api/evm-nfts/transfers/ -/pt/token-api/evm-tokens/balances-historical/ -/pt/token-api/evm-tokens/balances-native/ -/pt/token-api/evm-tokens/balances/ -/pt/token-api/evm-tokens/holders/ -/pt/token-api/evm-tokens/tokens/ -/pt/token-api/evm-tokens/transfers/ -/pt/token-api/faq/ -/pt/token-api/monitoring/health/ -/pt/token-api/monitoring/networks/ -/pt/token-api/monitoring/version/ -/pt/token-api/quick-start/ -/pt/token-api/svm-dexs/dexes/ -/pt/token-api/svm-dexs/pools-ohlc/ -/pt/token-api/svm-dexs/pools/ -/pt/token-api/svm-dexs/swaps/ -/pt/token-api/svm-tokens/balances-native/ -/pt/token-api/svm-tokens/balances/ -/pt/token-api/svm-tokens/holders/ -/pt/token-api/svm-tokens/owner/ -/pt/token-api/svm-tokens/tokens/ -/pt/token-api/svm-tokens/transfers/ -/pt/token-api/tvm-dexs/dexes/ -/pt/token-api/tvm-dexs/pools-ohlc/ -/pt/token-api/tvm-dexs/swaps/ -/pt/token-api/tvm-tokens/tokens/ -/pt/token-api/tvm-tokens/transfers-native/ -/pt/token-api/tvm-tokens/transfers/ -/ro/about/ -/ro/ai-suite/ai-introduction/ -/ro/ai-suite/subgraph-mcp/claude/ -/ro/ai-suite/subgraph-mcp/cline/ -/ro/ai-suite/subgraph-mcp/cursor/ -/ro/ai-suite/subgraph-mcp/introduction/ -/ro/ai-suite/token-api-mcp/claude/ -/ro/ai-suite/token-api-mcp/cline/ -/ro/ai-suite/token-api-mcp/cursor/ -/ro/ai-suite/token-api-mcp/introduction/ -/ro/archived/arbitrum/arbitrum-faq/ -/ro/archived/arbitrum/l2-transfer-tools-faq/ -/ro/archived/arbitrum/l2-transfer-tools-guide/ -/ro/archived/sunrise/ -/ro/contracts/ -/ro/graph-horizon/migration-guide/ -/ro/graph-horizon/overview/ -/ro/graph-horizon/what-changes/ -/ro/hypergraph/faq/ -/ro/hypergraph/overview/ -/ro/indexing/chain-integration-overview/ -/ro/indexing/new-chain-integration/ -/ro/indexing/overview/ -/ro/indexing/supported-network-requirements/ -/ro/indexing/tap/ -/ro/indexing/tooling/firehose/ -/ro/indexing/tooling/graph-node/ -/ro/indexing/tooling/graphcast/ -/ro/resources/benefits/ -/ro/resources/glossary/ -/ro/resources/migration-guides/assemblyscript-migration-guide/ -/ro/resources/migration-guides/graphql-validations-migration-guide/ -/ro/resources/migration-guides/migrate-from-alchemy/ -/ro/resources/roles/curating/ -/ro/resources/roles/delegating/delegating/ -/ro/resources/roles/delegating/undelegating/ -/ro/resources/subgraph-studio-faq/ -/ro/resources/tokenomics/ -/ro/subgraphs/best-practices/avoid-eth-calls/ -/ro/subgraphs/best-practices/derivedfrom/ -/ro/subgraphs/best-practices/grafting-hotfix/ -/ro/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/ro/subgraphs/best-practices/pruning/ -/ro/subgraphs/best-practices/timeseries/ -/ro/subgraphs/billing/ -/ro/subgraphs/developing/creating/advanced/ -/ro/subgraphs/developing/creating/assemblyscript-mappings/ -/ro/subgraphs/developing/creating/graph-node-dev/ -/ro/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/ro/subgraphs/developing/creating/graph-ts/README/ -/ro/subgraphs/developing/creating/graph-ts/api/ -/ro/subgraphs/developing/creating/graph-ts/common-issues/ -/ro/subgraphs/developing/creating/install-the-cli/ -/ro/subgraphs/developing/creating/ql-schema/ -/ro/subgraphs/developing/creating/starting-your-subgraph/ -/ro/subgraphs/developing/creating/subgraph-manifest/ -/ro/subgraphs/developing/creating/unit-testing-framework/ -/ro/subgraphs/developing/deploying/multiple-networks/ -/ro/subgraphs/developing/deploying/using-subgraph-studio/ -/ro/subgraphs/developing/developer-faq/ -/ro/subgraphs/developing/introduction/ -/ro/subgraphs/developing/managing/deleting-a-subgraph/ -/ro/subgraphs/developing/managing/transferring-a-subgraph/ -/ro/subgraphs/developing/publishing/publishing-a-subgraph/ -/ro/subgraphs/developing/subgraphs/ -/ro/subgraphs/explorer/ -/ro/subgraphs/fair-use-policy/ -/ro/subgraphs/guides/contract-analyzer/ -/ro/subgraphs/guides/enums/ -/ro/subgraphs/guides/grafting/ -/ro/subgraphs/guides/near/ -/ro/subgraphs/guides/polymarket/ -/ro/subgraphs/guides/secure-api-keys-nextjs/ -/ro/subgraphs/guides/subgraph-composition/ -/ro/subgraphs/guides/subgraph-debug-forking/ -/ro/subgraphs/guides/subgraph-uncrashable/ -/ro/subgraphs/guides/transfer-to-the-graph/ -/ro/subgraphs/querying/best-practices/ -/ro/subgraphs/querying/distributed-systems/ -/ro/subgraphs/querying/from-an-application/ -/ro/subgraphs/querying/graph-client/README/ -/ro/subgraphs/querying/graph-client/architecture/ -/ro/subgraphs/querying/graph-client/live/ -/ro/subgraphs/querying/graphql-api/ -/ro/subgraphs/querying/introduction/ -/ro/subgraphs/querying/managing-api-keys/ -/ro/subgraphs/querying/python/ -/ro/subgraphs/querying/subgraph-id-vs-deployment-id/ -/ro/subgraphs/quick-start/ -/ro/subgraphs/upgrade-indexer/ -/ro/substreams/developing/dev-container/ -/ro/substreams/developing/sinks/ -/ro/substreams/developing/solana/account-changes/ -/ro/substreams/developing/solana/transactions/ -/ro/substreams/introduction/ -/ro/substreams/publishing/ -/ro/substreams/quick-start/ -/ro/supported-networks/ -/ro/token-api/endpoint-pricing/ -/ro/token-api/evm-dexs/dexes/ -/ro/token-api/evm-dexs/pools-ohlc/ -/ro/token-api/evm-dexs/pools/ -/ro/token-api/evm-dexs/swaps/ -/ro/token-api/evm-nfts/collections/ -/ro/token-api/evm-nfts/holders/ -/ro/token-api/evm-nfts/items/ -/ro/token-api/evm-nfts/ownerships/ -/ro/token-api/evm-nfts/sales/ -/ro/token-api/evm-nfts/transfers/ -/ro/token-api/evm-tokens/balances-historical/ -/ro/token-api/evm-tokens/balances-native/ -/ro/token-api/evm-tokens/balances/ -/ro/token-api/evm-tokens/holders/ -/ro/token-api/evm-tokens/tokens/ -/ro/token-api/evm-tokens/transfers/ -/ro/token-api/faq/ -/ro/token-api/monitoring/health/ -/ro/token-api/monitoring/networks/ -/ro/token-api/monitoring/version/ -/ro/token-api/quick-start/ -/ro/token-api/svm-dexs/dexes/ -/ro/token-api/svm-dexs/pools-ohlc/ -/ro/token-api/svm-dexs/pools/ -/ro/token-api/svm-dexs/swaps/ -/ro/token-api/svm-tokens/balances-native/ -/ro/token-api/svm-tokens/balances/ -/ro/token-api/svm-tokens/holders/ -/ro/token-api/svm-tokens/owner/ -/ro/token-api/svm-tokens/tokens/ -/ro/token-api/svm-tokens/transfers/ -/ro/token-api/tvm-dexs/dexes/ -/ro/token-api/tvm-dexs/pools-ohlc/ -/ro/token-api/tvm-dexs/swaps/ -/ro/token-api/tvm-tokens/tokens/ -/ro/token-api/tvm-tokens/transfers-native/ -/ro/token-api/tvm-tokens/transfers/ -/ru/ -/ru/404/ -/ru/about/ -/ru/ai-suite/ai-introduction/ -/ru/ai-suite/subgraph-mcp/claude/ -/ru/ai-suite/subgraph-mcp/cline/ -/ru/ai-suite/subgraph-mcp/cursor/ -/ru/ai-suite/subgraph-mcp/introduction/ -/ru/ai-suite/token-api-mcp/claude/ -/ru/ai-suite/token-api-mcp/cline/ -/ru/ai-suite/token-api-mcp/cursor/ -/ru/ai-suite/token-api-mcp/introduction/ -/ru/archived/arbitrum/arbitrum-faq/ -/ru/archived/arbitrum/l2-transfer-tools-faq/ -/ru/archived/arbitrum/l2-transfer-tools-guide/ -/ru/archived/sunrise/ -/ru/contracts/ -/ru/graph-horizon/migration-guide/ -/ru/graph-horizon/overview/ -/ru/graph-horizon/what-changes/ -/ru/hypergraph/faq/ -/ru/hypergraph/overview/ -/ru/indexing/chain-integration-overview/ -/ru/indexing/new-chain-integration/ -/ru/indexing/overview/ -/ru/indexing/supported-network-requirements/ -/ru/indexing/tap/ -/ru/indexing/tooling/firehose/ -/ru/indexing/tooling/graph-node/ -/ru/indexing/tooling/graphcast/ -/ru/resources/benefits/ -/ru/resources/glossary/ -/ru/resources/migration-guides/assemblyscript-migration-guide/ -/ru/resources/migration-guides/graphql-validations-migration-guide/ -/ru/resources/migration-guides/migrate-from-alchemy/ -/ru/resources/roles/curating/ -/ru/resources/roles/delegating/delegating/ -/ru/resources/roles/delegating/undelegating/ -/ru/resources/subgraph-studio-faq/ -/ru/resources/tokenomics/ -/ru/subgraphs/best-practices/avoid-eth-calls/ -/ru/subgraphs/best-practices/derivedfrom/ -/ru/subgraphs/best-practices/grafting-hotfix/ -/ru/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/ru/subgraphs/best-practices/pruning/ -/ru/subgraphs/best-practices/timeseries/ -/ru/subgraphs/billing/ -/ru/subgraphs/developing/creating/advanced/ -/ru/subgraphs/developing/creating/assemblyscript-mappings/ -/ru/subgraphs/developing/creating/graph-node-dev/ -/ru/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/ru/subgraphs/developing/creating/graph-ts/README/ -/ru/subgraphs/developing/creating/graph-ts/api/ -/ru/subgraphs/developing/creating/graph-ts/common-issues/ -/ru/subgraphs/developing/creating/install-the-cli/ -/ru/subgraphs/developing/creating/ql-schema/ -/ru/subgraphs/developing/creating/starting-your-subgraph/ -/ru/subgraphs/developing/creating/subgraph-manifest/ -/ru/subgraphs/developing/creating/unit-testing-framework/ -/ru/subgraphs/developing/deploying/multiple-networks/ -/ru/subgraphs/developing/deploying/using-subgraph-studio/ -/ru/subgraphs/developing/developer-faq/ -/ru/subgraphs/developing/introduction/ -/ru/subgraphs/developing/managing/deleting-a-subgraph/ -/ru/subgraphs/developing/managing/transferring-a-subgraph/ -/ru/subgraphs/developing/publishing/publishing-a-subgraph/ -/ru/subgraphs/developing/subgraphs/ -/ru/subgraphs/explorer/ -/ru/subgraphs/fair-use-policy/ -/ru/subgraphs/guides/contract-analyzer/ -/ru/subgraphs/guides/enums/ -/ru/subgraphs/guides/grafting/ -/ru/subgraphs/guides/near/ -/ru/subgraphs/guides/polymarket/ -/ru/subgraphs/guides/secure-api-keys-nextjs/ -/ru/subgraphs/guides/subgraph-composition/ -/ru/subgraphs/guides/subgraph-debug-forking/ -/ru/subgraphs/guides/subgraph-uncrashable/ -/ru/subgraphs/guides/transfer-to-the-graph/ -/ru/subgraphs/querying/best-practices/ -/ru/subgraphs/querying/distributed-systems/ -/ru/subgraphs/querying/from-an-application/ -/ru/subgraphs/querying/graph-client/README/ -/ru/subgraphs/querying/graph-client/architecture/ -/ru/subgraphs/querying/graph-client/live/ -/ru/subgraphs/querying/graphql-api/ -/ru/subgraphs/querying/introduction/ -/ru/subgraphs/querying/managing-api-keys/ -/ru/subgraphs/querying/python/ -/ru/subgraphs/querying/subgraph-id-vs-deployment-id/ -/ru/subgraphs/quick-start/ -/ru/subgraphs/upgrade-indexer/ -/ru/substreams/developing/dev-container/ -/ru/substreams/developing/sinks/ -/ru/substreams/developing/solana/account-changes/ -/ru/substreams/developing/solana/transactions/ -/ru/substreams/introduction/ -/ru/substreams/publishing/ -/ru/substreams/quick-start/ -/ru/supported-networks/ -/ru/supported-networks/abstract-testnet/ -/ru/supported-networks/abstract/ -/ru/supported-networks/apechain-curtis/ -/ru/supported-networks/apechain/ -/ru/supported-networks/arbitrum-nova/ -/ru/supported-networks/arbitrum-one/ -/ru/supported-networks/arbitrum-sepolia/ -/ru/supported-networks/arc-testnet/ -/ru/supported-networks/autonomys-chronos/ -/ru/supported-networks/autonomys/ -/ru/supported-networks/avalanche/ -/ru/supported-networks/base-sepolia/ -/ru/supported-networks/base/ -/ru/supported-networks/berachain-bepolia/ -/ru/supported-networks/berachain/ -/ru/supported-networks/blast-mainnet/ -/ru/supported-networks/blast-testnet/ -/ru/supported-networks/bnb-op/ -/ru/supported-networks/bnb-svm/ -/ru/supported-networks/boba-testnet/ -/ru/supported-networks/boba/ -/ru/supported-networks/botanix-testnet/ -/ru/supported-networks/botanix/ -/ru/supported-networks/bsc/ -/ru/supported-networks/btc/ -/ru/supported-networks/celo-sepolia/ -/ru/supported-networks/celo/ -/ru/supported-networks/chapel/ -/ru/supported-networks/chiliz-testnet/ -/ru/supported-networks/chiliz/ -/ru/supported-networks/corn-testnet/ -/ru/supported-networks/corn/ -/ru/supported-networks/cronos/ -/ru/supported-networks/eos/ -/ru/supported-networks/etherlink-mainnet/ -/ru/supported-networks/etherlink-shadownet/ -/ru/supported-networks/etherlink-testnet/ -/ru/supported-networks/fantom-testnet/ -/ru/supported-networks/fantom/ -/ru/supported-networks/fraxtal/ -/ru/supported-networks/fuji/ -/ru/supported-networks/fuse-testnet/ -/ru/supported-networks/fuse/ -/ru/supported-networks/gnosis-chiado-cl/ -/ru/supported-networks/gnosis-chiado/ -/ru/supported-networks/gnosis-cl/ -/ru/supported-networks/gnosis/ -/ru/supported-networks/hashkeychain-sepolia/ -/ru/supported-networks/hashkeychain/ -/ru/supported-networks/hemi-sepolia/ -/ru/supported-networks/hemi/ -/ru/supported-networks/holesky/ -/ru/supported-networks/hoodi-cl/ -/ru/supported-networks/hoodi/ -/ru/supported-networks/injective-evm-testnet/ -/ru/supported-networks/injective-evm/ -/ru/supported-networks/injective-mainnet/ -/ru/supported-networks/injective-testnet/ -/ru/supported-networks/ink-sepolia/ -/ru/supported-networks/ink/ -/ru/supported-networks/iotex-testnet/ -/ru/supported-networks/iotex/ -/ru/supported-networks/joc-testnet/ -/ru/supported-networks/joc/ -/ru/supported-networks/jungle4/ -/ru/supported-networks/kaia-testnet/ -/ru/supported-networks/kaia/ -/ru/supported-networks/katana-tatara/ -/ru/supported-networks/katana/ -/ru/supported-networks/kylin/ -/ru/supported-networks/lens-testnet/ -/ru/supported-networks/lens/ -/ru/supported-networks/linea-sepolia/ -/ru/supported-networks/linea/ -/ru/supported-networks/litecoin/ -/ru/supported-networks/lumia/ -/ru/supported-networks/mainnet-cl/ -/ru/supported-networks/mainnet/ -/ru/supported-networks/manta/ -/ru/supported-networks/mantra-mainnet/ -/ru/supported-networks/mantra-testnet/ -/ru/supported-networks/matic/ -/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/ -/ru/supported-networks/mode-mainnet/ -/ru/supported-networks/monad-testnet/ -/ru/supported-networks/monad/ -/ru/supported-networks/moonbeam/ -/ru/supported-networks/moonriver/ -/ru/supported-networks/near-mainnet/ -/ru/supported-networks/near-testnet/ -/ru/supported-networks/neox-testnet/ -/ru/supported-networks/neox/ -/ru/supported-networks/optimism-sepolia/ -/ru/supported-networks/optimism/ -/ru/supported-networks/peaq/ -/ru/supported-networks/polkadot-testnet/ -/ru/supported-networks/polygon-amoy/ -/ru/supported-networks/polygon-zkevm-cardona/ -/ru/supported-networks/polygon-zkevm/ -/ru/supported-networks/ronin/ -/ru/supported-networks/rootstock-testnet/ -/ru/supported-networks/rootstock/ -/ru/supported-networks/scroll-sepolia/ -/ru/supported-networks/scroll/ -/ru/supported-networks/sei-atlantic/ -/ru/supported-networks/sei-mainnet/ -/ru/supported-networks/sepolia-cl/ -/ru/supported-networks/sepolia/ -/ru/supported-networks/solana-accounts/ -/ru/supported-networks/solana-devnet/ -/ru/supported-networks/solana-mainnet-beta/ -/ru/supported-networks/soneium-testnet/ -/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/ -/ru/supported-networks/stellar-testnet/ -/ru/supported-networks/stellar/ -/ru/supported-networks/swellchain-sepolia/ -/ru/supported-networks/swellchain/ -/ru/supported-networks/telos-testnet/ -/ru/supported-networks/telos/ -/ru/supported-networks/tron-evm/ -/ru/supported-networks/tron/ -/ru/supported-networks/ultra/ -/ru/supported-networks/unichain-testnet/ -/ru/supported-networks/unichain/ -/ru/supported-networks/vana-moksha/ -/ru/supported-networks/vana/ -/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/ -/ru/supported-networks/zilliqa-testnet/ -/ru/supported-networks/zilliqa/ -/ru/supported-networks/zksync-era-sepolia/ -/ru/supported-networks/zksync-era/ -/ru/supported-networks/zora/ -/ru/token-api/endpoint-pricing/ -/ru/token-api/evm-dexs/dexes/ -/ru/token-api/evm-dexs/pools-ohlc/ -/ru/token-api/evm-dexs/pools/ -/ru/token-api/evm-dexs/swaps/ -/ru/token-api/evm-nfts/collections/ -/ru/token-api/evm-nfts/holders/ -/ru/token-api/evm-nfts/items/ -/ru/token-api/evm-nfts/ownerships/ -/ru/token-api/evm-nfts/sales/ -/ru/token-api/evm-nfts/transfers/ -/ru/token-api/evm-tokens/balances-historical/ -/ru/token-api/evm-tokens/balances-native/ -/ru/token-api/evm-tokens/balances/ -/ru/token-api/evm-tokens/holders/ -/ru/token-api/evm-tokens/tokens/ -/ru/token-api/evm-tokens/transfers/ -/ru/token-api/faq/ -/ru/token-api/monitoring/health/ -/ru/token-api/monitoring/networks/ -/ru/token-api/monitoring/version/ -/ru/token-api/quick-start/ -/ru/token-api/svm-dexs/dexes/ -/ru/token-api/svm-dexs/pools-ohlc/ -/ru/token-api/svm-dexs/pools/ -/ru/token-api/svm-dexs/swaps/ -/ru/token-api/svm-tokens/balances-native/ -/ru/token-api/svm-tokens/balances/ -/ru/token-api/svm-tokens/holders/ -/ru/token-api/svm-tokens/owner/ -/ru/token-api/svm-tokens/tokens/ -/ru/token-api/svm-tokens/transfers/ -/ru/token-api/tvm-dexs/dexes/ -/ru/token-api/tvm-dexs/pools-ohlc/ -/ru/token-api/tvm-dexs/swaps/ -/ru/token-api/tvm-tokens/tokens/ -/ru/token-api/tvm-tokens/transfers-native/ -/ru/token-api/tvm-tokens/transfers/ -/sv/ -/sv/404/ -/sv/about/ -/sv/ai-suite/ai-introduction/ -/sv/ai-suite/subgraph-mcp/claude/ -/sv/ai-suite/subgraph-mcp/cline/ -/sv/ai-suite/subgraph-mcp/cursor/ -/sv/ai-suite/subgraph-mcp/introduction/ -/sv/ai-suite/token-api-mcp/claude/ -/sv/ai-suite/token-api-mcp/cline/ -/sv/ai-suite/token-api-mcp/cursor/ -/sv/ai-suite/token-api-mcp/introduction/ -/sv/archived/arbitrum/arbitrum-faq/ -/sv/archived/arbitrum/l2-transfer-tools-faq/ -/sv/archived/arbitrum/l2-transfer-tools-guide/ -/sv/archived/sunrise/ -/sv/contracts/ -/sv/graph-horizon/migration-guide/ -/sv/graph-horizon/overview/ -/sv/graph-horizon/what-changes/ -/sv/hypergraph/faq/ -/sv/hypergraph/overview/ -/sv/indexing/chain-integration-overview/ -/sv/indexing/new-chain-integration/ -/sv/indexing/overview/ -/sv/indexing/supported-network-requirements/ -/sv/indexing/tap/ -/sv/indexing/tooling/firehose/ -/sv/indexing/tooling/graph-node/ -/sv/indexing/tooling/graphcast/ -/sv/resources/benefits/ -/sv/resources/glossary/ -/sv/resources/migration-guides/assemblyscript-migration-guide/ -/sv/resources/migration-guides/graphql-validations-migration-guide/ -/sv/resources/migration-guides/migrate-from-alchemy/ -/sv/resources/roles/curating/ -/sv/resources/roles/delegating/delegating/ -/sv/resources/roles/delegating/undelegating/ -/sv/resources/subgraph-studio-faq/ -/sv/resources/tokenomics/ -/sv/subgraphs/best-practices/avoid-eth-calls/ -/sv/subgraphs/best-practices/derivedfrom/ -/sv/subgraphs/best-practices/grafting-hotfix/ -/sv/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/sv/subgraphs/best-practices/pruning/ -/sv/subgraphs/best-practices/timeseries/ -/sv/subgraphs/billing/ -/sv/subgraphs/developing/creating/advanced/ -/sv/subgraphs/developing/creating/assemblyscript-mappings/ -/sv/subgraphs/developing/creating/graph-node-dev/ -/sv/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/sv/subgraphs/developing/creating/graph-ts/README/ -/sv/subgraphs/developing/creating/graph-ts/api/ -/sv/subgraphs/developing/creating/graph-ts/common-issues/ -/sv/subgraphs/developing/creating/install-the-cli/ -/sv/subgraphs/developing/creating/ql-schema/ -/sv/subgraphs/developing/creating/starting-your-subgraph/ -/sv/subgraphs/developing/creating/subgraph-manifest/ -/sv/subgraphs/developing/creating/unit-testing-framework/ -/sv/subgraphs/developing/deploying/multiple-networks/ -/sv/subgraphs/developing/deploying/using-subgraph-studio/ -/sv/subgraphs/developing/developer-faq/ -/sv/subgraphs/developing/introduction/ -/sv/subgraphs/developing/managing/deleting-a-subgraph/ -/sv/subgraphs/developing/managing/transferring-a-subgraph/ -/sv/subgraphs/developing/publishing/publishing-a-subgraph/ -/sv/subgraphs/developing/subgraphs/ -/sv/subgraphs/explorer/ -/sv/subgraphs/fair-use-policy/ -/sv/subgraphs/guides/contract-analyzer/ -/sv/subgraphs/guides/enums/ -/sv/subgraphs/guides/grafting/ -/sv/subgraphs/guides/near/ -/sv/subgraphs/guides/polymarket/ -/sv/subgraphs/guides/secure-api-keys-nextjs/ -/sv/subgraphs/guides/subgraph-composition/ -/sv/subgraphs/guides/subgraph-debug-forking/ -/sv/subgraphs/guides/subgraph-uncrashable/ -/sv/subgraphs/guides/transfer-to-the-graph/ -/sv/subgraphs/querying/best-practices/ -/sv/subgraphs/querying/distributed-systems/ -/sv/subgraphs/querying/from-an-application/ -/sv/subgraphs/querying/graph-client/README/ -/sv/subgraphs/querying/graph-client/architecture/ -/sv/subgraphs/querying/graph-client/live/ -/sv/subgraphs/querying/graphql-api/ -/sv/subgraphs/querying/introduction/ -/sv/subgraphs/querying/managing-api-keys/ -/sv/subgraphs/querying/python/ -/sv/subgraphs/querying/subgraph-id-vs-deployment-id/ -/sv/subgraphs/quick-start/ -/sv/subgraphs/upgrade-indexer/ -/sv/substreams/developing/dev-container/ -/sv/substreams/developing/sinks/ -/sv/substreams/developing/solana/account-changes/ -/sv/substreams/developing/solana/transactions/ -/sv/substreams/introduction/ -/sv/substreams/publishing/ -/sv/substreams/quick-start/ -/sv/supported-networks/ -/sv/supported-networks/abstract-testnet/ -/sv/supported-networks/abstract/ -/sv/supported-networks/apechain-curtis/ -/sv/supported-networks/apechain/ -/sv/supported-networks/arbitrum-nova/ -/sv/supported-networks/arbitrum-one/ -/sv/supported-networks/arbitrum-sepolia/ -/sv/supported-networks/arc-testnet/ -/sv/supported-networks/autonomys-chronos/ -/sv/supported-networks/autonomys/ -/sv/supported-networks/avalanche/ -/sv/supported-networks/base-sepolia/ -/sv/supported-networks/base/ -/sv/supported-networks/berachain-bepolia/ -/sv/supported-networks/berachain/ -/sv/supported-networks/blast-mainnet/ -/sv/supported-networks/blast-testnet/ -/sv/supported-networks/bnb-op/ -/sv/supported-networks/bnb-svm/ -/sv/supported-networks/boba-testnet/ -/sv/supported-networks/boba/ -/sv/supported-networks/botanix-testnet/ -/sv/supported-networks/botanix/ -/sv/supported-networks/bsc/ -/sv/supported-networks/btc/ -/sv/supported-networks/celo-sepolia/ -/sv/supported-networks/celo/ -/sv/supported-networks/chapel/ -/sv/supported-networks/chiliz-testnet/ -/sv/supported-networks/chiliz/ -/sv/supported-networks/corn-testnet/ -/sv/supported-networks/corn/ -/sv/supported-networks/cronos/ -/sv/supported-networks/eos/ -/sv/supported-networks/etherlink-mainnet/ -/sv/supported-networks/etherlink-shadownet/ -/sv/supported-networks/etherlink-testnet/ -/sv/supported-networks/fantom-testnet/ -/sv/supported-networks/fantom/ -/sv/supported-networks/fraxtal/ -/sv/supported-networks/fuji/ -/sv/supported-networks/fuse-testnet/ -/sv/supported-networks/fuse/ -/sv/supported-networks/gnosis-chiado-cl/ -/sv/supported-networks/gnosis-chiado/ -/sv/supported-networks/gnosis-cl/ -/sv/supported-networks/gnosis/ -/sv/supported-networks/hashkeychain-sepolia/ -/sv/supported-networks/hashkeychain/ -/sv/supported-networks/hemi-sepolia/ -/sv/supported-networks/hemi/ -/sv/supported-networks/holesky/ -/sv/supported-networks/hoodi-cl/ -/sv/supported-networks/hoodi/ -/sv/supported-networks/injective-evm-testnet/ -/sv/supported-networks/injective-evm/ -/sv/supported-networks/injective-mainnet/ -/sv/supported-networks/injective-testnet/ -/sv/supported-networks/ink-sepolia/ -/sv/supported-networks/ink/ -/sv/supported-networks/iotex-testnet/ -/sv/supported-networks/iotex/ -/sv/supported-networks/joc-testnet/ -/sv/supported-networks/joc/ -/sv/supported-networks/jungle4/ -/sv/supported-networks/kaia-testnet/ -/sv/supported-networks/kaia/ -/sv/supported-networks/katana-tatara/ -/sv/supported-networks/katana/ -/sv/supported-networks/kylin/ -/sv/supported-networks/lens-testnet/ -/sv/supported-networks/lens/ -/sv/supported-networks/linea-sepolia/ -/sv/supported-networks/linea/ -/sv/supported-networks/litecoin/ -/sv/supported-networks/lumia/ -/sv/supported-networks/mainnet-cl/ -/sv/supported-networks/mainnet/ -/sv/supported-networks/manta/ -/sv/supported-networks/mantra-mainnet/ -/sv/supported-networks/mantra-testnet/ -/sv/supported-networks/matic/ -/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/ -/sv/supported-networks/mode-mainnet/ -/sv/supported-networks/monad-testnet/ -/sv/supported-networks/monad/ -/sv/supported-networks/moonbeam/ -/sv/supported-networks/moonriver/ -/sv/supported-networks/near-mainnet/ -/sv/supported-networks/near-testnet/ -/sv/supported-networks/neox-testnet/ -/sv/supported-networks/neox/ -/sv/supported-networks/optimism-sepolia/ -/sv/supported-networks/optimism/ -/sv/supported-networks/peaq/ -/sv/supported-networks/polkadot-testnet/ -/sv/supported-networks/polygon-amoy/ -/sv/supported-networks/polygon-zkevm-cardona/ -/sv/supported-networks/polygon-zkevm/ -/sv/supported-networks/ronin/ -/sv/supported-networks/rootstock-testnet/ -/sv/supported-networks/rootstock/ -/sv/supported-networks/scroll-sepolia/ -/sv/supported-networks/scroll/ -/sv/supported-networks/sei-atlantic/ -/sv/supported-networks/sei-mainnet/ -/sv/supported-networks/sepolia-cl/ -/sv/supported-networks/sepolia/ -/sv/supported-networks/solana-accounts/ -/sv/supported-networks/solana-devnet/ -/sv/supported-networks/solana-mainnet-beta/ -/sv/supported-networks/soneium-testnet/ -/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/ -/sv/supported-networks/stellar-testnet/ -/sv/supported-networks/stellar/ -/sv/supported-networks/swellchain-sepolia/ -/sv/supported-networks/swellchain/ -/sv/supported-networks/telos-testnet/ -/sv/supported-networks/telos/ -/sv/supported-networks/tron-evm/ -/sv/supported-networks/tron/ -/sv/supported-networks/ultra/ -/sv/supported-networks/unichain-testnet/ -/sv/supported-networks/unichain/ -/sv/supported-networks/vana-moksha/ -/sv/supported-networks/vana/ -/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/ -/sv/token-api/evm-dexs/pools/ -/sv/token-api/evm-dexs/swaps/ -/sv/token-api/evm-nfts/collections/ -/sv/token-api/evm-nfts/holders/ -/sv/token-api/evm-nfts/items/ -/sv/token-api/evm-nfts/ownerships/ -/sv/token-api/evm-nfts/sales/ -/sv/token-api/evm-nfts/transfers/ -/sv/token-api/evm-tokens/balances-historical/ -/sv/token-api/evm-tokens/balances-native/ -/sv/token-api/evm-tokens/balances/ -/sv/token-api/evm-tokens/holders/ -/sv/token-api/evm-tokens/tokens/ -/sv/token-api/evm-tokens/transfers/ -/sv/token-api/faq/ -/sv/token-api/monitoring/health/ -/sv/token-api/monitoring/networks/ -/sv/token-api/monitoring/version/ -/sv/token-api/quick-start/ -/sv/token-api/svm-dexs/dexes/ -/sv/token-api/svm-dexs/pools-ohlc/ -/sv/token-api/svm-dexs/pools/ -/sv/token-api/svm-dexs/swaps/ -/sv/token-api/svm-tokens/balances-native/ -/sv/token-api/svm-tokens/balances/ -/sv/token-api/svm-tokens/holders/ -/sv/token-api/svm-tokens/owner/ -/sv/token-api/svm-tokens/tokens/ -/sv/token-api/svm-tokens/transfers/ -/sv/token-api/tvm-dexs/dexes/ -/sv/token-api/tvm-dexs/pools-ohlc/ -/sv/token-api/tvm-dexs/swaps/ -/sv/token-api/tvm-tokens/tokens/ -/sv/token-api/tvm-tokens/transfers-native/ -/sv/token-api/tvm-tokens/transfers/ -/tr/ -/tr/404/ -/tr/about/ -/tr/ai-suite/ai-introduction/ -/tr/ai-suite/subgraph-mcp/claude/ -/tr/ai-suite/subgraph-mcp/cline/ -/tr/ai-suite/subgraph-mcp/cursor/ -/tr/ai-suite/subgraph-mcp/introduction/ -/tr/ai-suite/token-api-mcp/claude/ -/tr/ai-suite/token-api-mcp/cline/ -/tr/ai-suite/token-api-mcp/cursor/ -/tr/ai-suite/token-api-mcp/introduction/ -/tr/archived/arbitrum/arbitrum-faq/ -/tr/archived/arbitrum/l2-transfer-tools-faq/ -/tr/archived/arbitrum/l2-transfer-tools-guide/ -/tr/archived/sunrise/ -/tr/contracts/ -/tr/graph-horizon/migration-guide/ -/tr/graph-horizon/overview/ -/tr/graph-horizon/what-changes/ -/tr/hypergraph/faq/ -/tr/hypergraph/overview/ -/tr/indexing/chain-integration-overview/ -/tr/indexing/new-chain-integration/ -/tr/indexing/overview/ -/tr/indexing/supported-network-requirements/ -/tr/indexing/tap/ -/tr/indexing/tooling/firehose/ -/tr/indexing/tooling/graph-node/ -/tr/indexing/tooling/graphcast/ -/tr/resources/benefits/ -/tr/resources/glossary/ -/tr/resources/migration-guides/assemblyscript-migration-guide/ -/tr/resources/migration-guides/graphql-validations-migration-guide/ -/tr/resources/migration-guides/migrate-from-alchemy/ -/tr/resources/roles/curating/ -/tr/resources/roles/delegating/delegating/ -/tr/resources/roles/delegating/undelegating/ -/tr/resources/subgraph-studio-faq/ -/tr/resources/tokenomics/ -/tr/subgraphs/best-practices/avoid-eth-calls/ -/tr/subgraphs/best-practices/derivedfrom/ -/tr/subgraphs/best-practices/grafting-hotfix/ -/tr/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/tr/subgraphs/best-practices/pruning/ -/tr/subgraphs/best-practices/timeseries/ -/tr/subgraphs/billing/ -/tr/subgraphs/developing/creating/advanced/ -/tr/subgraphs/developing/creating/assemblyscript-mappings/ -/tr/subgraphs/developing/creating/graph-node-dev/ -/tr/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/tr/subgraphs/developing/creating/graph-ts/README/ -/tr/subgraphs/developing/creating/graph-ts/api/ -/tr/subgraphs/developing/creating/graph-ts/common-issues/ -/tr/subgraphs/developing/creating/install-the-cli/ -/tr/subgraphs/developing/creating/ql-schema/ -/tr/subgraphs/developing/creating/starting-your-subgraph/ -/tr/subgraphs/developing/creating/subgraph-manifest/ -/tr/subgraphs/developing/creating/unit-testing-framework/ -/tr/subgraphs/developing/deploying/multiple-networks/ -/tr/subgraphs/developing/deploying/using-subgraph-studio/ -/tr/subgraphs/developing/developer-faq/ -/tr/subgraphs/developing/introduction/ -/tr/subgraphs/developing/managing/deleting-a-subgraph/ -/tr/subgraphs/developing/managing/transferring-a-subgraph/ -/tr/subgraphs/developing/publishing/publishing-a-subgraph/ -/tr/subgraphs/developing/subgraphs/ -/tr/subgraphs/explorer/ -/tr/subgraphs/fair-use-policy/ -/tr/subgraphs/guides/contract-analyzer/ -/tr/subgraphs/guides/enums/ -/tr/subgraphs/guides/grafting/ -/tr/subgraphs/guides/near/ -/tr/subgraphs/guides/polymarket/ -/tr/subgraphs/guides/secure-api-keys-nextjs/ -/tr/subgraphs/guides/subgraph-composition/ -/tr/subgraphs/guides/subgraph-debug-forking/ -/tr/subgraphs/guides/subgraph-uncrashable/ -/tr/subgraphs/guides/transfer-to-the-graph/ -/tr/subgraphs/querying/best-practices/ -/tr/subgraphs/querying/distributed-systems/ -/tr/subgraphs/querying/from-an-application/ -/tr/subgraphs/querying/graph-client/README/ -/tr/subgraphs/querying/graph-client/architecture/ -/tr/subgraphs/querying/graph-client/live/ -/tr/subgraphs/querying/graphql-api/ -/tr/subgraphs/querying/introduction/ -/tr/subgraphs/querying/managing-api-keys/ -/tr/subgraphs/querying/python/ -/tr/subgraphs/querying/subgraph-id-vs-deployment-id/ -/tr/subgraphs/quick-start/ -/tr/subgraphs/upgrade-indexer/ -/tr/substreams/developing/dev-container/ -/tr/substreams/developing/sinks/ -/tr/substreams/developing/solana/account-changes/ -/tr/substreams/developing/solana/transactions/ -/tr/substreams/introduction/ -/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/ -/tr/token-api/evm-dexs/pools/ -/tr/token-api/evm-dexs/swaps/ -/tr/token-api/evm-nfts/collections/ -/tr/token-api/evm-nfts/holders/ -/tr/token-api/evm-nfts/items/ -/tr/token-api/evm-nfts/ownerships/ -/tr/token-api/evm-nfts/sales/ -/tr/token-api/evm-nfts/transfers/ -/tr/token-api/evm-tokens/balances-historical/ -/tr/token-api/evm-tokens/balances-native/ -/tr/token-api/evm-tokens/balances/ -/tr/token-api/evm-tokens/holders/ -/tr/token-api/evm-tokens/tokens/ -/tr/token-api/evm-tokens/transfers/ -/tr/token-api/faq/ -/tr/token-api/monitoring/health/ -/tr/token-api/monitoring/networks/ -/tr/token-api/monitoring/version/ -/tr/token-api/quick-start/ -/tr/token-api/svm-dexs/dexes/ -/tr/token-api/svm-dexs/pools-ohlc/ -/tr/token-api/svm-dexs/pools/ -/tr/token-api/svm-dexs/swaps/ -/tr/token-api/svm-tokens/balances-native/ -/tr/token-api/svm-tokens/balances/ -/tr/token-api/svm-tokens/holders/ -/tr/token-api/svm-tokens/owner/ -/tr/token-api/svm-tokens/tokens/ -/tr/token-api/svm-tokens/transfers/ -/tr/token-api/tvm-dexs/dexes/ -/tr/token-api/tvm-dexs/pools-ohlc/ -/tr/token-api/tvm-dexs/swaps/ -/tr/token-api/tvm-tokens/tokens/ -/tr/token-api/tvm-tokens/transfers-native/ -/tr/token-api/tvm-tokens/transfers/ -/uk/about/ -/uk/ai-suite/ai-introduction/ -/uk/ai-suite/subgraph-mcp/claude/ -/uk/ai-suite/subgraph-mcp/cline/ -/uk/ai-suite/subgraph-mcp/cursor/ -/uk/ai-suite/subgraph-mcp/introduction/ -/uk/ai-suite/token-api-mcp/claude/ -/uk/ai-suite/token-api-mcp/cline/ -/uk/ai-suite/token-api-mcp/cursor/ -/uk/ai-suite/token-api-mcp/introduction/ -/uk/archived/arbitrum/arbitrum-faq/ -/uk/archived/arbitrum/l2-transfer-tools-faq/ -/uk/archived/arbitrum/l2-transfer-tools-guide/ -/uk/archived/sunrise/ -/uk/contracts/ -/uk/graph-horizon/migration-guide/ -/uk/graph-horizon/overview/ -/uk/graph-horizon/what-changes/ -/uk/hypergraph/faq/ -/uk/hypergraph/overview/ -/uk/indexing/chain-integration-overview/ -/uk/indexing/new-chain-integration/ -/uk/indexing/overview/ -/uk/indexing/supported-network-requirements/ -/uk/indexing/tap/ -/uk/indexing/tooling/firehose/ -/uk/indexing/tooling/graph-node/ -/uk/indexing/tooling/graphcast/ -/uk/resources/benefits/ -/uk/resources/glossary/ -/uk/resources/migration-guides/assemblyscript-migration-guide/ -/uk/resources/migration-guides/graphql-validations-migration-guide/ -/uk/resources/migration-guides/migrate-from-alchemy/ -/uk/resources/roles/curating/ -/uk/resources/roles/delegating/delegating/ -/uk/resources/roles/delegating/undelegating/ -/uk/resources/subgraph-studio-faq/ -/uk/resources/tokenomics/ -/uk/subgraphs/best-practices/avoid-eth-calls/ -/uk/subgraphs/best-practices/derivedfrom/ -/uk/subgraphs/best-practices/grafting-hotfix/ -/uk/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/uk/subgraphs/best-practices/pruning/ -/uk/subgraphs/best-practices/timeseries/ -/uk/subgraphs/billing/ -/uk/subgraphs/developing/creating/advanced/ -/uk/subgraphs/developing/creating/assemblyscript-mappings/ -/uk/subgraphs/developing/creating/graph-node-dev/ -/uk/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/uk/subgraphs/developing/creating/graph-ts/README/ -/uk/subgraphs/developing/creating/graph-ts/api/ -/uk/subgraphs/developing/creating/graph-ts/common-issues/ -/uk/subgraphs/developing/creating/install-the-cli/ -/uk/subgraphs/developing/creating/ql-schema/ -/uk/subgraphs/developing/creating/starting-your-subgraph/ -/uk/subgraphs/developing/creating/subgraph-manifest/ -/uk/subgraphs/developing/creating/unit-testing-framework/ -/uk/subgraphs/developing/deploying/multiple-networks/ -/uk/subgraphs/developing/deploying/using-subgraph-studio/ -/uk/subgraphs/developing/developer-faq/ -/uk/subgraphs/developing/introduction/ -/uk/subgraphs/developing/managing/deleting-a-subgraph/ -/uk/subgraphs/developing/managing/transferring-a-subgraph/ -/uk/subgraphs/developing/publishing/publishing-a-subgraph/ -/uk/subgraphs/developing/subgraphs/ -/uk/subgraphs/explorer/ -/uk/subgraphs/fair-use-policy/ -/uk/subgraphs/guides/contract-analyzer/ -/uk/subgraphs/guides/enums/ -/uk/subgraphs/guides/grafting/ -/uk/subgraphs/guides/near/ -/uk/subgraphs/guides/polymarket/ -/uk/subgraphs/guides/secure-api-keys-nextjs/ -/uk/subgraphs/guides/subgraph-composition/ -/uk/subgraphs/guides/subgraph-debug-forking/ -/uk/subgraphs/guides/subgraph-uncrashable/ -/uk/subgraphs/guides/transfer-to-the-graph/ -/uk/subgraphs/querying/best-practices/ -/uk/subgraphs/querying/distributed-systems/ -/uk/subgraphs/querying/from-an-application/ -/uk/subgraphs/querying/graph-client/README/ -/uk/subgraphs/querying/graph-client/architecture/ -/uk/subgraphs/querying/graph-client/live/ -/uk/subgraphs/querying/graphql-api/ -/uk/subgraphs/querying/introduction/ -/uk/subgraphs/querying/managing-api-keys/ -/uk/subgraphs/querying/python/ -/uk/subgraphs/querying/subgraph-id-vs-deployment-id/ -/uk/subgraphs/quick-start/ -/uk/subgraphs/upgrade-indexer/ -/uk/substreams/developing/dev-container/ -/uk/substreams/developing/sinks/ -/uk/substreams/developing/solana/account-changes/ -/uk/substreams/developing/solana/transactions/ -/uk/substreams/introduction/ -/uk/substreams/publishing/ -/uk/substreams/quick-start/ -/uk/supported-networks/ -/uk/token-api/endpoint-pricing/ -/uk/token-api/evm-dexs/dexes/ -/uk/token-api/evm-dexs/pools-ohlc/ -/uk/token-api/evm-dexs/pools/ -/uk/token-api/evm-dexs/swaps/ -/uk/token-api/evm-nfts/collections/ -/uk/token-api/evm-nfts/holders/ -/uk/token-api/evm-nfts/items/ -/uk/token-api/evm-nfts/ownerships/ -/uk/token-api/evm-nfts/sales/ -/uk/token-api/evm-nfts/transfers/ -/uk/token-api/evm-tokens/balances-historical/ -/uk/token-api/evm-tokens/balances-native/ -/uk/token-api/evm-tokens/balances/ -/uk/token-api/evm-tokens/holders/ -/uk/token-api/evm-tokens/tokens/ -/uk/token-api/evm-tokens/transfers/ -/uk/token-api/faq/ -/uk/token-api/monitoring/health/ -/uk/token-api/monitoring/networks/ -/uk/token-api/monitoring/version/ -/uk/token-api/quick-start/ -/uk/token-api/svm-dexs/dexes/ -/uk/token-api/svm-dexs/pools-ohlc/ -/uk/token-api/svm-dexs/pools/ -/uk/token-api/svm-dexs/swaps/ -/uk/token-api/svm-tokens/balances-native/ -/uk/token-api/svm-tokens/balances/ -/uk/token-api/svm-tokens/holders/ -/uk/token-api/svm-tokens/owner/ -/uk/token-api/svm-tokens/tokens/ -/uk/token-api/svm-tokens/transfers/ -/uk/token-api/tvm-dexs/dexes/ -/uk/token-api/tvm-dexs/pools-ohlc/ -/uk/token-api/tvm-dexs/swaps/ -/uk/token-api/tvm-tokens/tokens/ -/uk/token-api/tvm-tokens/transfers-native/ -/uk/token-api/tvm-tokens/transfers/ -/ur/ -/ur/404/ -/ur/about/ -/ur/ai-suite/ai-introduction/ -/ur/ai-suite/subgraph-mcp/claude/ -/ur/ai-suite/subgraph-mcp/cline/ -/ur/ai-suite/subgraph-mcp/cursor/ -/ur/ai-suite/subgraph-mcp/introduction/ -/ur/ai-suite/token-api-mcp/claude/ -/ur/ai-suite/token-api-mcp/cline/ -/ur/ai-suite/token-api-mcp/cursor/ -/ur/ai-suite/token-api-mcp/introduction/ -/ur/archived/arbitrum/arbitrum-faq/ -/ur/archived/arbitrum/l2-transfer-tools-faq/ -/ur/archived/arbitrum/l2-transfer-tools-guide/ -/ur/archived/sunrise/ -/ur/contracts/ -/ur/graph-horizon/migration-guide/ -/ur/graph-horizon/overview/ -/ur/graph-horizon/what-changes/ -/ur/hypergraph/faq/ -/ur/hypergraph/overview/ -/ur/indexing/chain-integration-overview/ -/ur/indexing/new-chain-integration/ -/ur/indexing/overview/ -/ur/indexing/supported-network-requirements/ -/ur/indexing/tap/ -/ur/indexing/tooling/firehose/ -/ur/indexing/tooling/graph-node/ -/ur/indexing/tooling/graphcast/ -/ur/resources/benefits/ -/ur/resources/glossary/ -/ur/resources/migration-guides/assemblyscript-migration-guide/ -/ur/resources/migration-guides/graphql-validations-migration-guide/ -/ur/resources/migration-guides/migrate-from-alchemy/ -/ur/resources/roles/curating/ -/ur/resources/roles/delegating/delegating/ -/ur/resources/roles/delegating/undelegating/ -/ur/resources/subgraph-studio-faq/ -/ur/resources/tokenomics/ -/ur/subgraphs/best-practices/avoid-eth-calls/ -/ur/subgraphs/best-practices/derivedfrom/ -/ur/subgraphs/best-practices/grafting-hotfix/ -/ur/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/ur/subgraphs/best-practices/pruning/ -/ur/subgraphs/best-practices/timeseries/ -/ur/subgraphs/billing/ -/ur/subgraphs/developing/creating/advanced/ -/ur/subgraphs/developing/creating/assemblyscript-mappings/ -/ur/subgraphs/developing/creating/graph-node-dev/ -/ur/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/ur/subgraphs/developing/creating/graph-ts/README/ -/ur/subgraphs/developing/creating/graph-ts/api/ -/ur/subgraphs/developing/creating/graph-ts/common-issues/ -/ur/subgraphs/developing/creating/install-the-cli/ -/ur/subgraphs/developing/creating/ql-schema/ -/ur/subgraphs/developing/creating/starting-your-subgraph/ -/ur/subgraphs/developing/creating/subgraph-manifest/ -/ur/subgraphs/developing/creating/unit-testing-framework/ -/ur/subgraphs/developing/deploying/multiple-networks/ -/ur/subgraphs/developing/deploying/using-subgraph-studio/ -/ur/subgraphs/developing/developer-faq/ -/ur/subgraphs/developing/introduction/ -/ur/subgraphs/developing/managing/deleting-a-subgraph/ -/ur/subgraphs/developing/managing/transferring-a-subgraph/ -/ur/subgraphs/developing/publishing/publishing-a-subgraph/ -/ur/subgraphs/developing/subgraphs/ -/ur/subgraphs/explorer/ -/ur/subgraphs/fair-use-policy/ -/ur/subgraphs/guides/contract-analyzer/ -/ur/subgraphs/guides/enums/ -/ur/subgraphs/guides/grafting/ -/ur/subgraphs/guides/near/ -/ur/subgraphs/guides/polymarket/ -/ur/subgraphs/guides/secure-api-keys-nextjs/ -/ur/subgraphs/guides/subgraph-composition/ -/ur/subgraphs/guides/subgraph-debug-forking/ -/ur/subgraphs/guides/subgraph-uncrashable/ -/ur/subgraphs/guides/transfer-to-the-graph/ -/ur/subgraphs/querying/best-practices/ -/ur/subgraphs/querying/distributed-systems/ -/ur/subgraphs/querying/from-an-application/ -/ur/subgraphs/querying/graph-client/README/ -/ur/subgraphs/querying/graph-client/architecture/ -/ur/subgraphs/querying/graph-client/live/ -/ur/subgraphs/querying/graphql-api/ -/ur/subgraphs/querying/introduction/ -/ur/subgraphs/querying/managing-api-keys/ -/ur/subgraphs/querying/python/ -/ur/subgraphs/querying/subgraph-id-vs-deployment-id/ -/ur/subgraphs/quick-start/ -/ur/subgraphs/upgrade-indexer/ -/ur/substreams/developing/dev-container/ -/ur/substreams/developing/sinks/ -/ur/substreams/developing/solana/account-changes/ -/ur/substreams/developing/solana/transactions/ -/ur/substreams/introduction/ -/ur/substreams/publishing/ -/ur/substreams/quick-start/ -/ur/supported-networks/ -/ur/token-api/endpoint-pricing/ -/ur/token-api/evm-dexs/dexes/ -/ur/token-api/evm-dexs/pools-ohlc/ -/ur/token-api/evm-dexs/pools/ -/ur/token-api/evm-dexs/swaps/ -/ur/token-api/evm-nfts/collections/ -/ur/token-api/evm-nfts/holders/ -/ur/token-api/evm-nfts/items/ -/ur/token-api/evm-nfts/ownerships/ -/ur/token-api/evm-nfts/sales/ -/ur/token-api/evm-nfts/transfers/ -/ur/token-api/evm-tokens/balances-historical/ -/ur/token-api/evm-tokens/balances-native/ -/ur/token-api/evm-tokens/balances/ -/ur/token-api/evm-tokens/holders/ -/ur/token-api/evm-tokens/tokens/ -/ur/token-api/evm-tokens/transfers/ -/ur/token-api/faq/ -/ur/token-api/monitoring/health/ -/ur/token-api/monitoring/networks/ -/ur/token-api/monitoring/version/ -/ur/token-api/quick-start/ -/ur/token-api/svm-dexs/dexes/ -/ur/token-api/svm-dexs/pools-ohlc/ -/ur/token-api/svm-dexs/pools/ -/ur/token-api/svm-dexs/swaps/ -/ur/token-api/svm-tokens/balances-native/ -/ur/token-api/svm-tokens/balances/ -/ur/token-api/svm-tokens/holders/ -/ur/token-api/svm-tokens/owner/ -/ur/token-api/svm-tokens/tokens/ -/ur/token-api/svm-tokens/transfers/ -/ur/token-api/tvm-dexs/dexes/ -/ur/token-api/tvm-dexs/pools-ohlc/ -/ur/token-api/tvm-dexs/swaps/ -/ur/token-api/tvm-tokens/tokens/ -/ur/token-api/tvm-tokens/transfers-native/ -/ur/token-api/tvm-tokens/transfers/ -/vi/about/ -/vi/ai-suite/ai-introduction/ -/vi/ai-suite/subgraph-mcp/claude/ -/vi/ai-suite/subgraph-mcp/cline/ -/vi/ai-suite/subgraph-mcp/cursor/ -/vi/ai-suite/subgraph-mcp/introduction/ -/vi/ai-suite/token-api-mcp/claude/ -/vi/ai-suite/token-api-mcp/cline/ -/vi/ai-suite/token-api-mcp/cursor/ -/vi/ai-suite/token-api-mcp/introduction/ -/vi/archived/arbitrum/arbitrum-faq/ -/vi/archived/arbitrum/l2-transfer-tools-faq/ -/vi/archived/arbitrum/l2-transfer-tools-guide/ -/vi/archived/sunrise/ -/vi/contracts/ -/vi/graph-horizon/migration-guide/ -/vi/graph-horizon/overview/ -/vi/graph-horizon/what-changes/ -/vi/hypergraph/faq/ -/vi/hypergraph/overview/ -/vi/indexing/chain-integration-overview/ -/vi/indexing/new-chain-integration/ -/vi/indexing/overview/ -/vi/indexing/supported-network-requirements/ -/vi/indexing/tap/ -/vi/indexing/tooling/firehose/ -/vi/indexing/tooling/graph-node/ -/vi/indexing/tooling/graphcast/ -/vi/resources/benefits/ -/vi/resources/glossary/ -/vi/resources/migration-guides/assemblyscript-migration-guide/ -/vi/resources/migration-guides/graphql-validations-migration-guide/ -/vi/resources/migration-guides/migrate-from-alchemy/ -/vi/resources/roles/curating/ -/vi/resources/roles/delegating/delegating/ -/vi/resources/roles/delegating/undelegating/ -/vi/resources/subgraph-studio-faq/ -/vi/resources/tokenomics/ -/vi/subgraphs/best-practices/avoid-eth-calls/ -/vi/subgraphs/best-practices/derivedfrom/ -/vi/subgraphs/best-practices/grafting-hotfix/ -/vi/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/vi/subgraphs/best-practices/pruning/ -/vi/subgraphs/best-practices/timeseries/ -/vi/subgraphs/billing/ -/vi/subgraphs/developing/creating/advanced/ -/vi/subgraphs/developing/creating/assemblyscript-mappings/ -/vi/subgraphs/developing/creating/graph-node-dev/ -/vi/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/vi/subgraphs/developing/creating/graph-ts/README/ -/vi/subgraphs/developing/creating/graph-ts/api/ -/vi/subgraphs/developing/creating/graph-ts/common-issues/ -/vi/subgraphs/developing/creating/install-the-cli/ -/vi/subgraphs/developing/creating/ql-schema/ -/vi/subgraphs/developing/creating/starting-your-subgraph/ -/vi/subgraphs/developing/creating/subgraph-manifest/ -/vi/subgraphs/developing/creating/unit-testing-framework/ -/vi/subgraphs/developing/deploying/multiple-networks/ -/vi/subgraphs/developing/deploying/using-subgraph-studio/ -/vi/subgraphs/developing/developer-faq/ -/vi/subgraphs/developing/introduction/ -/vi/subgraphs/developing/managing/deleting-a-subgraph/ -/vi/subgraphs/developing/managing/transferring-a-subgraph/ -/vi/subgraphs/developing/publishing/publishing-a-subgraph/ -/vi/subgraphs/developing/subgraphs/ -/vi/subgraphs/explorer/ -/vi/subgraphs/fair-use-policy/ -/vi/subgraphs/guides/contract-analyzer/ -/vi/subgraphs/guides/enums/ -/vi/subgraphs/guides/grafting/ -/vi/subgraphs/guides/near/ -/vi/subgraphs/guides/polymarket/ -/vi/subgraphs/guides/secure-api-keys-nextjs/ -/vi/subgraphs/guides/subgraph-composition/ -/vi/subgraphs/guides/subgraph-debug-forking/ -/vi/subgraphs/guides/subgraph-uncrashable/ -/vi/subgraphs/guides/transfer-to-the-graph/ -/vi/subgraphs/querying/best-practices/ -/vi/subgraphs/querying/distributed-systems/ -/vi/subgraphs/querying/from-an-application/ -/vi/subgraphs/querying/graph-client/README/ -/vi/subgraphs/querying/graph-client/architecture/ -/vi/subgraphs/querying/graph-client/live/ -/vi/subgraphs/querying/graphql-api/ -/vi/subgraphs/querying/introduction/ -/vi/subgraphs/querying/managing-api-keys/ -/vi/subgraphs/querying/python/ -/vi/subgraphs/querying/subgraph-id-vs-deployment-id/ -/vi/subgraphs/quick-start/ -/vi/subgraphs/upgrade-indexer/ -/vi/substreams/developing/dev-container/ -/vi/substreams/developing/sinks/ -/vi/substreams/developing/solana/account-changes/ -/vi/substreams/developing/solana/transactions/ -/vi/substreams/introduction/ -/vi/substreams/publishing/ -/vi/substreams/quick-start/ -/vi/supported-networks/ -/vi/token-api/endpoint-pricing/ -/vi/token-api/evm-dexs/dexes/ -/vi/token-api/evm-dexs/pools-ohlc/ -/vi/token-api/evm-dexs/pools/ -/vi/token-api/evm-dexs/swaps/ -/vi/token-api/evm-nfts/collections/ -/vi/token-api/evm-nfts/holders/ -/vi/token-api/evm-nfts/items/ -/vi/token-api/evm-nfts/ownerships/ -/vi/token-api/evm-nfts/sales/ -/vi/token-api/evm-nfts/transfers/ -/vi/token-api/evm-tokens/balances-historical/ -/vi/token-api/evm-tokens/balances-native/ -/vi/token-api/evm-tokens/balances/ -/vi/token-api/evm-tokens/holders/ -/vi/token-api/evm-tokens/tokens/ -/vi/token-api/evm-tokens/transfers/ -/vi/token-api/faq/ -/vi/token-api/monitoring/health/ -/vi/token-api/monitoring/networks/ -/vi/token-api/monitoring/version/ -/vi/token-api/quick-start/ -/vi/token-api/svm-dexs/dexes/ -/vi/token-api/svm-dexs/pools-ohlc/ -/vi/token-api/svm-dexs/pools/ -/vi/token-api/svm-dexs/swaps/ -/vi/token-api/svm-tokens/balances-native/ -/vi/token-api/svm-tokens/balances/ -/vi/token-api/svm-tokens/holders/ -/vi/token-api/svm-tokens/owner/ -/vi/token-api/svm-tokens/tokens/ -/vi/token-api/svm-tokens/transfers/ -/vi/token-api/tvm-dexs/dexes/ -/vi/token-api/tvm-dexs/pools-ohlc/ -/vi/token-api/tvm-dexs/swaps/ -/vi/token-api/tvm-tokens/tokens/ -/vi/token-api/tvm-tokens/transfers-native/ -/vi/token-api/tvm-tokens/transfers/ -/zh/ -/zh/404/ -/zh/about/ -/zh/ai-suite/ai-introduction/ -/zh/ai-suite/subgraph-mcp/claude/ -/zh/ai-suite/subgraph-mcp/cline/ -/zh/ai-suite/subgraph-mcp/cursor/ -/zh/ai-suite/subgraph-mcp/introduction/ -/zh/ai-suite/token-api-mcp/claude/ -/zh/ai-suite/token-api-mcp/cline/ -/zh/ai-suite/token-api-mcp/cursor/ -/zh/ai-suite/token-api-mcp/introduction/ -/zh/archived/arbitrum/arbitrum-faq/ -/zh/archived/arbitrum/l2-transfer-tools-faq/ -/zh/archived/arbitrum/l2-transfer-tools-guide/ -/zh/archived/sunrise/ -/zh/contracts/ -/zh/graph-horizon/migration-guide/ -/zh/graph-horizon/overview/ -/zh/graph-horizon/what-changes/ -/zh/hypergraph/faq/ -/zh/hypergraph/overview/ -/zh/indexing/chain-integration-overview/ -/zh/indexing/new-chain-integration/ -/zh/indexing/overview/ -/zh/indexing/supported-network-requirements/ -/zh/indexing/tap/ -/zh/indexing/tooling/firehose/ -/zh/indexing/tooling/graph-node/ -/zh/indexing/tooling/graphcast/ -/zh/resources/benefits/ -/zh/resources/glossary/ -/zh/resources/migration-guides/assemblyscript-migration-guide/ -/zh/resources/migration-guides/graphql-validations-migration-guide/ -/zh/resources/migration-guides/migrate-from-alchemy/ -/zh/resources/roles/curating/ -/zh/resources/roles/delegating/delegating/ -/zh/resources/roles/delegating/undelegating/ -/zh/resources/subgraph-studio-faq/ -/zh/resources/tokenomics/ -/zh/subgraphs/best-practices/avoid-eth-calls/ -/zh/subgraphs/best-practices/derivedfrom/ -/zh/subgraphs/best-practices/grafting-hotfix/ -/zh/subgraphs/best-practices/immutable-entities-bytes-as-ids/ -/zh/subgraphs/best-practices/pruning/ -/zh/subgraphs/best-practices/timeseries/ -/zh/subgraphs/billing/ -/zh/subgraphs/developing/creating/advanced/ -/zh/subgraphs/developing/creating/assemblyscript-mappings/ -/zh/subgraphs/developing/creating/graph-node-dev/ -/zh/subgraphs/developing/creating/graph-ts/CHANGELOG/ -/zh/subgraphs/developing/creating/graph-ts/README/ -/zh/subgraphs/developing/creating/graph-ts/api/ -/zh/subgraphs/developing/creating/graph-ts/common-issues/ -/zh/subgraphs/developing/creating/install-the-cli/ -/zh/subgraphs/developing/creating/ql-schema/ -/zh/subgraphs/developing/creating/starting-your-subgraph/ -/zh/subgraphs/developing/creating/subgraph-manifest/ -/zh/subgraphs/developing/creating/unit-testing-framework/ -/zh/subgraphs/developing/deploying/multiple-networks/ -/zh/subgraphs/developing/deploying/using-subgraph-studio/ -/zh/subgraphs/developing/developer-faq/ -/zh/subgraphs/developing/introduction/ -/zh/subgraphs/developing/managing/deleting-a-subgraph/ -/zh/subgraphs/developing/managing/transferring-a-subgraph/ -/zh/subgraphs/developing/publishing/publishing-a-subgraph/ -/zh/subgraphs/developing/subgraphs/ -/zh/subgraphs/explorer/ -/zh/subgraphs/fair-use-policy/ -/zh/subgraphs/guides/contract-analyzer/ -/zh/subgraphs/guides/enums/ -/zh/subgraphs/guides/grafting/ -/zh/subgraphs/guides/near/ -/zh/subgraphs/guides/polymarket/ -/zh/subgraphs/guides/secure-api-keys-nextjs/ -/zh/subgraphs/guides/subgraph-composition/ -/zh/subgraphs/guides/subgraph-debug-forking/ -/zh/subgraphs/guides/subgraph-uncrashable/ -/zh/subgraphs/guides/transfer-to-the-graph/ -/zh/subgraphs/querying/best-practices/ -/zh/subgraphs/querying/distributed-systems/ -/zh/subgraphs/querying/from-an-application/ -/zh/subgraphs/querying/graph-client/README/ -/zh/subgraphs/querying/graph-client/architecture/ -/zh/subgraphs/querying/graph-client/live/ -/zh/subgraphs/querying/graphql-api/ -/zh/subgraphs/querying/introduction/ -/zh/subgraphs/querying/managing-api-keys/ -/zh/subgraphs/querying/python/ -/zh/subgraphs/querying/subgraph-id-vs-deployment-id/ -/zh/subgraphs/quick-start/ -/zh/subgraphs/upgrade-indexer/ -/zh/substreams/developing/dev-container/ -/zh/substreams/developing/sinks/ -/zh/substreams/developing/solana/account-changes/ -/zh/substreams/developing/solana/transactions/ -/zh/substreams/introduction/ -/zh/substreams/publishing/ -/zh/substreams/quick-start/ -/zh/supported-networks/ -/zh/token-api/endpoint-pricing/ -/zh/token-api/evm-dexs/dexes/ -/zh/token-api/evm-dexs/pools-ohlc/ -/zh/token-api/evm-dexs/pools/ -/zh/token-api/evm-dexs/swaps/ -/zh/token-api/evm-nfts/collections/ -/zh/token-api/evm-nfts/holders/ -/zh/token-api/evm-nfts/items/ -/zh/token-api/evm-nfts/ownerships/ -/zh/token-api/evm-nfts/sales/ -/zh/token-api/evm-nfts/transfers/ -/zh/token-api/evm-tokens/balances-historical/ -/zh/token-api/evm-tokens/balances-native/ -/zh/token-api/evm-tokens/balances/ -/zh/token-api/evm-tokens/holders/ -/zh/token-api/evm-tokens/tokens/ -/zh/token-api/evm-tokens/transfers/ -/zh/token-api/faq/ -/zh/token-api/monitoring/health/ -/zh/token-api/monitoring/networks/ -/zh/token-api/monitoring/version/ -/zh/token-api/quick-start/ -/zh/token-api/svm-dexs/dexes/ -/zh/token-api/svm-dexs/pools-ohlc/ -/zh/token-api/svm-dexs/pools/ -/zh/token-api/svm-dexs/swaps/ -/zh/token-api/svm-tokens/balances-native/ -/zh/token-api/svm-tokens/balances/ -/zh/token-api/svm-tokens/holders/ -/zh/token-api/svm-tokens/owner/ -/zh/token-api/svm-tokens/tokens/ -/zh/token-api/svm-tokens/transfers/ -/zh/token-api/tvm-dexs/dexes/ -/zh/token-api/tvm-dexs/pools-ohlc/ -/zh/token-api/tvm-dexs/swaps/ -/zh/token-api/tvm-tokens/tokens/ -/zh/token-api/tvm-tokens/transfers-native/ -/zh/token-api/tvm-tokens/transfers/ diff --git a/website/src/i18n.ts b/website/src/i18n.ts index 9f7574644aef..28e304bf3f74 100644 --- a/website/src/i18n.ts +++ b/website/src/i18n.ts @@ -1,52 +1,8 @@ import { Locale, type NestedStrings, type Translations, useI18n as useGdsI18n } from '@edgeandnode/gds' -import ar from '@/pages/ar/translations' -import cs from '@/pages/cs/translations' -import de from '@/pages/de/translations' import en from '@/pages/en/translations' -import es from '@/pages/es/translations' -import fr from '@/pages/fr/translations' -import hi from '@/pages/hi/translations' -import it from '@/pages/it/translations' -import ja from '@/pages/ja/translations' -import ko from '@/pages/ko/translations' -import mr from '@/pages/mr/translations' -import nl from '@/pages/nl/translations' -import pl from '@/pages/pl/translations' -import pt from '@/pages/pt/translations' -import ro from '@/pages/ro/translations' -import ru from '@/pages/ru/translations' -import sv from '@/pages/sv/translations' -import tr from '@/pages/tr/translations' -import uk from '@/pages/uk/translations' -import ur from '@/pages/ur/translations' -import vi from '@/pages/vi/translations' -import zh from '@/pages/zh/translations' -const appLocales = [ - Locale.ARABIC, - Locale.CZECH, - Locale.GERMAN, - Locale.ENGLISH, - Locale.SPANISH, - Locale.FRENCH, - Locale.HINDI, - Locale.ITALIAN, - Locale.JAPANESE, - // Locale.KOREAN, - Locale.MARATHI, - // Locale.DUTCH, - // Locale.POLISH, - Locale.PORTUGUESE, - // Locale.ROMANIAN, - Locale.RUSSIAN, - Locale.SWEDISH, - Locale.TURKISH, - // Locale.UKRAINIAN, - Locale.URDU, - // Locale.VIETNAMESE, - Locale.CHINESE, -] as const +const appLocales = [Locale.ENGLISH] as const type Mutable = { -readonly [P in keyof T]: T[P] @@ -57,28 +13,7 @@ export const supportedLocales = appLocales as Mutable export type AppLocale = (typeof supportedLocales)[number] export const translations = { - ar, - cs, - de, en, - es, - fr, - hi, - it, - ja, - ko, - mr, - nl, - pl, - pt, - ro, - ru, - sv, - tr, - uk, - ur, - vi, - zh, } satisfies Translations & { [key in AppLocale]: { global: NestedStrings diff --git a/website/src/layout/Layout.tsx b/website/src/layout/Layout.tsx index a1b5311a6ca7..3b8c1e91d1d0 100644 --- a/website/src/layout/Layout.tsx +++ b/website/src/layout/Layout.tsx @@ -26,7 +26,6 @@ import { ExperimentalCodeInline, ExperimentalLink, type ExperimentalLinkProps, - ExperimentalLocaleSwitcher, ExperimentalNavLink, type NestedStrings, useIsomorphicLayoutEffect, @@ -494,18 +493,6 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps )} - - {({ localeDetails }) => ( - } - className="prop-hide-label-true md:prop-size-small md:prop-hide-label-false" - > - {localeDetails.shortName} - {localeDetails.displayName} - - )} - { - const [_src, _pages, locale, ...segments] = filePath.split('/') - // If the current page is in a language other than English, link to the English version, as translations are handled by Crowdin - return `https://github.com/graphprotocol/docs/blob/main/website/src/pages/${encodeURIComponent( - locale === 'en' || locale === '[locale]' ? locale : 'en', - )}/${segments.map(encodeURIComponent).join('/')}` + const [_src, _pages, ...segments] = filePath.split('/') + return `https://github.com/graphprotocol/docs/blob/main/website/src/pages/${segments.map(encodeURIComponent).join('/')}` })() return ( diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json index 696937257071..fc6291839e72 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.7.0+c6e986e (2025-12-18)" + "version": "3.7.2+8e84108 (2026-01-07)" }, "servers": [ { @@ -597,7 +597,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-11-18" + "default": "2025-12-08" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -8227,7 +8227,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-11-18" + "default": "2025-12-08" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -14016,7 +14016,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-11-18" + "default": "2025-12-08" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -18685,7 +18685,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-11-18" + "default": "2025-12-08" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -22113,9 +22113,9 @@ "examples": { "example": { "value": { - "version": "3.7.0", - "commit": "c6e986e", - "date": "2025-12-18", + "version": "3.7.2", + "commit": "8e84108", + "date": "2026-01-07", "repo": "pinax-network/token-api" } } diff --git a/website/src/pages/ar/about.mdx b/website/src/pages/ar/about.mdx deleted file mode 100644 index 93dbeb51f658..000000000000 --- a/website/src/pages/ar/about.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: حول The Graph ---- - -## What is The Graph? - -The Graph is a powerful decentralized protocol that enables seamless querying and indexing of blockchain data. It simplifies the complex process of querying blockchain data, making dapp development faster and easier. - -## Understanding the Basics - -Projects with complex smart contracts such as [Uniswap](https://uniswap.org/) and NFTs initiatives like [Bored Ape Yacht Club](https://boredapeyachtclub.com/) store data on the Ethereum blockchain, making it very difficult to read anything other than basic data directly from the blockchain. - -### Challenges Without The Graph - -In the case of the example listed above, Bored Ape Yacht Club, you can perform basic read operations on [the contract](https://etherscan.io/address/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d#code). You can read the owner of a certain Ape, read the content URI of an Ape based on their ID, or read the total supply. - -- This can be done because these read operations are programmed directly into the smart contract itself. However, more advanced, specific, and real-world queries and operations like aggregation, search, relationships, and non-trivial filtering, **are not possible**. - -- For instance, if you want to inquire about Apes owned by a specific address and refine your search based on a particular characteristic, you would not be able to obtain that information by directly interacting with the contract itself. - -- To get more data, you would have to process every single [`transfer`](https://etherscan.io/address/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d#code#L1746) event ever emitted, read the metadata from IPFS using the Token ID and IPFS hash, and then aggregate it. - -### Why is this a problem? - -It would take **hours or even days** for a decentralized application (dapp) running in a browser to get an answer to these simple questions. - -Alternatively, you have the option to set up your own server, process the transactions, store them in a database, and create an API endpoint to query the data. However, this option is [resource intensive](/resources/benefits/), needs maintenance, presents a single point of failure, and breaks important security properties required for decentralization. - -Blockchain properties, such as finality, chain reorganizations, and uncled blocks, add complexity to the process, making it time-consuming and conceptually challenging to retrieve accurate query results from blockchain data. - -## The Graph Provides a Solution - -The Graph solves this challenge with a decentralized protocol that indexes and enables the efficient and high-performance querying of blockchain data. These APIs (indexed "Subgraphs") can then be queried with a standard GraphQL API. - -Today, there is a decentralized protocol that is backed by the open source implementation of [Graph Node](https://github.com/graphprotocol/graph-node) that enables this process. - -### How The Graph Functions - -Indexing blockchain data is very difficult, but The Graph makes it easy. The Graph learns how to index Ethereum data by using Subgraphs. Subgraphs are custom APIs built on blockchain data that extract data from a blockchain, processes it, and stores it so that it can be seamlessly queried via GraphQL. - -#### Specifics - -- The Graph uses Subgraph descriptions, which are known as the Subgraph manifest inside the Subgraph. - -- The Subgraph description outlines the smart contracts of interest for a Subgraph, the events within those contracts to focus on, and how to map event data to the data that The Graph will store in its database. - -- When creating a Subgraph, you need to write a Subgraph manifest. - -- After writing the `subgraph manifest`, you can use the Graph CLI to store the definition in IPFS and instruct an Indexer to start indexing data for that Subgraph. - -The diagram below provides more detailed information about the flow of data after a Subgraph manifest has been deployed with Ethereum transactions. - -![A graphic explaining how The Graph uses Graph Node to serve queries to data consumers](/img/graph-dataflow.png) - -تدفق البيانات يتبع الخطوات التالية: - -1. A dapp adds data to Ethereum through a transaction on a smart contract. -2. العقد الذكي يصدر حدثا واحدا أو أكثر أثناء معالجة الإجراء. -3. Graph Node continually scans Ethereum for new blocks and the data for your Subgraph they may contain. -4. Graph Node finds Ethereum events for your Subgraph in these blocks and runs the mapping handlers you provided. The mapping is a WASM module that creates or updates the data entities that Graph Node stores in response to Ethereum events. -5. The dapp queries the Graph Node for data indexed from the blockchain, using the node's [GraphQL endpoint](https://graphql.org/learn/). The Graph Node in turn translates the GraphQL queries into queries for its underlying data store in order to fetch this data, making use of the store's indexing capabilities. The dapp displays this data in a rich UI for end-users, which they use to issue new transactions on Ethereum. The cycle repeats. - -## الخطوات التالية - -The following sections provide a more in-depth look at Subgraphs, their deployment and data querying. - -Before you write your own Subgraph, it's recommended to explore [Graph Explorer](https://thegraph.com/explorer) and review some of the already deployed Subgraphs. Each Subgraph's page includes a GraphQL playground, allowing you to query its data. diff --git a/website/src/pages/ar/ai-suite/_meta-titles.json b/website/src/pages/ar/ai-suite/_meta-titles.json deleted file mode 100644 index 5eb482a7092b..000000000000 --- a/website/src/pages/ar/ai-suite/_meta-titles.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "graph-assistant": "Graph Assistant", - "ai-introduction": "The Graph's AI", - "subgraph-mcp": "Subgraph MCP", - "token-api-mcp": "Token API MCP" -} diff --git a/website/src/pages/ar/ai-suite/_meta.js b/website/src/pages/ar/ai-suite/_meta.js deleted file mode 100644 index db5b6fbe12fe..000000000000 --- a/website/src/pages/ar/ai-suite/_meta.js +++ /dev/null @@ -1,7 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - 'ai-introduction': titles['ai-introduction'], - 'subgraph-mcp': titles['subgraph-mcp'], - 'token-api-mcp': titles['token-api-mcp'], -} diff --git a/website/src/pages/ar/ai-suite/ai-introduction.mdx b/website/src/pages/ar/ai-suite/ai-introduction.mdx deleted file mode 100644 index d25cc9f77358..000000000000 --- a/website/src/pages/ar/ai-suite/ai-introduction.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: The Graph's AI ---- - -Build with speed and scale faster with The Graph's AI. - -## Using AI on The Graph - -Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/). - -### Why Use Onchain Data with AI? - -Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems. - -- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding. -- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases. - -## AI for Non-Technical/End Users - -[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before. - -### Benefits of Using Graph Assistant - -- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results. -- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints. -- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest. - -### Conversational Querying with Graph Assistant - -**Example queries:** - -- "List the top-5 swaps by USD value in the last 24 hours." -- "Give me the daily volume on Uniswap." -- "List the 20 most recently registered .eth names." - -[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data. - -## AI for Developers - -### Enable Natural Language Access to Onchain Data - -[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly. - -### Subgraph MCP - -The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language. - -### Token API MCP - -The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts. - -#### Benefits of Using Subgraph and Token API MCPs - -- Query Subgraphs and token data using natural language -- Access GraphQL schemas and token metadata without manual queries -- Find Subgraphs by keyword or contract and check 30-day usage -- Retrieve real-time data from The Graph and onchain token sources -- Get wallet balances, transfer history, and top token holders diff --git a/website/src/pages/ar/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/ar/ai-suite/subgraph-mcp/_meta.js deleted file mode 100644 index 6f527b4e53e4..000000000000 --- a/website/src/pages/ar/ai-suite/subgraph-mcp/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - introduction: '', - claude: '', - cline: '', - cursor: '', -} diff --git a/website/src/pages/ar/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/claude.mdx deleted file mode 100644 index ff3caa4e3e7f..000000000000 --- a/website/src/pages/ar/ai-suite/subgraph-mcp/claude.mdx +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Claude Desktop ---- - -This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude. - -## Prerequisites - -- [Node.js](https://nodejs.org/en) installed and available in your path -- [Claude Desktop](https://claude.ai/download) installed (latest version) -- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/) - -## Installation Options - -### Option 1: Using npx (Recommended) - -#### Configuration Steps using npx - -#### 1. Open Configuration File - -Navigate to your `claude_desktop_config.json` file: - -> **Settings** > **Developer** > **Edit Config** - -- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json` -- Windows: `%APPDATA%\Claude\claude_desktop_config.json` -- Linux: `.config/Claude/claude_desktop_config.json` - -#### 2. Add Configuration - -Paste the following settings into your config file: - -```json -{ - "mcpServers": { - "subgraph": { - "command": "npx", - "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"], - "env": { - "AUTH_HEADER": "Bearer GATEWAY_API_KEY" - } - } - } -} -``` - -#### 3. Add Your Gateway API Key - -Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/). - -#### 4. Save and Restart - -Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop. - -### Option 2: Building from Source - -#### Requirements - -- Rust (latest stable version recommended: 1.75+) - ```bash - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - ``` - Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install). - -#### Installation Steps - -1. **Clone and Build the Repository** - - ```bash - git clone git@github.com:graphops/subgraph-mcp.git - cd subgraph-mcp - cargo build --release - ``` - -2. **Find the Command Path** - - After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory. - - Navigate to your `subgraph-mcp` directory in terminal - - Run `pwd` to get the full path - - Combine the output with `/target/release/subgraph-mcp` - -3. **Configure Claude Desktop** - - Open your `claude_desktop_config.json` file as described above and add: - - ```json - { - "mcpServers": { - "subgraph": { - "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp", - "env": { - "GATEWAY_API_KEY": "your-api-key-here" - } - } - } - } - ``` - - Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary. - -## Using The Graph Resource in Claude - -After configuring Claude Desktop: - -1. Restart Claude Desktop -2. Start a new conversation -3. Click on the context menu (top right) -4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context - -> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it. - -## Troubleshooting - -To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array. - -## Available Subgraph Tools and Usage - -The Subgraph MCP provides several tools for interacting with Subgraphs: - -### Schema Retrieval Tools - -- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...) -- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...) -- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...) - -### Query Execution Tools - -- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments -- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph - -### Discovery Tools - -- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal -- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments -- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees - -## Key Identifier Types - -- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`. -- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`. -- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`. - -## Benefits of Natural Language Queries - -One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will: - -1. Understand your goal (lookup, find Subgraphs, query, get schema) -2. Find relevant deployments if needed -3. Fetch and interpret the Subgraph schema -4. Convert your question into an appropriate GraphQL query -5. Execute the query and present the results in a readable format - -### Example Natural Language Queries - -``` -What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3? -``` - -``` -Which tokens have the highest market cap in this Subgraph? -``` - -``` -Show me the most recent 5 swaps for the USDC/ETH pair -``` - -``` -Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one -``` diff --git a/website/src/pages/ar/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/cline.mdx deleted file mode 100644 index eb8044bfe991..000000000000 --- a/website/src/pages/ar/ai-suite/subgraph-mcp/cline.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Cline ---- - -This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline. - -## Prerequisites - -- [Cline](https://cline.bot/) installed (latest version) -- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/) -- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path - -## Configuration Steps - -### 1. Open Configuration File - -Create or edit your `cline_mcp_settings.json` file. - -> **MCP Servers** > **Installed** > **Configure MCP Servers** - -### 2. Add Configuration - -```json -{ - "mcpServers": { - "subgraph": { - "command": "npx", - "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"], - "env": { - "AUTH_HEADER": "Bearer GATEWAY_API_KEY" - } - } - } -} -``` - -### 3. Add Your API Key - -Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio. - -## Using The Graph Resource in Cline - -After configuring Cline: - -1. Restart Cline -2. Start a new conversation -3. Enable the Subgraph MCP from the context menu -4. Add "Subgraph Server Instructions" as a resource to your chat context - -## Available Tools and Usage - -The Subgraph MCP provides several tools for interacting with Subgraphs: - -### Schema Retrieval Tools - -- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...) -- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...) -- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...) - -### Query Execution Tools - -- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments -- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph - -### Discovery Tools - -- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain - -## Natural Language Queries - -One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will: - -1. Understand your goal (lookup, find Subgraphs, query, get schema) -2. Find relevant deployments if needed -3. Fetch and interpret the Subgraph schema -4. Convert your question into an appropriate GraphQL query -5. Execute the query and present the results in a readable format - -### Example Natural Language Queries - -``` -What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3? -``` - -``` -Which tokens have the highest market cap in this Subgraph? -``` - -``` -Show me the most recent 5 swaps for the USDC/ETH pair -``` - -## Key Identifier Types - -When working with Subgraphs, you'll encounter different types of identifiers: - -- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph -- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment -- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment diff --git a/website/src/pages/ar/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/cursor.mdx deleted file mode 100644 index 6291caf4b06b..000000000000 --- a/website/src/pages/ar/ai-suite/subgraph-mcp/cursor.mdx +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Cursor ---- - -This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline. - -## Prerequisites - -- [Cursor](https://www.cursor.com/) installed (latest version) -- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/) -- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path - -## Configuration Steps - -### 1. Open Configuration File - -Create or edit your `~/.cursor/mcp.json` file. - -> **Cursor Settings** > **MCP** > **Add new global MCP Server** - -### 2. Add Configuration - -```json -{ - "mcpServers": { - "subgraph": { - "command": "npx", - "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"], - "env": { - "AUTH_HEADER": "Bearer GATEWAY_API_KEY" - } - } - } -} -``` - -### 3. Add Your API Key - -Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio. - -### 4. Restart Cursor - -Restart Cursor, and start a new chat. - -## Available Subgraph Tools and Usage - -The Subgraph MCP provides several tools for interacting with Subgraphs: - -### Schema Retrieval Tools - -- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...) -- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...) -- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...) - -### Query Execution Tools - -- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments -- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph - -### Discovery Tools - -- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain - -## Benefits of Natural Language Queries - -One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will: - -1. Understand your goal (lookup, find Subgraphs, query, get schema) -2. Find relevant deployments if needed -3. Fetch and interpret the Subgraph schema -4. Convert your question into an appropriate GraphQL query -5. Execute the query and present the results in a readable format - -### Example Natural Language Queries - -``` -What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3? -``` - -``` -Which tokens have the highest market cap in this Subgraph? -``` - -``` -Show me the most recent 5 swaps for the USDC/ETH pair -``` - -## Key Identifier Types - -When working with Subgraphs, you'll encounter different types of identifiers: - -- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph -- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment -- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment diff --git a/website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx deleted file mode 100644 index da1272cf9a36..000000000000 --- a/website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Subgraph MCP Introduction -sidebarTitle: 'Introduction' ---- - -Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction). - -It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface. - -The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data. - -Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem. - -## What You Can Do - -- Access GraphQL schemas for any Subgraph on The Graph Network -- Run GraphQL queries on any Subgraph deployment -- Discover top Subgraph deployments by keyword or contract address -- Retrieve 30-day query volumes for Subgraph deployments -- Ask questions about Subgraph data without writing GraphQL manually - -The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience. diff --git a/website/src/pages/ar/ai-suite/token-api-mcp/_meta.js b/website/src/pages/ar/ai-suite/token-api-mcp/_meta.js deleted file mode 100644 index 6f527b4e53e4..000000000000 --- a/website/src/pages/ar/ai-suite/token-api-mcp/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - introduction: '', - claude: '', - cline: '', - cursor: '', -} diff --git a/website/src/pages/ar/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/claude.mdx deleted file mode 100644 index 3e21f4d7e165..000000000000 --- a/website/src/pages/ar/ai-suite/token-api-mcp/claude.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Using Claude Desktop to Access the Token API via MCP -sidebarTitle: Claude Desktop ---- - -## Prerequisites - -- [Claude Desktop](https://claude.ai/download) installed. -- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/). -- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path. -- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version. - -![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png) - -## Configuration - -Create or edit your `claude_desktop_config.json` file. - -> **Settings** > **Developer** > **Edit Config** - -- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json` -- Windows: `%APPDATA%\Claude\claude_desktop_config.json` -- Linux: `.config/Claude/claude_desktop_config.json` - -```json label="claude_desktop_config.json" -{ - "mcpServers": { - "token-api": { - "command": "npx", - "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"], - "env": { - "ACCESS_TOKEN": "" - } - } - } -} -``` - -## Troubleshooting - -To enable logs for the MCP, use the `--verbose true` option. - -### ENOENT - -![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png) - -Try to use the full path of the command instead: - -- Run `which npx` or `which bunx` to get the path of the command. -- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`). - -### Server disconnected - -![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png) - -Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable. - -> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details. diff --git a/website/src/pages/ar/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/cline.mdx deleted file mode 100644 index e885d21366cd..000000000000 --- a/website/src/pages/ar/ai-suite/token-api-mcp/cline.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Using Cline to Access the Token API via MCP -sidebarTitle: Cline ---- - -## Prerequisites - -- [Cline](https://cline.bot/) installed. -- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/). -- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path. -- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version. - -![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png) - -## Configuration - -Create or edit your `cline_mcp_settings.json` file. - -> **MCP Servers** > **Installed** > **Configure MCP Servers** - -```json label="cline_mcp_settings.json" -{ - "mcpServers": { - "mcp-pinax": { - "command": "npx", - "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"], - "env": { - "ACCESS_TOKEN": "" - } - } - } -} -``` - -## Troubleshooting - -To enable logs for the MCP, use the `--verbose true` option. - -### ENOENT - -![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png) - -Try to use the full path of the command instead: - -- Run `which npx` or `which bunx` to get the path of the command. -- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`). - -### Server disconnected - -![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png) - -Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable. diff --git a/website/src/pages/ar/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/cursor.mdx deleted file mode 100644 index 68fe2fdb201c..000000000000 --- a/website/src/pages/ar/ai-suite/token-api-mcp/cursor.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Using Cursor to Access the Token API via MCP -sidebarTitle: Cursor ---- - -## Prerequisites - -- [Cursor](https://www.cursor.com/) installed. -- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/). -- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path. -- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version. - -![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png) - -## Configuration - -Create or edit your `~/.cursor/mcp.json` file. - -> **Cursor Settings** > **MCP** > **Add new global MCP Server** - -```json label="mcp.json" -{ - "mcpServers": { - "mcp-pinax": { - "command": "npx", - "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"], - "env": { - "ACCESS_TOKEN": "" - } - } - } -} -``` - -## Troubleshooting - -![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png) - -To enable logs for the MCP, use the `--verbose true` option. - -### ENOENT - -Try to use the full path of the command instead: - -- Run `which npx` or `which bunx` to get the path of the command. -- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`). - -### Server disconnected - -Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable. diff --git a/website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx deleted file mode 100644 index b61ad0a1c485..000000000000 --- a/website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Token API MCP Introduction -sidebarTitle: 'Introduction' ---- - -Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction). - -This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries. - -The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results. - -Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data. - -## What You Can Do - -- Retrieve token metadata including name, symbol, decimals, total supply, and contract address -- Get token balances for any wallet address holding a supported ERC-20 token -- Fetch token transfer activity including sender, receiver, amount, and timestamp -- Identify top holders and analyze token distribution -- Ask natural language questions about token data without writing smart contract calls -- Access historical transfer data to analyze token movement over time - -The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data. diff --git a/website/src/pages/ar/archived/_meta-titles.json b/website/src/pages/ar/archived/_meta-titles.json deleted file mode 100644 index 1292b0582b34..000000000000 --- a/website/src/pages/ar/archived/_meta-titles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "arbitrum": "Scaling with Arbitrum One" -} diff --git a/website/src/pages/ar/archived/_meta.js b/website/src/pages/ar/archived/_meta.js deleted file mode 100644 index dca32f8a186b..000000000000 --- a/website/src/pages/ar/archived/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - sunrise: '', - arbitrum: titles.arbitrum ?? '', -} diff --git a/website/src/pages/ar/archived/arbitrum/_meta.js b/website/src/pages/ar/archived/arbitrum/_meta.js deleted file mode 100644 index 6e0db9442939..000000000000 --- a/website/src/pages/ar/archived/arbitrum/_meta.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'arbitrum-faq': '', - 'l2-transfer-tools-faq': '', - 'l2-transfer-tools-guide': '', -} diff --git a/website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx deleted file mode 100644 index 29481ead71f1..000000000000 --- a/website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Arbitrum One FAQ ---- - -Click [here](#billing-on-arbitrum-faqs) if you would like to skip to the Arbitrum One Billing FAQs. - -## Why did The Graph implement an L2 Solution? - -By scaling The Graph on L2, network participants can now benefit from: - -- Upwards of 26x savings on gas fees - -- سرعة أكبر في المعاملات - -- Security inherited from Ethereum - -Scaling the protocol smart contracts onto L2 allows network participants to interact more frequently at a reduced cost in gas fees. For example, Indexers can open and close allocations more frequently to index a greater number of Subgraphs. Developers can deploy and update Subgraphs more easily, and Delegators can delegate GRT more frequently. Curators can add or remove signal to a larger number of Subgraphs–actions previously considered too cost-prohibitive to perform frequently due to gas. - -The Graph community decided to move forward with Arbitrum One last year after the outcome of the [GIP-0031](https://forum.thegraph.com/t/gip-0031-arbitrum-grt-bridge/3305) discussion. - -## What do I need to do to use The Graph on L2? - -The Graph’s billing system accepts GRT on Arbitrum One, and users will need ETH on Arbitrum One to pay their gas. While The Graph protocol started on Ethereum Mainnet, all activity, including the billing contracts, is now on Arbitrum One. - -Consequently, to pay for queries, you need GRT on Arbitrum One. Here are a few different ways to achieve this: - -- If you already have GRT on Ethereum, you can bridge it to Arbitrum One. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges: - - [The Arbitrum One Bridge](https://bridge.arbitrum.io/?l2ChainId=42161) - - [TransferTo](https://transferto.xyz/swap) - -- If you have other assets on Arbitrum One, you can swap them for GRT through a swapping protocol like Uniswap. - -- Alternatively, you can acquire GRT directly on Arbitrum One through a decentralized exchange. - -Once you have GRT on Arbitrum One, you can add it to your billing balance. - -To take advantage of using The Graph on L2, use this dropdown switcher to toggle between chains. - -![Dropdown switcher to toggle Arbitrum One](/img/arbitrum-screenshot-toggle.png) - -## As a Subgraph developer, data consumer, Indexer, Curator, or Delegator, what do I need to do now? - -Network participants must move to Arbitrum One to continue participating in The Graph Network. Please refer to [L2 Transfer Tool Guide](/archived/arbitrum/l2-transfer-tools-guide/) for additional support. - -All indexing rewards are now entirely on Arbitrum One. - -## Were there any risks associated with scaling the network to L2? - -All smart contracts have been thoroughly [audited](https://github.com/graphprotocol/contracts/blob/main/packages/contracts/audits/OpenZeppelin/2022-07-graph-arbitrum-bridge-audit.pdf). - -Everything has been tested thoroughly, and a contingency plan is in place to ensure a safe and seamless transition. Details can be found [here](https://forum.thegraph.com/t/gip-0037-the-graph-arbitrum-deployment-with-linear-rewards-minted-in-l2/3551#risks-and-security-considerations-20). - -## Are existing Subgraphs on Ethereum working? - -All Subgraphs are now on Arbitrum One. Please refer to [L2 Transfer Tool Guide](/archived/arbitrum/l2-transfer-tools-guide/) to ensure your Subgraphs operate seamlessly. - -## Does GRT have a new smart contract deployed on Arbitrum One? - -Yes, GRT has an additional [smart contract on Arbitrum One](https://arbiscan.io/address/0x9623063377ad1b27544c965ccd7342f7ea7e88c7). However, the Ethereum mainnet [GRT contract](https://etherscan.io/token/0xc944e90c64b2c07662a292be6244bdf05cda44a7) will remain operational. - -## Billing on Arbitrum One FAQs - -## What do I need to do about the GRT in my billing balance? - -Nothing! Your GRT has been securely migrated to Arbitrum One and is being used to pay for queries as you read this. - -## How do I know my funds have migrated securely to Arbitrum One? - -All GRT billing balances have already been successfully migrated to Arbitrum One. You can view the billing contract on Arbitrum One [here](https://arbiscan.io/address/0x1B07D3344188908Fb6DEcEac381f3eE63C48477a). - -## How do I know the Arbitrum One bridge is secure? - -The bridge has been [heavily audited](https://code4rena.com/contests/2022-10-the-graph-l2-bridge-contest) to ensure safety and security for all users. - -## What do I need to do if I'm adding fresh GRT from my Ethereum mainnet wallet? - -Adding GRT to your Arbitrum One billing balance can be done with a one-click experience in [Subgraph Studio](https://thegraph.com/studio/). You'll be able to easily bridge your GRT to Arbitrum One and fill your API keys in one transaction. - -Visit the [Billing page](/subgraphs/billing/) for more detailed instructions on adding, withdrawing, or acquiring GRT. diff --git a/website/src/pages/ar/archived/arbitrum/l2-transfer-tools-faq.mdx b/website/src/pages/ar/archived/arbitrum/l2-transfer-tools-faq.mdx deleted file mode 100644 index c18517ae2441..000000000000 --- a/website/src/pages/ar/archived/arbitrum/l2-transfer-tools-faq.mdx +++ /dev/null @@ -1,414 +0,0 @@ ---- -title: الأسئلة الشائعة حول أدوات النقل L2 ---- - -## عام - -### ما هي أدوات النقل L2؟ - -The Graph has made it 26x cheaper for contributors to participate in the network by deploying the protocol to Arbitrum One. The L2 Transfer Tools were created by core devs to make it easy to move to L2. - -For each network participant, a set of L2 Transfer Tools are available to make the experience seamless when moving to L2, avoiding thawing periods or having to manually withdraw and bridge GRT. - -These tools will require you to follow a specific set of steps depending on what your role is within The Graph and what you are transferring to L2. - -### هل يمكنني استخدام نفس المحفظة التي استخدمها في Ethereum mainnet؟ - -If you are using an [EOA](https://ethereum.org/en/developers/docs/accounts/#types-of-account) wallet you can use the same address. If your Ethereum mainnet wallet is a contract (e.g. a multisig) then you must specify an [Arbitrum One wallet address](/archived/arbitrum/arbitrum-faq/#what-do-i-need-to-do-to-use-the-graph-on-l2) where your transfer will be sent. Please check the address carefully as any transfers to an incorrect address can result in permanent loss. If you'd like to use a multisig on L2, make sure you deploy a multisig contract on Arbitrum One. - -Wallets on EVM blockchains like Ethereum and Arbitrum One are a pair of keys (public and private), that you create without any need to interact with the blockchain. So any wallet that was created for Ethereum will also work on Arbitrum One without having to do anything else. - -The exception is with smart contract wallets like multisigs: these are smart contracts that are deployed separately on each chain, and get their address when they are deployed. If a multisig was deployed to Ethereum, it won't exist with the same address on Arbitrum One. A new multisig must be created first on Arbitrum One, and may get a different address. - -### What happens if I don’t finish my transfer in 7 days? - -The L2 Transfer Tools use Arbitrum One’s native mechanism to send messages from L1 to L2. This mechanism is called a “retryable ticket” and is used by all native token bridges, including the Arbitrum One GRT bridge. You can read more about retryable tickets in the [Arbitrum One docs](https://docs.arbitrum.io/arbos/l1-to-l2-messaging). - -When you transfer your assets (Subgraph, stake, delegation or curation) to L2, a message is sent through the Arbitrum One GRT bridge which creates a retryable ticket in L2. The transfer tool includes some ETH value in the transaction, that is used to 1) pay to create the ticket and 2) pay for the gas to execute the ticket in L2. However, because gas prices might vary in the time until the ticket is ready to execute in L2, it is possible that this auto-execution attempt fails. When that happens, the Arbitrum One bridge will keep the retryable ticket alive for up to 7 days, and anyone can retry “redeeming” the ticket (which requires a wallet with some ETH bridged to Arbitrum One). - -This is what we call the “Confirm” step in all the transfer tools - it will run automatically in most cases, as the auto-execution is most often successful, but it is important that you check back to make sure it went through. If it doesn’t succeed and there are no successful retries in 7 days, the Arbitrum One bridge will discard the ticket, and your assets (Subgraph, stake, delegation or curation) will be lost and can’t be recovered. The Graph core devs have a monitoring system in place to detect these situations and try to redeem the tickets before it’s too late, but it is ultimately your responsibility to ensure your transfer is completed in time. If you’re having trouble confirming your transaction, please reach out using [this form](https://noteforms.com/forms/notionform-l2-transfer-tooling-issues-0ogqfu?notionforms=1&utm_source=notionforms) and core devs will be there help you. - -### I started my delegation/stake/curation transfer and I'm not sure if it made it through to L2, how can I confirm that it was transferred correctly? - -If you don't see a banner on your profile asking you to finish the transfer, then it's likely the transaction made it safely to L2 and no more action is needed. If in doubt, you can check if Explorer shows your delegation, stake or curation on Arbitrum One. - -If you have the L1 transaction hash (which you can find by looking at the recent transactions in your wallet), you can also confirm if the "retryable ticket" that carried the message to L2 was redeemed here: https://retryable-dashboard.arbitrum.io/ - if the auto-redeem failed, you can also connect your wallet there and redeem it. Rest assured that core devs are also monitoring for messages that get stuck, and will attempt to redeem them before they expire. - -## نقل الـ Subgraph (الرسم البياني الفرعي) - -### How do I transfer my Subgraph? - - - -To transfer your Subgraph, you will need to complete the following steps: - -1. ابدأ التحويل على شبكة Ethereum mainnet - -2. انتظر 20 دقيقة للتأكيد - -3. Confirm Subgraph transfer on Arbitrum One\* - -4. Finish publishing Subgraph on Arbitrum One - -5. جدث عنوان URL للاستعلام (مستحسن) - -\*Note that you must confirm the transfer within 7 days otherwise your Subgraph may be lost. In most cases, this step will run automatically, but a manual confirmation may be needed if there is a gas price spike on Arbitrum One. If there are any issues during this process, there will be resources to help: contact support at support@thegraph.com or on [Discord](https://discord.gg/graphprotocol). - -### من أين يجب أن أبدأ التحويل ؟ - -You can initiate your transfer from the [Subgraph Studio](https://thegraph.com/studio/), [Explorer,](https://thegraph.com/explorer) or any Subgraph details page. Click the "Transfer Subgraph" button in the Subgraph details page to start the transfer. - -### How long do I need to wait until my Subgraph is transferred - -يستغرق وقت النقل حوالي 20 دقيقة. يعمل جسر Arbitrum One في الخلفية لإكمال نقل الجسر تلقائيًا. في بعض الحالات ، قد ترتفع تكاليف الغاز وستحتاج إلى تأكيد المعاملة مرة أخرى. - -### Will my Subgraph still be discoverable after I transfer it to L2? - -Your Subgraph will only be discoverable on the network it is published to. For example, if your Subgraph is on Arbitrum One, then you can only find it in Explorer on Arbitrum One and will not be able to find it on Ethereum. Please ensure that you have Arbitrum One selected in the network switcher at the top of the page to ensure you are on the correct network.  After the transfer, the L1 Subgraph will appear as deprecated. - -### Does my Subgraph need to be published to transfer it? - -To take advantage of the Subgraph transfer tool, your Subgraph must be already published to Ethereum mainnet and must have some curation signal owned by the wallet that owns the Subgraph. If your Subgraph is not published, it is recommended you simply publish directly on Arbitrum One - the associated gas fees will be considerably lower. If you want to transfer a published Subgraph but the owner account hasn't curated any signal on it, you can signal a small amount (e.g. 1 GRT) from that account; make sure to choose "auto-migrating" signal. - -### What happens to the Ethereum mainnet version of my Subgraph after I transfer to Arbitrum One? - -After transferring your Subgraph to Arbitrum One, the Ethereum mainnet version will be deprecated. We recommend you update your query URL within 48 hours. However, there is a grace period in place that keeps your mainnet URL functioning so that any third-party dapp support can be updated. - -### بعد النقل ، هل أحتاج أيضًا إلى إعادة النشر على Arbitrum One - -بعد فترة النقل البالغة 20 دقيقة ، ستحتاج إلى تأكيد النقل لإكمال النقل ، أداة النقل ستوجهك للقيام بذلك. سيستمر دعم L1 endpoint الخاص بك خلال فترة النقل وفترة السماح. من المستحسن أن تقوم بتحديثه عندما يكون ذلك مناسبًا لك. - -### Will my endpoint experience downtime while re-publishing? - -It is unlikely, but possible to experience a brief downtime depending on which Indexers are supporting the Subgraph on L1 and whether they keep indexing it until the Subgraph is fully supported on L2. - -### هل يتم نشر وتخطيط الإصدار بنفس الطريقة في الـ L2 كما هو الحال في شبكة Ethereum Mainnet؟ - -Yes. Select Arbitrum One as your published network when publishing in Subgraph Studio. In the Studio, the latest endpoint will be available which points to the latest updated version of the Subgraph. - -### Will my Subgraph's curation move with my Subgraph? - -If you've chosen auto-migrating signal, 100% of your own curation will move with your Subgraph to Arbitrum One. All of the Subgraph's curation signal will be converted to GRT at the time of the transfer, and the GRT corresponding to your curation signal will be used to mint signal on the L2 Subgraph. - -Other Curators can choose whether to withdraw their fraction of GRT, or also transfer it to L2 to mint signal on the same Subgraph. - -### Can I move my Subgraph back to Ethereum mainnet after I transfer? - -Once transferred, your Ethereum mainnet version of this Subgraph will be deprecated. If you would like to move back to mainnet, you will need to redeploy and publish back to mainnet. However, transferring back to Ethereum mainnet is strongly discouraged as indexing rewards will eventually be distributed entirely on Arbitrum One. - -### لماذا أحتاج إلى Bridged ETH لإكمال النقل؟ - -يتم دفع رسوم الغاز في Arbitrum One باستخدام ETHbridged ETH (ETH الذي تم ربطه بـ Arbitrum One). ومع ذلك ، فإن رسوم الغاز أقل بكثير عند مقارنتها بشبكة Ethereum mainnet. - -## Delegation(التفويض) - -### كيف أنقل تفويضي؟ - - - -لنقل تفويضك ، ستحتاج إلى إكمال الخطوات التالية: - -1. ابدأ نقل التفويض على شبكة Ethereum mainnet -2. انتظر 20 دقيقة للتأكيد -3. قم بتأكيد نقل التفويض على Arbitrum One - -\*\*\*\*You must confirm the transaction to complete the delegation transfer on Arbitrum One. This step must be completed within 7 days or the delegation could be lost. In most cases, this step will run automatically, but a manual confirmation may be needed if there is a gas price spike on Arbitrum One. If there are any issues during this process, there will be resources to help: contact support at support@thegraph.com or on [Discord](https://discord.gg/graphprotocol). - -### ماذا يحدث لمكافآتي إذا بدأت عملية تحويل وكان لا يزال التخصيص مفتوحا على Ethereum mainnet؟ - -If the Indexer to whom you're delegating is still operating on L1, when you transfer to Arbitrum One you will forfeit any delegation rewards from open allocations on Ethereum mainnet. This means that you will lose the rewards from, at most, the last 28-day period. If you time the transfer right after the Indexer has closed allocations you can make sure this is the least amount possible. If you have a communication channel with your Indexer(s), consider discussing with them to find the best time to do your transfer. - -### ماذا يحدث إذا كان المفهرس الذي أفوضه حاليًا غير موجود في Arbitrum One؟ - -لن يتم تمكين أداة النقل L2 إلا إذا قام المفهرس الذي فوضته بتحويل حصته إلى Arbitrum One. - -### هل يملك المفوضين خيارا للتفويض إلى مفهرس آخر؟ - -If you wish to delegate to another Indexer, you can transfer to the same Indexer on Arbitrum One, then undelegate and wait for the thawing period. After this, you can select another active Indexer to delegate to. - -### ماذا لو لم أتمكن من العثور على المفهرس الذي قمت بالتوفيض إليه في L2؟ - -ستكتشف أداة النقل L2 المفهرس الذي قمت بالتفويض إليه مسبقًا تلقائيًا. - -### هل سأكون قادرًا على المزج والمطابقة أو "نشر" تفويضي عبر مفهرس جديد أو مفهرسين جدد بدلاً من المفهرس السابق؟ - -ستعمل أداة نقل L2 دائمًا على نقل التفويض إلى نفس المفهرس الذي فوضته سابقًا. وبمجرد الانتقال إلى L2 ، يمكنك إلغاء التفويض وانتظار فترة الذوبان ، وتحديد ما إذا كنت ترغب في تقسيم التفويض الخاص بك. - -### هل أنا خاضع لفترة الانتظار أم يمكنني السحب فورًا بعد استخدام أداة نقل التفويض L2؟ - -تتيح لك أداة النقل الانتقال على الفور إلى L2. إذا كنت ترغب في إلغاء التفويض ، فسيتعين عليك انتظار فترة الذوبان. ومع ذلك ، إذا قام المفهرس بتحويل جميع حصته إلى L2 ، فيمكنك السحب على شبكة Ethereum mainnet فورا. - -### هل يمكن أن تتأثر مكافآتي سلبًا إذا لم أحول تفويضي؟ - -من المتوقع أن تنتقل جميع مشاركات الشبكة إلى Arbitrum One في المستقبل. - -### كم من الوقت يستغرق استكمال نقل تفويضي إلى L2؟ - -A 20-minute confirmation is required for delegation transfer. Please note that after the 20-minute period, you must come back and complete step 3 of the transfer process within 7 days. If you fail to do this, then your delegation may be lost. Note that in most cases the transfer tool will complete this step for you automatically. In case of a failed auto-attempt, you will need to complete it manually. If any issues arise during this process, don't worry, we'll be here to help: contact us at support@thegraph.com or on [Discord](https://discord.gg/graphprotocol). - -### Can I transfer my delegation if I'm using a GRT vesting contract/token lock wallet? - -Yes! The process is a bit different because vesting contracts can't forward the ETH needed to pay for the L2 gas, so you need to deposit it beforehand. If your vesting contract is not fully vested, you will also have to first initialize a counterpart vesting contract on L2 and will only be able to transfer the delegation to this L2 vesting contract. The UI on Explorer can guide you through this process when you've connected to Explorer using the vesting lock wallet. - -### Does my Arbitrum One vesting contract allow releasing GRT just like on mainnet? - -No, the vesting contract that is created on Arbitrum One will not allow releasing any GRT until the end of the vesting timeline, i.e. until your contract is fully vested. This is to prevent double spending, as otherwise it would be possible to release the same amounts on both layers. - -If you'd like to release GRT from the vesting contract, you can transfer them back to the L1 vesting contract using Explorer: in your Arbitrum One profile, you will see a banner saying you can transfer GRT back to the mainnet vesting contract. This requires a transaction on Arbitrum One, waiting 7 days, and a final transaction on mainnet, as it uses the same native bridging mechanism from the GRT bridge. - -### هل هناك ضريبة على التفويض؟ - -لا ، يتم تفويض التوكن المستلمة على L2 إلى المفهرس المحدد نيابة عن المفوض المحدد دون فرض ضريبة التفويض. - -### Will my unrealized rewards be transferred when I transfer my delegation? - -​Yes! The only rewards that can't be transferred are the ones for open allocations, as those won't exist until the Indexer closes the allocations (usually every 28 days). If you've been delegating for a while, this is likely only a small fraction of rewards. - -At the smart contract level, unrealized rewards are already part of your delegation balance, so they will be transferred when you transfer your delegation to L2. ​ - -### Is moving delegations to L2 mandatory? Is there a deadline? - -​Moving delegation to L2 is not mandatory, but indexing rewards are increasing on L2 following the timeline described in [GIP-0052](https://forum.thegraph.com/t/gip-0052-timeline-and-requirements-to-increase-rewards-in-l2/4193). Eventually, if the Council keeps approving the increases, all rewards will be distributed in L2 and there will be no indexing rewards for Indexers and Delegators on L1. ​ - -### If I am delegating to an Indexer that has already transferred stake to L2, do I stop receiving rewards on L1? - -​Many Indexers are transferring stake gradually so Indexers on L1 will still be earning rewards and fees on L1, which are then shared with Delegators. Once an Indexer has transferred all of their stake, then they will stop operating on L1, so Delegators will not receive any more rewards unless they transfer to L2. - -Eventually, if the Council keeps approving the indexing rewards increases in L2, all rewards will be distributed on L2 and there will be no indexing rewards for Indexers and Delegators on L1. ​ - -### I don't see a button to transfer my delegation. Why is that? - -​Your Indexer has probably not used the L2 transfer tools to transfer stake yet. - -If you can contact the Indexer, you can encourage them to use the L2 Transfer Tools so that Delegators can transfer delegations to their L2 Indexer address. ​ - -### My Indexer is also on Arbitrum One, but I don't see a button to transfer the delegation in my profile. Why is that? - -​It is possible that the Indexer has set up operations on L2, but hasn't used the L2 transfer tools to transfer stake. The L1 smart contracts will therefore not know about the Indexer's L2 address. If you can contact the Indexer, you can encourage them to use the transfer tool so that Delegators can transfer delegations to their L2 Indexer address. ​ - -### Can I transfer my delegation to L2 if I have started the undelegating process and haven't withdrawn it yet? - -​No. If your delegation is thawing, you have to wait the 28 days and withdraw it. - -The tokens that are being undelegated are "locked" and therefore cannot be transferred to L2. - -## Curation Signal(إشارة التنسيق) - -### كيف أنقل إشارة التنسيق الخاص بي؟ - -لنقل التنسيق الخاص بك ، ستحتاج إلى إكمال الخطوات التالية: - -1. ابدأ نقل الإشارة على شبكة Ethereum mainnet - -2. حدد عنوان L2 للمنسق \ \* - -3. انتظر 20 دقيقة للتأكيد - -\ \* إذا لزم الأمر -أنت تستخدم عنوان عقد. - -### How will I know if the Subgraph I curated has moved to L2? - -When viewing the Subgraph details page, a banner will notify you that this Subgraph has been transferred. You can follow the prompt to transfer your curation. You can also find this information on the Subgraph details page of any Subgraph that has moved. - -### ماذا لو كنت لا أرغب في نقل إشارة التنسيق الخاص بي إلى L2؟ - -When a Subgraph is deprecated you have the option to withdraw your signal. Similarly, if a Subgraph has moved to L2, you can choose to withdraw your signal in Ethereum mainnet or send the signal to L2. - -### كيف أعرف أنه تم نقل إشارة التنسيق بنجاح؟ - -يمكن الوصول إلى تفاصيل الإشارة عبر Explorer بعد حوالي 20 دقيقة من بدء أداة النقل للـ L2. - -### Can I transfer my curation on more than one Subgraph at a time? - -لا يوجد خيار كهذا حالياً. - -## Indexer Stake(حصة المفهرس) - -### كيف يمكنني تحويل حصتي إلى Arbitrum One - -> Disclaimer: If you are currently unstaking any portion of your GRT on your Indexer, you will not be able to use L2 Transfer Tools. - - - -لتحويل حصتك ، ستحتاج إلى إكمال الخطوات التالية: - -1. ابدأ تحويل الحصص على شبكة Ethereum mainnet - -2. انتظر 20 دقيقة للتأكيد - -3. Confirm stake transfer on Arbitrum One - -\*Note that you must confirm the transfer within 7 days otherwise your stake may be lost. In most cases, this step will run automatically, but a manual confirmation may be needed if there is a gas price spike on Arbitrum One. If there are any issues during this process, there will be resources to help: contact support at support@thegraph.com or on [Discord](https://discord.gg/graphprotocol). - -### هل سيتم تحويل حصتي بالكامل؟ - -يمكنك اختيار مقدار حصتك المراد تحويلها. إذا اخترت تحويل حصتك بالكامل مرة واحدة ، فستحتاج إلى إغلاق أي تخصيصات مفتوحة أولاً. - -إذا كنت تخطط لنقل أجزاء من حصتك في معاملات متعددة ، فيجب عليك دائمًا تحديد نفس عنوان المستفيد. - -ملاحظة: يجب أن تفي بالحد الأدنى من متطلبات الحصة على L2 في المرة الأولى التي تستخدم فيها أداة التحويل. يجب أن يرسل المفهرسون 100 ألف GRT كحد أدنى (عند استدعاء هذه الوظيفة في المرة الأولى). في حالة ترك جزء من الحصة على L1 ، يجب أن يكون أيضًا أكثر من 100 ألف GRT كحد أدنى وأن يكون كافيًا (جنبًا إلى جنب مع التفويضات) لتغطية مخصصاتك المفتوحة. - -### كم من الوقت لدي لتأكيد تحويل حصتي إلى Arbitrum One - -\ _ \ _ \ \* يجب تأكيد معاملتك لإتمام تحويل الحصة على Arbitrum One. يجب إكمال هذه الخطوة في غضون 7 أيام وإلا فقد يتم فقدان الحصة. - -### ماذا لو كان لدي تخصيصات مفتوحة؟ - -إذا كنت لا ترسل كل حصصك، فإن أداة نقل L2 ستتحقق من أن الحد الأدنى 100 ألف GRT لا يزال في شبكة Ethereum mainnet وأن حصتك المتبقية وتفويضك كافيان لتغطية أي تخصيصات مفتوحة. قد تحتاج إلى إغلاق التخصيصات المفتوحة إذا كان رصيد GRT الخاص بك لا يغطي الحد الأدنى + المخصصات المفتوحة. - -### باستخدام أدوات النقل ، هل من الضروري الانتظار 28 يومًا لإلغاء الحصة في Ethereum mainnet قبل التحويل؟ - -لا ، يمكنك تحويل حصتك إلى L2 على الفور ، ولا داعي لإلغاء حصتك والانتظار قبل استخدام أداة التحويل. لا يسري الانتظار لمدة 28 يومًا إلا إذا كنت ترغب في سحب الحصة إلى محفظتك ، على شبكة Ethereum mainnet أو L2. - -### كم من الوقت سيستغرق تحويل حصتي؟ - -ستستغرق أداة النقل L2 حوالي 20 دقيقة لإكمال تحويل حصتك. - -### هل يجب أن أقوم بالفهرسة على Arbitrum One قبل أن أنقل حصتي؟ - -You can effectively transfer your stake first before setting up indexing, but you will not be able to claim any rewards on L2 until you allocate to Subgraphs on L2, index them, and present POIs. - -### هل يستطيع المفوضون نقل تفويضهم قبل نقل indexing stake الخاص بي؟ - -لا ، لكي يقوم المفوضون بنقل GRT المفوضة إلى Arbitrum One ، يجب أن يكون المفهرس الذي يتم التفويض إليه نشطًا في L2. - -### Can I transfer my stake if I'm using a GRT vesting contract / token lock wallet? - -Yes! The process is a bit different, because vesting contracts can't forward the ETH needed to pay for the L2 gas, so you need to deposit it beforehand. If your vesting contract is not fully vested, you will also have to first initialize a counterpart vesting contract on L2 and will only be able to transfer the stake to this L2 vesting contract. The UI on Explorer can guide you through this process when you've connected to Explorer using the vesting lock wallet. - -### I already have stake on L2. Do I still need to send 100k GRT when I use the transfer tools the first time? - -​Yes. The L1 smart contracts will not be aware of your L2 stake, so they will require you to transfer at least 100k GRT when you transfer for the first time. ​ - -### Can I transfer my stake to L2 if I am in the process of unstaking GRT? - -​No. If any fraction of your stake is thawing, you have to wait the 28 days and withdraw it before you can transfer stake. The tokens that are being staked are "locked" and will prevent any transfers or stake to L2. - -## نقل Vesting Contract(عقد الاستحقاق) - -### كيف أنقل عقد الاستحقاق الخاص بي؟ - -لتحويل استحقاقك ، ستحتاج إلى إكمال الخطوات التالية: - -1. ابدأ تحويل الاستحقاق على شبكة Ethereum mainnet - -2. انتظر 20 دقيقة للتأكيد - -3. قم بالتأكيد على نقل الاستحقاق على Arbitrum One - -### كيف يمكنني تحويل عقد الاستحقاق الخاص بي إذا كنت مخولًا جزئيًا فقط؟ - - - -1. قم بإيداع بعض ETH في عقد أداة النقل (يمكن أن تساعد واجهة المستخدم في تقدير مبلغ معقول) - -2. Send some locked GRT through the transfer tool contract, to L2 to initialize the L2 vesting lock. This will also set their L2 beneficiary address. - -3. Send their stake/delegation to L2 through the "locked" transfer tool functions in the L1Staking contract. - -4. سحب أي ETH متبقي من عقد أداة النقل(transfer tool contract) - -### كيف يمكنني تحويل عقد الاستحقاق الخاص بي إذا كنت مخولًا بالكامل؟ - - - -بالنسبة لمن يتمتعون بكامل الصلاحيات ، فإن العملية مماثلة: - -1. قم بإيداع بعض ETH في عقد أداة النقل (يمكن أن تساعد واجهة المستخدم في تقدير مبلغ معقول) - -2. قم بتعيين عنوان L2 الخاص بك من خلال استدعاء عقد أداة النقل - -3. أرسل حصتك / تفويضك إلى L2 من خلال وظائف أداة التحويل "locked" في L1 Staking contract. - -4. سحب أي ETH متبقي من عقد أداة النقل(transfer tool contract) - -### هل يمكنني نقل عقد الاستحقاق الخاص بي إلى Arbitrum؟ - -يمكنك تحويل رصيد GRT الخاص بعقد الاستحقاق الخاص بك إلى عقد استحقاق آخر على L2. هذا شرط أساسي لنقل الحصة أو التفويض من عقد الاستحقاق الخاص بك إلى L2. يجب أن يحتوي عقد الاستحقاق على مبلغ غير صفري من GRT (يمكنك تحويل مبلغ صغير إليه مثل 1 GRT إذا لزم الأمر). - -عندما تقوم بتحويل GRT من عقد الاستحقاق L1 الخاص بك إلى L2 ، يمكنك اختيار المبلغ الذي تريد إرساله ويمكنك القيام بذلك عدة مرات. سيتم بدء عقد الاستحقاق على L2 في المرة الأولى التي تقوم فيها بتحويل GRT. - -تتم عمليات النقل باستخدام أداة النقل(Transfer Tool) التي ستكون مرئية في ملف تعريف Explorer الخاص بك عند الاتصال بحساب عقد الاستحقاق. - -يرجى ملاحظة أنك لن تكون قادرًا على استخلاص/ سحب GRT من عقد الاستحقاق على L2 حتى نهاية الجدول الزمني للاستحقاق عندما يتم تخويل عقدك بالكامل. إذا كنت بحاجة لتحرير GRT قبل ذلك الحين ، فيمكنك إعادة نقل GRT إلى عقد الاستحقاق على L1 باستخدام أداة تحويل أخرى متاحة لهذا الغرض. - -إذا لم تقم بتحويل أي رصيد من عقود الاستحقاق إلى L2 ، وكان عقد الاستحقاق الخاص بك مخولًا بالكامل ، فلا يجب عليك تحويل عقد الاستحقاق الخاص بك إلى L2. بدلاً من ذلك ، يمكنك استخدام أدوات التحويل لتعيين عنوان محفظة L2 ، وتحويل حصتك أو تفويضك مباشرةً إلى هذه المحفظة العادية على L2. - -### أنا أستخدم عقد الاستحقاق الخاص بي للقيام بالتخزين (staking) في mainnet. هل يمكنني تحويل حصتي إلى Arbitrum One - -نعم ، ولكن إذا كان عقدك لا يزال مستحقًا ، فيمكنك فقط نقل الحصة بحيث تكون مملوكة لعقد الاستحقاق L2 الخاص بك. يجب أولاً تهيئة عقد L2 هذا عن طريق تحويل بعض رصيد GRT باستخدام أداة تحويل عقد الاستحقاق في Explorer. إذا كان عقدك مخولًا بالكامل ، فيمكنك تحويل حصتك إلى أي عنوان على L2 ، ولكن يجب عليك تعيينها مسبقًا وإيداع بعض ETH لأداة التحويل L2 لدفع ثمن غاز L2. - -### أنا أستخدم عقد الاستحقاق الخاص بي للتفويض على mainnet. هل يمكنني نقل تفويضاتي إلى Arbitrum One - -نعم ، ولكن إذا كان عقدك لا يزال مستحقًا ، فيمكنك فقط نقل التفويض بحيث يكون مملوكًا لعقد الاستحقاق L2 الخاص بك. يجب أولاً تهيئة عقد L2 هذا عن طريق تحويل بعضا من رصيد GRT باستخدام أداة تحويل عقد الاستحقاق في Explorer. إذا كان عقدك مخولًا بالكامل ، فيمكنك نقل تفويضك إلى أي عنوان في L2 ، ولكن يجب عليك تعيينه مسبقًا وإيداع بعض ETH لأداة التحويل L2 لدفع ثمن غاز L2. - -### هل يمكنني تحديد مستفيد مختلف لعقد الاستحقاق الخاص بي على L2؟ - -نعم ، في المرة الأولى التي تقوم فيها بتحويل رصيد وإعداد عقد استحقاق L2 ، يمكنك تحديد مستفيد من L2. تأكد من أن هذا المستفيد عبارة عن محفظة يمكنها إجراء المعاملات على Arbitrum One ، يجب أن تكون EOA أو multisig تم نشرها على Arbitrum One. - -إذا كان عقدك مخولًا بالكامل ، فلن تقوم بإعداد عقد استحقاق على L2 ؛ بدلاً من ذلك ، ستقوم بتعيين عنوان محفظة L2 وستكون هذه هي المحفظة المستلمة لحصتك أو تفويضك في Arbitrum One. - -### عقدي مخول بالكامل. هل يمكنني نقل حصتي أو تفويضي إلى عنوان آخر ليس عقداً استحقاقيا على L2؟ - -نعم. إذا لم تقم بتحويل أي رصيد من عقود الاستحقاق إلى L2 ، وكان عقد الاستحقاق الخاص بك مخولًا بالكامل ، فلا يجب عليك تحويل عقد الاستحقاق الخاص بك إلى L2. بدلاً من ذلك ، يمكنك استخدام أدوات التحويل لتعيين عنوان محفظة L2 ، وتحويل حصتك أو تفويضك مباشرةً إلى هذه المحفظة العادية على L2. - -هذا يسمح لك بتحويل حصتك أو تفويضك إلى أي عنوان L2. - -### عقد الاستحقاق الخاص بي لا يزال مستحقًا. كيف أقوم بتحويل رصيد عقد الاستحقاق الخاص بي إلى L2؟ - -تنطبق هذه الخطوات فقط إذا كان عقدك لا يزال مستحقًا ، أو إذا كنت قد استخدمت هذه العملية من قبل عندما كان عقدك لا يزال مستحقًا. - -لتحويل عقد الاستحقاق الخاص بك إلى L2 ، سوف ترسل أي رصيد GRT إلى L2 باستخدام أدوات التحويل ، والتي ستعمل على تهيئة عقد استحقاق L2 الخاص بك: - -1. قم بإيداع بعض ETH في عقد أداة النقل (سيتم استخدام هذا لدفع ثمن غاز L2) - -2. إبطال وصول البروتوكول إلى عقد الاستحقاق (مطلوب للخطوة التالية) - -3. امنح البروتوكول حق الوصول إلى عقد الاستحقاق (سيسمح لعقدك بالتفاعل مع أداة التحويل) - -4. حدد عنوان المستفيد على L2 \ \* وابدأ في تحويل الرصيد على Ethereum mainnet - -5. انتظر 20 دقيقة للتأكيد - -6. قم بتأكيد تحويل الرصيد على L2 - -\ \* إذا لزم الأمر -أنت تستخدم عنوان عقد. - -\*\*\*\*You must confirm your transaction to complete the balance transfer on Arbitrum One. This step must be completed within 7 days or the balance could be lost. In most cases, this step will run automatically, but a manual confirmation may be needed if there is a gas price spike on Arbitrum One. If there are any issues during this process, there will be resources to help: contact support at support@thegraph.com or on [Discord](https://discord.gg/graphprotocol). - -### My vesting contract shows 0 GRT so I cannot transfer it, why is this and how do I fix it? - -​To initialize your L2 vesting contract, you need to transfer a nonzero amount of GRT to L2. This is required by the Arbitrum One GRT bridge that is used by the L2 Transfer Tools. The GRT must come from the vesting contract's balance, so it does not include staked or delegated GRT. - -If you've staked or delegated all your GRT from the vesting contract, you can manually send a small amount like 1 GRT to the vesting contract address from anywhere else (e.g. from another wallet, or an exchange). ​ - -### I am using a vesting contract to stake or delegate, but I don't see a button to transfer my stake or delegation to L2, what do I do? - -​If your vesting contract hasn't finished vesting, you need to first create an L2 vesting contract that will receive your stake or delegation on L2. This vesting contract will not allow releasing tokens in L2 until the end of the vesting timeline, but will allow you to transfer GRT back to the L1 vesting contract to be released there. - -When connected with the vesting contract on Explorer, you should see a button to initialize your L2 vesting contract. Follow that process first, and you will then see the buttons to transfer your stake or delegation in your profile. ​ - -### If I initialize my L2 vesting contract, will this also transfer my delegation to L2 automatically? - -​No, initializing your L2 vesting contract is a prerequisite for transferring stake or delegation from the vesting contract, but you still need to transfer these separately. - -You will see a banner on your profile prompting you to transfer your stake or delegation after you have initialized your L2 vesting contract. - -### هل يمكنني إرجاع عقد الاستحقاق إلى L1؟ - -ليست هناك حاجة للقيام بذلك لأن عقد الاستحقاق الخاص بك لا يزال في L1. عندما تستخدم أدوات التحويل ، فأنت تقوم فقط بإنشاء عقد جديد في L2 مرتبط بعقد الاستحقاق L1 الخاص بك ، ويمكنك إرسال GRT ذهابًا وإيابًا بينهما. - -### لماذا أحتاج إلى تغيير عقد الاستحقاق الخاص بي من البداية؟ - -يجب عليك إعداد عقد استحقاق L2 حتى يتمكن هذا الحساب من امتلاك حصتك أو تفويضك في L2. وإلا ، لن يكون هناك وسيلة لك لنقل الحصة / التفويض إلى L2 دون "الهروب" من عقد الاستحقاق. - -### ماذا يحدث إذا حاولت سحب عقدي عندما لم يتم تنفيذه بالكامل؟هل هذا ممكن؟ - -هذا ليس احتمال. يمكنك إعادة الأموال إلى L1 وسحبها هناك. - -### ماذا لو لم أرغب في نقل عقد الاستحقاق الخاص بي إلى L2؟ - -يمكنك الاستمرار في التخزين / التفويض على L1. بمرور الوقت ، قد ترغب في التفكير في الانتقال إلى L2 لتمكين المكافآت هناك حيث يتوسع البروتوكول في Arbitrum One. لاحظ أن أدوات التحويل هذه مخصصة لمنح العقود المسموح لها بالمشاركة والتفويض في البروتوكول. إذا كان عقدك لا يسمح بالتخزين أو التفويض ، أو كان قابلاً للإلغاء ، فلا توجد أداة نقل متاحة. ستظل قادرًا على سحب GRT من L1 عندما يكون ذلك متاحًا. diff --git a/website/src/pages/ar/archived/arbitrum/l2-transfer-tools-guide.mdx b/website/src/pages/ar/archived/arbitrum/l2-transfer-tools-guide.mdx deleted file mode 100644 index 5cc6908cb73c..000000000000 --- a/website/src/pages/ar/archived/arbitrum/l2-transfer-tools-guide.mdx +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: L2 Transfer Tools Guide ---- - -يسهل الغراف الانتقال إلى الطبقة الثانبة على أربترم. لكل مشارك في البروتوكول ، توجد مجموعة من أدوات نقل الطبقة الثانبة لجعل النقل إليها سلسًا لجميع المشاركين في الشبكة. ستطلب منك هذه الأدوات اتباع مجموعة محددة من الخطوات بناءً على ما تقوم بنقله. - -Some frequent questions about these tools are answered in the [L2 Transfer Tools FAQ](/archived/arbitrum/l2-transfer-tools-faq/). The FAQs contain in-depth explanations of how to use the tools, how they work, and things to keep in mind when using them. - -## How to transfer your Subgraph to Arbitrum One (L2) - - - -## Benefits of transferring your Subgraphs - -مجتمع الغراف والمطورون الأساسيون كانوا [يستعدون] (https://forum.thegraph.com/t/gip-0031-arbitrum-grt-bridge/3305) للإنتقال إلى آربترم على مدى العام الماضي. وتعتبر آربترم سلسلة كتل من الطبقة الثانية أو "L2"، حيث ترث الأمان من سلسلة الإيثيريوم ولكنها توفر رسوم غازٍ أقل بشكلٍ كبير. - -When you publish or upgrade your Subgraph to The Graph Network, you're interacting with smart contracts on the protocol and this requires paying for gas using ETH. By moving your Subgraphs to Arbitrum, any future updates to your Subgraph will require much lower gas fees. The lower fees, and the fact that curation bonding curves on L2 are flat, also make it easier for other Curators to curate on your Subgraph, increasing the rewards for Indexers on your Subgraph. This lower-cost environment also makes it cheaper for Indexers to index and serve your Subgraph. Indexing rewards will be increasing on Arbitrum and decreasing on Ethereum mainnet over the coming months, so more and more Indexers will be transferring their stake and setting up their operations on L2. - -## Understanding what happens with signal, your L1 Subgraph and query URLs - -Transferring a Subgraph to Arbitrum One uses the Arbitrum One GRT bridge, which in turn uses the native Arbitrum One bridge, to send the Subgraph to L2. The "transfer" will deprecate the Subgraph on mainnet and send the information to re-create the Subgraph on L2 using the bridge. It will also include the Subgraph owner's signaled GRT, which must be more than zero for the bridge to accept the transfer. - -When you choose to transfer the Subgraph, this will convert all of the Subgraph's curation signal to GRT. This is equivalent to "deprecating" the Subgraph on mainnet. The GRT corresponding to your curation will be sent to L2 together with the Subgraph, where they will be used to mint signal on your behalf. - -Other Curators can choose whether to withdraw their fraction of GRT, or also transfer it to L2 to mint signal on the same Subgraph. If a Subgraph owner does not transfer their Subgraph to L2 and manually deprecates it via a contract call, then Curators will be notified and will be able to withdraw their curation. - -As soon as the Subgraph is transferred, since all curation is converted to GRT, Indexers will no longer receive rewards for indexing the Subgraph. However, there will be Indexers that will 1) keep serving transferred Subgraphs for 24 hours, and 2) immediately start indexing the Subgraph on L2. Since these Indexers already have the Subgraph indexed, there should be no need to wait for the Subgraph to sync, and it will be possible to query the L2 Subgraph almost immediately. - -Queries to the L2 Subgraph will need to be done to a different URL (on `arbitrum-gateway.thegraph.com`), but the L1 URL will continue working for at least 48 hours. After that, the L1 gateway will forward queries to the L2 gateway (for some time), but this will add latency so it is recommended to switch all your queries to the new URL as soon as possible. - -## اختيار محفظة L2 الخاصة بك - -When you published your Subgraph on mainnet, you used a connected wallet to create the Subgraph, and this wallet owns the NFT that represents this Subgraph and allows you to publish updates. - -When transferring the Subgraph to Arbitrum One, you can choose a different wallet that will own this Subgraph NFT on L2. - -إذا كنت تستخدم محفظة "عادية" مثل MetaMask (حساب مملوك خارجيًا EOA ، محفظة ليست بعقد ذكي) ، فهذا اختياري ويوصى بالاحتفاظ بعنوان المالك نفسه كما في L1. - -If you're using a smart contract wallet, like a multisig (e.g. a Safe), then choosing a different L2 wallet address is mandatory, as it is most likely that this account only exists on mainnet and you will not be able to make transactions on Arbitrum using this wallet. If you want to keep using a smart contract wallet or multisig, create a new wallet on Arbitrum and use its address as the L2 owner of your Subgraph. - -**It is very important to use a wallet address that you control, and that can make transactions on Arbitrum One. Otherwise, the Subgraph will be lost and cannot be recovered.** - -## التحضير لعملية النقل: إنشاء جسر لـبعض ETH - -Transferring the Subgraph involves sending a transaction through the bridge, and then executing another transaction on Arbitrum. The first transaction uses ETH on mainnet, and includes some ETH to pay for gas when the message is received on L2. However, if this gas is insufficient, you will have to retry the transaction and pay for the gas directly on L2 (this is "Step 3: Confirming the transfer" below). This step **must be executed within 7 days of starting the transfer**. Moreover, the second transaction ("Step 4: Finishing the transfer on L2") will be done directly on Arbitrum. For these reasons, you will need some ETH on an Arbitrum wallet. If you're using a multisig or smart contract account, the ETH will need to be in the regular (EOA) wallet that you are using to execute the transactions, not on the multisig wallet itself. - -يمكنك شراء إيثيريوم من بعض المنصات وسحبها مباشرة إلى أربترم، أو يمكنك استخدام جسر أربترم لإرسال إيثيريوم من محفظة الشبكة الرئيسيةإلى الطبقة الثانية: [bridge.arbitrum.io] (http://bridge.arbitrum.io). نظرًا لأن رسوم الغاز على أربترم أقل ، فستحتاج فقط إلى مبلغ صغير. من المستحسن أن تبدأ بمبلغ منخفض (0 على سبيل المثال ، 01 ETH) للموافقة على معاملتك. - -## Finding the Subgraph Transfer Tool - -You can find the L2 Transfer Tool when you're looking at your Subgraph's page on Subgraph Studio: - -![أداة النقل](/img/L2-transfer-tool1.png) - -It is also available on Explorer if you're connected with the wallet that owns a Subgraph and on that Subgraph's page on Explorer: - -![Transferring to L2](/img/transferToL2.png) - -سيؤدي النقر فوق زر النقل إلى الطبقة الثانية إلى فتح أداة النقل حيث يمكنك بدء عملية النقل. - -## الخطوة 1: بدء عملية النقل - -Before starting the transfer, you must decide which address will own the Subgraph on L2 (see "Choosing your L2 wallet" above), and it is strongly recommend having some ETH for gas already bridged on Arbitrum (see "Preparing for the transfer: bridging some ETH" above). - -Also please note transferring the Subgraph requires having a nonzero amount of signal on the Subgraph with the same account that owns the Subgraph; if you haven't signaled on the Subgraph you will have to add a bit of curation (adding a small amount like 1 GRT would suffice). - -After opening the Transfer Tool, you will be able to input the L2 wallet address into the "Receiving wallet address" field - **make sure you've entered the correct address here**. Clicking on Transfer Subgraph will prompt you to execute the transaction on your wallet (note some ETH value is included to pay for L2 gas); this will initiate the transfer and deprecate your L1 Subgraph (see "Understanding what happens with signal, your L1 Subgraph and query URLs" above for more details on what goes on behind the scenes). - -If you execute this step, **make sure you proceed until completing step 3 in less than 7 days, or the Subgraph and your signal GRT will be lost.** This is due to how L1-L2 messaging works on Arbitrum: messages that are sent through the bridge are "retry-able tickets" that must be executed within 7 days, and the initial execution might need a retry if there are spikes in the gas price on Arbitrum. - -![Start the transfer to L2](/img/startTransferL2.png) - -## Step 2: Waiting for the Subgraph to get to L2 - -After you start the transfer, the message that sends your L1 Subgraph to L2 must propagate through the Arbitrum bridge. This takes approximately 20 minutes (the bridge waits for the mainnet block containing the transaction to be "safe" from potential chain reorgs). - -بمجرد انتهاء وقت الانتظار ، ستحاول Arbitrum تنفيذ النقل تلقائيًا على عقود L2. - -![شاشة انتظار](/img/screenshotOfWaitScreenL2.png) - -## الخطوة الثالثة: تأكيد التحويل - -In most cases, this step will auto-execute as the L2 gas included in step 1 should be sufficient to execute the transaction that receives the Subgraph on the Arbitrum contracts. In some cases, however, it is possible that a spike in gas prices on Arbitrum causes this auto-execution to fail. In this case, the "ticket" that sends your Subgraph to L2 will be pending and require a retry within 7 days. - -في هذا الحالة ، فستحتاج إلى الاتصال باستخدام محفظة الطبقة الثانية والتي تحتوي بعضاً من إيثيريوم على أربترم، قم بتغيير شبكة محفظتك إلى أربترم، والنقر فوق "تأكيد النقل" لإعادة محاولة المعاملة. - -![تأكيد النقل إلى الطبقة الثانية](/img/confirmTransferToL2.png) - -## الخطوة 4: إنهاء عملية النقل على L2 - -At this point, your Subgraph and GRT have been received on Arbitrum, but the Subgraph is not published yet. You will need to connect using the L2 wallet that you chose as the receiving wallet, switch your wallet network to Arbitrum, and click "Publish Subgraph." - -![Publish the Subgraph](/img/publishSubgraphL2TransferTools.png) - -![Wait for the Subgraph to be published](/img/waitForSubgraphToPublishL2TransferTools.png) - -This will publish the Subgraph so that Indexers that are operating on Arbitrum can start serving it. It will also mint curation signal using the GRT that were transferred from L1. - -## Step 5: Updating the query URL - -Your Subgraph has been successfully transferred to Arbitrum! To query the Subgraph, the new URL will be : - -`https://arbitrum-gateway.thegraph.com/api/[api-key]/subgraphs/id/[l2-subgraph-id]` - -Note that the Subgraph ID on Arbitrum will be a different than the one you had on mainnet, but you can always find it on Explorer or Studio. As mentioned above (see "Understanding what happens with signal, your L1 Subgraph and query URLs") the old L1 URL will be supported for a short while, but you should switch your queries to the new address as soon as the Subgraph has been synced on L2. - -## كيفية نقل التنسيق الخاص بك إلى أربترم (الطبقة الثانية) - -## Understanding what happens to curation on Subgraph transfers to L2 - -When the owner of a Subgraph transfers a Subgraph to Arbitrum, all of the Subgraph's signal is converted to GRT at the same time. This applies to "auto-migrated" signal, i.e. signal that is not specific to a Subgraph version or deployment but that follows the latest version of a Subgraph. - -This conversion from signal to GRT is the same as what would happen if the Subgraph owner deprecated the Subgraph in L1. When the Subgraph is deprecated or transferred, all curation signal is "burned" simultaneously (using the curation bonding curve) and the resulting GRT is held by the GNS smart contract (that is the contract that handles Subgraph upgrades and auto-migrated signal). Each Curator on that Subgraph therefore has a claim to that GRT proportional to the amount of shares they had for the Subgraph. - -A fraction of these GRT corresponding to the Subgraph owner is sent to L2 together with the Subgraph. - -At this point, the curated GRT will not accrue any more query fees, so Curators can choose to withdraw their GRT or transfer it to the same Subgraph on L2, where it can be used to mint new curation signal. There is no rush to do this as the GRT can be help indefinitely and everybody gets an amount proportional to their shares, irrespective of when they do it. - -## اختيار محفظة L2 الخاصة بك - -If you decide to transfer your curated GRT to L2, you can choose a different wallet that will own the curation signal on L2. - -If you're using a "regular" wallet like Metamask (an Externally Owned Account or EOA, i.e. a wallet that is not a smart contract), then this is optional and it is recommended to keep the same Curator address as in L1. - -If you're using a smart contract wallet, like a multisig (e.g. a Safe), then choosing a different L2 wallet address is mandatory, as it is most likely that this account only exists on mainnet and you will not be able to make transactions on Arbitrum using this wallet. If you want to keep using a smart contract wallet or multisig, create a new wallet on Arbitrum and use its address as the L2 receiving wallet address. - -**It is very important to use a wallet address that you control, and that can make transactions on Arbitrum, as otherwise the curation will be lost and cannot be recovered.** - -## Sending curation to L2: Step 1 - -Before starting the transfer, you must decide which address will own the curation on L2 (see "Choosing your L2 wallet" above), and it is recommended having some ETH for gas already bridged on Arbitrum in case you need to retry the execution of the message on L2. You can buy ETH on some exchanges and withdraw it directly to Arbitrum, or you can use the Arbitrum bridge to send ETH from a mainnet wallet to L2: [bridge.arbitrum.io](http://bridge.arbitrum.io) - since gas fees on Arbitrum are so low, you should only need a small amount, e.g. 0.01 ETH will probably be more than enough. - -If a Subgraph that you curate to has been transferred to L2, you will see a message on Explorer telling you that you're curating to a transferred Subgraph. - -When looking at the Subgraph page, you can choose to withdraw or transfer the curation. Clicking on "Transfer Signal to Arbitrum" will open the transfer tool. - -![Transfer signal](/img/transferSignalL2TransferTools.png) - -After opening the Transfer Tool, you may be prompted to add some ETH to your wallet if you don't have any. Then you will be able to input the L2 wallet address into the "Receiving wallet address" field - **make sure you've entered the correct address here**. Clicking on Transfer Signal will prompt you to execute the transaction on your wallet (note some ETH value is included to pay for L2 gas); this will initiate the transfer. - -If you execute this step, **make sure you proceed until completing step 3 in less than 7 days, or your signal GRT will be lost.** This is due to how L1-L2 messaging works on Arbitrum: messages that are sent through the bridge are "retryable tickets" that must be executed within 7 days, and the initial execution might need a retry if there are spikes in the gas price on Arbitrum. - -## Sending curation to L2: step 2 - -Starting the transfer: - -![Send signal to L2](/img/sendingCurationToL2Step2First.png) - -After you start the transfer, the message that sends your L1 curation to L2 must propagate through the Arbitrum bridge. This takes approximately 20 minutes (the bridge waits for the mainnet block containing the transaction to be "safe" from potential chain reorgs). - -بمجرد انتهاء وقت الانتظار ، ستحاول Arbitrum تنفيذ النقل تلقائيًا على عقود L2. - -![Sending curation signal to L2](/img/sendingCurationToL2Step2Second.png) - -## Sending curation to L2: step 3 - -In most cases, this step will auto-execute as the L2 gas included in step 1 should be sufficient to execute the transaction that receives the curation on the Arbitrum contracts. In some cases, however, it is possible that a spike in gas prices on Arbitrum causes this auto-execution to fail. In this case, the "ticket" that sends your curation to L2 will be pending and require a retry within 7 days. - -في هذا الحالة ، فستحتاج إلى الاتصال باستخدام محفظة الطبقة الثانية والتي تحتوي بعضاً من إيثيريوم على أربترم، قم بتغيير شبكة محفظتك إلى أربترم، والنقر فوق "تأكيد النقل" لإعادة محاولة المعاملة. - -![Send signal to L2](/img/L2TransferToolsFinalCurationImage.png) - -## Withdrawing your curation on L1 - -If you prefer not to send your GRT to L2, or you'd rather bridge the GRT manually, you can withdraw your curated GRT on L1. On the banner on the Subgraph page, choose "Withdraw Signal" and confirm the transaction; the GRT will be sent to your Curator address. diff --git a/website/src/pages/ar/archived/sunrise.mdx b/website/src/pages/ar/archived/sunrise.mdx deleted file mode 100644 index fd2f29d3191d..000000000000 --- a/website/src/pages/ar/archived/sunrise.mdx +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Post-Sunrise + Upgrading to The Graph Network FAQ -sidebarTitle: Post-Sunrise Upgrade FAQ ---- - -> Note: The Sunrise of Decentralized Data ended June 12th, 2024. - -## What was the Sunrise of Decentralized Data? - -The Sunrise of Decentralized Data was an initiative spearheaded by Edge & Node. This initiative enabled Subgraph developers to upgrade to The Graph’s decentralized network seamlessly. - -This plan drew on previous developments from The Graph ecosystem, including an upgrade Indexer to serve queries on newly published Subgraphs. - -### What happened to the hosted service? - -The hosted service query endpoints are no longer available, and developers cannot deploy new Subgraphs on the hosted service. - -During the upgrade process, owners of hosted service Subgraphs could upgrade their Subgraphs to The Graph Network. Additionally, developers were able to claim auto-upgraded Subgraphs. - -### Was Subgraph Studio impacted by this upgrade? - -No, Subgraph Studio was not impacted by Sunrise. Subgraphs were immediately available for querying, powered by the upgrade Indexer, which uses the same infrastructure as the hosted service. - -### Why were Subgraphs published to Arbitrum One, did it start indexing a different network? - -The Graph Network was initially deployed on Ethereum mainnet but was later moved to Arbitrum One in order to lower gas costs for all users. As a result, all new Subgraphs are published to The Graph Network on Arbitrum One so that Indexers can support them. Arbitrum One is the network that Subgraphs are published to, but Subgraphs can index any of the [supported networks](/supported-networks/) - -## About the Upgrade Indexer - -> The upgrade Indexer is currently active. - -The upgrade Indexer was implemented to improve the experience of upgrading Subgraphs from the hosted service to The Graph Network and support new versions of existing Subgraphs that had not yet been indexed. - -### What does the upgrade Indexer do? - -- It bootstraps chains that have yet to receive indexing rewards on The Graph Network and ensures that an Indexer is available to serve queries as quickly as possible after a Subgraph is published. -- It supports chains that were previously only available on the hosted service. Find a comprehensive list of supported chains [here](/supported-networks/). -- Indexers that operate an upgrade Indexer do so as a public service to support new Subgraphs and additional chains that lack indexing rewards before The Graph Council approves them. - -### Why is Edge & Node running the upgrade Indexer? - -Edge & Node historically maintained the hosted service and, as a result, already have synced data for hosted service Subgraphs. - -### What does the upgrade indexer mean for existing Indexers? - -Chains previously only supported on the hosted service were made available to developers on The Graph Network without indexing rewards at first. - -However, this action unlocked query fees for any interested Indexer and increased the number of Subgraphs published on The Graph Network. As a result, Indexers have more opportunities to index and serve these Subgraphs in exchange for query fees, even before indexing rewards are enabled for a chain. - -The upgrade Indexer also provides the Indexer community with information about the potential demand for Subgraphs and new chains on The Graph Network. - -### What does this mean for Delegators? - -The upgrade Indexer offers a powerful opportunity for Delegators. As it allowed more Subgraphs to be upgraded from the hosted service to The Graph Network, Delegators benefit from the increased network activity. - -### Did the upgrade Indexer compete with existing Indexers for rewards? - -No, the upgrade Indexer only allocates the minimum amount per Subgraph and does not collect indexing rewards. - -It operates on an “as needed” basis, serving as a fallback until sufficient service quality is achieved by at least three other Indexers in the network for respective chains and Subgraphs. - -### How does this affect Subgraph developers? - -Subgraph developers can query their Subgraphs on The Graph Network almost immediately after upgrading from the hosted service or [publishing from Subgraph Studio](/subgraphs/developing/publishing/publishing-a-subgraph/), as no lead time was required for indexing. Please note that [creating a Subgraph](/developing/creating-a-subgraph/) was not impacted by this upgrade. - -### How does the upgrade Indexer benefit data consumers? - -The upgrade Indexer enables chains on the network that were previously only supported on the hosted service. Therefore, it widens the scope and availability of data that can be queried on the network. - -### How does the upgrade Indexer price queries? - -The upgrade Indexer prices queries at the market rate to avoid influencing the query fee market. - -### When will the upgrade Indexer stop supporting a Subgraph? - -The upgrade Indexer supports a Subgraph until at least 3 other Indexers successfully and consistently serve queries made to it. - -Furthermore, the upgrade Indexer stops supporting a Subgraph if it has not been queried in the last 30 days. - -Other Indexers are incentivized to support Subgraphs with ongoing query volume. The query volume to the upgrade Indexer should trend towards zero, as it has a small allocation size, and other Indexers should be chosen for queries ahead of it. diff --git a/website/src/pages/ar/contracts.json b/website/src/pages/ar/contracts.json deleted file mode 100644 index 4ae67d46e7f7..000000000000 --- a/website/src/pages/ar/contracts.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "contract": "Contract", - "address": "العنوان" -} diff --git a/website/src/pages/ar/contracts.mdx b/website/src/pages/ar/contracts.mdx deleted file mode 100644 index 785140c69ad5..000000000000 --- a/website/src/pages/ar/contracts.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Protocol Contracts ---- - -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 - -This is the principal deployment of The Graph Network. - - - -## Mainnet - -This was the original deployment of The Graph Network. [Learn more](/archived/arbitrum/arbitrum-faq/) about The Graph's scaling with Arbitrum One. - - - -## Arbitrum Sepolia - -This is the primary testnet for The Graph Network. Testnet is predominantly used by core developers and ecosystem participants for testing purposes. There are no guarantees of service or availability on The Graph's testnets. - - - -## Sepolia - - diff --git a/website/src/pages/ar/docsearch.json b/website/src/pages/ar/docsearch.json deleted file mode 100644 index 8cfff967936d..000000000000 --- a/website/src/pages/ar/docsearch.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "button": { - "buttonText": "Search", - "buttonAriaLabel": "Search" - }, - "modal": { - "searchBox": { - "resetButtonTitle": "Clear the query", - "resetButtonAriaLabel": "Clear the query", - "cancelButtonText": "Cancel", - "cancelButtonAriaLabel": "Cancel" - }, - "startScreen": { - "recentSearchesTitle": "Recent", - "noRecentSearchesText": "No recent searches", - "saveRecentSearchButtonTitle": "Save this search", - "removeRecentSearchButtonTitle": "Remove this search from history", - "favoriteSearchesTitle": "Favorite", - "removeFavoriteSearchButtonTitle": "Remove this search from favorites" - }, - "errorScreen": { - "titleText": "Unable to fetch results", - "helpText": "You might want to check your network connection." - }, - "footer": { - "selectText": "to select", - "selectKeyAriaLabel": "Enter key", - "navigateText": "to navigate", - "navigateUpKeyAriaLabel": "Arrow up", - "navigateDownKeyAriaLabel": "Arrow down", - "closeText": "to close", - "closeKeyAriaLabel": "Escape key", - "searchByText": "Search by" - }, - "noResultsScreen": { - "noResultsText": "No results for", - "suggestedQueryText": "Try searching for", - "reportMissingResultsText": "Believe this query should return results?", - "reportMissingResultsLinkText": "Let us know." - } - } -} diff --git a/website/src/pages/ar/global.json b/website/src/pages/ar/global.json deleted file mode 100644 index d9110259f5cb..000000000000 --- a/website/src/pages/ar/global.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "navigation": { - "title": "Main navigation", - "show": "Show navigation", - "hide": "Hide navigation", - "subgraphs": "Subgraphs", - "substreams": "متعدد-السلاسل", - "sps": "Substreams-Powered Subgraphs", - "tokenApi": "Token API", - "indexing": "Indexing", - "resources": "Resources", - "archived": "Archived" - }, - "page": { - "lastUpdated": "Last updated", - "readingTime": { - "title": "Reading time", - "minutes": "minutes" - }, - "previous": "Previous page", - "next": "Next page", - "edit": "Edit on GitHub", - "onThisPage": "On this page", - "tableOfContents": "Table of contents", - "linkToThisSection": "Link to this section" - }, - "content": { - "callout": { - "note": "Note", - "tip": "Tip", - "important": "Important", - "warning": "Warning", - "caution": "Caution" - }, - "video": "Video" - }, - "openApi": { - "parameters": { - "pathParameters": "Path Parameters", - "queryParameters": "Query Parameters", - "headerParameters": "Header Parameters", - "cookieParameters": "Cookie Parameters", - "parameter": "Parameter", - "description": "الوصف", - "value": "Value", - "required": "Required", - "deprecated": "Deprecated", - "defaultValue": "Default value", - "minimumValue": "Minimum value", - "maximumValue": "Maximum value", - "acceptedValues": "Accepted values", - "acceptedPattern": "Accepted pattern", - "format": "Format", - "serializationFormat": "Serialization format" - }, - "request": { - "label": "Test this endpoint", - "noCredentialsRequired": "No credentials required", - "send": "Send Request" - }, - "responses": { - "potentialResponses": "Potential Responses", - "status": "Status", - "description": "الوصف", - "liveResponse": "Live Response", - "example": "Example" - }, - "errors": { - "invalidApi": "Could not retrieve API {0}.", - "invalidOperation": "Could not retrieve operation {0} in API {1}." - } - }, - "notFound": { - "title": "Oops! This page was lost in space...", - "subtitle": "Check if you’re using the right address or explore our website by clicking on the link below.", - "back": "Go Home" - } -} diff --git a/website/src/pages/ar/graph-horizon/_meta.js b/website/src/pages/ar/graph-horizon/_meta.js deleted file mode 100644 index 19d249237f38..000000000000 --- a/website/src/pages/ar/graph-horizon/_meta.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - overview: '', - 'what-changes': '', - 'migration-guide': '', -} diff --git a/website/src/pages/ar/graph-horizon/migration-guide.mdx b/website/src/pages/ar/graph-horizon/migration-guide.mdx deleted file mode 100644 index 16fd438010f6..000000000000 --- a/website/src/pages/ar/graph-horizon/migration-guide.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Graph Horizon Migration Guide -sidebarTitle: Migration Guide ---- - -For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). - -## Who Needs to Take Action? - -The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: - -### Indexers - -**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. - -The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. - -🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. - -For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). - -### Delegators - -**No Action Required**: Delegations will continue to work seamlessly. - -Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. - -### Curators - -**No Action Required**: Curation signals will be preserved. - -All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. - -### End Users & Developers - -**No Action Required**: Subgraph queries will continue without interruption. - -Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. - -## Support - -If you have questions about the upgrade process please reach out: - -- [The Graph Discord](https://discord.gg/graphprotocol) -- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/ar/graph-horizon/overview.mdx b/website/src/pages/ar/graph-horizon/overview.mdx deleted file mode 100644 index ab5026c61e26..000000000000 --- a/website/src/pages/ar/graph-horizon/overview.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Graph Horizon Overview -sidebarTitle: Overview ---- - -This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: - -- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) -- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) -- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) - -The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. - -This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. - -## Graph Horizon in a nutshell - -The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: - -- Staking mechanisms to provide economic security to the network -- Payments mechanisms to allow users to pay for access to data -- Support for the subgraphs use case - -The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. - -Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: - -- Core staking protocol -- Core payments protocol -- Arbitrary data service implementations - -These primitives can be permissionlessly composed by developers by means of the Data Service Framework. - -## The Data Service Framework - -Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. - -The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. - -## Enhanced Payment System - -### Integrated Payments Protocol - -While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. - -### GraphPayments and PaymentsEscrow - -A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/ar/graph-horizon/what-changes.mdx b/website/src/pages/ar/graph-horizon/what-changes.mdx deleted file mode 100644 index cfffea952a4a..000000000000 --- a/website/src/pages/ar/graph-horizon/what-changes.mdx +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: What changes with Graph Horizon? -sidebarTitle: What's new ---- - -## For Indexers - -### Provisions: A New Way to Manage Stake - -Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: - -- Indexer stakes GRT to the protocol -- Indexer assigns staked GRT to the `SubgraphService` data service -- Indexer uses (part of) provisioned stake to create allocations - -### Data Service Registration - -Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. - -### Payment Collection Changes - -Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. - -### Subgraph Service: Long-Lived Allocations - -One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. - -While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. - -⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. - -### Subgraph Service: legacy allocations - -During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. - -### Clarification on indexing rewards - -Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: - -- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT -- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT - -### Serving queries and the gateway behavior - -The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: - -- Before Horizon, the gateway will serve queries using TAPv1 receipts. -- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. - -## For Delegators - -### Per Data-Service Delegation - -Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. - -For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. - -### Potential Future Slashability - -While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. - -Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. - -### No More Delegation Tax - -The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. - -### Multiple Undelegation Requests - -Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. - -## Changes to Slashing - -### Flexible slashing percentage - -Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. - -### Fisherman protection - -Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. - -## What Stays the Same - -While Horizon brings significant improvements, several core elements remain unchanged: - -- **Curation mechanism**: The way subgraphs are signaled and curated remains the same -- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula -- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/ar/hypergraph/_meta.js b/website/src/pages/ar/hypergraph/_meta.js deleted file mode 100644 index 3db8b76c3175..000000000000 --- a/website/src/pages/ar/hypergraph/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - overview: '', - faq: '', -} diff --git a/website/src/pages/ar/hypergraph/faq.mdx b/website/src/pages/ar/hypergraph/faq.mdx deleted file mode 100644 index 9511f5f69d18..000000000000 --- a/website/src/pages/ar/hypergraph/faq.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Hypergraph FAQ -sidebarTitle: FAQ ---- - -## General Questions - -### What is Hypergraph? - -Hypergraph is a TypeScript-first framework for building local-first apps that syncs encrypted data to a shared knowledge graph. - -### Does it replace my backend? - -Yes. Hypergraph is your data layer. You still host a thin sync server, but your business logic lives entirely on the client. - -### Who is Hypergraph for? - -Developers building collaborative, consumer-facing apps that require real-time data sync, end-to-end encryption, and public knowledge graph interoperability. Ideal for those who want to focus on client-side logic without managing backend infrastructure. - -### What problems does Hypergraph solve? - -- Real-time sync of private data across users and devices with E2EE -- No traditional backend or database required (framework handles storage and sync) -- Publishing and consuming public data in an interoperable knowledge graph -- Built-in user authentication and access control -- Enables network effects by reusing existing data across apps - -### What should developers know? - -You should be comfortable writing React applications in TypeScript and familiar with common UI patterns (e.g., inboxes). - -## Implementation Questions - -### How can I integrate Hypergraph into an existing application? - -You can add Hypergraph as a collaboration and privacy layer to an existing app, enabling real-time sync and end-to-end encryption while keeping your current stack for other functionality. - -### What are Spaces? - -Spaces are the primary grouping for users and content in Hypergraph: they represent collaboration contexts and topics. Only members of a space can access its private data. - -### How do I get started? - -Check out the [Quickstart](https://docs.hypergraph.thegraph.com/docs/quickstart). - -### Where can I find the API reference? - -Refer to the [API Reference](https://docs.hypergraph.thegraph.com/docs/api-reference/hypergraph/). - -### How do I troubleshoot common errors? - -Find solutions in the [Troubleshooting Guide](https://docs.hypergraph.thegraph.com/docs/troubleshooting). - -## Support and Community - -### Where can I find more examples or support? - -Browse our GitHub repository for sample apps and open issues. Join the community through our issue tracker and discussion forums. - -### How can I share feedback? - -Provide feedback via GitHub issues or our upcoming feedback form linked in the docs. - -### Is Hypergraph open-source? - -100%. Apache-2.0 license. Contributions are welcomed. - -## Security and Privacy - -### Can the server read my private data? - -No. All private content is encrypted client-side with a per-Space symmetric key. - -### What happens if I lose my keys? - -Today you're out of luck (similar to Signal). A social recovery scheme is on the roadmap. Follow [#51](https://github.com/graphprotocol/hypergraph/issues/51). diff --git a/website/src/pages/ar/hypergraph/overview.mdx b/website/src/pages/ar/hypergraph/overview.mdx deleted file mode 100644 index 35c1f3f1488b..000000000000 --- a/website/src/pages/ar/hypergraph/overview.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Hypergraph -sidebarTitle: Overview ---- - -## Overview - -[Hypergraph](https://docs.hypergraph.thegraph.com/) is a TypeScript-first framework for building local-first applications that sync encrypted data to a shared knowledge graph. Instead of relying on traditional backend infrastructure, it shifts control to the client and puts data where it belongs: with the user. - -At its core, Hypergraph is powered by two innovations: - -1. Client-side architecture that keeps users in control of their data while apps remain real-time, private, and interoperable by default. -2. The [GRC-20](https://thegraph.com/blog/grc20-knowledge-graph/) standard which enables truly composable knowledge graphs. - -With Hypergraph, developers can build collaborative apps that feel seamless, secure, and user-owned while focusing purely on client-side logic. - -It offers end-to-end encryption, a GRC-20 Knowledge Graph SDK, JSON-LD storage, conflict-free sync with CRDTs, and Spaces for organizing people and data with fine-grained access. - -For more specifics check out, [key features](https://docs.hypergraph.thegraph.com/docs/key-features). - -## Core Concepts - -### Knowledge Graphs - -Unlike traditional databases that store data in rows and columns, knowledge graphs represent information as connected networks. This structure makes complex queries natural and efficient, while allowing the data model to evolve organically without schema migrations. - -#### Example Use Case - -In a social app, a traditional database might require complex joins to answer a query like: `"Posts by photographers that my friends liked"` - -In a knowledge graph, relationships are the data: - -``` -Teresa --> profession --> Photography -Teresa --> owns --> Fujifilm X100 -Teresa --> posted --> Street Photo -Alex --> friend_of --> Teresa -Alex --> liked --> Street Photo -``` - -This model makes queries natural and efficient, while allowing the schema to evolve organically. - -### The Hypergraph Advantage - -- **Private by default**: Personal data is encrypted on the device. -- **Peer-to-peer**: No central server required. Collaboration is direct. -- **Real-time**: Changes synchronize instantly across devices. -- **Interoperable**: Data is usable across applications that support the protocol. - -Hypergraph serializes all data using the [GRC-20 standard](https://thegraph.com/blog/grc20-knowledge-graph/). Hypergraph handles serialization, encryption, and networking behind the scenes, while developers interact with simple SDK calls. - -### Spaces - -A Space is the fundamental unit of collaboration. It groups people and data, similar to a folder, Slack channel, or shared document. Each Space maps one-to-one with an Automerge document, enabling conflict-free offline editing. - -Membership and roles are tracked in an append-only Space Event Log, supporting common operations like creating a Space, updating roles, inviting members, or removing members. - -### Identities - -Each user controls a cryptographic **Identity** used for authentication, encryption, and signing events. Identities are stored locally, enabling multi-device logins without a backend. - -### Inboxes - -An Inbox is a lightweight queue for delivering updates or direct messages. - -- **Account Inboxes**: Belong to a single user. -- **Space Inboxes**: Broadcast messages to all members. - -Inboxes can be public or private, with authentication policies controlling who can send messages. - -### Events and CRDTs - -Hypergraph uses CRDTs (Conflict-Free Replicated Data Types) to manage updates across peers. - -- Updates are signed, encrypted, and broadcast to peers. -- Conflicts resolve automatically without manual intervention. -- Large logs are periodically compacted into snapshots for efficiency. - -### Security Model - -Hypergraph is designed with security as a core principle: - -- End-to-end encryption ensures data privacy. -- Digital signatures verify the authenticity of events. -- Outdated or invalid updates are automatically rejected. -- Keys are rotated when membership changes to prevent unauthorized access. - -## Exploring Spaces - -Spaces can be browsed using [Geo Browser's Testnet](https://testnet.geobrowser.io/root) by entering a Space ID. Access is restricted by each Space's privacy rules. - -## Getting Started - -- [Quickstart Guide](https://docs.hypergraph.thegraph.com/docs/quickstart) -- [Core Concepts](https://docs.hypergraph.thegraph.com/docs/core-concepts#why-does-grc-20-exist) -- [AI Usage](https://docs.hypergraph.thegraph.com/docs/ai-usage) -- [API Reference](https://docs.hypergraph.thegraph.com/docs/api-reference/hypergraph/) -- [Troubleshooting Guide](https://docs.hypergraph.thegraph.com/docs/troubleshooting) - -For all Hypergraph documentation check out the [Hypergraph Docs](https://docs.hypergraph.thegraph.com/docs/quickstart) and the [Hypergraph GitHub Repo](https://github.com/graphprotocol/hypergraph). diff --git a/website/src/pages/ar/index.json b/website/src/pages/ar/index.json deleted file mode 100644 index 8de6ca3dd107..000000000000 --- a/website/src/pages/ar/index.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "title": "Home", - "hero": { - "title": "The Graph Docs", - "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" - }, - "products": { - "title": "The Graph's Products", - "description": "Choose a solution that fits your needs—interact with blockchain data your way.", - "subgraphs": { - "title": "Subgraphs", - "description": "Extract, process, and query blockchain data with open APIs.", - "cta": "Develop a subgraph" - }, - "substreams": { - "title": "متعدد-السلاسل", - "description": "Fetch and consume blockchain data with parallel execution.", - "cta": "Develop with Substreams" - }, - "tokenApi": { - "title": "Token API", - "description": "Query token data and leverage native MCP support.", - "cta": "Develop with Token API" - }, - "graphNode": { - "title": "Graph Node", - "description": "Index blockchain data and serve it via GraphQL queries.", - "cta": "Set up a local Graph Node" - }, - "firehose": { - "title": "Firehose", - "description": "Extract blockchain data into flat files to enhance sync times and streaming capabilities.", - "cta": "Get started with Firehose" - } - }, - "supportedNetworks": { - "title": "الشبكات المدعومة", - "details": "Network Details", - "services": "Services", - "type": "النوع", - "protocol": "Protocol", - "identifier": "Identifier", - "chainId": "Chain ID", - "nativeCurrency": "Native Currency", - "docs": "التوثيق", - "shortName": "Short Name", - "guides": "Guides", - "search": "Search networks", - "showTestnets": "Show Testnets", - "loading": "Loading...", - "infoTitle": "Info", - "infoText": "Boost your developer experience by enabling The Graph's indexing network.", - "infoLink": "Integrate new network", - "description": { - "base": "The Graph supports {0}. To add a new network, {1}", - "networks": "networks", - "completeThisForm": "complete this form" - }, - "emptySearch": { - "title": "No networks found", - "description": "No networks match your search for \"{0}\"", - "clearSearch": "Clear search", - "showTestnets": "Show testnets" - }, - "tableHeaders": { - "name": "Name", - "id": "ID", - "subgraphs": "Subgraphs", - "substreams": "متعدد-السلاسل", - "firehose": "Firehose", - "tokenApi": "Token API" - } - }, - "networkGuides": { - "evm": { - "subgraphQuickStart": { - "title": "Subgraph quick start", - "description": "Kickstart your journey into subgraph development." - }, - "substreamsQuickStart": { - "title": "Substreams quick start", - "description": "Stream high-speed data for real-time indexing." - }, - "tokenApi": { - "title": "The Graph's Token API", - "description": "Query token data and leverage native MCP support." - }, - "graphExplorer": { - "title": "Graph Explorer", - "description": "Find and query existing blockchain data." - }, - "substreamsDev": { - "title": "Substreams.dev", - "description": "Access tutorials, templates, and documentation to build custom data modules." - }, - "substreams": { - "title": "متعدد-السلاسل", - "description": "Stream high-speed data for real-time indexing." - }, - "timeseries": { - "title": "Timeseries & Aggregations", - "description": "Learn to track metrics like daily volumes or user growth." - }, - "advancedFeatures": { - "title": "Advanced subgraph features", - "description": "Leverage features like custom data sources, event handlers, and topic filters." - }, - "billing": { - "title": "الفوترة", - "description": "Optimize costs and manage billing efficiently." - } - }, - "nonEvm": { - "officialDocs": { - "title": "Official Substreams docs", - "description": "Stream high-speed data for real-time indexing." - }, - "spsIntro": { - "title": "Substreams-powered Subgraphs Intro", - "description": "Supercharge your subgraph's efficiency with Substreams." - }, - "substreamsDev": { - "title": "Substreams.dev", - "description": "Access tutorials, templates, and documentation to build custom data modules." - }, - "customSubstreamsSinks": { - "title": "Custom Substreams Sinks", - "description": "Leverage existing Substreams sinks to access data." - }, - "substreamsStarter": { - "title": "Substreams starter", - "description": "Leverage this boilerplate to create your first Substreams module." - }, - "substreamsRepo": { - "title": "Substreams GitHub repository", - "description": "Study, contribute to, or customize the core Substreams framework." - } - } - }, - "guides": { - "title": "Guides", - "description": "", - "explorer": { - "title": "Find Data in Graph Explorer", - "description": "Leverage hundreds of public subgraphs for existing blockchain data." - }, - "publishASubgraph": { - "title": "Publish a Subgraph", - "description": "Add your subgraph to the decentralized network." - }, - "publishSubstreams": { - "title": "Publish Substreams", - "description": "Launch your Substreams package to the Substreams Registry." - }, - "queryingBestPractices": { - "title": "أفضل الممارسات للاستعلام", - "description": "Optimize your subgraph queries for faster, better results." - }, - "timeseries": { - "title": "Optimized Timeseries & Aggregations", - "description": "Streamline your subgraph for efficiency." - }, - "apiKeyManagement": { - "title": "API Key Management", - "description": "Easily create, manage, and secure API keys for your subgraphs." - }, - "transferToTheGraph": { - "title": "Transfer to The Graph", - "description": "Seamlessly upgrade your subgraph from any platform." - } - }, - "videos": { - "title": "Video Tutorials", - "watchOnYouTube": "Watch on YouTube", - "theGraphExplained": { - "title": "The Graph Explained In 1 Minute", - "description": "Learn how and why The Graph is the backbone of web3 in this short, non-technical video." - }, - "whatIsDelegating": { - "title": "What is Delegating?", - "description": "This video explains key concepts to understand before delegating, a form of staking that helps secure The Graph." - }, - "howToIndexSolana": { - "title": "How to Index Solana with a Substreams-powered Subgraph", - "description": "If you're familiar with Subgraphs, discover how Substreams offer a different approach for key use cases." - } - }, - "time": { - "reading": "Reading time", - "duration": "Duration", - "minutes": "min" - } -} diff --git a/website/src/pages/ar/indexing/_meta-titles.json b/website/src/pages/ar/indexing/_meta-titles.json deleted file mode 100644 index 42f4de188fd4..000000000000 --- a/website/src/pages/ar/indexing/_meta-titles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tooling": "Indexer Tooling" -} diff --git a/website/src/pages/ar/indexing/_meta.js b/website/src/pages/ar/indexing/_meta.js deleted file mode 100644 index 194d7618a935..000000000000 --- a/website/src/pages/ar/indexing/_meta.js +++ /dev/null @@ -1,10 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - overview: '', - tooling: titles.tooling ?? '', - tap: '', - 'supported-network-requirements': '', - 'chain-integration-overview': '', - 'new-chain-integration': '', -} diff --git a/website/src/pages/ar/indexing/chain-integration-overview.mdx b/website/src/pages/ar/indexing/chain-integration-overview.mdx deleted file mode 100644 index af9a582b58d3..000000000000 --- a/website/src/pages/ar/indexing/chain-integration-overview.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: نظرة عامة حول عملية التكامل مع الشبكة ---- - -تم تصميم عملية تكامل قائمة على الحوكمة وبشفافية لفرق سلاسل الكتل التي تسعى للإندماج مع بروتوكول الغراف (https://forum.thegraph.com/t/gip-0057-chain-integration-process/4468). إنها عملية مكونة من 3 مراحل، كما هو ملخص أدناه. - -## المرحلة الأولى: التكامل التقني - -- Please visit [New Chain Integration](/indexing/new-chain-integration/) for information on `graph-node` support for new chains. -- تستهل الفرق عملية التكامل مع البروتوكول من خلال إنشاء موضوع في المنتدى هنا(https://forum.thegraph.com/c/governance-gips/new-chain-support/71) (الفئة الفرعية "مصادر البيانات الجديدة" تحت قسم "الحوكمة واقتراحات تحسين الغراف"). استخدام قالب المنتدى الافتراضي إلزامي. - -## المرحلة الثانية: التحقق من صحة التكامل - -- Teams collaborate with core developers, Graph Foundation and operators of GUIs and network gateways, such as [Subgraph Studio](https://thegraph.com/studio/), to ensure a smooth integration process. This involves providing the necessary backend infrastructure, such as the integrating chain's JSON-RPC, Firehose or Substreams endpoints. Teams wanting to avoid self-hosting such infrastructure can leverage The Graph's community of node operators (Indexers) to do so, which the Foundation can help with. -- مفهرسو الغراف يختبرون التكامل على شبكة إختبار الغراف. -- يقوم المطورون الأساسيون والمفهرسون بمراقبة استقرار، وأداء، وحتمية البيانات. - -## المرحلة الثالثة: التكامل مع الشبكة الرئيسية - -- يتم اقتراح التكامل مع الشبكة الرئيسية من قبل الفرق عن طريق تقديم اقتراح تحسين الغراف (GIP) واستهلال طلب سحب (PR) على مصفوفة دعم الميزات (https://github.com/graphprotocol/indexer/blob/main/docs/feature-support-matrix.md)(لمزيد من التفاصيل، يرجى زيارة الرابط). -- The Graph Council reviews the request and approves mainnet support, providing a successful Stage 2 and positive community feedback. - ---- - -إذا بدت العملية مربكة، فلا تقلق! تلتزم مؤسسة الغراف بدعم المتكاملين من خلال تعزيز التعاون وتوفير المعلومات الجوهرية وتوجيههم خلال مراحل مختلفة، بما في ذلك توجيههم خلال عمليات الحوكمة مثل اقتراحات تحسين الغراف وطلبات السحب. إذا كان لديك أسئلة، فيرجى التواصل مع [info@thegraph.foundation](mailto:info@thegraph.foundation) أو من خلال ديسكورد (باستطاعتك التواصل مع بيدرو، عضو مؤسسة الغراف، أو IndexerDAO أو المطورين الأساسيين الآخرين). - -Ready to shape the future of The Graph Network? [Start your proposal](https://github.com/graphprotocol/graph-improvement-proposals/blob/main/gips/0057-chain-integration-process.md) now and be a part of the web3 revolution! - ---- - -## الأسئلة الشائعة - -### 1. كيف يتعلق هذا بـ مقترح تحسين الغراف "خدمات عالم البيانات" (https://forum.thegraph.com/t/gip-0042-a-world-of-data-services/3761)؟ - -هذه العملية مرتبطة بخدمة بيانات الغراف الفرعي، وهي مطبقة فقط على مصادر بيانات الغراف الفرعي الجديد. - -### 2. ماذا يحدث إذا تم دعم فايرهوز و سبستريمز بعد أن تم دعم الشبكة على الشبكة الرئيسية؟ - -This would only impact protocol support for indexing rewards on Substreams-powered Subgraphs. The new Firehose implementation would need testing on testnet, following the methodology outlined for Stage 2 in this GIP. Similarly, assuming the implementation is performant and reliable, a PR on the [Feature Support Matrix](https://github.com/graphprotocol/indexer/blob/main/docs/feature-support-matrix.md) would be required (`Substreams data sources` Subgraph Feature), as well as a new GIP for protocol support for indexing rewards. Anyone can create the PR and GIP; the Foundation would help with Council approval. - -### 3. How much time will the process of reaching full protocol support take? - -يُتوقع أن يستغرق الوصول إلى الشبكة الرئيسية عدة أسابيع، وذلك يعتمد على وقت تطوير التكامل، وما إذا كانت هناك حاجة إلى بحوث إضافية، واختبارات وإصلاحات الأخطاء، وكذلك توقيت عملية الحوكمة التي تتطلب ملاحظات المجتمع كما هو الحال دائمًا. - -يعتمد دعم البروتوكول لمكافآت الفهرسة على قدرة أصحاب الحصص في المضي قدماً في عمليات الفحص وجمع الملاحظات ومعالجة المساهمات في قاعدة الكود الأساسية، إذا كان ذلك قابلاً للتطبيق. هذا مرتبط مباشرة بنضج عملية التكامل ومدى استجابة فريق التكامل (والذي قد يكون أو قد لا يكون نفس الفريق المسؤول عن تنفيذ إجراء الإستدعاء عن بعد\الفايرهوز). المؤسسة هنا لمساعدة الدعم خلال العملية بأكملها. - -### 4. كيف سيتم التعامل مع الأولويات؟ - -Similar to #3, it will depend on overall readiness and involved stakeholders' bandwidth. For example, a new chain with a brand new Firehose implementation may take longer than integrations that have already been battle-tested or are farther along in the governance process. diff --git a/website/src/pages/ar/indexing/new-chain-integration.mdx b/website/src/pages/ar/indexing/new-chain-integration.mdx deleted file mode 100644 index 72982bb33995..000000000000 --- a/website/src/pages/ar/indexing/new-chain-integration.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: New Chain Integration ---- - -Chains can bring Subgraph support to their ecosystem by starting a new `graph-node` integration. Subgraphs are a powerful indexing tool opening a world of possibilities for developers. Graph Node already indexes data from the chains listed here. If you are interested in a new integration, there are 2 integration strategies: - -1. **EVM JSON-RPC** -2. **Firehose**: All Firehose integration solutions include Substreams, a large-scale streaming engine based off Firehose with native `graph-node` support, allowing for parallelized transforms. - -> Note that while the recommended approach is to develop a new Firehose for all new chains, it is only required for non-EVM chains. - -## Integration Strategies - -### 1. EVM JSON-RPC - -If the blockchain is EVM equivalent and the client/node exposes the standard EVM JSON-RPC API, Graph Node should be able to index the new chain. - -#### اختبار استدعاء إجراء عن بُعد باستخدام تمثيل كائنات جافا سكريبت لآلة الإيثريوم الافتراضية (EVM JSON-RPC) - -For Graph Node to be able to ingest data from an EVM chain, the RPC node must expose the following EVM JSON-RPC methods: - -- `eth_getLogs` -- `eth_call` (for historical blocks, with EIP-1898 - requires archive node) -- `eth_getBlockByNumber` -- `eth_getBlockByHash` -- `net_version` -- `eth_getTransactionReceipt`، ضمن طلب دفعة استدعاء الإجراء عن بُعد باستخدام تمثيل كائنات جافا سكريبت -- `trace_filter` *(limited tracing and optionally required for Graph Node)* - -### 2. Firehose Integration - -[Firehose](https://firehose.streamingfast.io/firehose-setup/overview) is a next-generation extraction layer. It collects history in flat files and streams in real time. Firehose technology replaces those polling API calls with a stream of data utilizing a push model that sends data to the indexing node faster. This helps increase the speed of syncing and indexing. - -> NOTE: All integrations done by the StreamingFast team include maintenance for the Firehose replication protocol into the chain's codebase. StreamingFast tracks any changes and releases binaries when you change code and when StreamingFast changes code. This includes releasing Firehose/Substreams binaries for the protocol, maintaining Substreams modules for the block model of the chain, and releasing binaries for the blockchain node with instrumentation if need be. - -#### Integration for Non-EVM chains - -The primary method to integrate the Firehose into chains is to use an RPC polling strategy. Our polling algorithm will predict when a new block will arrive and increase the rate at which it checks for a new block near that time, making it a very low-latency and efficient solution. For help with the integration and maintenance of the Firehose, contact the [StreamingFast team](https://www.streamingfast.io/firehose-integration-program). New chains and their integrators will appreciate the [fork awareness](https://substreams.streamingfast.io/documentation/consume/reliability-guarantees) and massive parallelized indexing capabilities that Firehose and Substreams bring to their ecosystem. - -#### Specific Instrumentation for EVM (`geth`) chains - -For EVM chains, there exists a deeper level of data that can be achieved through the `geth` [live-tracer](https://github.com/ethereum/go-ethereum/releases/tag/v1.14.0), a collaboration between Go-Ethereum and StreamingFast, in building a high-throughput and rich transaction tracing system. The Live Tracer is the most comprehensive solution, resulting in [Extended](https://streamingfastio.medium.com/new-block-model-to-accelerate-chain-integration-9f65126e5425) block details. This enables new indexing paradigms, like pattern matching of events based on state changes, calls, parent call trees, or triggering of events based on changes to the actual variables in a smart contract. - -![Base block vs Extended block](/img/extended-vs-base-substreams-blocks.png) - -> NOTE: This improvement upon the Firehose requires chains make use of the EVM engine `geth version 1.13.0` and up. - -## EVM considerations - Difference between JSON-RPC & Firehose - -While the JSON-RPC and Firehose are both suitable for Subgraphs, a Firehose is always required for developers wanting to build with [Substreams](https://substreams.streamingfast.io). Supporting Substreams allows developers to build [Substreams-powered Subgraphs](/subgraphs/cookbook/substreams-powered-subgraphs/) for the new chain, and has the potential to improve the performance of your Subgraphs. Additionally, Firehose — as a drop-in replacement for the JSON-RPC extraction layer of `graph-node` — reduces by 90% the number of RPC calls required for general indexing. - -- All those `getLogs` calls and roundtrips get replaced by a single stream arriving into the heart of `graph-node`; a single block model for all Subgraphs it processes. - -> NOTE: A Firehose-based integration for EVM chains will still require Indexers to run the chain's archive RPC node to properly index Subgraphs. This is due to the Firehose's inability to provide smart contract state typically accessible by the `eth_call` RPC method. (It's worth reminding that `eth_calls` are not a good practice for developers) - -## تكوين عقدة الغراف - -Configuring Graph Node is as easy as preparing your local environment. Once your local environment is set, you can test the integration by locally deploying a Subgraph. - -1. [استنسخ عقدة الغراف](https://github.com/graphprotocol/graph-node) - -2. Modify [this line](https://github.com/graphprotocol/graph-node/blob/master/docker/docker-compose.yml#L22) to include the new network name and the EVM JSON-RPC or Firehose compliant URL - - > Do not change the env var name itself. It must remain `ethereum` even if the network name is different. - -3. Run an IPFS node or use the one used by The Graph: https://ipfs.thegraph.com - -## Substreams-powered Subgraphs - -For StreamingFast-led Firehose/Substreams integrations, basic support for foundational Substreams modules (e.g. decoded transactions, logs and smart-contract events) and Substreams codegen tools are included. These tools enable the ability to enable [Substreams-powered Subgraphs](/substreams/sps/introduction/). Follow the [How-To Guide](https://substreams.streamingfast.io/documentation/how-to-guides/intro-your-first-application) and run `substreams codegen subgraph` to experience the codegen tools for yourself. diff --git a/website/src/pages/ar/indexing/overview.mdx b/website/src/pages/ar/indexing/overview.mdx deleted file mode 100644 index d60ccaa0d9a6..000000000000 --- a/website/src/pages/ar/indexing/overview.mdx +++ /dev/null @@ -1,814 +0,0 @@ ---- -title: Indexing Overview -sidebarTitle: نظره عامة ---- - -Indexers are node operators in The Graph Network that stake Graph Tokens (GRT) in order to provide indexing and query processing services. Indexers earn query fees and indexing rewards for their services. They also earn query fees that are rebated according to an exponential rebate function. - -GRT that is staked in the protocol is subject to a thawing period and can be slashed if Indexers are malicious and serve incorrect data to applications or if they index incorrectly. Indexers also earn rewards for delegated stake from Delegators, to contribute to the network. - -Indexers select Subgraphs to index based on the Subgraph’s curation signal, where Curators stake GRT in order to indicate which Subgraphs are high-quality and should be prioritized. Consumers (eg. applications) can also set parameters for which Indexers process queries for their Subgraphs and set preferences for query fee pricing. - -## FAQ - -### What is the minimum stake required to be an Indexer on the network? - -The minimum stake for an Indexer is currently set to 100K GRT. - -### What are the revenue streams for an Indexer? - -**Query fee rebates** - Payments for serving queries on the network. These payments are mediated via state channels between an Indexer and a gateway. Each query request from a gateway contains a payment and the corresponding response a proof of query result validity. - -**Indexing rewards** - Generated via a 3% annual protocol wide inflation, the indexing rewards are distributed to Indexers who are indexing Subgraph deployments for the network. - -### How are indexing rewards distributed? - -Indexing rewards come from protocol inflation which is set to 3% annual issuance. They are distributed across Subgraphs based on the proportion of all curation signal on each, then distributed proportionally to Indexers based on their allocated stake on that Subgraph. **An allocation must be closed with a valid proof of indexing (POI) that meets the standards set by the arbitration charter in order to be eligible for rewards.** - -Numerous tools have been created by the community for calculating rewards; you'll find a collection of them organized in the [Community Guides collection](https://www.notion.so/Community-Guides-abbb10f4dba040d5ba81648ca093e70c). You can also find an up to date list of tools in the #Delegators and #Indexers channels on the [Discord server](https://discord.gg/graphprotocol). Here we link a [recommended allocation optimiser](https://github.com/graphprotocol/allocation-optimizer) integrated with the indexer software stack. - -### What is a proof of indexing (POI)? - -POIs are used in the network to verify that an Indexer is indexing the Subgraphs they have allocated on. A POI for the first block of the current epoch must be submitted when closing an allocation for that allocation to be eligible for indexing rewards. A POI for a block is a digest for all entity store transactions for a specific Subgraph deployment up to and including that block. - -### When are indexing rewards distributed? - -Allocations are continuously accruing rewards while they're active and allocated within 28 epochs. Rewards are collected by the Indexers, and distributed whenever their allocations are closed. That happens either manually, whenever the Indexer wants to force close them, or after 28 epochs a Delegator can close the allocation for the Indexer, but this results in no rewards. 28 epochs is the max allocation lifetime (right now, one epoch lasts for ~24h). - -### Can pending indexing rewards be monitored? - -The RewardsManager contract has a read-only [getRewards](https://github.com/graphprotocol/contracts/blob/main/packages/contracts/contracts/rewards/RewardsManager.sol#L316) function that can be used to check the pending rewards for a specific allocation. - -Many of the community-made dashboards include pending rewards values and they can be easily checked manually by following these steps: - -1. Query the [mainnet Subgraph](https://thegraph.com/explorer/subgraphs/9Co7EQe5PgW3ugCUJrJgRv4u9zdEuDJf8NvMWftNsBH8?view=Query&chain=arbitrum-one) to get the IDs for all active allocations: - -```graphql -query indexerAllocations { - indexer(id: "") { - allocations { - activeForIndexer { - allocations { - id - } - } - } - } -} -``` - -Use Etherscan to call `getRewards()`: - -- Navigate to [Etherscan interface to Rewards contract](https://etherscan.io/address/0x9Ac758AB77733b4150A901ebd659cbF8cB93ED66#readProxyContract) -- To call `getRewards()`: - - Expand the **9. getRewards** dropdown. - - Enter the **allocationID** in the input. - - Click the **Query** button. - -### What are disputes and where can I view them? - -Indexer's queries and allocations can both be disputed on The Graph during the dispute period. The dispute period varies, depending on the type of dispute. Queries/attestations have 7 epochs dispute window, whereas allocations have 56 epochs. After these periods pass, disputes cannot be opened against either of allocations or queries. When a dispute is opened, a deposit of a minimum of 10,000 GRT is required by the Fishermen, which will be locked until the dispute is finalized and a resolution has been given. Fisherman are any network participants that open disputes. - -Disputes have **three** possible outcomes, so does the deposit of the Fishermen. - -- If the dispute is rejected, the GRT deposited by the Fishermen will be burned, and the disputed Indexer will not be slashed. -- If the dispute is settled as a draw, the Fishermen's deposit will be returned, and the disputed Indexer will not be slashed. -- If the dispute is accepted, the GRT deposited by the Fishermen will be returned, the disputed Indexer will be slashed and the Fishermen will earn 50% of the slashed GRT. - -Disputes can be viewed in the UI in an Indexer's profile page under the `Disputes` tab. - -### What are query fee rebates and when are they distributed? - -Query fees are collected by the gateway and distributed to indexers according to the exponential rebate function (see GIP [here](https://forum.thegraph.com/t/gip-0051-exponential-query-fee-rebates-for-indexers/4162)). The exponential rebate function is proposed as a way to ensure indexers achieve the best outcome by faithfully serving queries. It works by incentivizing Indexers to allocate a large amount of stake (which can be slashed for erring when serving a query) relative to the amount of query fees they may collect. - -Once an allocation has been closed the rebates are available to be claimed by the Indexer. Upon claiming, the query fee rebates are distributed to the Indexer and their Delegators based on the query fee cut and the exponential rebate function. - -### What is query fee cut and indexing reward cut? - -The `queryFeeCut` and `indexingRewardCut` values are delegation parameters that the Indexer may set along with cooldownBlocks to control the distribution of GRT between the Indexer and their Delegators. See the last steps in [Staking in the Protocol](/indexing/overview/#stake-in-the-protocol) for instructions on setting the delegation parameters. - -- **queryFeeCut** - the % of query fee rebates that will be distributed to the Indexer. If this is set to 95%, the Indexer will receive 95% of the query fees earned when an allocation is closed with the other 5% going to the Delegators. - -- **indexingRewardCut** - the % of indexing rewards that will be distributed to the Indexer. If this is set to 95%, the Indexer will receive 95% of the indexing rewards when an allocation is closed and the Delegators will split the other 5%. - -### How do Indexers know which Subgraphs to index? - -Indexers may differentiate themselves by applying advanced techniques for making Subgraph indexing decisions but to give a general idea we'll discuss several key metrics used to evaluate Subgraphs in the network: - -- **Curation signal** - The proportion of network curation signal applied to a particular Subgraph is a good indicator of the interest in that Subgraph, especially during the bootstrap phase when query volume is ramping up. - -- **Query fees collected** - The historical data for volume of query fees collected for a specific Subgraph is a good indicator of future demand. - -- **Amount staked** - Monitoring the behavior of other Indexers or looking at proportions of total stake allocated towards specific Subgraphs can allow an Indexer to monitor the supply side for Subgraph queries to identify Subgraphs that the network is showing confidence in or Subgraphs that may show a need for more supply. - -- **Subgraphs with no indexing rewards** - Some Subgraphs do not generate indexing rewards mainly because they are using unsupported features like IPFS or because they are querying another network outside of mainnet. You will see a message on a Subgraph if it is not generating indexing rewards. - -### What are the hardware requirements? - -- **Small** - Enough to get started indexing several Subgraphs, will likely need to be expanded. -- **Standard** - Default setup, this is what is used in the example k8s/terraform deployment manifests. -- **Medium** - Production Indexer supporting 100 Subgraphs and 200-500 requests per second. -- **Large** - Prepared to index all currently used Subgraphs and serve requests for the related traffic. - -| Setup | Postgres
(CPUs) | Postgres
(memory in GBs) | Postgres
(disk in TBs) | VMs
(CPUs) | VMs
(memory in GBs) | -| --- | :-: | :-: | :-: | :-: | :-: | -| Small | 4 | 8 | 1 | 4 | 16 | -| Standard | 8 | 30 | 1 | 12 | 48 | -| Medium | 16 | 64 | 2 | 32 | 64 | -| Large | 72 | 468 | 3.5 | 48 | 184 | - -### What are some basic security precautions an Indexer should take? - -- **Operator wallet** - Setting up an operator wallet is an important precaution because it allows an Indexer to maintain separation between their keys that control stake and those that are in control of day-to-day operations. See [Stake in Protocol](/indexing/overview/#stake-in-the-protocol) for instructions. - -- **Firewall** - Only the Indexer service needs to be exposed publicly and particular attention should be paid to locking down admin ports and database access: the Graph Node JSON-RPC endpoint (default port: 8030), the Indexer management API endpoint (default port: 18000), and the Postgres database endpoint (default port: 5432) should not be exposed. - -## Infrastructure - -At the center of an Indexer's infrastructure is the Graph Node which monitors the indexed networks, extracts and loads data per a Subgraph definition and serves it as a [GraphQL API](/about/#how-the-graph-works). The Graph Node needs to be connected to an endpoint exposing data from each indexed network; an IPFS node for sourcing data; a PostgreSQL database for its store; and Indexer components which facilitate its interactions with the network. - -- **PostgreSQL database** - The main store for the Graph Node, this is where Subgraph data is stored. The Indexer service and agent also use the database to store state channel data, cost models, indexing rules, and allocation actions. - -- **Data endpoint** - For EVM-compatible networks, Graph Node needs to be connected to an endpoint that exposes an EVM-compatible JSON-RPC API. This may take the form of a single client or it could be a more complex setup that load balances across multiple. It's important to be aware that certain Subgraphs will require particular client capabilities such as archive mode and/or the parity tracing API. - -- **IPFS node (version less than 5)** - Subgraph deployment metadata is stored on the IPFS network. The Graph Node primarily accesses the IPFS node during Subgraph deployment to fetch the Subgraph manifest and all linked files. Network Indexers do not need to host their own IPFS node, an IPFS node for the network is hosted at https://ipfs.thegraph.com. - -- **Indexer service** - Handles all required external communications with the network. Shares cost models and indexing statuses, passes query requests from gateways on to a Graph Node, and manages the query payments via state channels with the gateway. - -- **Indexer agent** - Facilitates the Indexers interactions onchain including registering on the network, managing Subgraph deployments to its Graph Node/s, and managing allocations. - -- **Prometheus metrics server** - The Graph Node and Indexer components log their metrics to the metrics server. - -Note: To support agile scaling, it is recommended that query and indexing concerns are separated between different sets of nodes: query nodes and index nodes. - -### Ports overview - -> **Important**: Be careful about exposing ports publicly - **administration ports** should be kept locked down. This includes the the Graph Node JSON-RPC and the Indexer management endpoints detailed below. - -#### Graph Node - -| Port | Purpose | Routes | CLI Argument | Environment Variable | -| --- | --- | --- | --- | --- | -| 8000 | GraphQL HTTP server
(for Subgraph queries) | /subgraphs/id/...
/subgraphs/name/.../... | \--http-port | - | -| 8001 | GraphQL WS
(for Subgraph subscriptions) | /subgraphs/id/...
/subgraphs/name/.../... | \--ws-port | - | -| 8020 | JSON-RPC
(for managing deployments) | / | \--admin-port | - | -| 8030 | Subgraph indexing status API | /graphql | \--index-node-port | - | -| 8040 | Prometheus metrics | /metrics | \--metrics-port | - | - -#### Indexer Service - -| Port | Purpose | Routes | CLI Argument | Environment Variable | -| --- | --- | --- | --- | --- | -| 7600 | GraphQL HTTP server
(for paid Subgraph queries) | /subgraphs/id/...
/status
/channel-messages-inbox | \--port | `INDEXER_SERVICE_PORT` | -| 7300 | Prometheus metrics | /metrics | \--metrics-port | - | - -#### Indexer Agent - -| Port | Purpose | Routes | CLI Argument | Environment Variable | -| ---- | ---------------------- | ------ | -------------------------- | --------------------------------------- | -| 8000 | Indexer management API | / | \--indexer-management-port | `INDEXER_AGENT_INDEXER_MANAGEMENT_PORT` | - -### Setup server infrastructure using Terraform on Google Cloud - -> Note: Indexers can alternatively use AWS, Microsoft Azure, or Alibaba. - -#### Install prerequisites - -- Google Cloud SDK -- Kubectl command line tool -- Terraform - -#### Create a Google Cloud Project - -- Clone or navigate to the [Indexer repository](https://github.com/graphprotocol/indexer). - -- Navigate to the `./terraform` directory, this is where all commands should be executed. - -```sh -cd terraform -``` - -- Authenticate with Google Cloud and create a new project. - -```sh -gcloud auth login -project= -gcloud projects create --enable-cloud-apis $project -``` - -- Use the Google Cloud Console's billing page to enable billing for the new project. - -- Create a Google Cloud configuration. - -```sh -proj_id=$(gcloud projects list --format='get(project_id)' --filter="name=$project") -gcloud config configurations create $project -gcloud config set project "$proj_id" -gcloud config set compute/region us-central1 -gcloud config set compute/zone us-central1-a -``` - -- Enable required Google Cloud APIs. - -```sh -gcloud services enable compute.googleapis.com -gcloud services enable container.googleapis.com -gcloud services enable servicenetworking.googleapis.com -gcloud services enable sqladmin.googleapis.com -``` - -- Create a service account. - -```sh -svc_name= -gcloud iam service-accounts create $svc_name \ - --description="Service account for Terraform" \ - --display-name="$svc_name" -gcloud iam service-accounts list -# Get the email of the service account from the list -svc=$(gcloud iam service-accounts list --format='get(email)' ---filter="displayName=$svc_name") -gcloud iam service-accounts keys create .gcloud-credentials.json \ - --iam-account="$svc" -gcloud projects add-iam-policy-binding $proj_id \ - --member serviceAccount:$svc \ - --role roles/editor -``` - -- Enable peering between database and Kubernetes cluster that will be created in the next step. - -```sh -gcloud compute addresses create google-managed-services-default \ - --prefix-length=20 \ - --purpose=VPC_PEERING \ - --network default \ - --global \ - --description 'IP Range for peer networks.' -gcloud services vpc-peerings connect \ - --network=default \ - --ranges=google-managed-services-default -``` - -- Create minimal terraform configuration file (update as needed). - -```sh -indexer= -cat > terraform.tfvars < \ - -f Dockerfile.indexer-service \ - -t indexer-service:latest \ -# Indexer agent -docker build \ - --build-arg NPM_TOKEN= \ - -f Dockerfile.indexer-agent \ - -t indexer-agent:latest \ -``` - -- Run the components - -```sh -docker run -p 7600:7600 -it indexer-service:latest ... -docker run -p 18000:8000 -it indexer-agent:latest ... -``` - -**NOTE**: After starting the containers, the Indexer service should be accessible at [http://localhost:7600](http://localhost:7600) and the Indexer agent should be exposing the Indexer management API at [http://localhost:18000/](http://localhost:18000/). - -#### Using K8s and Terraform - -See the [Setup Server Infrastructure Using Terraform on Google Cloud](/indexing/overview/#setup-server-infrastructure-using-terraform-on-google-cloud) section - -#### Usage - -> **NOTE**: All runtime configuration variables may be applied either as parameters to the command on startup or using environment variables of the format `COMPONENT_NAME_VARIABLE_NAME`(ex. `INDEXER_AGENT_ETHEREUM`). - -#### Indexer agent - -```sh -graph-indexer-agent start \ - --ethereum \ - --ethereum-network mainnet \ - --mnemonic \ - --indexer-address \ - --graph-node-query-endpoint http://localhost:8000/ \ - --graph-node-status-endpoint http://localhost:8030/graphql \ - --graph-node-admin-endpoint http://localhost:8020/ \ - --public-indexer-url http://localhost:7600/ \ - --indexer-geo-coordinates \ - --index-node-ids default \ - --indexer-management-port 18000 \ - --metrics-port 7040 \ - --network-subgraph-endpoint http://query-node-0:8000/subgraphs/id/QmUzRg2HHMpbgf6Q4VHKNDbtBEJnyp5JWCh2gUX9AV6jXv \ - --default-allocation-amount 100 \ - --register true \ - --inject-dai true \ - --postgres-host localhost \ - --postgres-port 5432 \ - --postgres-username \ - --postgres-password \ - --postgres-database indexer \ - --allocation-management auto \ - | pino-pretty -``` - -#### Indexer service - -```sh -SERVER_HOST=localhost \ -SERVER_PORT=5432 \ -SERVER_DB_NAME=is_staging \ -SERVER_DB_USER= \ -SERVER_DB_PASSWORD= \ -graph-indexer-service start \ - --ethereum \ - --ethereum-network mainnet \ - --mnemonic \ - --indexer-address \ - --port 7600 \ - --metrics-port 7300 \ - --graph-node-query-endpoint http://localhost:8000/ \ - --graph-node-status-endpoint http://localhost:8030/graphql \ - --postgres-host localhost \ - --postgres-port 5432 \ - --postgres-username \ - --postgres-password \ - --postgres-database is_staging \ - --network-subgraph-endpoint http://query-node-0:8000/subgraphs/id/QmUzRg2HHMpbgf6Q4VHKNDbtBEJnyp5JWCh2gUX9AV6jXv \ - | pino-pretty -``` - -#### Indexer CLI - -The Indexer CLI is a plugin for [`@graphprotocol/graph-cli`](https://www.npmjs.com/package/@graphprotocol/graph-cli) accessible in the terminal at `graph indexer`. - -```sh -graph indexer connect http://localhost:18000 -graph indexer status -``` - -#### Indexer management using Indexer CLI - -The suggested tool for interacting with the **Indexer Management API** is the **Indexer CLI**, an extension to the **Graph CLI**. The Indexer agent needs input from an Indexer in order to autonomously interact with the network on the behalf of the Indexer. The mechanism for defining Indexer agent behavior are **allocation management** mode and **indexing rules**. Under auto mode, an Indexer can use **indexing rules** to apply their specific strategy for picking Subgraphs to index and serve queries for. Rules are managed via a GraphQL API served by the agent and known as the Indexer Management API. Under manual mode, an Indexer can create allocation actions using **actions queue** and explicitly approve them before they get executed. Under oversight mode, **indexing rules** are used to populate **actions queue** and also require explicit approval for execution. - -#### Usage - -The **Indexer CLI** connects to the Indexer agent, typically through port-forwarding, so the CLI does not need to run on the same server or cluster. To help you get started, and to provide some context, the CLI will briefly be described here. - -- `graph indexer connect ` - Connect to the Indexer management API. Typically the connection to the server is opened via port forwarding, so the CLI can be easily operated remotely. (Example: `kubectl port-forward pod/ 8000:8000`) - -- `graph indexer rules get [options] [ ...]` - Get one or more indexing rules using `all` as the `` to get all rules, or `global` to get the global defaults. An additional argument `--merged` can be used to specify that deployment specific rules are merged with the global rule. This is how they are applied in the Indexer agent. - -- `graph indexer rules set [options] ...` - Set one or more indexing rules. - -- `graph indexer rules start [options] ` - Start indexing a Subgraph deployment if available and set its `decisionBasis` to `always`, so the Indexer agent will always choose to index it. If the global rule is set to always then all available Subgraphs on the network will be indexed. - -- `graph indexer rules stop [options] ` - Stop indexing a deployment and set its `decisionBasis` to never, so it will skip this deployment when deciding on deployments to index. - -- `graph indexer rules maybe [options] ` — Set the `decisionBasis` for a deployment to `rules`, so that the Indexer agent will use indexing rules to decide whether to index this deployment. - -- `graph indexer actions get [options] ` - Fetch one or more actions using `all` or leave `action-id` empty to get all actions. An additional argument `--status` can be used to print out all actions of a certain status. - -- `graph indexer action queue allocate ` - Queue allocation action - -- `graph indexer action queue reallocate ` - Queue reallocate action - -- `graph indexer action queue unallocate ` - Queue unallocate action - -- `graph indexer actions cancel [ ...]` - Cancel all action in the queue if id is unspecified, otherwise cancel array of id with space as separator - -- `graph indexer actions approve [ ...]` - Approve multiple actions for execution - -- `graph indexer actions execute approve` - Force the worker to execute approved actions immediately - -All commands which display rules in the output can choose between the supported output formats (`table`, `yaml`, and `json`) using the `-output` argument. - -#### Indexing rules - -Indexing rules can either be applied as global defaults or for specific Subgraph deployments using their IDs. The `deployment` and `decisionBasis` fields are mandatory, while all other fields are optional. When an indexing rule has `rules` as the `decisionBasis`, then the Indexer agent will compare non-null threshold values on that rule with values fetched from the network for the corresponding deployment. If the Subgraph deployment has values above (or below) any of the thresholds it will be chosen for indexing. - -For example, if the global rule has a `minStake` of **5** (GRT), any Subgraph deployment which has more than 5 (GRT) of stake allocated to it will be indexed. Threshold rules include `maxAllocationPercentage`, `minSignal`, `maxSignal`, `minStake`, and `minAverageQueryFees`. - -Data model: - -```graphql -type IndexingRule { - identifier: string - identifierType: IdentifierType - decisionBasis: IndexingDecisionBasis! - allocationAmount: number | null - allocationLifetime: number | null - autoRenewal: boolean - parallelAllocations: number | null - maxAllocationPercentage: number | null - minSignal: string | null - maxSignal: string | null - minStake: string | null - minAverageQueryFees: string | null - custom: string | null - requireSupported: boolean | null - } - -IdentifierType { - deployment - subgraph - group -} - -IndexingDecisionBasis { - rules - never - always - offchain -} -``` - -Example usage of indexing rule: - -``` -graph indexer rules offchain QmZfeJYR86UARzp9HiXbURWunYgC9ywvPvoePNbuaATrEK - -graph indexer rules set QmZfeJYR86UARzp9HiXbURWunYgC9ywvPvoePNbuaATrEK decisionBasis always allocationAmount 123321 allocationLifetime 14 autoRenewal false requireSupported false - -graph indexer rules stop QmZfeJYR86UARzp9HiXbURWunYgC9ywvPvoePNbuaATrEK - -graph indexer rules delete QmZfeJYR86UARzp9HiXbURWunYgC9ywvPvoePNbuaATrEK -``` - -#### Actions queue CLI - -The indexer-cli provides an `actions` module for manually working with the action queue. It uses the **Graphql API** hosted by the indexer management server to interact with the actions queue. - -The action execution worker will only grab items from the queue to execute if they have `ActionStatus = approved`. In the recommended path actions are added to the queue with ActionStatus = queued, so they must then be approved in order to be executed onchain. The general flow will look like: - -- Action added to the queue by the 3rd party optimizer tool or indexer-cli user -- Indexer can use the `indexer-cli` to view all queued actions -- Indexer (or other software) can approve or cancel actions in the queue using the `indexer-cli`. The approve and cancel commands take an array of action ids as input. -- The execution worker regularly polls the queue for approved actions. It will grab the `approved` actions from the queue, attempt to execute them, and update the values in the db depending on the status of execution to `success` or `failed`. -- If an action is successful the worker will ensure that there is an indexing rule present that tells the agent how to manage the allocation moving forward, useful when taking manual actions while the agent is in `auto` or `oversight` mode. -- The indexer can monitor the action queue to see a history of action execution and if needed re-approve and update action items if they failed execution. The action queue provides a history of all actions queued and taken. - -Data model: - -```graphql -Type ActionInput { - status: ActionStatus - type: ActionType - deploymentID: string | null - allocationID: string | null - amount: string | null - poi: string | null - force: boolean | null - source: string - reason: string | null - priority: number | null -} - -ActionStatus { - queued - approved - pending - success - failed - canceled -} - -ActionType { - allocate - unallocate - reallocate - collect -} -``` - -Example usage from source: - -```bash -graph indexer actions get all - -graph indexer actions get --status queued - -graph indexer actions queue allocate QmeqJ6hsdyk9dVbo1tvRgAxWrVS3rkERiEMsxzPShKLco6 5000 - -graph indexer actions queue reallocate QmeqJ6hsdyk9dVbo1tvRgAxWrVS3rkERiEMsxzPShKLco6 0x4a58d33e27d3acbaecc92c15101fbc82f47c2ae5 55000 - -graph indexer actions queue unallocate QmeqJ6hsdyk9dVbo1tvRgAxWrVS3rkERiEMsxzPShKLco6 0x4a58d33e27d3acbaecc92c15101fbc82f47c2ae - -graph indexer actions cancel - -graph indexer actions approve 1 3 5 - -graph indexer actions execute approve -``` - -Note that supported action types for allocation management have different input requirements: - -- `Allocate` - allocate stake to a specific Subgraph deployment - - required action params: - - deploymentID - - amount - -- `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere - - required action params: - - allocationID - - deploymentID - - optional action params: - - poi - - force (forces using the provided POI even if it doesn’t match what the graph-node provides) - -- `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment - - required action params: - - allocationID - - deploymentID - - amount - - optional action params: - - poi - - force (forces using the provided POI even if it doesn’t match what the graph-node provides) - -#### Cost models - -Cost models provide dynamic pricing for queries based on market and query attributes. The Indexer Service shares a cost model with the gateways for each Subgraph for which they intend to respond to queries. The gateways, in turn, use the cost model to make Indexer selection decisions per query and to negotiate payment with chosen Indexers. - -#### Agora - -The Agora language provides a flexible format for declaring cost models for queries. An Agora price model is a sequence of statements that execute in order for each top-level query in a GraphQL query. For each top-level query, the first statement which matches it determines the price for that query. - -A statement is comprised of a predicate, which is used for matching GraphQL queries, and a cost expression which when evaluated outputs a cost in decimal GRT. Values in the named argument position of a query may be captured in the predicate and used in the expression. Globals may also be set and substituted in for placeholders in an expression. - -Example cost model: - -``` -# This statement captures the skip value, -# uses a boolean expression in the predicate to match specific queries that use `skip` -# and a cost expression to calculate the cost based on the `skip` value and the SYSTEM_LOAD global -query { pairs(skip: $skip) { id } } when $skip > 2000 => 0.0001 * $skip * $SYSTEM_LOAD; - -# This default will match any GraphQL expression. -# It uses a Global substituted into the expression to calculate cost -default => 0.1 * $SYSTEM_LOAD; -``` - -Example query costing using the above model: - -| Query | Price | -| ---------------------------------------------------------------------------- | ------- | -| { pairs(skip: 5000) { id } } | 0.5 GRT | -| { tokens { symbol } } | 0.1 GRT | -| { pairs(skip: 5000) { id } tokens { symbol } } | 0.6 GRT | - -#### Applying the cost model - -Cost models are applied via the Indexer CLI, which passes them to the Indexer Management API of the Indexer agent for storing in the database. The Indexer Service will then pick them up and serve the cost models to gateways whenever they ask for them. - -```sh -indexer cost set variables '{ "SYSTEM_LOAD": 1.4 }' -indexer cost set model my_model.agora -``` - -## Interacting with the network - -### Stake in the protocol - -The first steps to participating in the network as an Indexer are to approve the protocol, stake funds, and (optionally) set up an operator address for day-to-day protocol interactions. - -> Note: For the purposes of these instructions Remix will be used for contract interaction, but feel free to use your tool of choice ([OneClickDapp](https://oneclickdapp.com/), [ABItopic](https://abitopic.io/), and [MyCrypto](https://www.mycrypto.com/account) are a few other known tools). - -Once an Indexer has staked GRT in the protocol, the [Indexer components](/indexing/overview/#indexer-components) can be started up and begin their interactions with the network. - -#### Approve tokens - -1. Open the [Remix app](https://remix.ethereum.org/) in a browser - -2. In the `File Explorer` create a file named **GraphToken.abi** with the [token ABI](https://raw.githubusercontent.com/graphprotocol/contracts/mainnet-deploy-build/build/abis/GraphToken.json). - -3. With `GraphToken.abi` selected and open in the editor, switch to the `Deploy and run transactions` section in the Remix interface. - -4. Under environment select `Injected Web3` and under `Account` select your Indexer address. - -5. Set the GraphToken contract address - Paste the GraphToken contract address (`0xc944E90C64B2c07662A292be6244BDf05Cda44a7`) next to `At Address` and click the `At address` button to apply. - -6. Call the `approve(spender, amount)` function to approve the Staking contract. Fill in `spender` with the Staking contract address (`0xF55041E37E12cD407ad00CE2910B8269B01263b9`) and `amount` with the tokens to stake (in wei). - -#### Stake tokens - -1. Open the [Remix app](https://remix.ethereum.org/) in a browser - -2. In the `File Explorer` create a file named **Staking.abi** with the staking ABI. - -3. With `Staking.abi` selected and open in the editor, switch to the `Deploy and run transactions` section in the Remix interface. - -4. Under environment select `Injected Web3` and under `Account` select your Indexer address. - -5. Set the Staking contract address - Paste the Staking contract address (`0xF55041E37E12cD407ad00CE2910B8269B01263b9`) next to `At Address` and click the `At address` button to apply. - -6. Call `stake()` to stake GRT in the protocol. - -7. (Optional) Indexers may approve another address to be the operator for their Indexer infrastructure in order to separate the keys that control the funds from those that are performing day to day actions such as allocating on Subgraphs and serving (paid) queries. In order to set the operator call `setOperator()` with the operator address. - -8. (Optional) In order to control the distribution of rewards and strategically attract Delegators Indexers can update their delegation parameters by updating their `indexingRewardCut` (parts per million), `queryFeeCut` (parts per million), and `cooldownBlocks` (number of blocks). To do so call `setDelegationParameters()`. The following example sets the `queryFeeCut` to distribute 95% of query rebates to the Indexer and 5% to Delegators, set the `indexingRewardCut` to distribute 60% of indexing rewards to the Indexer and 40% to Delegators, and set the `cooldownBlocks` period to 500 blocks. - -``` -setDelegationParameters(950000, 600000, 500) -``` - -### Setting delegation parameters - -The `setDelegationParameters()` function in the [staking contract](https://github.com/graphprotocol/contracts/blob/main/packages/contracts/contracts/staking/Staking.sol) is essential for Indexers, allowing them to set parameters that define their interactions with Delegators, influencing their reward sharing and delegation capacity. - -### How to set delegation parameters - -To set the delegation parameters using Graph Explorer interface, follow these steps: - -1. Navigate to [Graph Explorer](https://thegraph.com/explorer/). -2. Connect your wallet. Choose multisig (such as Gnosis Safe) and then select mainnet. Note: You will need to repeat this process for Arbitrum One. -3. Connect the wallet you have as a signer. -4. Navigate to the 'Settings' section and select 'Delegation Parameters'. These parameters should be configured to achieve an effective cut within the desired range. Upon entering values in the provided input fields, the interface will automatically calculate the effective cut. Adjust these values as necessary to attain the desired effective cut percentage. -5. Submit the transaction to the network. - -> Note: This transaction will need to be confirmed by the multisig wallet signers. - -### The life of an allocation - -After being created by an Indexer a healthy allocation goes through two states. - -- **Active** - Once an allocation is created onchain ([allocateFrom()](https://github.com/graphprotocol/contracts/blob/main/packages/contracts/contracts/staking/Staking.sol#L316)) it is considered **active**. A portion of the Indexer's own and/or delegated stake is allocated towards a Subgraph deployment, which allows them to claim indexing rewards and serve queries for that Subgraph deployment. The Indexer agent manages creating allocations based on the Indexer rules. - -- **Closed** - An Indexer is free to close an allocation once 1 epoch has passed ([closeAllocation()](https://github.com/graphprotocol/contracts/blob/main/packages/contracts/contracts/staking/Staking.sol#L335)) or their Indexer agent will automatically close the allocation after the **maxAllocationEpochs** (currently 28 days). When an allocation is closed with a valid proof of indexing (POI) their indexing rewards are distributed to the Indexer and its Delegators ([learn more](/indexing/overview/#how-are-indexing-rewards-distributed)). - -Indexers are recommended to utilize offchain syncing functionality to sync Subgraph deployments to chainhead before creating the allocation onchain. This feature is especially useful for Subgraphs that may take longer than 28 epochs to sync or have some chances of failing undeterministically. diff --git a/website/src/pages/ar/indexing/supported-network-requirements.mdx b/website/src/pages/ar/indexing/supported-network-requirements.mdx deleted file mode 100644 index 4205fe314802..000000000000 --- a/website/src/pages/ar/indexing/supported-network-requirements.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Supported Network Requirements ---- - -| Network | Guides | System Requirements | Indexing Rewards | -| --- | --- | --- | :-: | -| Arbitrum | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/arbitrum/baremetal)
[Docker Guide](https://docs.infradao.com/archive-nodes-101/arbitrum/docker) | 4+ core CPU
Ubuntu 22.04
16GB+ RAM
>= 8 TiB NVMe SSD
_last updated August 2023_ | ✅ | -| Avalanche | [Docker Guide](https://docs.infradao.com/archive-nodes-101/avalanche/docker) | 4 core / 8 threads CPU
Ubuntu 22.04
16GB+ RAM
>= 5 TiB NVMe SSD
_last updated August 2023_ | ✅ | -| Base | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/base/erigon/baremetal)

[GETH Baremetal Guide](https://docs.infradao.com/archive-nodes-101/base/geth/baremetal)
[GETH Docker Guide](https://docs.infradao.com/archive-nodes-101/base/geth/docker) | 8+ core CPU
Debian 12/Ubuntu 22.04
16 GB RAM
>= 4.5TB (NVME preferred)
_last updated 14th May 2024_ | ✅ | -| Binance | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/binance/erigon/baremetal) | 8 core / 16 threads CPU
Ubuntu 22.04
>=32 GB RAM
>= 14 TiB NVMe SSD
_last updated 22nd June 2024_ | ✅ | -| Celo | [Docker Guide](https://docs.infradao.com/archive-nodes-101/celo/docker) | 4 core / 8 threads CPU
Ubuntu 22.04
16GB+ RAM
>= 2 TiB NVMe SSD
_last updated August 2023_ | ✅ | -| Ethereum | [Docker Guide](https://docs.infradao.com/archive-nodes-101/ethereum/erigon/docker) | Higher clock speed over core count
Ubuntu 22.04
16GB+ RAM
>=3TB (NVMe recommended)
_last updated August 2023_ | ✅ | -| Fantom | [Docker Guide](https://docs.infradao.com/archive-nodes-101/fantom/docker) | 4 core / 8 threads CPU
Ubuntu 22.04
16GB+ RAM
>= 13 TiB NVMe SSD
_last updated August 2023_ | ✅ | -| Gnosis | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/gnosis/erigon/baremetal) | 6 core / 12 threads CPU
Ubuntu 22.04
16GB+ RAM
>= 3 TiB NVMe SSD
_last updated August 2023_ | ✅ | -| Linea | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/linea/baremetal) | 4+ core CPU
Ubuntu 22.04
16GB+ RAM
>= 1 TiB NVMe SSD
_last updated 2nd April 2024_ | ✅ | -| Optimism | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/optimism/erigon/baremetal)

[GETH Baremetal Guide](https://docs.infradao.com/archive-nodes-101/optimism/geth/baremetal)
[GETH Docker Guide](https://docs.infradao.com/archive-nodes-101/optimism/geth/docker) | 4 core / 8 threads CPU
Ubuntu 22.04
16GB+ RAM
>= 8 TiB NVMe SSD
_last updated August 2023_ | ✅ | -| بوليجون | [Docker Guide](https://docs.infradao.com/archive-nodes-101/polygon/docker) | 16 core CPU
Ubuntu 22.04
32GB+ RAM
>= 10 TiB NVMe SSD
_last updated August 2023_ | ✅ | -| Scroll | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/scroll/baremetal)
[Docker Guide](https://docs.infradao.com/archive-nodes-101/scroll/docker) | 4 core / 8 threads CPU
Debian 12
16GB+ RAM
>= 1 TiB NVMe SSD
_last updated 3rd April 2024_ | ✅ | diff --git a/website/src/pages/ar/indexing/tap.mdx b/website/src/pages/ar/indexing/tap.mdx deleted file mode 100644 index 0dac61949de9..000000000000 --- a/website/src/pages/ar/indexing/tap.mdx +++ /dev/null @@ -1,189 +0,0 @@ ---- -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. - -## نظره عامة - -GraphTally is a drop-in replacement to the Scalar payment system currently in place. It provides the following key features: - -- Efficiently handles micropayments. -- Adds a layer of consolidations to onchain transactions and costs. -- Allows Indexers control of receipts and payments, guaranteeing payment for queries. -- It enables decentralized, trustless gateways and improves `indexer-service` performance for multiple senders. - -### Specifics - -GraphTally allows a sender to make multiple payments to a receiver, **Receipts**, which aggregates these payments into a single payment, a **Receipt Aggregate Voucher**, also known as a **RAV**. This aggregated payment can then be verified on the blockchain, reducing the number of transactions and simplifying the payment process. - -For each query, the gateway will send you a `signed receipt` that is stored on your database. Then, these queries will be aggregated by a `tap-agent` through a request. Afterwards, you’ll receive a RAV. You can update a RAV by sending it with newer receipts and this will generate a new RAV with an increased value. - -### RAV Details - -- It’s money that is waiting to be sent to the blockchain. - -- It will continue to send requests to aggregate and ensure that the total value of non-aggregated receipts does not exceed the `amount willing to lose`. - -- Each RAV can be redeemed once in the contracts, which is why they are sent after the allocation is closed. - -### Redeeming RAV - -As long as you run `tap-agent` and `indexer-agent`, everything will be executed automatically. The following provides a detailed breakdown of the process: - -1. An Indexer closes allocation. - -2. ` period, tap-agent` takes all pending receipts for that specific allocation and requests an aggregation into a RAV, marking it as `last`. - -3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`. - -4. During the `` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction. - - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`. - -## Blockchain Addresses - -### Contracts - -| Contract | Arbitrum One (42161) | Arbitrum Sepolia (421614) | -| ------------------- | -------------------------------------------- | -------------------------------------------- | -| TAP Verifier | `0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a` | `0xfC24cE7a4428A6B89B52645243662A02BA734ECF` | -| AllocationIDTracker | `0x5B2F33d7Ca6Ec88f5586f2528f58c20843D9FE7c` | `0xAaC28a10d707bbc6e02029f1bfDAEB5084b2aD11` | -| Escrow | `0x8f477709eF277d4A880801D01A140a9CF88bA0d3` | `0x1e4dC4f9F95E102635D8F7ED71c5CdbFa20e2d02` | - -### Gateway - -| Component | Edge and Node Mainnet (Arbitrum One) | Edge and Node Testnet (Arbitrum Sepolia) | -| ---------- | --------------------------------------------- | --------------------------------------------- | -| Sender | `0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467` | `0xC3dDf37906724732FfD748057FEBe23379b0710D` | -| Signers | `0xfF4B7A5EfD00Ff2EC3518D4F250A27e4c29A2211` | `0xFb142dE83E261e43a81e9ACEADd1c66A0DB121FE` | -| Aggregator | `https://tap-aggregator.network.thegraph.com` | `https://tap-aggregator.testnet.thegraph.com` | - -### Prerequisites - -In addition to the typical requirements to run an indexer, you’ll need a `tap-escrow-subgraph` endpoint to query updates. You can use The Graph Network to query or host yourself 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. As a result, you have to index it manually. - -## Migration Guide - -### Software versions - -The required software version can be found [here](https://github.com/graphprotocol/indexer/blob/main/docs/networks/arbitrum-one.md#latest-releases). - -### Steps - -1. **Indexer Agent** - - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components). - - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs. - -2. **Indexer Service** - - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs). - - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless. - -3. **TAP Agent** - - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs). - -4. **Configure Indexer Service and TAP Agent** - - Configuration is a TOML file shared between `indexer-service` and `tap-agent`, supplied with the argument `--config /path/to/config.toml`. - - Check out the full [configuration](https://github.com/graphprotocol/indexer-rs/blob/main/config/maximal-config-example.toml) and the [default values](https://github.com/graphprotocol/indexer-rs/blob/main/config/default_values.toml) - -For minimal configuration, use the following template: - -```bash -# You will have to change *all* the values below to match your setup. -# -# Some of the config below are global graph network values, which you can find here: -# -# -# Pro tip: if you need to load some values from the environment into this config, you -# can overwrite with environment variables. For example, the following can be replaced -# by [PREFIX]_DATABASE_POSTGRESURL, where PREFIX can be `INDEXER_SERVICE` or `TAP_AGENT`: -# -# [database] -# postgres_url = "postgresql://indexer:${POSTGRES_PASSWORD}@postgres:5432/indexer_components_0" - -[indexer] -indexer_address = "0x1111111111111111111111111111111111111111" -operator_mnemonic = "celery smart tip orange scare van steel radio dragon joy alarm crane" - -[database] -# The URL of the Postgres database used for the indexer components. The same database -# that is used by the `indexer-agent`. It is expected that `indexer-agent` will create -# the necessary tables. -postgres_url = "postgres://postgres@postgres:5432/postgres" - -[graph_node] -# URL to your graph-node's query endpoint -query_url = "" -# URL to your graph-node's status endpoint -status_url = "" - -[subgraphs.network] -# Query URL for the Graph Network Subgraph. -query_url = "" -# Optional, deployment to look for in the local `graph-node`, if locally indexed. -# Locally indexing the Subgraph is recommended. -# NOTE: Use `query_url` or `deployment_id` only -deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - -[subgraphs.escrow] -# Query URL for the Escrow Subgraph. -query_url = "" -# Optional, deployment to look for in the local `graph-node`, if locally indexed. -# Locally indexing the Subgraph is recommended. -# NOTE: Use `query_url` or `deployment_id` only -deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - -[blockchain] -# The chain ID of the network that the graph network is running on -chain_id = 1337 -# Contract address of TAP's receipt aggregate voucher (RAV) verifier. -receipts_verifier_address = "0x2222222222222222222222222222222222222222" - -######################################## -# Specific configurations to tap-agent # -######################################## -[tap] -# This is the amount of fees you are willing to risk at any given time. For ex. -# if the sender stops supplying RAVs for long enough and the fees exceed this -# amount, the indexer-service will stop accepting queries from the sender -# until the fees are aggregated. -# NOTE: Use strings for decimal values to prevent rounding errors -# e.g: -# max_amount_willing_to_lose_grt = "0.1" -max_amount_willing_to_lose_grt = 20 - -[tap.sender_aggregator_endpoints] -# Key-Value of all senders and their aggregator endpoints -# This one below is for the E&N testnet gateway for example. -0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467 = "https://tap-aggregator.network.thegraph.com" -``` - -Notes: - -- Values for `tap.sender_aggregator_endpoints` can be found in the [gateway section](/indexing/tap/#gateway). -- Values for `blockchain.receipts_verifier_address` must be used accordingly to the [Blockchain addresses section](/indexing/tap/#contracts) using the appropriate chain id. - -**Log Level** - -- You can set the log level by using the `RUST_LOG` environment variable. -- It’s recommended that you set it to `RUST_LOG=indexer_tap_agent=debug,info`. - -## Monitoring - -### Metrics - -All components expose the port 7300 to be queried by prometheus. - -### Grafana Dashboard - -You can download [Grafana Dashboard](https://github.com/graphprotocol/indexer-rs/blob/main/docs/dashboard.json) and import. - -### Launchpad - -Currently, there is a WIP version of `indexer-rs` and `tap-agent` that can be found [here](https://github.com/graphops/launchpad-charts/tree/main/charts/graph-network-indexer) diff --git a/website/src/pages/ar/indexing/tooling/_meta.js b/website/src/pages/ar/indexing/tooling/_meta.js deleted file mode 100644 index 0bbd5b4df3d3..000000000000 --- a/website/src/pages/ar/indexing/tooling/_meta.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'graph-node': '', - firehose: '', - graphcast: '', -} diff --git a/website/src/pages/ar/indexing/tooling/firehose.mdx b/website/src/pages/ar/indexing/tooling/firehose.mdx deleted file mode 100644 index 0f0fdebbafd0..000000000000 --- a/website/src/pages/ar/indexing/tooling/firehose.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Firehose ---- - -![Firehose Logo](/img/firehose-logo.png) - -Firehose is a new technology developed by StreamingFast working with The Graph Foundation. The product provides **previously unseen capabilities and speeds for indexing blockchain data** using a files-based and streaming-first approach. - -The Graph merges into Go Ethereum/geth with the adoption of [Live Tracer with v1.14.0 release](https://github.com/ethereum/go-ethereum/releases/tag/v1.14.0). - -Firehose extracts, transforms and saves blockchain data in a highly performant file-based strategy. Blockchain developers can then access data extracted by Firehose through binary data streams. Firehose is intended to stand as a replacement for The Graph’s original blockchain data extraction layer. - -## Firehose Documentation - -The Firehose documentation is currently maintained by the StreamingFast team [on the StreamingFast website](https://firehose.streamingfast.io/). - -### Getting Started - -- Read this [Firehose introduction](https://firehose.streamingfast.io/introduction/firehose-overview) to get an overview of what it is and why it was built. -- Learn about the [Prerequisites](https://firehose.streamingfast.io/introduction/prerequisites) to install and deploy Firehose. - -### Expand Your Knowledge - -- Learn about the different [Firehose components](https://firehose.streamingfast.io/architecture/components) available. diff --git a/website/src/pages/ar/indexing/tooling/graph-node.mdx b/website/src/pages/ar/indexing/tooling/graph-node.mdx deleted file mode 100644 index b535d6a471e7..000000000000 --- a/website/src/pages/ar/indexing/tooling/graph-node.mdx +++ /dev/null @@ -1,345 +0,0 @@ ---- -title: Graph Node ---- - -Graph Node is the component which indexes Subgraphs, and makes the resulting data available to query via a GraphQL API. As such it is central to the indexer stack, and correct operation of Graph Node is crucial to running a successful indexer. - -This provides a contextual overview of Graph Node, and some of the more advanced options available to indexers. Detailed documentation and instructions can be found in the [Graph Node repository](https://github.com/graphprotocol/graph-node). - -## Graph Node - -[Graph Node](https://github.com/graphprotocol/graph-node) is the reference implementation for indexing Subgraphs on The Graph Network, connecting to blockchain clients, indexing Subgraphs and making indexed data available to query. - -Graph Node (and the whole indexer stack) can be run on bare metal, or in a cloud environment. This flexibility of the central indexing component is crucial to the robustness of The Graph Protocol. Similarly, Graph Node can be [built from source](https://github.com/graphprotocol/graph-node), or indexers can use one of the [provided Docker Images](https://hub.docker.com/r/graphprotocol/graph-node). - -### PostgreSQL database - -The main store for the Graph Node, this is where Subgraph data is stored, as well as metadata about Subgraphs, and Subgraph-agnostic network data such as the block cache, and eth_call cache. - -### Network clients - -In order to index a network, Graph Node needs access to a network client via an EVM-compatible JSON-RPC API. This RPC may connect to a single client or it could be a more complex setup that load balances across multiple. - -While some Subgraphs may just require a full node, some may have indexing features which require additional RPC functionality. Specifically Subgraphs which make `eth_calls` as part of indexing will require an archive node which supports [EIP-1898](https://eips.ethereum.org/EIPS/eip-1898), and Subgraphs with `callHandlers`, or `blockHandlers` with a `call` filter, require `trace_filter` support ([see trace module documentation here](https://openethereum.github.io/JSONRPC-trace-module)). - -**Network Firehoses** - a Firehose is a gRPC service providing an ordered, yet fork-aware, stream of blocks, developed by The Graph's core developers to better support performant indexing at scale. This is not currently an Indexer requirement, but Indexers are encouraged to familiarise themselves with the technology, ahead of full network support. Learn more about the Firehose [here](https://firehose.streamingfast.io/). - -### IPFS Nodes - -Subgraph deployment metadata is stored on the IPFS network. The Graph Node primarily accesses the IPFS node during Subgraph deployment to fetch the Subgraph manifest and all linked files. Network indexers do not need to host their own IPFS node. An IPFS node for the network is hosted at https://ipfs.thegraph.com. - -### Prometheus metrics server - -To enable monitoring and reporting, Graph Node can optionally log metrics to a Prometheus metrics server. - -### Getting started from source - -#### Install prerequisites - -- **Rust** - -- **PostgreSQL** - -- **IPFS** - -- **Additional Requirements for Ubuntu users** - To run a Graph Node on Ubuntu a few additional packages may be needed. - -```sh -sudo apt-get install -y clang libpq-dev libssl-dev pkg-config -``` - -#### Setup - -1. Start a PostgreSQL database server - -```sh -initdb -D .postgres -pg_ctl -D .postgres -l logfile start -createdb graph-node -``` - -2. Clone [Graph Node](https://github.com/graphprotocol/graph-node) repo and build the source by running `cargo build` - -3. Now that all the dependencies are setup, start the Graph Node: - -```sh -cargo run -p graph-node --release -- \ - --postgres-url postgresql://[USERNAME]:[PASSWORD]@localhost:5432/graph-node \ - --ethereum-rpc [NETWORK_NAME]:[URL] \ - --ipfs https://ipfs.thegraph.com -``` - -### Getting started with Kubernetes - -A complete Kubernetes example configuration can be found in the [indexer repository](https://github.com/graphprotocol/indexer/tree/main/k8s). - -### Ports - -When it is running Graph Node exposes the following ports: - -| Port | Purpose | Routes | CLI Argument | Environment Variable | -| --- | --- | --- | --- | --- | -| 8000 | GraphQL HTTP server
(for Subgraph queries) | /subgraphs/id/...
/subgraphs/name/.../... | \--http-port | - | -| 8001 | GraphQL WS
(for Subgraph subscriptions) | /subgraphs/id/...
/subgraphs/name/.../... | \--ws-port | - | -| 8020 | JSON-RPC
(for managing deployments) | / | \--admin-port | - | -| 8030 | Subgraph indexing status API | /graphql | \--index-node-port | - | -| 8040 | Prometheus metrics | /metrics | \--metrics-port | - | - -> **Important**: Be careful about exposing ports publicly - **administration ports** should be kept locked down. This includes the the Graph Node JSON-RPC endpoint. - -## Advanced Graph Node configuration - -At its simplest, Graph Node can be operated with a single instance of Graph Node, a single PostgreSQL database, an IPFS node, and the network clients as required by the Subgraphs to be indexed. - -This setup can be scaled horizontally, by adding multiple Graph Nodes, and multiple databases to support those Graph Nodes. Advanced users may want to take advantage of some of the horizontal scaling capabilities of Graph Node, as well as some of the more advanced configuration options, via the `config.toml` file and Graph Node's environment variables. - -### `config.toml` - -A [TOML](https://toml.io/en/) configuration file can be used to set more complex configurations than those exposed in the CLI. The location of the file is passed with the --config command line switch. - -> When using a configuration file, it is not possible to use the options --postgres-url, --postgres-secondary-hosts, and --postgres-host-weights. - -A minimal `config.toml` file can be provided; the following file is equivalent to using the --postgres-url command line option: - -```toml -[store] -[store.primary] -connection="<.. postgres-url argument ..>" -[deployment] -[[deployment.rule]] -indexers = [ "<.. list of all indexing nodes ..>" ] -``` - -Full documentation of `config.toml` can be found in the [Graph Node docs](https://github.com/graphprotocol/graph-node/blob/master/docs/config.md). - -#### Multiple Graph Nodes - -Graph Node indexing can scale horizontally, running multiple instances of Graph Node to split indexing and querying across different nodes. This can be done simply by running Graph Nodes configured with a different `node_id` on startup (e.g. in the Docker Compose file), which can then be used in the `config.toml` file to specify [dedicated query nodes](#dedicated-query-nodes), [block ingestors](#dedicated-block-ingestion), and splitting Subgraphs across nodes with [deployment rules](#deployment-rules). - -> Note that multiple Graph Nodes can all be configured to use the same database, which itself can be horizontally scaled via sharding. - -#### Deployment rules - -Given multiple Graph Nodes, it is necessary to manage deployment of new Subgraphs so that the same Subgraph isn't being indexed by two different nodes, which would lead to collisions. This can be done by using deployment rules, which can also specify which `shard` a Subgraph's data should be stored in, if database sharding is being used. Deployment rules can match on the Subgraph name and the network that the deployment is indexing in order to make a decision. - -Example deployment rule configuration: - -```toml -[deployment] -[[deployment.rule]] -match = { name = "(vip|important)/.*" } -shard = "vip" -indexers = [ "index_node_vip_0", "index_node_vip_1" ] -[[deployment.rule]] -match = { network = "kovan" } -# No shard, so we use the default shard called 'primary' -indexers = [ "index_node_kovan_0" ] -[[deployment.rule]] -match = { network = [ "xdai", "poa-core" ] } -indexers = [ "index_node_other_0" ] -[[deployment.rule]] -# There's no 'match', so any Subgraph matches -shards = [ "sharda", "shardb" ] -indexers = [ - "index_node_community_0", - "index_node_community_1", - "index_node_community_2", - "index_node_community_3", - "index_node_community_4", - "index_node_community_5" - ] -``` - -Read more about deployment rules [here](https://github.com/graphprotocol/graph-node/blob/master/docs/config.md#controlling-deployment). - -#### Dedicated query nodes - -Nodes can be configured to explicitly be query nodes by including the following in the configuration file: - -```toml -[general] -query = "" -``` - -Any node whose --node-id matches the regular expression will be set up to only respond to queries. - -#### Database scaling via sharding - -For most use cases, a single Postgres database is sufficient to support a graph-node instance. When a graph-node instance outgrows a single Postgres database, it is possible to split the storage of graph-node's data across multiple Postgres databases. All databases together form the store of the graph-node instance. Each individual database is called a shard. - -Shards can be used to split Subgraph deployments across multiple databases, and can also be used to use replicas to spread query load across databases. This includes configuring the number of available database connections each `graph-node` should keep in its connection pool for each database, which becomes increasingly important as more Subgraphs are being indexed. - -Sharding becomes useful when your existing database can't keep up with the load that Graph Node puts on it, and when it's not possible to increase the database size anymore. - -> It is generally better make a single database as big as possible, before starting with shards. One exception is where query traffic is split very unevenly between Subgraphs; in those situations it can help dramatically if the high-volume Subgraphs are kept in one shard and everything else in another because that setup makes it more likely that the data for the high-volume Subgraphs stays in the db-internal cache and doesn't get replaced by data that's not needed as much from low-volume Subgraphs. - -In terms of configuring connections, start with max_connections in postgresql.conf set to 400 (or maybe even 200) and look at the store_connection_wait_time_ms and store_connection_checkout_count Prometheus metrics. Noticeable wait times (anything above 5ms) is an indication that there are too few connections available; high wait times there will also be caused by the database being very busy (like high CPU load). However if the database seems otherwise stable, high wait times indicate a need to increase the number of connections. In the configuration, how many connections each graph-node instance can use is an upper limit, and Graph Node will not keep connections open if it doesn't need them. - -Read more about store configuration [here](https://github.com/graphprotocol/graph-node/blob/master/docs/config.md#configuring-multiple-databases). - -#### Dedicated block ingestion - -If there are multiple nodes configured, it will be necessary to specify one node which is responsible for ingestion of new blocks, so that all configured index nodes aren't polling the chain head. This is done as part of the `chains` namespace, specifying the `node_id` to be used for block ingestion: - -```toml -[chains] -ingestor = "block_ingestor_node" -``` - -#### Supporting multiple networks - -The Graph Protocol is increasing the number of networks supported for indexing rewards, and there exist many Subgraphs indexing unsupported networks which an indexer would like to process. The `config.toml` file allows for expressive and flexible configuration of: - -- Multiple networks -- Multiple providers per network (this can allow splitting of load across providers, and can also allow for configuration of full nodes as well as archive nodes, with Graph Node preferring cheaper providers if a given workload allows). -- Additional provider details, such as features, authentication and the type of provider (for experimental Firehose support) - -The `[chains]` section controls the ethereum providers that graph-node connects to, and where blocks and other metadata for each chain are stored. The following example configures two chains, mainnet and kovan, where blocks for mainnet are stored in the vip shard and blocks for kovan are stored in the primary shard. The mainnet chain can use two different providers, whereas kovan only has one provider. - -```toml -[chains] -ingestor = "block_ingestor_node" -[chains.mainnet] -shard = "vip" -provider = [ - { label = "mainnet1", url = "http://..", features = [], headers = { Authorization = "Bearer foo" } }, - { label = "mainnet2", url = "http://..", features = [ "archive", "traces" ] } -] -[chains.kovan] -shard = "primary" -provider = [ { label = "kovan", url = "http://..", features = [] } ] -``` - -Read more about provider configuration [here](https://github.com/graphprotocol/graph-node/blob/master/docs/config.md#configuring-ethereum-providers). - -### Environment variables - -Graph Node supports a range of environment variables which can enable features, or change Graph Node behaviour. These are documented [here](https://github.com/graphprotocol/graph-node/blob/master/docs/environment-variables.md). - -### Continuous deployment - -Users who are operating a scaled indexing setup with advanced configuration may benefit from managing their Graph Nodes with Kubernetes. - -- The indexer repository has an [example Kubernetes reference](https://github.com/graphprotocol/indexer/tree/main/k8s) -- [Launchpad](https://docs.graphops.xyz/launchpad/intro) is a toolkit for running a Graph Protocol Indexer on Kubernetes maintained by GraphOps. It provides a set of Helm charts and a CLI to manage a Graph Node deployment. - -### Managing Graph Node - -Given a running Graph Node (or Graph Nodes!), the challenge is then to manage deployed Subgraphs across those nodes. Graph Node surfaces a range of tools to help with managing Subgraphs. - -#### Logging - -Graph Node's logs can provide useful information for debugging and optimisation of Graph Node and specific Subgraphs. Graph Node supports different log levels via the `GRAPH_LOG` environment variable, with the following levels: error, warn, info, debug or trace. - -In addition setting `GRAPH_LOG_QUERY_TIMING` to `gql` provides more details about how GraphQL queries are running (though this will generate a large volume of logs). - -#### Monitoring & alerting - -Graph Node provides the metrics via Prometheus endpoint on 8040 port by default. Grafana can then be used to visualise these metrics. - -The indexer repository provides an [example Grafana configuration](https://github.com/graphprotocol/indexer/blob/main/k8s/base/grafana.yaml). - -#### Graphman - -`graphman` is a maintenance tool for Graph Node, helping with diagnosis and resolution of different day-to-day and exceptional tasks. - -The graphman command is included in the official containers, and you can docker exec into your graph-node container to run it. It requires a `config.toml` file. - -Full documentation of `graphman` commands is available in the Graph Node repository. See [/docs/graphman.md] (https://github.com/graphprotocol/graph-node/blob/master/docs/graphman.md) in the Graph Node `/docs` - -### Working with Subgraphs - -#### Indexing status API - -Available on port 8030/graphql by default, the indexing status API exposes a range of methods for checking indexing status for different Subgraphs, checking proofs of indexing, inspecting Subgraph features and more. - -The full schema is available [here](https://github.com/graphprotocol/graph-node/blob/master/server/index-node/src/schema.graphql). - -#### Indexing performance - -There are three separate parts of the indexing process: - -- Fetching events of interest from the provider -- Processing events in order with the appropriate handlers (this can involve calling the chain for state, and fetching data from the store) -- Writing the resulting data to the store - -These stages are pipelined (i.e. they can be executed in parallel), but they are dependent on one another. Where Subgraphs are slow to index, the underlying cause will depend on the specific Subgraph. - -Common causes of indexing slowness: - -- Time taken to find relevant events from the chain (call handlers in particular can be slow, given the reliance on `trace_filter`) -- Making large numbers of `eth_calls` as part of handlers -- A large amount of store interaction during execution -- A large amount of data to save to the store -- A large number of events to process -- Slow database connection time, for crowded nodes -- The provider itself falling behind the chain head -- Slowness in fetching new receipts at the chain head from the provider - -Subgraph indexing metrics can help diagnose the root cause of indexing slowness. In some cases, the problem lies with the Subgraph itself, but in others, improved network providers, reduced database contention and other configuration improvements can markedly improve indexing performance. - -#### Failed Subgraphs - -During indexing Subgraphs might fail, if they encounter data that is unexpected, some component not working as expected, or if there is some bug in the event handlers or configuration. There are two general types of failure: - -- Deterministic failures: these are failures which will not be resolved with retries -- Non-deterministic failures: these might be down to issues with the provider, or some unexpected Graph Node error. When a non-deterministic failure occurs, Graph Node will retry the failing handlers, backing off over time. - -In some cases a failure might be resolvable by the indexer (for example if the error is a result of not having the right kind of provider, adding the required provider will allow indexing to continue). However in others, a change in the Subgraph code is required. - -> Deterministic failures are considered "final", with a Proof of Indexing generated for the failing block, while non-deterministic failures are not, as the Subgraph may manage to "unfail" and continue indexing. In some cases, the non-deterministic label is incorrect, and the Subgraph will never overcome the error; such failures should be reported as issues on the Graph Node repository. - -#### Block and call cache - -Graph Node caches certain data in the store in order to save refetching from the provider. Blocks are cached, as are the results of `eth_calls` (the latter being cached as of a specific block). This caching can dramatically increase indexing speed during "resyncing" of a slightly altered Subgraph. - -However, in some instances, if an Ethereum node has provided incorrect data for some period, that can make its way into the cache, leading to incorrect data or failed Subgraphs. In this case indexers can use `graphman` to clear the poisoned cache, and then rewind the affected Subgraphs, which will then fetch fresh data from the (hopefully) healthy provider. - -If a block cache inconsistency is suspected, such as a tx receipt missing event: - -1. `graphman chain list` to find the chain name. -2. `graphman chain check-blocks by-number ` will check if the cached block matches the provider, and deletes the block from the cache if it doesn’t. - 1. If there is a difference, it may be safer to truncate the whole cache with `graphman chain truncate `. - 2. If the block matches the provider, then the issue can be debugged directly against the provider. - -#### Querying issues and errors - -Once a Subgraph has been indexed, indexers can expect to serve queries via the Subgraph's dedicated query endpoint. If the indexer is hoping to serve significant query volume, a dedicated query node is recommended, and in case of very high query volumes, indexers may want to configure replica shards so that queries don't impact the indexing process. - -However, even with a dedicated query node and replicas, certain queries can take a long time to execute, and in some cases increase memory usage and negatively impact the query time for other users. - -There is not one "silver bullet", but a range of tools for preventing, diagnosing and dealing with slow queries. - -##### Query caching - -Graph Node caches GraphQL queries by default, which can significantly reduce database load. This can be further configured with the `GRAPH_QUERY_CACHE_BLOCKS` and `GRAPH_QUERY_CACHE_MAX_MEM` settings - read more [here](https://github.com/graphprotocol/graph-node/blob/master/docs/environment-variables.md#graphql-caching). - -##### Analysing queries - -Problematic queries most often surface in one of two ways. In some cases, users themselves report that a given query is slow. In that case the challenge is to diagnose the reason for the slowness - whether it is a general issue, or specific to that Subgraph or query. And then of course to resolve it, if possible. - -In other cases, the trigger might be high memory usage on a query node, in which case the challenge is first to identify the query causing the issue. - -Indexers can use [qlog](https://github.com/graphprotocol/qlog/) to process and summarize Graph Node's query logs. `GRAPH_LOG_QUERY_TIMING` can also be enabled to help identify and debug slow queries. - -Given a slow query, indexers have a few options. Of course they can alter their cost model, to significantly increase the cost of sending the problematic query. This may result in a reduction in the frequency of that query. However this often doesn't resolve the root cause of the issue. - -##### Account-like optimisation - -Database tables that store entities seem to generally come in two varieties: 'transaction-like', where entities, once created, are never updated, i.e., they store something akin to a list of financial transactions, and 'account-like' where entities are updated very often, i.e., they store something like financial accounts that get modified every time a transaction is recorded. Account-like tables are characterized by the fact that they contain a large number of entity versions, but relatively few distinct entities. Often, in such tables the number of distinct entities is 1% of the total number of rows (entity versions) - -For account-like tables, `graph-node` can generate queries that take advantage of details of how Postgres ends up storing data with such a high rate of change, namely that all of the versions for recent blocks are in a small subsection of the overall storage for such a table. - -The command `graphman stats show shows, for each entity type/table in a deployment, how many distinct entities, and how many entity versions each table contains. That data is based on Postgres-internal estimates, and is therefore necessarily imprecise, and can be off by an order of magnitude. A `-1` in the `entities` column means that Postgres believes that all rows contain a distinct entity. - -In general, tables where the number of distinct entities are less than 1% of the total number of rows/entity versions are good candidates for the account-like optimization. When the output of `graphman stats show` indicates that a table might benefit from this optimization, running `graphman stats show ` will perform a full count of the table - that can be slow, but gives a precise measure of the ratio of distinct entities to overall entity versions. - -Once a table has been determined to be account-like, running `graphman stats account-like .
` will turn on the account-like optimization for queries against that table. The optimization can be turned off again with `graphman stats account-like --clear .
` It takes up to 5 minutes for query nodes to notice that the optimization has been turned on or off. After turning the optimization on, it is necessary to verify that the change does not in fact make queries slower for that table. If you have configured Grafana to monitor Postgres, slow queries would show up in `pg_stat_activity`in large numbers, taking several seconds. In that case, the optimization needs to be turned off again. - -For Uniswap-like Subgraphs, the `pair` and `token` tables are prime candidates for this optimization, and can have a dramatic effect on database load. - -#### Removing Subgraphs - -> This is new functionality, which will be available in Graph Node 0.29.x - -At some point an indexer might want to remove a given Subgraph. This can be easily done via `graphman drop`, which deletes a deployment and all it's indexed data. The deployment can be specified as either a Subgraph name, an IPFS hash `Qm..`, or the database namespace `sgdNNN`. Further documentation is available [here](https://github.com/graphprotocol/graph-node/blob/master/docs/graphman.md#-drop). diff --git a/website/src/pages/ar/indexing/tooling/graphcast.mdx b/website/src/pages/ar/indexing/tooling/graphcast.mdx deleted file mode 100644 index d084edcd7067..000000000000 --- a/website/src/pages/ar/indexing/tooling/graphcast.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Graphcast ---- - -## مقدمة - -Is there something you'd like to learn from or share with your fellow Indexers in an automated manner, but it's too much hassle or costs too much gas? - -Currently, the cost to broadcast information to other network participants is determined by gas fees on the Ethereum blockchain. Graphcast solves this problem by acting as an optional decentralized, distributed peer-to-peer (P2P) communication tool that allows Indexers across the network to exchange information in real time. The cost of exchanging P2P messages is near zero, with the tradeoff of no data integrity guarantees. Nevertheless, Graphcast aims to provide message validity guarantees (i.e. that the message is valid and signed by a known protocol participant) with an open design space of reputation models. - -The Graphcast SDK (Software Development Kit) allows developers to build Radios, which are gossip-powered applications that Indexers can run to serve a given purpose. We also intend to create a few Radios (or provide support to other developers/teams that wish to build Radios) for the following use cases: - -- Real-time cross-checking of Subgraph data integrity ([Subgraph Radio](https://docs.graphops.xyz/graphcast/radios/subgraph-radio/intro)). -- Conducting auctions and coordination for warp syncing Subgraphs, substreams, and Firehose data from other Indexers. -- Self-reporting on active query analytics, including Subgraph request volumes, fee volumes, etc. -- Self-reporting on indexing analytics, including Subgraph indexing time, handler gas costs, indexing errors encountered, etc. -- Self-reporting on stack information including graph-node version, Postgres version, Ethereum client version, etc. - -### Learn More - -If you would like to learn more about Graphcast, [check out the documentation here.](https://docs.graphops.xyz/graphcast/intro) diff --git a/website/src/pages/ar/resources/_meta-titles.json b/website/src/pages/ar/resources/_meta-titles.json deleted file mode 100644 index f5971e95a8f6..000000000000 --- a/website/src/pages/ar/resources/_meta-titles.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "roles": "Additional Roles", - "migration-guides": "Migration Guides" -} diff --git a/website/src/pages/ar/resources/_meta.js b/website/src/pages/ar/resources/_meta.js deleted file mode 100644 index 38c56cf56c43..000000000000 --- a/website/src/pages/ar/resources/_meta.js +++ /dev/null @@ -1,10 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - glossary: '', - tokenomics: '', - benefits: '', - roles: titles.roles ?? '', - 'migration-guides': titles['migration-guides'] ?? '', - 'subgraph-studio-faq': '', -} diff --git a/website/src/pages/ar/resources/benefits.mdx b/website/src/pages/ar/resources/benefits.mdx deleted file mode 100644 index 87bd1adc9cdd..000000000000 --- a/website/src/pages/ar/resources/benefits.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: The Graph vs. Self Hosting -socialImage: https://thegraph.com/docs/img/seo/benefits.jpg ---- - -The Graph’s decentralized network has been engineered and refined to create a robust indexing and querying experience—and it’s getting better every day thanks to thousands of contributors around the world. - -The benefits of this decentralized protocol cannot be replicated by running a `graph-node` locally. The Graph Network is more reliable, more efficient, and less expensive. - -Here is an analysis: - -## Why You Should Use The Graph Network - -- Significantly lower monthly costs -- $0 infrastructure setup costs -- Superior uptime -- Access to hundreds of independent Indexers around the world -- 24/7 technical support by global community - -## The Benefits Explained - -### Lower & more Flexible Cost Structure - -No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card. - -Query costs may vary; the quoted cost is the average at time of publication (March 2024). - -## Low Volume User (less than 100,000 queries per month) - -| Cost Comparison | Self Hosted | The Graph Network | -| :-: | :-: | :-: | -| Monthly server cost\* | $350 per month | $0 | -| Query costs | $0+ | $0 per month | -| Engineering time | $400 per month | None, built into the network with globally distributed Indexers | -| Queries per month | Limited to infra capabilities | 100,000 (Free Plan) | -| Cost per query | $0 | $0 | -| Infrastructure | Centralized | Decentralized | -| Geographic redundancy | $750+ per additional node | Included | -| Uptime | Varies | 99.9%+ | -| Total Monthly Costs | $750+ | $0 | - -## Medium Volume User (~3M queries per month) - -| Cost Comparison | Self Hosted | The Graph Network | -| :-: | :-: | :-: | -| Monthly server cost\* | $350 per month | $0 | -| Query costs | $500 per month | $120 per month | -| Engineering time | $800 per month | None, built into the network with globally distributed Indexers | -| Queries per month | Limited to infra capabilities | ~3,000,000 | -| Cost per query | $0 | $0.00002 | -| Infrastructure | Centralized | Decentralized | -| Engineering expense | $200 per hour | Included | -| Geographic redundancy | $1,200 in total costs per additional node | Included | -| Uptime | Varies | 99.9%+ | -| Total Monthly Costs | $1,650+ | $120 | - -## High Volume User (~30M queries per month) - -| Cost Comparison | Self Hosted | The Graph Network | -| :-: | :-: | :-: | -| Monthly server cost\* | $1100 per month, per node | $0 | -| Query costs | $4000 | $1,200 per month | -| Number of nodes needed | 10 | Not applicable | -| Engineering time | $6,000 or more per month | None, built into the network with globally distributed Indexers | -| Queries per month | Limited to infra capabilities | ~30,000,000 | -| Cost per query | $0 | $0.00002 | -| Infrastructure | Centralized | Decentralized | -| Geographic redundancy | $1,200 in total costs per additional node | Included | -| Uptime | Varies | 99.9%+ | -| Total Monthly Costs | $11,000+ | $1,200 | - -\*including costs for backup: $50-$100 per month - -Engineering time based on $200 per hour assumption - -Reflects cost for data consumer. Query fees are still paid to Indexers for Free Plan queries. - -Estimated costs are only for Ethereum Mainnet Subgraphs — costs are even higher when self hosting a `graph-node` on other networks. Some users may need to update their Subgraph to a new version. Due to Ethereum gas fees, an update costs ~$50 at time of writing. Note that gas fees on [Arbitrum](/archived/arbitrum/arbitrum-faq/) are substantially lower than Ethereum mainnet. - -Curating signal on a Subgraph is an optional one-time, net-zero cost (e.g., $1k in signal can be curated on a Subgraph, and later withdrawn—with potential to earn returns in the process). - -## No Setup Costs & Greater Operational Efficiency - -Zero setup fees. Get started immediately with no setup or overhead costs. No hardware requirements. No outages due to centralized infrastructure, and more time to concentrate on your core product . No need for backup servers, troubleshooting, or expensive engineering resources. - -## Reliability & Resiliency - -The Graph’s decentralized network gives users access to geographic redundancy that does not exist when self-hosting a `graph-node`. Queries are served reliably thanks to 99.9%+ uptime, achieved by hundreds of independent Indexers securing the network globally. - -Bottom line: The Graph Network is less expensive, easier to use, and produces superior results compared to running a `graph-node` locally. - -Start using The Graph Network today, and learn how to [publish your Subgraph to The Graph's decentralized network](/subgraphs/quick-start/). diff --git a/website/src/pages/ar/resources/glossary.mdx b/website/src/pages/ar/resources/glossary.mdx deleted file mode 100644 index 7287d4aacff6..000000000000 --- a/website/src/pages/ar/resources/glossary.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: قائمة المصطلحات ---- - -- **The Graph**: A decentralized protocol for indexing and querying data. - -- **Query**: A request for data. In the case of The Graph, a query is a request for data from a Subgraph that will be answered by an Indexer. - -- **GraphQL**: A query language for APIs and a runtime for fulfilling those queries with your existing data. The Graph uses GraphQL to query Subgraphs. - -- **Endpoint**: A URL that can be used to query a Subgraph. The testing endpoint for Subgraph Studio is `https://api.studio.thegraph.com/query///` and the Graph Explorer endpoint is `https://gateway.thegraph.com/api//subgraphs/id/`. The Graph Explorer endpoint is used to query Subgraphs on The Graph's decentralized network. - -- **Subgraph**: An open API that extracts data from a blockchain, processes it, and stores it so that it can be easily queried via GraphQL. Developers can build, deploy, and publish Subgraphs to The Graph Network. Once it is indexed, the Subgraph can be queried by anyone. - -- **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries. - -- **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards. - 1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network. - - 2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually. - -- **Indexer's Self-Stake**: The amount of GRT that Indexers stake to participate in the decentralized network. The minimum is 100,000 GRT, and there is no upper limit. - -- **Delegation Capacity**: The maximum amount of GRT an Indexer can accept from Delegators. Indexers can only accept up to 16x their Indexer Self-Stake, and additional delegation results in diluted rewards. For example, if an Indexer has a Self-Stake of 1M GRT, their delegation capacity is 16M. However, Indexers can increase their Delegation Capacity by increasing their Self-Stake. - -- **Upgrade Indexer**: An Indexer designed to act as a fallback for Subgraph queries not serviced by other Indexers on the network. The upgrade Indexer is not competitive with other Indexers. - -- **Delegator**: Network participants who own GRT and delegate their GRT to Indexers. This allows Indexers to increase their stake in Subgraphs on the network. In return, Delegators receive a portion of the Indexing Rewards that Indexers receive for processing Subgraphs. - -- **Delegation Tax**: A 0.5% fee paid by Delegators when they delegate GRT to Indexers. The GRT used to pay the fee is burned. - -- **Curator**: Network participants that identify high-quality Subgraphs, and signal GRT on them in exchange for curation shares. When Indexers claim query fees on a Subgraph, 10% is distributed to the Curators of that Subgraph. There is a positive correlation between the amount of GRT signaled and the number of Indexers indexing a Subgraph. - -- **Curation Tax**: A 1% fee paid by Curators when they signal GRT on Subgraphs. The GRT used to pay the fee is burned. - -- **Data Consumer**: Any application or user that queries a Subgraph. - -- **Subgraph Developer**: A developer who builds and deploys a Subgraph to The Graph's decentralized network. - -- **Subgraph Manifest**: A YAML file that describes the Subgraph's GraphQL schema, data sources, and other metadata. [Here](https://github.com/graphprotocol/example-subgraph/blob/master/subgraph.yaml) is an example. - -- **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day. - -- **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses: - 1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated. - - 2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data. - -- **Subgraph Studio**: A powerful dapp for building, deploying, and publishing Subgraphs. - -- **Fishermen**: A role within The Graph Network held by participants who monitor the accuracy and integrity of data served by Indexers. When a Fisherman identifies a query response or a POI they believe to be incorrect, they can initiate a dispute against the Indexer. If the dispute rules in favor of the Fisherman, the Indexer is slashed by losing 2.5% of their self-stake. Of this amount, 50% is awarded to the Fisherman as a bounty for their vigilance, and the remaining 50% is removed from circulation (burned). This mechanism is designed to encourage Fishermen to help maintain the reliability of the network by ensuring that Indexers are held accountable for the data they provide. - -- **Arbitrators**: Arbitrators are network participants appointed through a governance process. The role of the Arbitrator is to decide the outcome of indexing and query disputes. Their goal is to maximize the utility and reliability of The Graph Network. - -- **Slashing**: Indexers can have their self-staked GRT slashed for providing an incorrect POI or for serving inaccurate data. The slashing percentage is a protocol parameter currently set to 2.5% of an Indexer's self-stake. 50% of the slashed GRT goes to the Fisherman that disputed the inaccurate data or incorrect POI. The other 50% is burned. - -- **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are distributed in GRT. - -- **Delegation Rewards**: The rewards that Delegators receive for delegating GRT to Indexers. Delegation rewards are distributed in GRT. - -- **GRT**: The Graph's work utility token. GRT provides economic incentives to network participants for contributing to the network. - -- **Proof of Indexing (POI)**: When an Indexer closes their allocation and wants to claim their accrued indexing rewards on a given Subgraph, they must provide a valid and recent POI. Fishermen may dispute the POI provided by an Indexer. A dispute resolved in the Fisherman's favor will result in slashing of the Indexer. - -- **Graph Node**: Graph Node is the component that indexes Subgraphs and makes the resulting data available to query via a GraphQL API. As such it is central to the Indexer stack, and correct operation of Graph Node is crucial to running a successful Indexer. - -- **Indexer agent**: The Indexer agent is part of the Indexer stack. It facilitates the Indexer's interactions onchain, including registering on the network, managing Subgraph deployments to its Graph Node(s), and managing allocations. - -- **The Graph Client**: A library for building GraphQL-based dapps in a decentralized way. - -- **Graph Explorer**: A dapp designed for network participants to explore Subgraphs and interact with the protocol. - -- **Graph CLI**: A command line interface tool for building and deploying to The Graph. - -- **Cooldown Period**: The time remaining until an Indexer who changed their delegation parameters can do so again. - -- **L2 Transfer Tools**: Smart contracts and UI that enable network participants to transfer network related assets from Ethereum mainnet to Arbitrum One. Network participants can transfer delegated GRT, Subgraphs, curation shares, and Indexer's self-stake. - -- **Updating a Subgraph**: The process of releasing a new Subgraph version with updates to the Subgraph's manifest, schema, or mappings. - -- **Migrating**: The process of curation shares moving from an old version of a Subgraph to a new version of a Subgraph (e.g. when v0.0.1 is updated to v0.0.2). diff --git a/website/src/pages/ar/resources/migration-guides/_meta.js b/website/src/pages/ar/resources/migration-guides/_meta.js deleted file mode 100644 index 541e5b7f6ea2..000000000000 --- a/website/src/pages/ar/resources/migration-guides/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - 'assemblyscript-migration-guide': '', - 'graphql-validations-migration-guide': '', -} diff --git a/website/src/pages/ar/resources/migration-guides/assemblyscript-migration-guide.mdx b/website/src/pages/ar/resources/migration-guides/assemblyscript-migration-guide.mdx deleted file mode 100644 index 40086bb24579..000000000000 --- a/website/src/pages/ar/resources/migration-guides/assemblyscript-migration-guide.mdx +++ /dev/null @@ -1,524 +0,0 @@ ---- -title: دليل ترحيل AssemblyScript ---- - -Up until now, Subgraphs have been using one of the [first versions of AssemblyScript](https://github.com/AssemblyScript/assemblyscript/tree/v0.6) (v0.6). Finally we've added support for the [newest one available](https://github.com/AssemblyScript/assemblyscript/tree/v0.19.10) (v0.19.10)! 🎉 - -That will enable Subgraph developers to use newer features of the AS language and standard library. - -This guide is applicable for anyone using `graph-cli`/`graph-ts` below version `0.22.0`. If you're already at a higher than (or equal) version to that, you've already been using version `0.19.10` of AssemblyScript 🙂 - -> Note: As of `0.24.0`, `graph-node` can support both versions, depending on the `apiVersion` specified in the Subgraph manifest. - -## مميزات - -### وظائف جديدة - -- `TypedArray`s can now be built from `ArrayBuffer`s by using the [new `wrap` static method](https://www.assemblyscript.org/stdlib/typedarray.html#static-members) ([v0.8.1](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.8.1)) -- New standard library functions: `String#toUpperCase`, `String#toLowerCase`, `String#localeCompare`and `TypedArray#set` ([v0.9.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.0)) -- Added support for x instanceof GenericClass ([v0.9.2](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.2)) -- Added `StaticArray`, a more efficient array variant ([v0.9.3](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.3)) -- Added `Array#flat` ([v0.10.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.10.0)) -- Implemented `radix` argument on `Number#toString` ([v0.10.1](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.10.1)) -- Added support for separators in floating point literals ([v0.13.7](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.13.7)) -- Added support for first class functions ([v0.14.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.14.0)) -- Add builtins: `i32/i64/f32/f64.add/sub/mul` ([v0.14.13](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.14.13)) -- Implement `Array/TypedArray/String#at` ([v0.18.2](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.2)) -- Added support for template literal strings ([v0.18.17](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.17)) -- Add `encodeURI(Component)` and `decodeURI(Component)` ([v0.18.27](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.27)) -- Add `toString`, `toDateString` and `toTimeString` to `Date` ([v0.18.29](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.29)) -- Add `toUTCString` for `Date` ([v0.18.30](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.30)) -- Add `nonnull/NonNullable` builtin type ([v0.19.2](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.19.2)) - -### التحسينات - -- `Math` functions such as `exp`, `exp2`, `log`, `log2` and `pow` have been replaced by faster variants ([v0.9.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.0)) -- Slightly optimize `Math.mod` ([v0.17.1](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.1)) -- Cache more field accesses in std Map and Set ([v0.17.8](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.8)) -- Optimize for powers of two in `ipow32/64` ([v0.18.2](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.2)) - -### آخر - -- The type of an array literal can now be inferred from its contents ([v0.9.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.0)) -- Updated stdlib to Unicode 13.0.0 ([v0.10.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.10.0)) - -## كيف تقوم بالترقية؟ - -1. Change your mappings `apiVersion` in `subgraph.yaml` to `0.0.9`: - -```yaml -... -dataSources: - ... - mapping: - ... - apiVersion: 0.0.9 - ... -``` - -2. Update the `graph-cli` you're using to the `latest` version by running: - -```bash -# if you have it globally installed -npm install --global @graphprotocol/graph-cli@latest - -# or in your subgraph if you have it as a dev dependency -npm install --save-dev @graphprotocol/graph-cli@latest -``` - -3. Do the same for `graph-ts`, but instead of installing globally, save it in your main dependencies: - -```bash -npm install --save @graphprotocol/graph-ts@latest -``` - -4. اتبع بقية الدليل لاصلاح التغييرات الهامة في اللغة. -5. Run `codegen` and `deploy` again. - -## تغييرات هامة - -### Nullability - -في الإصدار الأقدم من AssemblyScript ، يمكنك إنشاء كود مثل هذا: - -```typescript -function load(): Value | null { ... } - -let maybeValue = load(); -maybeValue.aMethod(); -``` - -ولكن في الإصدار الأحدث ، نظرًا لأن القيمة nullable ، فإنها تتطلب منك التحقق ، مثل هذا: - -```typescript -let maybeValue = load() - -if (maybeValue) { - maybeValue.aMethod() // `maybeValue` is not null anymore -} -``` - -أو إجباره على هذا النحو: - -```typescript -let maybeValue = load()! // breaks in runtime if value is null - -maybeValue.aMethod() -``` - -If you are unsure which to choose, we recommend always using the safe version. If the value doesn't exist you might want to just do an early if statement with a return in you Subgraph handler. - -### Variable Shadowing - -Before you could do [variable shadowing](https://en.wikipedia.org/wiki/Variable_shadowing) and code like this would work: - -```typescript -let a = 10 -let b = 20 -let a = a + b -``` - -لكن هذا لم يعد ممكنًا الآن ، ويرجع المترجم بهذا الخطأ: - -```typescript -'ERROR TS2451: Cannot redeclare block-scoped variable 'a - -; let a = a + b - ~~~~~~~~~~~~~ -in assembly/index.ts(4,3) -``` - -ستحتاج إلى إعادة تسمية المتغيرات المكررة إذا كان لديك variable shadowing. - -### مقارانات Null - -By doing the upgrade on your Subgraph, sometimes you might get errors like these: - -```typescript -ERROR TS2322: Type '~lib/@graphprotocol/graph-ts/common/numbers/BigInt | null' is not assignable to type '~lib/@graphprotocol/graph-ts/common/numbers/BigInt'. - if (decimals == null) { - ~~~~ - in src/mappings/file.ts(41,21) -``` - -To solve you can simply change the `if` statement to something like this: - -```typescript - if (!decimals) { - - // or - - if (decimals === null) { -``` - -الأمر نفسه ينطبق إذا كنت تفعل =! بدلاً من ==. - -### Casting - -The common way to do casting before was to just use the `as` keyword, like this: - -```typescript -let byteArray = new ByteArray(10) -let uint8Array = byteArray as Uint8Array // equivalent to: byteArray -``` - -لكن هذا لا يعمل إلا في سيناريوهين: - -- Primitive casting (between types such as `u8`, `i32`, `bool`; eg: `let b: isize = 10; b as usize`); -- Upcasting على وراثة الفئة (subclass → superclass) - -أمثلة: - -```typescript -// primitive casting -let a: usize = 10 -let b: isize = 5 -let c: usize = a + (b as usize) -``` - -```typescript -// upcasting on class inheritance -class Bytes extends Uint8Array {} - -let bytes = new Bytes(2) -// bytes // same as: bytes as Uint8Array -``` - -There are two scenarios where you may want to cast, but using `as`/`var` **isn't safe**: - -- Downcasting وراثة الفئة (superclass → subclass) -- بين نوعين يشتركان في فئة superclass - -```typescript -// downcasting on class inheritance -class Bytes extends Uint8Array {} - -let uint8Array = new Uint8Array(2) -// uint8Array // breaks in runtime :( -``` - -```typescript -// between two types that share a superclass -class Bytes extends Uint8Array {} -class ByteArray extends Uint8Array {} - -let bytes = new Bytes(2) -// bytes // breaks in runtime :( -``` - -For those cases, you can use the `changetype` function: - -```typescript -// downcasting on class inheritance -class Bytes extends Uint8Array {} - -let uint8Array = new Uint8Array(2) -changetype(uint8Array) // works :) -``` - -```typescript -// between two types that share a superclass -class Bytes extends Uint8Array {} -class ByteArray extends Uint8Array {} - -let bytes = new Bytes(2) -changetype(bytes) // works :) -``` - -If you just want to remove nullability, you can keep using the `as` operator (or `variable`), but make sure you know that value can't be null, otherwise it will break. - -```typescript -// remove nullability -let previousBalance = AccountBalance.load(balanceId) // AccountBalance | null - -if (previousBalance != null) { - return previousBalance as AccountBalance // safe remove null -} - -let newBalance = new AccountBalance(balanceId) -``` - -For the nullability case we recommend taking a look at the [nullability check feature](https://www.assemblyscript.org/basics.html#nullability-checks), it will make your code cleaner 🙂 - -Also we've added a few more static methods in some types to ease casting, they are: - -- Bytes.fromByteArray -- Bytes.fromUint8Array -- BigInt.fromByteArray -- ByteArray.fromBigInt - -### التحقق من Nullability مع الوصول الى الخاصية - -To use the [nullability check feature](https://www.assemblyscript.org/basics.html#nullability-checks) you can use either `if` statements or the ternary operator (`?` and `:`) like this: - -```typescript -let something: string | null = 'data' - -let somethingOrElse = something ? something : 'else' - -// or - -let somethingOrElse - -if (something) { - somethingOrElse = something -} else { - somethingOrElse = 'else' -} -``` - -However that only works when you're doing the `if` / ternary on a variable, not on a property access, like this: - -```typescript -class Container { - data: string | null -} - -let container = new Container() -container.data = 'data' - -let somethingOrElse: string = container.data ? container.data : 'else' // doesn't compile -``` - -الذي يخرج هذا الخطأ: - -```typescript -ERROR TS2322: Type '~lib/string/String | null' is not assignable to type '~lib/string/String'. - - let somethingOrElse: string = container.data ? container.data : "else"; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -``` - -لإصلاح هذه المشكلة ، يمكنك إنشاء متغير للوصول إلى الخاصية حتى يتمكن المترجم من القيام بعملية التحقق من الـ nullability: - -```typescript -class Container { - data: string | null -} - -let container = new Container() -container.data = 'data' - -let data = container.data - -let somethingOrElse: string = data ? data : 'else' // compiles just fine :) -``` - -### التحميل الزائد للمشغل مع الوصول للخاصية - -(على سبيل المثال) إذا حاولت جمع نوع nullable (من وصول خاصية) مع نوع nullable ، فإن مترجم AssemblyScript بدلاً من إعطاء خطأ في وقت التحويل يحذر من أن إحدى القيم nullable، وبما أنه يقوم فقط بالترجمة بصمت ، فإنه يتيح الفرصة للكود للتوقف في وقت التشغيل. - -```typescript -class BigInt extends Uint8Array { - @operator('+') - plus(other: BigInt): BigInt { - // ... - } -} - -class Wrapper { - public constructor(public n: BigInt | null) {} -} - -let x = BigInt.fromI32(2) -let y: BigInt | null = null - -x + y // give compile time error about nullability - -let wrapper = new Wrapper(y) - -wrapper.n = wrapper.n + x // doesn't give compile time errors as it should -``` - -We've opened a issue on the AssemblyScript compiler for this, but for now if you do these kind of operations in your Subgraph mappings, you should change them to do a null check before it. - -```typescript -let wrapper = new Wrapper(y) - -if (!wrapper.n) { - wrapper.n = BigInt.fromI32(0) -} - -wrapper.n = wrapper.n + x // now `n` is guaranteed to be a BigInt -``` - -### تهيئة القيمة - -إذا كان لديك أي كود مثل هذا: - -```typescript -var value: Type // null -value.x = 10 -value.y = 'content' -``` - -It will compile but break at runtime, that happens because the value hasn't been initialized, so make sure your Subgraph has initialized their values, like this: - -```typescript -var value = new Type() // initialized -value.x = 10 -value.y = 'content' -``` - -وأيضًا إذا كانت لديك خصائص ل nullable في كيان GraphQL ، مثل هذا: - -```graphql -type Total @entity { - id: Bytes! - amount: BigInt -} -``` - -ولديك كود مشابه لهذا: - -```typescript -let total = Total.load('latest') - -if (total === null) { - total = new Total('latest') -} - -total.amount = total.amount + BigInt.fromI32(1) -``` - -You'll need to make sure to initialize the `total.amount` value, because if you try to access like in the last line for the sum, it will crash. So you either initialize it first: - -```typescript -let total = Total.load('latest') - -if (total === null) { - total = new Total('latest') - total.amount = BigInt.fromI32(0) -} - -total.tokens = total.tokens + BigInt.fromI32(1) -``` - -Or you can just change your GraphQL schema to not use a nullable type for this property, then we'll initialize it as zero on the `codegen` step 😉 - -```graphql -type Total @entity { - id: Bytes! - amount: BigInt! -} -``` - -```typescript -let total = Total.load('latest') - -if (total === null) { - total = new Total('latest') // already initializes non-nullable properties -} - -total.amount = total.amount + BigInt.fromI32(1) -``` - -### تهيئة خاصية الفئة - -إذا قمت بتصدير (export) أي فئات ذات خصائص فئات أخرى (تم تعريفها بواسطتك أو بواسطة المكتبة القياسية) مثل هذا: - -```typescript -class Thing {} - -export class Something { - value: Thing -} -``` - -The compiler will error because you either need to add an initializer for the properties that are classes, or add the `!` operator: - -```typescript -export class Something { - constructor(public value: Thing) {} -} - -// or - -export class Something { - value: Thing - - constructor(value: Thing) { - this.value = value - } -} - -// or - -export class Something { - value!: Thing -} -``` - -### Array initialization - -The `Array` class still accepts a number to initialize the length of the list, however you should take care because operations like `.push` will actually increase the size instead of adding to the beginning, for example: - -```typescript -let arr = new Array(5) // ["", "", "", "", ""] - -arr.push('something') // ["", "", "", "", "", "something"] // size 6 :( -``` - -Depending on the types you're using, eg nullable ones, and how you're accessing them, you might encounter a runtime error like this one: - -``` -ERRO Handler skipped due to execution failure, error: Mapping aborted at ~lib/array.ts, line 110, column 40, with message: Element type must be nullable if array is holey wasm backtrace: 0: 0x19c4 - !~lib/@graphprotocol/graph-ts/index/format 1: 0x1e75 - !~lib/@graphprotocol/graph-ts/common/collections/Entity#constructor 2: 0x30b9 - !node_modules/@graphprotocol/graph-ts/global/global/id_of_type -``` - -To actually push at the beginning you should either, initialize the `Array` with size zero, like this: - -```typescript -let arr = new Array(0) // [] - -arr.push('something') // ["something"] -``` - -Or you should mutate it via index: - -```typescript -let arr = new Array(5) // ["", "", "", "", ""] - -arr[0] = 'something' // ["something", "", "", "", ""] -``` - -### GraphQL schema - -This is not a direct AssemblyScript change, but you may have to update your `schema.graphql` file. - -Now you no longer can define fields in your types that are Non-Nullable Lists. If you have a schema like this: - -```graphql -type Something @entity { - id: Bytes! -} - -type MyEntity @entity { - id: Bytes! - invalidField: [Something]! # no longer valid -} -``` - -You'll have to add an `!` to the member of the List type, like this: - -```graphql -type Something @entity { - id: Bytes! -} - -type MyEntity @entity { - id: Bytes! - invalidField: [Something!]! # valid -} -``` - -This changed because of nullability differences between AssemblyScript versions, and it's related to the `src/generated/schema.ts` file (default path, you might have changed this). - -### آخر - -- Aligned `Map#set` and `Set#add` with the spec, returning `this` ([v0.9.2](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.2)) -- Arrays no longer inherit from ArrayBufferView, but are now distinct ([v0.10.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.10.0)) -- Classes initialized from object literals can no longer define a constructor ([v0.10.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.10.0)) -- The result of a `**` binary operation is now the common denominator integer if both operands are integers. Previously, the result was a float as if calling `Math/f.pow` ([v0.11.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.11.0)) -- Coerce `NaN` to `false` when casting to `bool` ([v0.14.9](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.14.9)) -- When shifting a small integer value of type `i8`/`u8` or `i16`/`u16`, only the 3 respectively 4 least significant bits of the RHS value affect the result, analogous to the result of an `i32.shl` only being affected by the 5 least significant bits of the RHS value. Example: `someI8 << 8` previously produced the value `0`, but now produces `someI8` due to masking the RHS as `8 & 7 = 0` (3 bits) ([v0.17.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.0)) -- Bug fix of relational string comparisons when sizes differ ([v0.17.8](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.8)) diff --git a/website/src/pages/ar/resources/migration-guides/graphql-validations-migration-guide.mdx b/website/src/pages/ar/resources/migration-guides/graphql-validations-migration-guide.mdx deleted file mode 100644 index ebed96df1002..000000000000 --- a/website/src/pages/ar/resources/migration-guides/graphql-validations-migration-guide.mdx +++ /dev/null @@ -1,538 +0,0 @@ ---- -title: GraphQL Validations Migration Guide ---- - -Soon `graph-node` will support 100% coverage of the [GraphQL Validations specification](https://spec.graphql.org/June2018/#sec-Validation). - -Previous versions of `graph-node` did not support all validations and provided more graceful responses - so, in cases of ambiguity, `graph-node` was ignoring invalid GraphQL operations components. - -GraphQL Validations support is the pillar for the upcoming new features and the performance at scale of The Graph Network. - -It will also ensure determinism of query responses, a key requirement on The Graph Network. - -**Enabling the GraphQL Validations will break some existing queries** sent to The Graph API. - -To be compliant with those validations, please follow the migration guide. - -> ⚠️ If you do not migrate your queries before the validations are rolled out, they will return errors and possibly break your frontends/clients. - -## Migration guide - -You can use the CLI migration tool to find any issues in your GraphQL operations and fix them. Alternatively you can update the endpoint of your GraphQL client to use the `https://api-next.thegraph.com/subgraphs/name/$GITHUB_USER/$SUBGRAPH_NAME` endpoint. Testing your queries against this endpoint will help you find the issues in your queries. - -> Not all Subgraphs will need to be migrated, if you are using [GraphQL ESlint](https://the-guild.dev/graphql/eslint/docs) or [GraphQL Code Generator](https://the-guild.dev/graphql/codegen), they already ensure that your queries are valid. - -## Migration CLI tool - -**Most of the GraphQL operations errors can be found in your codebase ahead of time.** - -For this reason, we provide a smooth experience for validating your GraphQL operations during development or in CI. - -[`@graphql-validate/cli`](https://github.com/saihaj/graphql-validate) is a simple CLI tool that helps validate GraphQL operations against a given schema. - -### **Getting started** - -You can run the tool as follows: - -```bash -npx @graphql-validate/cli -s https://api-next.thegraph.com/subgraphs/name/$GITHUB_USER/$SUBGRAPH_NAME -o *.graphql -``` - -**Notes:** - -- Set or replace $GITHUB_USER, $SUBGRAPH_NAME with the appropriate values. Like: [`artblocks/art-blocks`](https://api.thegraph.com/subgraphs/name/artblocks/art-blocks) -- The preview schema URL (https://api-next.thegraph.com/) provided is heavily rate-limited and will be sunset once all users have migrated to the new version. **Do not use it in production.** -- Operations are identified in files with the following extensions [`.graphql`,](https://www.graphql-tools.com/docs/schema-loading#graphql-file-loader)[`.ts`, `.tsx`, `.js`, `jsx`](https://www.graphql-tools.com/docs/schema-loading#code-file-loader) (`-o` option). - -### CLI output - -The `[@graphql-validate/cli](https://github.com/saihaj/graphql-validate)` CLI tool will output any GraphQL operations errors as follows: - -![Error output from CLI](https://i.imgur.com/x1cBdhq.png) - -For each error, you will find a description, file path and position, and a link to a solution example (see the following section). - -## Run your local queries against the preview schema - -We provide an endpoint `https://api-next.thegraph.com/` that runs a `graph-node` version that has validations turned on. - -You can try out queries by sending them to: - -- `https://api-next.thegraph.com/subgraphs/id/` - -or - -- `https://api-next.thegraph.com/subgraphs/name//` - -To work on queries that have been flagged as having validation errors, you can use your favorite GraphQL query tool, like Altair or [GraphiQL](https://cloud.hasura.io/public/graphiql), and try your query out. Those tools will also mark those errors in their UI, even before you run it. - -## How to solve issues - -Below, you will find all the GraphQL validations errors that could occur on your existing GraphQL operations. - -### GraphQL variables, operations, fragments, or arguments must be unique - -We applied rules for ensuring that an operation includes a unique set of GraphQL variables, operations, fragments, and arguments. - -A GraphQL operation is only valid if it does not contain any ambiguity. - -To achieve that, we need to ensure that some components in your GraphQL operation must be unique. - -Here's an example of a few invalid operations that violates these rules: - -**Duplicate Query name (#UniqueOperationNamesRule)** - -```graphql -# The following operation violated the UniqueOperationName -# rule, since we have a single operation with 2 queries -# with the same name -query myData { - id -} - -query myData { - name -} -``` - -_Solution:_ - -```graphql -query myData { - id -} - -query myData2 { - # rename the second query - name -} -``` - -**Duplicate Fragment name (#UniqueFragmentNamesRule)** - -```graphql -# The following operation violated the UniqueFragmentName -# rule. -query myData { - id - ...MyFields -} - -fragment MyFields { - metadata -} - -fragment MyFields { - name -} -``` - -_Solution:_ - -```graphql -query myData { - id - ...MyFieldsName - ...MyFieldsMetadata -} - -fragment MyFieldsMetadata { # assign a unique name to fragment - metadata -} - -fragment MyFieldsName { # assign a unique name to fragment - name -} -``` - -**Duplicate variable name (#UniqueVariableNamesRule)** - -```graphql -# The following operation violates the UniqueVariables -query myData($id: String, $id: Int) { - id - ...MyFields -} -``` - -_Solution:_ - -```graphql -query myData($id: String) { - # keep the relevant variable (here: `$id: String`) - id - ...MyFields -} -``` - -**Duplicate argument name (#UniqueArgument)** - -```graphql -# The following operation violated the UniqueArguments -query myData($id: ID!) { - userById(id: $id, id: "1") { - id - } -} -``` - -_Solution:_ - -```graphql -query myData($id: ID!) { - userById(id: $id) { - id - } -} -``` - -**Duplicate anonymous query (#LoneAnonymousOperationRule)** - -Also, using two anonymous operations will violate the `LoneAnonymousOperation` rule due to conflict in the response structure: - -```graphql -# This will fail if executed together in -# a single operation with the following two queries: -query { - someField -} - -query { - otherField -} -``` - -_Solution:_ - -```graphql -query { - someField - otherField -} -``` - -Or name the two queries: - -```graphql -query FirstQuery { - someField -} - -query SecondQuery { - otherField -} -``` - -### Overlapping Fields - -A GraphQL selection set is considered valid only if it correctly resolves the eventual result set. - -If a specific selection set, or a field, creates ambiguity either by the selected field or by the arguments used, the GraphQL service will fail to validate the operation. - -Here are a few examples of invalid operations that violate this rule: - -**Conflicting fields aliases (#OverlappingFieldsCanBeMergedRule)** - -```graphql -# Aliasing fields might cause conflicts, either with -# other aliases or other fields that exist on the -# GraphQL schema. -query { - dogs { - name: nickname - name - } -} -``` - -_Solution:_ - -```graphql -query { - dogs { - name: nickname - originalName: name # alias the original `name` field - } -} -``` - -**Conflicting fields with arguments (#OverlappingFieldsCanBeMergedRule)** - -```graphql -# Different arguments might lead to different data, -# so we can't assume the fields will be the same. -query { - dogs { - doesKnowCommand(dogCommand: SIT) - doesKnowCommand(dogCommand: HEEL) - } -} -``` - -_Solution:_ - -```graphql -query { - dogs { - knowsHowToSit: doesKnowCommand(dogCommand: SIT) - knowsHowToHeel: doesKnowCommand(dogCommand: HEEL) - } -} -``` - -Also, in more complex use-cases, you might violate this rule by using two fragments that might cause a conflict in the eventually expected set: - -```graphql -query { - # Eventually, we have two "x" definitions, pointing - # to different fields! - ...A - ...B -} - -fragment A on Type { - x: a -} - -fragment B on Type { - x: b -} -``` - -In addition to that, client-side GraphQL directives like `@skip` and `@include` might lead to ambiguity, for example: - -```graphql -fragment mergeSameFieldsWithSameDirectives on Dog { - name @include(if: true) - name @include(if: false) -} -``` - -[You can read more about the algorithm here.](https://spec.graphql.org/June2018/#sec-Field-Selection-Merging) - -### Unused Variables or Fragments - -A GraphQL operation is also considered valid only if all operation-defined components (variables, fragments) are used. - -Here are a few examples for GraphQL operations that violates these rules: - -**Unused variable** (#NoUnusedVariablesRule) - -```graphql -# Invalid, because $someVar is never used. -query something($someVar: String) { - someData -} -``` - -_Solution:_ - -```graphql -query something { - someData -} -``` - -**Unused Fragment** (#NoUnusedFragmentsRule) - -```graphql -# Invalid, because fragment AllFields is never used. -query something { - someData -} - -fragment AllFields { # unused :( - name - age -} -``` - -_Solution:_ - -```graphql -# Invalid, because fragment AllFields is never used. -query something { - someData -} - -# remove the `AllFields` fragment -``` - -### Invalid or missing Selection-Set (#ScalarLeafsRule) - -Also, a GraphQL field selection is only valid if the following is validated: - -- An object field must-have selection set specified. -- An edge field (scalar, enum) must not have a selection set specified. - -Here are a few examples of violations of these rules with the following Schema: - -```graphql -type Image { - url: String! -} - -type User { - id: ID! - avatar: Image! -} - -type Query { - user: User! -} -``` - -**Invalid Selection-Set** - -```graphql -query { - user { - id { # Invalid, because "id" is of type ID and does not have sub-fields - - } - } -} -``` - -_Solution:_ - -```graphql -query { - user { - id - } -} -``` - -**Missing Selection-Set** - -```graphql -query { - user { - id - image # `image` requires a Selection-Set for sub-fields! - } -} -``` - -_Solution:_ - -```graphql -query { - user { - id - image { - src - } - } -} -``` - -### Incorrect Arguments values (#VariablesInAllowedPositionRule) - -GraphQL operations that pass hard-coded values to arguments must be valid, based on the value defined in the schema. - -Here are a few examples of invalid operations that violate these rules: - -```graphql -query purposes { - # If "name" is defined as "String" in the schema, - # this query will fail during validation. - purpose(name: 1) { - id - } -} - -# This might also happen when an incorrect variable is defined: - -query purposes($name: Int!) { - # If "name" is defined as `String` in the schema, - # this query will fail during validation, because the - # variable used is of type `Int` - purpose(name: $name) { - id - } -} -``` - -### Unknown Type, Variable, Fragment, or Directive (#UnknownX) - -The GraphQL API will raise an error if any unknown type, variable, fragment, or directive is used. - -Those unknown references must be fixed: - -- rename if it was a typo -- otherwise, remove - -### Fragment: invalid spread or definition - -**Invalid Fragment spread (#PossibleFragmentSpreadsRule)** - -A Fragment cannot be spread on a non-applicable type. - -Example, we cannot apply a `Cat` fragment to the `Dog` type: - -```graphql -query { - dog { - ...CatSimple - } -} - -fragment CatSimple on Cat { - # ... -} -``` - -**Invalid Fragment definition (#FragmentsOnCompositeTypesRule)** - -All Fragment must be defined upon (using `on ...`) a composite type, in short: object, interface, or union. - -The following examples are invalid, since defining fragments on scalars is invalid. - -```graphql -fragment fragOnScalar on Int { - # we cannot define a fragment upon a scalar (`Int`) - something -} - -fragment inlineFragOnScalar on Dog { - ... on Boolean { - # `Boolean` is not a subtype of `Dog` - somethingElse - } -} -``` - -### Directives usage - -**Directive cannot be used at this location (#KnownDirectivesRule)** - -Only GraphQL directives (`@...`) supported by The Graph API can be used. - -Here is an example with The GraphQL supported directives: - -```graphql -query { - dog { - name @include(true) - age @skip(true) - } -} -``` - -_Note: `@stream`, `@live`, `@defer` are not supported._ - -**Directive can only be used once at this location (#UniqueDirectivesPerLocationRule)** - -The directives supported by The Graph can only be used once per location. - -The following is invalid (and redundant): - -```graphql -query { - dog { - name @include(true) @include(true) - } -} -``` diff --git a/website/src/pages/ar/resources/migration-guides/migrate-from-alchemy.mdx b/website/src/pages/ar/resources/migration-guides/migrate-from-alchemy.mdx deleted file mode 100644 index e9d0d4b34a57..000000000000 --- a/website/src/pages/ar/resources/migration-guides/migrate-from-alchemy.mdx +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Migrate Your Subgraph From Alchemy to The Graph Network ---- - -## Migrate Your Subgraph From Alchemy to The Graph Network - -## Goal - -Migrate or deploy an existing Subgraph to **The Graph**. - -## Overview - -This guide walks you through: - -1. Preparing your environment and source code -2. Building and testing locally with **Graph Node Dev Mode (`gnd`)** -3. Deploying to [The Graph Studio](https://thegraph.com/studio/). - ---- - -## 1. Prerequisites - -You’ll need: - -- Your subgraph source code (`subgraph.yaml`, `schema.graphql`, `src/mapping.ts`) -- [Node.js](https://nodejs.org), Yarn, and `graph-cli`: - ```bash - npm install -g @graphprotocol/graph-cli - ``` -- A [The Graph Studio](https://thegraph.com/studio) account and access token - ---- - -## 2. Install and Authenticate with CLI - -Install and authenticate the CLI: - -```bash -npm install -g @graphprotocol/graph-cli -graph auth --studio -``` - ---- - -## 3. Prepare and Build Your Subgraph - -If you don’t already have a project, initialize one from a contract: - -```bash -graph init --from-contract -``` - -Then build it: - -```bash -yarn codegen && yarn build -``` - ---- - -## 4. Test Locally with Subgraph Dev Mode - -`gnd` lets you run a local Graph Node instance for rapid testing—no IPFS or manual database setup required. - -### Install `gnd` - -```bash -graph node install -gnd --version -``` - -### Run Locally - -From your subgraph directory: - -```bash -gnd --ethereum-rpc mainnet:http://localhost: --watch -``` - -Query your subgraph at:\ -`http://localhost:8000/subgraphs/name/subgraph-0/` - -> On Windows, include a PostgreSQL connection string: -> -> ```bash -> gnd --ethereum-rpc mainnet:http://localhost: > --postgres-url "postgresql://graph:yourpassword@localhost:5432/graph-node" -> ``` - -**Common Flags** | Flag | Description | |------|--------------| | `--watch` | Auto-redeploy when files change | | `--postgres-url` | Required on Windows | | `--ethereum-rpc` | RPC endpoint (required) | - ---- - -## 5. Deploy to The Graph Network - -After verifying locally, deploy your subgraph to Studio: - -```bash -graph deploy --studio -``` - -This command publishes your Subgraph to The Graph Network via Studio. - ---- - -## 6. Monitor and Manage Your Deployment - -Access your Subgraph dashboard to view logs, indexing progress, and query endpoints: - -**Dashboard:**\ -`https://thegraph.com/studio/` - -List all Subgraph deployments: - -```bash -graph subgraph list -``` - ---- - -## 7. Update Your Application - -Your subgraph’s GraphQL endpoint follows this format: - -``` -https://api.studio.thegraph.com/query/{user_id}/{subgraph_slug}/{version} -``` - -**Example:** - -``` -https://api.studio.thegraph.com/query/1234/my-subgraph/v1.0.0 -``` - -Replace your old endpoint with this one in your dApp or backend configuration. - ---- - -## 8. Verify Your Deployment - -Run a quick test query: - -```graphql -{ - transfers(first: 5) { - id - from - to - value - } -} -``` - -Ensure results match your expectations. - ---- - -## 9. Next Steps - -- [Monitor your subgraphs in Studio →](https://thegraph.com/studio) -- [Join The Graph community →](https://discord.gg/graphprotocol) - -> Learn more about **Graph Node Dev Mode** →\ -> [https://thegraph.com/docs/en/subgraphs/developing/creating/graph-node-dev/](https://thegraph.com/docs/en/subgraphs/developing/creating/graph-node-dev/) diff --git a/website/src/pages/ar/resources/roles/_meta.js b/website/src/pages/ar/resources/roles/_meta.js deleted file mode 100644 index 4a246af1e616..000000000000 --- a/website/src/pages/ar/resources/roles/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - delegating: 'Delegating', - curating: '', -} diff --git a/website/src/pages/ar/resources/roles/curating.mdx b/website/src/pages/ar/resources/roles/curating.mdx deleted file mode 100644 index e73785e92590..000000000000 --- a/website/src/pages/ar/resources/roles/curating.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Curating ---- - -Curators are critical to The Graph's decentralized economy. They use their knowledge of the web3 ecosystem to assess and signal on the Subgraphs that should be indexed by The Graph Network. Through Graph Explorer, Curators view network data to make signaling decisions. In turn, The Graph Network rewards Curators who signal on good quality Subgraphs with a share of the query fees those Subgraphs generate. The amount of GRT signaled is one of the key considerations for indexers when determining which Subgraphs to index. - -## What Does Signaling Mean for The Graph Network? - -Before consumers can query a Subgraph, it must be indexed. This is where curation comes into play. In order for Indexers to earn substantial query fees on quality Subgraphs, they need to know what Subgraphs to index. When Curators signal on a Subgraph, it lets Indexers know that a Subgraph is in demand and of sufficient quality that it should be indexed. - -Curators make The Graph network efficient and [signaling](#how-to-signal) is the process that Curators use to let Indexers know that a Subgraph is good to index. Indexers can trust the signal from a Curator because upon signaling, Curators mint a curation share for the Subgraph, entitling them to a portion of future query fees that the Subgraph drives. - -Curator signals are represented as ERC20 tokens called Graph Curation Shares (GCS). Those that want to earn more query fees should signal their GRT to Subgraphs that they predict will generate a strong flow of fees to the network. Curators cannot be slashed for bad behavior, but there is a deposit tax on Curators to disincentivize poor decision-making that could harm the integrity of the network. Curators will also earn fewer query fees if they curate on a low-quality Subgraph because there will be fewer queries to process or fewer Indexers to process them. - -The [Sunrise Upgrade Indexer](/archived/sunrise/#what-is-the-upgrade-indexer) ensures the indexing of all Subgraphs, signaling GRT on a particular Subgraph will draw more indexers to it. This incentivization of additional Indexers through curation aims to enhance the quality of service for queries by reducing latency and enhancing network availability. - -When signaling, Curators can decide to signal on a specific version of the Subgraph or to signal using auto-migrate. If they signal using auto-migrate, a curator’s shares will always be updated to the latest version published by the developer. If they decide to signal on a specific version instead, shares will always stay on this specific version. - -If you require assistance with curation to enhance the quality of service, please send a request to the Edge & Node team at support@thegraph.zendesk.com and specify the Subgraphs you need assistance with. - -Indexers can find Subgraphs to index based on curation signals they see in Graph Explorer (screenshot below). - -![Explorer Subgraphs](/img/explorer-subgraphs.png) - -## كيفية الإشارة - -Within the Curator tab in Graph Explorer, curators will be able to signal and unsignal on certain Subgraphs based on network stats. For a step-by-step overview of how to do this in Graph Explorer, [click here.](/subgraphs/explorer/) - -A curator can choose to signal on a specific Subgraph version, or they can choose to have their signal automatically migrate to the newest production build of that Subgraph. Both are valid strategies and come with their own pros and cons. - -Signaling on a specific version is especially useful when one Subgraph is used by multiple dapps. One dapp might need to regularly update the Subgraph with new features. Another dapp might prefer to use an older, well-tested Subgraph version. Upon initial curation, a 1% standard tax is incurred. - -Having your signal automatically migrate to the newest production build can be valuable to ensure you keep accruing query fees. Every time you curate, a 1% curation tax is incurred. You will also pay a 0.5% curation tax on every migration. Subgraph developers are discouraged from frequently publishing new versions - they have to pay a 0.5% curation tax on all auto-migrated curation shares. - -> **Note**: The first address to signal a particular Subgraph is considered the first curator and will have to do much more gas-intensive work than the rest of the following curators because the first curator initializes the curation share tokens, and also transfers tokens into The Graph proxy. - -## Withdrawing your GRT - -Curators have the option to withdraw their signaled GRT at any time. - -Unlike the process of delegating, if you decide to withdraw your signaled GRT you will not have to wait for a cooldown period and will receive the entire amount (minus the 1% curation tax). - -Once a curator withdraws their signal, indexers may choose to keep indexing the Subgraph, even if there's currently no active GRT signaled. - -However, it is recommended that curators leave their signaled GRT in place not only to receive a portion of the query fees, but also to ensure reliability and uptime of the Subgraph. - -## المخاطر - -1. سوق الاستعلام يعتبر حديثا في The Graph وهناك خطر من أن يكون٪ APY الخاص بك أقل مما تتوقع بسبب ديناميكيات السوق الناشئة. -2. Curation Fee - when a curator signals GRT on a Subgraph, they incur a 1% curation tax. This fee is burned. -3. (Ethereum only) When curators burn their shares to withdraw GRT, the GRT valuation of the remaining shares will be reduced. Be aware that in some cases, curators may decide to burn their shares **all at once**. This situation may be common if a dapp developer stops versioning/improving and querying their Subgraph or if a Subgraph fails. As a result, remaining curators might only be able to withdraw a fraction of their initial GRT. For a network role with a lower risk profile, see [Delegators](/resources/roles/delegating/delegating/). -4. A Subgraph can fail due to a bug. A failed Subgraph does not accrue query fees. As a result, you’ll have to wait until the developer fixes the bug and deploys a new version. - - If you are subscribed to the newest version of a Subgraph, your shares will auto-migrate to that new version. This will incur a 0.5% curation tax. - - If you have signaled on a specific Subgraph version and it fails, you will have to manually burn your curation shares. You can then signal on the new Subgraph version, thus incurring a 1% curation tax. - -## الأسئلة الشائعة حول التنسيق - -### 1. ما هي النسبة المئوية لرسوم الاستعلام التي يكسبها المنسقون؟ - -By signalling on a Subgraph, you will earn a share of all the query fees that the Subgraph generates. 10% of all query fees go to the Curators pro-rata to their curation shares. This 10% is subject to governance. - -### 2. How do I decide which Subgraphs are high quality to signal on? - -Finding high-quality Subgraphs is a complex task, but it can be approached in many different ways. As a Curator, you want to look for trustworthy Subgraphs that are driving query volume. A trustworthy Subgraph may be valuable if it is complete, accurate, and supports a dapp’s data needs. A poorly architected Subgraph might need to be revised or re-published, and can also end up failing. It is critical for Curators to review a Subgraph’s architecture or code in order to assess if a Subgraph is valuable. As a result: - -- Curators can use their understanding of a network to try and predict how an individual Subgraph may generate a higher or lower query volume in the future -- Curators should also understand the metrics that are available through Graph Explorer. Metrics like past query volume and who the Subgraph developer is can help determine whether or not a Subgraph is worth signalling on. - -### 3. What’s the cost of updating a Subgraph? - -Migrating your curation shares to a new Subgraph version incurs a curation tax of 1%. Curators can choose to subscribe to the newest version of a Subgraph. When curator shares get auto-migrated to a new version, Curators will also pay half curation tax, ie. 0.5%, because upgrading Subgraphs is an onchain action that costs gas. - -### 4. How often can I update my Subgraph? - -It’s suggested that you don’t update your Subgraphs too frequently. See the question above for more details. - -### 5. هل يمكنني بيع أسهم التنسيق الخاصة بي؟ - -Curation shares cannot be "bought" or "sold" like other ERC20 tokens that you may be familiar with. They can only be minted (created) or burned (destroyed). - -As a Curator on Arbitrum, you are guaranteed to get back the GRT you initially deposited (minus the tax). - -### 6. Am I eligible for a curation grant? - -Curation grants are determined individually on a case-by-case basis. If you need assistance with curation, please send a request to support@thegraph.zendesk.com. - -لازلت مشوشا؟ راجع فيديو دليل التنسيق أدناه: - - diff --git a/website/src/pages/ar/resources/roles/delegating/_meta.js b/website/src/pages/ar/resources/roles/delegating/_meta.js deleted file mode 100644 index 8d6514a7dc23..000000000000 --- a/website/src/pages/ar/resources/roles/delegating/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - delegating: '', - undelegating: 'Undelegating', -} diff --git a/website/src/pages/ar/resources/roles/delegating/delegating.mdx b/website/src/pages/ar/resources/roles/delegating/delegating.mdx deleted file mode 100644 index 4968e2975020..000000000000 --- a/website/src/pages/ar/resources/roles/delegating/delegating.mdx +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Delegating ---- - -To start delegating right away, check out [delegate on the graph](https://thegraph.com/explorer/delegate?chain=arbitrum-one). - -## نظره عامة - -Delegators earn GRT by delegating GRT to Indexers, which helps network security and functionality. - - - -## Benefits of Delegating - -- Strengthen the network’s security and scalability by supporting Indexers. -- Earn a portion of rewards generated by the Indexers. - -## How Does Delegation Work? - -Delegators earn GRT rewards from the Indexer(s) they choose to delegate their GRT to. - -An Indexer's ability to process queries and earn rewards depends on three key factors: - -1. The Indexer's Self-Stake (GRT staked by the Indexer). -2. The total GRT delegated to them by Delegators. -3. The price the Indexer sets for queries. - -The more GRT staked and delegated to an Indexer, the more queries they can serve, leading to higher potential rewards for both the Delegator and Indexer. - -### What is Delegation Capacity? - -Delegation Capacity refers to the maximum amount of GRT an Indexer can accept from Delegators, based on the Indexer's Self-Stake. - -The Graph Network includes a delegation ratio of 16, meaning an Indexer can accept up to 16 times their Self-Stake in delegated GRT. - -For example, if an Indexer has a Self-Stake of 1M GRT, their Delegation Capacity is 16M. - -### Why Does Delegation Capacity Matter? - -If an Indexer exceeds their Delegation Capacity, rewards for all Delegators become diluted because the excess delegated GRT cannot be used effectively within the protocol. - -This makes it crucial for Delegators to evaluate an Indexer's current Delegation Capacity before selecting an Indexer. - -Indexers can increase their Delegation Capacity by increasing their Self-Stake, thereby raising the limit for delegated tokens. - -## Delegation on The Graph - - - -> Please note this guide does not cover steps such as setting up MetaMask. The Ethereum community provides a [comprehensive resource regarding wallets](https://ethereum.org/en/wallets/). - -There are two sections in this guide: - -- مخاطر تفويض التوكن في شبكة The Graph -- كيفية حساب العوائد المتوقعة كمفوض - -## Delegation Risks - -القائمة أدناه هي المخاطر الرئيسية لكونك مفوضا في البروتوكول. - -### The Delegation Tax - -Delegators cannot be slashed for bad behavior, but there is a tax on Delegators to disincentivize poor decision-making that could harm the integrity of the network. - -As a Delegator, it's important to understand the following: - -- You will be charged 0.5% every time you delegate. This means that if you delegate 1,000 GRT, you will automatically burn 5 GRT. - -- In order to be safe, you should calculate your potential return when delegating to an Indexer. For example, you might calculate how many days it will take before you have earned back the 0.5% tax on your delegation. - -### The Undelegation Period - -When a Delegator chooses to undelegate, their tokens are subject to a 28-day undelegation period. - -This means they cannot transfer their tokens or earn any rewards for 28 days. - -After the undelegation period, GRT will return to your crypto wallet. - -### Why is this important? - -If you choose an Indexer that is not trustworthy or not doing a good job, you will want to undelegate. This means you will be losing opportunities to earn rewards. - -As a result, it’s recommended that you choose an Indexer wisely. - -![Delegation unbonding. Note the 0.5% fee in the Delegation UI, as well as the 28 day unbonding period.](/img/Delegation-Unbonding.png) - -#### Delegation Parameters - -In order to understand how to choose a trustworthy Indexer, you need to understand the Delegation Parameters. - -- **Indexing Reward Cut** - The portion of the rewards the Indexer will keep for themselves. - - If an Indexer's reward cut is set to 100%, as a Delegator, you will get 0 indexing rewards. - - If it is set to 80%, as a Delegator, you will receive 20%. - -![Indexing Reward Cut. The top Indexer is giving Delegators 90% of the rewards. The middle one is giving Delegators 20%. The bottom one is giving Delegators ~83%.](/img/Indexing-Reward-Cut.png) - -- **Query Fee Cut** - This is just like the Indexing Reward Cut, but it applies to returns on the query fees that the Indexer collects. - -- It is highly recommended that you explore [The Graph Discord](https://discord.gg/graphprotocol) to determine which Indexers have the best social and technical reputations. - -- Many Indexers are active in Discord and will be happy to answer your questions. - -## Calculating Delegators Expected Return - -> Calculate the ROI on your delegation [here](https://thegraph.com/explorer/delegate?chain=arbitrum-one). - -A Delegator must consider a variety of factors to determine a return: - -An Indexer's ability to use the delegated GRT available to them impacts their rewards. - -If an Indexer does not allocate all the GRT at their disposal, they may miss out on maximizing potential earnings for both themselves and their Delegators. - -Indexers can close an allocation and collect rewards at any time within the 1 to 28-day window. However, if rewards are not promptly collected, the total rewards may appear lower, even if a percentage of rewards remain unclaimed. - -### النظر في اقتطاع رسوم الاستعلام query fee cut واقتطاع رسوم الفهرسة indexing fee cut - -You should choose an Indexer that is transparent about setting their Query Fee and Indexing Fee Cuts. - -The formula is: - -![Delegation Image 3](/img/Delegation-Reward-Formula.png) - -### النظر في أسهم تفويض المفهرس - - - -Delegators should consider the proportion of the Delegation Pool they own. - -All delegation rewards are shared evenly, with a pool rebalancing based on the amount the Delegator deposited into the pool. - -This gives the Delegator a share of the pool: - -![Share formula](/img/Share-Forumla.png) - -> The formula above shows that it is possible for an Indexer offering only 20% to Delegators to provide a better reward than an Indexer giving 90%. Simply do the math to determine the best reward. - -## Delegator FAQs and Bugs - -### MetaMask "Pending Transaction" Bug - -At times, attempts to delegate to Indexers via MetaMask can fail and result in prolonged periods of "Pending" or "Queued" transaction attempts. - -A simple resolution to this bug is to restart the browser (e.g., using "abort:restart" in the address bar), which will cancel all previous attempts without gas being subtracted from the wallet. Several users who have encountered this issue have reported successful transactions after restarting their browser and attempting to delegate. diff --git a/website/src/pages/ar/resources/roles/delegating/undelegating.mdx b/website/src/pages/ar/resources/roles/delegating/undelegating.mdx deleted file mode 100644 index 4889d7370407..000000000000 --- a/website/src/pages/ar/resources/roles/delegating/undelegating.mdx +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Undelegating ---- - -Learn how to withdraw your delegated tokens through [Graph Explorer](https://thegraph.com/explorer) or [Arbiscan](https://arbiscan.io/). - -> To avoid this in the future, it's recommended that you select an Indexer wisely. To learn how to select and Indexer, check out the Delegate section in Graph Explorer. - -## How to Withdraw Using Graph Explorer - -### Step-by-Step - -1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio. - -2. Click on your profile. You can find it on the top right corner of the page. - - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead. - -3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to. - -4. Click on the Indexer from which you wish to withdraw your tokens. - - Make sure to note the specific Indexer, as you will need to find them again to withdraw. - -5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below: - - ![Undelegate button](/img/undelegate-button.png) - -6. After approximately [28 epochs](https://thegraph.com/explorer/network/epochs?chain=arbitrum-one) (28 days), return to the Delegate section and locate the specific Indexer you undelegated from. - -7. Once you find the Indexer, click on the three dots next to them and proceed to withdraw all your tokens. - -## How to Withdraw Using Arbiscan - -> This process is primarily useful if the UI in Graph Explorer experiences issues. - -### Step-by-Step - -1. Find your delegation transaction on Arbiscan. - - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a) - -2. Navigate to "Transaction Action" where you can find the staking extension contract: - - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03) - -3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png) - -4. Scroll to the bottom and copy the Contract ABI. There should be a small button next to it that allows you to copy everything. - -5. Click on your profile button in the top right corner of the page. If you haven't created an account yet, please do so. - -6. Once you're in your profile, click on "Custom ABI”. - -7. Paste the custom ABI you copied from the staking extension contract, and add the custom ABI for the address: 0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03 (**sample address**) - -8. Go back to the [staking extension contract](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03#writeProxyContract). Now, call the `unstake` function in the [Write as Proxy tab](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03#writeProxyContract), which has been added thanks to the custom ABI, with the number of tokens that you delegated. - -9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot: - - ![Both of the addresses needed](/img/get-delegate.png) - - This will return three numbers. The first number is the amount you can unstake. - -10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function. - -11. You can see how much you will have available to withdraw by calling the `getWithdrawableDelegatedTokens` on Read Custom and passing it your delegation tuple. See screenshot below: - - ![Call `getWithdrawableDelegatedTokens` to see amount of tokens that can be withdrawn](/img/withdraw-available.png) - -## مصادر إضافية - -To delegate successfully, review the [delegating documentation](/resources/roles/delegating/delegating/) and check out the delegate section in Graph Explorer. diff --git a/website/src/pages/ar/resources/subgraph-studio-faq.mdx b/website/src/pages/ar/resources/subgraph-studio-faq.mdx deleted file mode 100644 index ec613ed68df2..000000000000 --- a/website/src/pages/ar/resources/subgraph-studio-faq.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: الأسئلة الشائعة حول الفرعيةرسم بياني استوديو ---- - -## 1. What is Subgraph Studio? - -[Subgraph Studio](https://thegraph.com/studio/) is a dapp for creating, managing, and publishing Subgraphs and API keys. - -## 2. How do I create an API Key? - -To create an API, navigate to Subgraph Studio and connect your wallet. You will be able to click the API keys tab at the top. There, you will be able to create an API key. - -## 3. Can I create multiple API Keys? - -Yes! You can create multiple API Keys to use in different projects. Check out the link [here](https://thegraph.com/studio/apikeys/). - -## 4. How do I restrict a domain for an API Key? - -After creating an API Key, in the Security section, you can define the domains that can query a specific API Key. - -## 5. Can I transfer my Subgraph to another owner? - -Yes, Subgraphs that have been published to Arbitrum One can be transferred to a new wallet or a Multisig. You can do so by clicking the three dots next to the 'Publish' button on the Subgraph's details page and selecting 'Transfer ownership'. - -Note that you will no longer be able to see or edit the Subgraph in Studio once it has been transferred. - -## 6. How do I find query URLs for Subgraphs if I’m not the developer of the Subgraph I want to use? - -You can find the query URL of each Subgraph in the Subgraph Details section of Graph Explorer. When you click on the “Query” button, you will be directed to a pane wherein you can view the query URL of the Subgraph you’re interested in. You can then replace the `` placeholder with the API key you wish to leverage in Subgraph Studio. - -Remember that you can create an API key and query any Subgraph published to the network, even if you build a Subgraph yourself. These queries via the new API key, are paid queries as any other on the network. diff --git a/website/src/pages/ar/resources/tokenomics.mdx b/website/src/pages/ar/resources/tokenomics.mdx deleted file mode 100644 index fa0f098b22c8..000000000000 --- a/website/src/pages/ar/resources/tokenomics.mdx +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: اقتصاد التوكن (Tokenomics) لشبكة الغراف -sidebarTitle: Tokenomics -description: The Graph Network is incentivized by powerful tokenomics. Here’s how GRT, The Graph’s native work utility token, works. ---- - -## نظره عامة - -The Graph is a decentralized protocol that enables easy access to blockchain data. It indexes blockchain data similarly to how Google indexes the web. If you've used a dapp that retrieves data from a Subgraph, you've probably interacted with The Graph. Today, thousands of [popular dapps](https://thegraph.com/explorer) in the web3 ecosystem use The Graph. - -## Specifics - -The Graph's model is akin to a B2B2C model, but it's driven by a decentralized network where participants collaborate to provide data to end users in exchange for GRT rewards. GRT is the utility token for The Graph. It coordinates and incentivizes the interaction between data providers and consumers within the network. - -The Graph plays a vital role in making blockchain data more accessible and supports a marketplace for its exchange. To learn more about The Graph's pay-for-what-you-need model, check out its [free and growth plans](/subgraphs/billing/). - -- GRT Token Address on Mainnet: [0xc944e90c64b2c07662a292be6244bdf05cda44a7](https://etherscan.io/token/0xc944e90c64b2c07662a292be6244bdf05cda44a7) - -- GRT Token Address on Arbitrum One: [0x9623063377AD1B27544C965cCd7342f7EA7e88C7](https://arbiscan.io/token/0x9623063377ad1b27544c965ccd7342f7ea7e88c7) - -## The Roles of Network Participants - -There are four primary network participants: - -1. Delegators - Delegate GRT to Indexers & secure the network - -2. Curators - Find the best Subgraphs for Indexers - -3. Developers - Build & query Subgraphs - -4. المفهرسون (Indexers) - العمود الفقري لبيانات blockchain - -Fishermen and Arbitrators are also integral to the network's success through other contributions, supporting the work of the other primary participant roles. For more information about network roles, [read this article](https://thegraph.com/blog/the-graph-grt-token-economics/). - -![Tokenomics diagram](/img/updated-tokenomics-image.png) - -## Delegators (Passively earn GRT) - -Indexers are delegated GRT by Delegators, increasing the Indexer’s stake in Subgraphs on the network. In return, Delegators earn a percentage of all query fees and indexing rewards from the Indexer. Each Indexer sets the cut that will be rewarded to Delegators independently, creating competition among Indexers to attract Delegators. Most Indexers offer between 9-12% annually. - -For example, if a Delegator were to delegate 15k GRT to an Indexer offering 10%, the Delegator would receive ~1,500 GRT in rewards annually. - -There is a 0.5% delegation tax which is burned whenever a Delegator delegates GRT on the network. If a Delegator chooses to withdraw their delegated GRT, the Delegator must wait for the 28-epoch unbonding period. Each epoch is 6,646 blocks, which means 28 epochs ends up being approximately 26 days. - -If you're reading this, you're capable of becoming a Delegator right now by heading to the [network participants page](https://thegraph.com/explorer/participants/indexers), and delegating GRT to an Indexer of your choice. - -## Curators (Earn GRT) - -Curators identify high-quality Subgraphs and "curate" them (i.e., signal GRT on them) to earn curation shares, which guarantee a percentage of all future query fees generated by the Subgraph. While any independent network participant can be a Curator, typically Subgraph developers are among the first Curators for their own Subgraphs because they want to ensure their Subgraph is indexed. - -Subgraph developers are encouraged to curate their Subgraph with at least 3,000 GRT. However, this number may be impacted by network activity and community participation. - -Curators pay a 1% curation tax when they curate a new Subgraph. This curation tax is burned, decreasing the supply of GRT. - -## Developers - -Developers build and query Subgraphs to retrieve blockchain data. Since Subgraphs are open source, developers can query existing Subgraphs to load blockchain data into their dapps. Developers pay for queries they make in GRT, which is distributed to network participants. - -### Creating a Subgraph - -Developers can [create a Subgraph](/developing/creating-a-subgraph/) to index data on the blockchain. Subgraphs are instructions for Indexers about which data should be served to consumers. - -Once developers have built and tested their Subgraph, they can [publish their Subgraph](/subgraphs/developing/publishing/publishing-a-subgraph/) on The Graph's decentralized network. - -### Querying an existing Subgraph - -Once a Subgraph is [published](/subgraphs/developing/publishing/publishing-a-subgraph/) to The Graph's decentralized network, anyone can create an API key, add GRT to their billing balance, and query the Subgraph. - -Subgraphs are [queried using GraphQL](/subgraphs/querying/introduction/), and the query fees are paid for with GRT in [Subgraph Studio](https://thegraph.com/studio/). Query fees are distributed to network participants based on their contributions to the protocol. - -1% of the query fees paid to the network are burned. - -## Indexers (Earn GRT) - -Indexers are the backbone of The Graph. They operate independent hardware and software powering The Graph’s decentralized network. Indexers serve data to consumers based on instructions from Subgraphs. - -Indexers can earn GRT rewards in two ways: - -1. **Query fees**: GRT paid by developers or users for Subgraph data queries. Query fees are directly distributed to Indexers according to the exponential rebate function (see GIP [here](https://forum.thegraph.com/t/gip-0051-exponential-query-fee-rebates-for-indexers/4162)). - -2. **Indexing rewards**: the 3% annual issuance is distributed to Indexers based on the number of Subgraphs they are indexing. These rewards incentivize Indexers to index Subgraphs, occasionally before the query fees begin, to accrue and submit Proofs of Indexing (POIs), verifying that they have indexed data accurately. - -Each Subgraph is allotted a portion of the total network token issuance, based on the amount of the Subgraph’s curation signal. That amount is then rewarded to Indexers based on their allocated stake on the Subgraph. - -In order to run an indexing node, Indexers must self-stake 100,000 GRT or more with the network. Indexers are incentivized to self-stake GRT in proportion to the amount of queries they serve. - -Indexers can increase their GRT allocations on Subgraphs by accepting GRT delegation from Delegators, and they can accept up to 16 times their initial self-stake. If an Indexer becomes "over-delegated" (i.e., more than 16 times their initial self-stake), they will not be able to use the additional GRT from Delegators until they increase their self-stake in the network. - -The amount of rewards an Indexer receives can vary based on the Indexer's self-stake, accepted delegation, quality of service, and many more factors. - -## Token Supply: Burning & Issuance - -The initial token supply is 10 billion GRT, with a target of 3% new issuance annually to reward Indexers for allocating stake on Subgraphs. This means that the total supply of GRT tokens will increase by 3% each year as new tokens are issued to Indexers for their contribution to the network. - -The Graph is designed with multiple burning mechanisms to offset new token issuance. Approximately 1% of the GRT supply is burned annually through various activities on the network, and this number has been increasing as network activity continues to grow. These burning activities include a 0.5% delegation tax whenever a Delegator delegates GRT to an Indexer, a 1% curation tax when Curators signal on a Subgraph, and a 1% of query fees for blockchain data. - -![Total burned GRT](/img/total-burned-grt.jpeg) - -In addition to these regularly occurring burning activities, the GRT token also has a slashing mechanism in place to penalize malicious or irresponsible behavior by Indexers. If an Indexer is slashed, 50% of their indexing rewards for the epoch are burned (while the other half goes to the fisherman), and their self-stake is slashed by 2.5%, with half of this amount being burned. This helps to ensure that Indexers have a strong incentive to act in the best interests of the network and to contribute to its security and stability. - -## Improving the Protocol - -The Graph Network is ever-evolving and improvements to the economic design of the protocol are constantly being made to provide the best experience for all network participants. The Graph Council oversees protocol changes and community members are encouraged to participate. Get involved with protocol improvements in [The Graph Forum](https://forum.thegraph.com/). diff --git a/website/src/pages/ar/subgraphs/_meta-titles.json b/website/src/pages/ar/subgraphs/_meta-titles.json deleted file mode 100644 index 3fd405eed29a..000000000000 --- a/website/src/pages/ar/subgraphs/_meta-titles.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "querying": "Querying", - "developing": "Developing", - "guides": "How-to Guides", - "best-practices": "Best Practices" -} diff --git a/website/src/pages/ar/subgraphs/_meta.js b/website/src/pages/ar/subgraphs/_meta.js deleted file mode 100644 index 45841d5f3355..000000000000 --- a/website/src/pages/ar/subgraphs/_meta.js +++ /dev/null @@ -1,13 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - 'quick-start': '', - explorer: '', - querying: titles.querying ?? '', - developing: titles.developing ?? '', - billing: '', - guides: titles.guides, - 'best-practices': titles['best-practices'], - 'fair-use-policy': '', - 'upgrade-indexer': '', -} diff --git a/website/src/pages/ar/subgraphs/best-practices/_meta.js b/website/src/pages/ar/subgraphs/best-practices/_meta.js deleted file mode 100644 index fab0571f4d0c..000000000000 --- a/website/src/pages/ar/subgraphs/best-practices/_meta.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - pruning: '', - derivedfrom: '', - 'immutable-entities-bytes-as-ids': '', - 'avoid-eth-calls': '', - timeseries: '', - 'grafting-hotfix': '', -} diff --git a/website/src/pages/ar/subgraphs/best-practices/avoid-eth-calls.mdx b/website/src/pages/ar/subgraphs/best-practices/avoid-eth-calls.mdx deleted file mode 100644 index 07249c97dd2a..000000000000 --- a/website/src/pages/ar/subgraphs/best-practices/avoid-eth-calls.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Subgraph Best Practice 4 - Improve Indexing Speed by Avoiding eth_calls -sidebarTitle: Avoiding eth_calls ---- - -## TLDR - -`eth_calls` are calls that can be made from a Subgraph to an Ethereum node. These calls take a significant amount of time to return data, slowing down indexing. If possible, design smart contracts to emit all the data you need so you don’t need to use `eth_calls`. - -## Why Avoiding `eth_calls` Is a Best Practice - -Subgraphs are optimized to index event data emitted from smart contracts. A Subgraph can also index the data coming from an `eth_call`, however, this can significantly slow down Subgraph indexing as `eth_calls` require making external calls to smart contracts. The responsiveness of these calls relies not on the Subgraph but on the connectivity and responsiveness of the Ethereum node being queried. By minimizing or eliminating eth_calls in our Subgraphs, we can significantly improve our indexing speed. - -### What Does an eth_call Look Like? - -`eth_calls` are often necessary when the data required for a Subgraph is not available through emitted events. For example, consider a scenario where a Subgraph needs to identify whether ERC20 tokens are part of a specific pool, but the contract only emits a basic `Transfer` event and does not emit an event that contains the data that we need: - -```yaml -event Transfer(address indexed from, address indexed to, uint256 value); -``` - -Suppose the tokens' pool membership is determined by a state variable named `getPoolInfo`. In this case, we would need to use an `eth_call` to query this data: - -```typescript -import { Address } from '@graphprotocol/graph-ts' -import { ERC20, Transfer } from '../generated/ERC20/ERC20' -import { TokenTransaction } from '../generated/schema' - -export function handleTransfer(event: Transfer): void { - let transaction = new TokenTransaction(event.transaction.hash.toHex()) - - // Bind the ERC20 contract instance to the given address: - let instance = ERC20.bind(event.address) - - // Retrieve pool information via eth_call - let poolInfo = instance.getPoolInfo(event.params.to) - - transaction.pool = poolInfo.toHexString() - transaction.from = event.params.from.toHexString() - transaction.to = event.params.to.toHexString() - transaction.value = event.params.value - - transaction.save() -} -``` - -This is functional, however is not ideal as it slows down our Subgraph’s indexing. - -## How to Eliminate `eth_calls` - -Ideally, the smart contract should be updated to emit all necessary data within events. For instance, modifying the smart contract to include pool information in the event could eliminate the need for `eth_calls`: - -``` -event TransferWithPool(address indexed from, address indexed to, uint256 value, bytes32 indexed poolInfo); -``` - -With this update, the Subgraph can directly index the required data without external calls: - -```typescript -import { Address } from '@graphprotocol/graph-ts' -import { ERC20, TransferWithPool } from '../generated/ERC20/ERC20' -import { TokenTransaction } from '../generated/schema' - -export function handleTransferWithPool(event: TransferWithPool): void { - let transaction = new TokenTransaction(event.transaction.hash.toHex()) - - transaction.pool = event.params.poolInfo.toHexString() - transaction.from = event.params.from.toHexString() - transaction.to = event.params.to.toHexString() - transaction.value = event.params.value - - transaction.save() -} -``` - -This is much more performant as it has eliminated the need for `eth_calls`. - -## How to Optimize `eth_calls` - -If modifying the smart contract is not possible and `eth_calls` are required, read “[Improve Subgraph Indexing Performance Easily: Reduce eth_calls](https://thegraph.com/blog/improve-subgraph-performance-reduce-eth-calls/)” by Simon Emanuel Schmid to learn various strategies on how to optimize `eth_calls`. - -## Reducing the Runtime Overhead of `eth_calls` - -For the `eth_calls` that can not be eliminated, the runtime overhead they introduce can be minimized by declaring them in the manifest. When `graph-node` processes a block it performs all declared `eth_calls` in parallel before handlers are run. Calls that are not declared are executed sequentially when handlers run. The runtime improvement comes from performing calls in parallel rather than sequentially - that helps reduce the total time spent in calls but does not eliminate it completely. - -Currently, `eth_calls` can only be declared for event handlers. In the manifest, write - -```yaml -event: TransferWithPool(address indexed, address indexed, uint256, bytes32 indexed) -handler: handleTransferWithPool -calls: - ERC20.poolInfo: ERC20[event.address].getPoolInfo(event.params.to) -``` - -The portion highlighted in yellow is the call declaration. The part before the colon is simply a text label that is only used for error messages. The part after the colon has the form `Contract[address].function(params)`. Permissible values for address and params are `event.address` and `event.params.`. - -The handler itself accesses the result of this `eth_call` exactly as in the previous section by binding to the contract and making the call. graph-node caches the results of declared `eth_calls` in memory and the call from the handler will retrieve the result from this in memory cache instead of making an actual RPC call. - -Note: Declared eth_calls can only be made in Subgraphs with specVersion >= 1.2.0. - -## Conclusion - -You can significantly improve indexing performance by minimizing or eliminating `eth_calls` in your Subgraphs. - -## Subgraph Best Practices 1-6 - -1. [Improve Query Speed with Subgraph Pruning](/subgraphs/best-practices/pruning/) - -2. [Improve Indexing and Query Responsiveness by Using @derivedFrom](/subgraphs/best-practices/derivedfrom/) - -3. [Improve Indexing and Query Performance by Using Immutable Entities and Bytes as IDs](/subgraphs/best-practices/immutable-entities-bytes-as-ids/) - -4. [Improve Indexing Speed by Avoiding `eth_calls`](/subgraphs/best-practices/avoid-eth-calls/) - -5. [Simplify and Optimize with Timeseries and Aggregations](/subgraphs/best-practices/timeseries/) - -6. [Use Grafting for Quick Hotfix Deployment](/subgraphs/best-practices/grafting-hotfix/) diff --git a/website/src/pages/ar/subgraphs/best-practices/derivedfrom.mdx b/website/src/pages/ar/subgraphs/best-practices/derivedfrom.mdx deleted file mode 100644 index 093eb29255ab..000000000000 --- a/website/src/pages/ar/subgraphs/best-practices/derivedfrom.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Subgraph Best Practice 2 - Improve Indexing and Query Responsiveness By Using @derivedFrom -sidebarTitle: Arrays with @derivedFrom ---- - -## TLDR - -Arrays in your schema can really slow down a Subgraph's performance as they grow beyond thousands of entries. If possible, the `@derivedFrom` directive should be used when using arrays as it prevents large arrays from forming, simplifies handlers, and reduces the size of individual entities, improving indexing speed and query performance significantly. - -## How to Use the `@derivedFrom` Directive - -You just need to add a `@derivedFrom` directive after your array in your schema. Like this: - -```graphql -comments: [Comment!]! @derivedFrom(field: "post") -``` - -`@derivedFrom` creates efficient one-to-many relationships, enabling an entity to dynamically associate with multiple related entities based on a field in the related entity. This approach removes the need for both sides of the relationship to store duplicate data, making the Subgraph more efficient. - -### Example Use Case for `@derivedFrom` - -An example of a dynamically growing array is a blogging platform where a “Post” can have many “Comments”. - -Let’s start with our two entities, `Post` and `Comment` - -Without optimization, you could implement it like this with an array: - -```graphql -type Post @entity { - id: Bytes! - title: String! - content: String! - comments: [Comment!]! -} - -type Comment @entity { - id: Bytes! - content: String! -} -``` - -Arrays like these will effectively store extra Comments data on the Post side of the relationship. - -Here’s what an optimized version looks like using `@derivedFrom`: - -```graphql -type Post @entity { - id: Bytes! - title: String! - content: String! - comments: [Comment!]! @derivedFrom(field: "post") -} - -type Comment @entity { - id: Bytes! - content: String! - post: Post! -} -``` - -Just by adding the `@derivedFrom` directive, this schema will only store the “Comments” on the “Comments” side of the relationship and not on the “Post” side of the relationship. Arrays are stored across individual rows, which allows them to expand significantly. This can lead to particularly large sizes if their growth is unbounded. - -This will not only make our Subgraph more efficient, but it will also unlock three features: - -1. We can query the `Post` and see all of its comments. - -2. We can do a reverse lookup and query any `Comment` and see which post it comes from. - -3. We can use [Derived Field Loaders](/subgraphs/developing/creating/graph-ts/api/#looking-up-derived-entities) to unlock the ability to directly access and manipulate data from virtual relationships in our Subgraph mappings. - -## Conclusion - -Use the `@derivedFrom` directive in Subgraphs to effectively manage dynamically growing arrays, enhancing indexing efficiency and data retrieval. - -For a more detailed explanation of strategies to avoid large arrays, check out Kevin Jones' blog: [Best Practices in Subgraph Development: Avoiding Large Arrays](https://thegraph.com/blog/improve-subgraph-performance-avoiding-large-arrays/). - -## Subgraph Best Practices 1-6 - -1. [Improve Query Speed with Subgraph Pruning](/subgraphs/best-practices/pruning/) - -2. [Improve Indexing and Query Responsiveness by Using @derivedFrom](/subgraphs/best-practices/derivedfrom/) - -3. [Improve Indexing and Query Performance by Using Immutable Entities and Bytes as IDs](/subgraphs/best-practices/immutable-entities-bytes-as-ids/) - -4. [Improve Indexing Speed by Avoiding `eth_calls`](/subgraphs/best-practices/avoid-eth-calls/) - -5. [Simplify and Optimize with Timeseries and Aggregations](/subgraphs/best-practices/timeseries/) - -6. [Use Grafting for Quick Hotfix Deployment](/subgraphs/best-practices/grafting-hotfix/) diff --git a/website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx deleted file mode 100644 index a26667e114cb..000000000000 --- a/website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Subgraph Best Practice 6 - Use Grafting for Quick Hotfix Deployment -sidebarTitle: Grafting and Hotfixing ---- - -## TLDR - -Grafting is a powerful feature in Subgraph development that allows you to build and deploy new Subgraphs while reusing the indexed data from existing ones. - -### نظره عامة - -This feature enables quick deployment of hotfixes for critical issues, eliminating the need to re-index the entire Subgraph from scratch. By preserving historical data, grafting minimizes downtime and ensures continuity in data services. - -## Benefits of Grafting for Hotfixes - -1. **Rapid Deployment** - - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing. - - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted. - -2. **Data Preservation** - - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records. - - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data. - -3. **Efficiency** - - **Save Time and Resources**: Avoids the computational overhead of re-indexing large datasets. - - **Focus on Fixes**: Allows developers to concentrate on resolving issues rather than managing data recovery. - -## Best Practices When Using Grafting for Hotfixes - -1. **Initial Deployment Without Grafting** - - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected. - - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes. - -2. **Implementing the Hotfix with Grafting** - - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event. - - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix. - - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph. - - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible. - -3. **Post-Hotfix Actions** - - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue. - - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance. - > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance. - - **Update References**: Redirect any services or applications to use the new, non-grafted Subgraph. - -4. **Important Considerations** - - **Careful Block Selection**: Choose the graft block number carefully to prevent data loss. - - **Tip**: Use the block number of the last correctly processed event. - - **Use Deployment ID**: Ensure you reference the Deployment ID of the base Subgraph, not the Subgraph ID. - - **Note**: The Deployment ID is the unique identifier for a specific Subgraph deployment. - - **Feature Declaration**: Remember to declare grafting in the Subgraph manifest under features. - -## Example: Deploying a Hotfix with Grafting - -Suppose you have a Subgraph tracking a smart contract that has stopped indexing due to a critical error. Here’s how you can use grafting to deploy a hotfix. - -1. **Failed Subgraph Manifest (subgraph.yaml)** - - ```yaml - specVersion: 1.3.0 - schema: - file: ./schema.graphql - dataSources: - - kind: ethereum/contract - name: OldSmartContract - network: sepolia - source: - address: '0xOldContractAddress' - abi: Lock - startBlock: 5000000 - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - entities: - - Withdrawal - abis: - - name: Lock - file: ./abis/OldLock.json - eventHandlers: - - event: Withdrawal(uint256,uint256) - handler: handleOldWithdrawal - file: ./src/old-lock.ts - ``` - -2. **New Grafted Subgraph Manifest (subgraph.yaml)** - ```yaml - specVersion: 1.3.0 - schema: - file: ./schema.graphql - dataSources: - - kind: ethereum/contract - name: NewSmartContract - network: sepolia - source: - address: '0xNewContractAddress' - abi: Lock - startBlock: 6000001 # Block after the last indexed block - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - entities: - - Withdrawal - abis: - - name: Lock - file: ./abis/Lock.json - eventHandlers: - - event: Withdrawal(uint256,uint256) - handler: handleWithdrawal - file: ./src/lock.ts - features: - - grafting - graft: - base: QmBaseDeploymentID # Deployment ID of the failed Subgraph - block: 6000000 # Last successfully indexed block - ``` - -**Explanation:** - -- **Data Source Update**: The new Subgraph points to 0xNewContractAddress, which may be a fixed version of the smart contract. -- **Start Block**: Set to one block after the last successfully indexed block to avoid reprocessing the error. -- **Grafting Configuration**: - - **base**: Deployment ID of the failed Subgraph. - - **block**: Block number where grafting should begin. - -3. **Deployment Steps** - - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal). - - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations. - - **Deploy the Subgraph**: - - Authenticate with the Graph CLI. - - Deploy the new Subgraph using `graph deploy`. - -4. **Post-Deployment** - - **Verify Indexing**: Check that the Subgraph is indexing correctly from the graft point. - - **Monitor Data**: Ensure that new data is being captured and the hotfix is effective. - - **Plan for Republish**: Schedule the deployment of a non-grafted version for long-term stability. - -## Warnings and Cautions - -While grafting is a powerful tool for deploying hotfixes quickly, there are specific scenarios where it should be avoided to maintain data integrity and ensure optimal performance. - -- **Incompatible Schema Changes**: If your hotfix requires altering the type of existing fields or removing fields from your schema, grafting is not suitable. Grafting expects the new Subgraph’s schema to be compatible with the base Subgraph’s schema. Incompatible changes can lead to data inconsistencies and errors because the existing data won’t align with the new schema. -- **Significant Mapping Logic Overhauls**: When the hotfix involves substantial modifications to your mapping logic—such as changing how events are processed or altering handler functions—grafting may not function correctly. The new logic might not be compatible with the data processed under the old logic, leading to incorrect data or failed indexing. -- **Deployments to The Graph Network**: Grafting is not recommended for Subgraphs intended for The Graph’s decentralized network (mainnet). It can complicate indexing and may not be fully supported by all Indexers, potentially causing unexpected behavior or increased costs. For mainnet deployments, it’s safer to re-index the Subgraph from scratch to ensure full compatibility and reliability. - -### Risk Management - -- **Data Integrity**: Incorrect block numbers can lead to data loss or duplication. -- **Testing**: Always test grafting in a development environment before deploying to production. - -## Conclusion - -Grafting is an effective strategy for deploying hotfixes in Subgraph development, enabling you to: - -- **Quickly Recover** from critical errors without re-indexing. -- **Preserve Historical Data**, maintaining continuity for applications and users. -- **Ensure Service Availability** by minimizing downtime during critical fixes. - -However, it’s important to use grafting judiciously and follow best practices to mitigate risks. After stabilizing your Subgraph with the hotfix, plan to deploy a non-grafted version to ensure long-term maintainability. - -## مصادر إضافية - -- **[Grafting Documentation](/subgraphs/cookbook/grafting/)**: Replace a Contract and Keep its History With Grafting -- **[Understanding Deployment IDs](/subgraphs/querying/subgraph-id-vs-deployment-id/)**: Learn the difference between Deployment ID and Subgraph ID. - -By incorporating grafting into your Subgraph development workflow, you can enhance your ability to respond to issues swiftly, ensuring that your data services remain robust and reliable. - -## Subgraph Best Practices 1-6 - -1. [Improve Query Speed with Subgraph Pruning](/subgraphs/best-practices/pruning/) - -2. [Improve Indexing and Query Responsiveness by Using @derivedFrom](/subgraphs/best-practices/derivedfrom/) - -3. [Improve Indexing and Query Performance by Using Immutable Entities and Bytes as IDs](/subgraphs/best-practices/immutable-entities-bytes-as-ids/) - -4. [Improve Indexing Speed by Avoiding `eth_calls`](/subgraphs/best-practices/avoid-eth-calls/) - -5. [Simplify and Optimize with Timeseries and Aggregations](/subgraphs/best-practices/timeseries/) - -6. [Use Grafting for Quick Hotfix Deployment](/subgraphs/best-practices/grafting-hotfix/) diff --git a/website/src/pages/ar/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx b/website/src/pages/ar/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx deleted file mode 100644 index 3a633244e0f2..000000000000 --- a/website/src/pages/ar/subgraphs/best-practices/immutable-entities-bytes-as-ids.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: Subgraph Best Practice 3 - Improve Indexing and Query Performance by Using Immutable Entities and Bytes as IDs -sidebarTitle: Immutable Entities and Bytes as IDs ---- - -## TLDR - -Using Immutable Entities and Bytes for IDs in our `schema.graphql` file [significantly improves ](https://thegraph.com/blog/two-simple-subgraph-performance-improvements/) indexing speed and query performance. - -## Immutable Entities - -To make an entity immutable, we simply add `(immutable: true)` to an entity. - -```graphql -type Transfer @entity(immutable: true) { - id: Bytes! - from: Bytes! - to: Bytes! - value: BigInt! -} -``` - -By making the `Transfer` entity immutable, graph-node is able to process the entity more efficiently, improving indexing speeds and query responsiveness. - -Immutable Entities structures will not change in the future. An ideal entity to become an Immutable Entity would be an entity that is directly logging onchain event data, such as a `Transfer` event being logged as a `Transfer` entity. - -### Under the hood - -Mutable entities have a 'block range' indicating their validity. Updating these entities requires the graph node to adjust the block range of previous versions, increasing database workload. Queries also need filtering to find only live entities. Immutable entities are faster because they are all live and since they won't change, no checks or updates are required while writing, and no filtering is required during queries. - -### When not to use Immutable Entities - -If you have a field like `status` that needs to be modified over time, then you should not make the entity immutable. Otherwise, you should use immutable entities whenever possible. - -## Bytes as IDs - -Every entity requires an ID. In the previous example, we can see that the ID is already of the Bytes type. - -```graphql -type Transfer @entity(immutable: true) { - id: Bytes! - from: Bytes! - to: Bytes! - value: BigInt! -} -``` - -While other types for IDs are possible, such as String and Int8, it is recommended to use the Bytes type for all IDs due to character strings taking twice as much space as Byte strings to store binary data, and comparisons of UTF-8 character strings must take the locale into account which is much more expensive than the bytewise comparison used to compare Byte strings. - -### Reasons to Not Use Bytes as IDs - -1. If entity IDs must be human-readable such as auto-incremented numerical IDs or readable strings, Bytes for IDs should not be used. -2. If integrating a Subgraph’s data with another data model that does not use Bytes as IDs, Bytes as IDs should not be used. -3. Indexing and querying performance improvements are not desired. - -### Concatenating With Bytes as IDs - -It is a common practice in many Subgraphs to use string concatenation to combine two properties of an event into a single ID, such as using `event.transaction.hash.toHex() + "-" + event.logIndex.toString()`. However, as this returns a string, this significantly impedes Subgraph indexing and querying performance. - -Instead, we should use the `concatI32()` method to concatenate event properties. This strategy results in a `Bytes` ID that is much more performant. - -```typescript -export function handleTransfer(event: TransferEvent): void { - let entity = new Transfer(event.transaction.hash.concatI32(event.logIndex.toI32())) - entity.from = event.params.from - entity.to = event.params.to - entity.value = event.params.value - - entity.blockNumber = event.block.number - entity.blockTimestamp = event.block.timestamp - entity.transactionHash = event.transaction.hash - - entity.save() -} -``` - -### Sorting With Bytes as IDs - -Sorting using Bytes as IDs is not optimal as seen in this example query and response. - -Query: - -```graphql -{ - transfers(first: 3, orderBy: id) { - id - from - to - value - } -} -``` - -Query response: - -```json -{ - "data": { - "transfers": [ - { - "id": "0x00010000", - "from": "0xabcd...", - "to": "0x1234...", - "value": "256" - }, - { - "id": "0x00020000", - "from": "0xefgh...", - "to": "0x5678...", - "value": "512" - }, - { - "id": "0x01000000", - "from": "0xijkl...", - "to": "0x9abc...", - "value": "1" - } - ] - } -} -``` - -The IDs are returned as hex. - -To improve sorting, we should create another field on the entity that is a BigInt. - -```graphql -type Transfer @entity { - id: Bytes! - from: Bytes! # address - to: Bytes! # address - value: BigInt! # unit256 - tokenId: BigInt! # uint256 -} -``` - -This will allow for sorting to be optimized sequentially. - -Query: - -```graphql -{ - transfers(first: 3, orderBy: tokenId) { - id - tokenId - } -} -``` - -Query Response: - -```json -{ - "data": { - "transfers": [ - { - "id": "0x…", - "tokenId": "1" - }, - { - "id": "0x…", - "tokenId": "2" - }, - { - "id": "0x…", - "tokenId": "3" - } - ] - } -} -``` - -## Conclusion - -Using both Immutable Entities and Bytes as IDs has been shown to markedly improve Subgraph efficiency. Specifically, tests have highlighted up to a 28% increase in query performance and up to a 48% acceleration in indexing speeds. - -Read more about using Immutable Entities and Bytes as IDs in this blog post by David Lutterkort, a Software Engineer at Edge & Node: [Two Simple Subgraph Performance Improvements](https://thegraph.com/blog/two-simple-subgraph-performance-improvements/). - -## Subgraph Best Practices 1-6 - -1. [Improve Query Speed with Subgraph Pruning](/subgraphs/best-practices/pruning/) - -2. [Improve Indexing and Query Responsiveness by Using @derivedFrom](/subgraphs/best-practices/derivedfrom/) - -3. [Improve Indexing and Query Performance by Using Immutable Entities and Bytes as IDs](/subgraphs/best-practices/immutable-entities-bytes-as-ids/) - -4. [Improve Indexing Speed by Avoiding `eth_calls`](/subgraphs/best-practices/avoid-eth-calls/) - -5. [Simplify and Optimize with Timeseries and Aggregations](/subgraphs/best-practices/timeseries/) - -6. [Use Grafting for Quick Hotfix Deployment](/subgraphs/best-practices/grafting-hotfix/) diff --git a/website/src/pages/ar/subgraphs/best-practices/pruning.mdx b/website/src/pages/ar/subgraphs/best-practices/pruning.mdx deleted file mode 100644 index 2d4f9ad803e0..000000000000 --- a/website/src/pages/ar/subgraphs/best-practices/pruning.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Subgraph Best Practice 1 - Improve Query Speed with Subgraph Pruning -sidebarTitle: Pruning with indexerHints ---- - -## TLDR - -[Pruning](/developing/creating-a-subgraph/#prune) removes archival entities from the Subgraph’s database up to a given block, and removing unused entities from a Subgraph’s database will improve a Subgraph’s query performance, often dramatically. Using `indexerHints` is an easy way to prune a Subgraph. - -## How to Prune a Subgraph With `indexerHints` - -Add a section called `indexerHints` in the manifest. - -`indexerHints` has three `prune` options: - -- `prune: auto`: Retains the minimum necessary history as set by the Indexer, optimizing query performance. This is the generally recommended setting and is the default for all Subgraphs created by `graph-cli` >= 0.66.0. -- `prune: `: Sets a custom limit on the number of historical blocks to retain. -- `prune: never`: No pruning of historical data; retains the entire history and is the default if there is no `indexerHints` section. `prune: never` should be selected if [Time Travel Queries](/subgraphs/querying/graphql-api/#time-travel-queries) are desired. - -We can add `indexerHints` to our Subgraphs by updating our `subgraph.yaml`: - -```yaml -specVersion: 1.3.0 -schema: - file: ./schema.graphql -indexerHints: - prune: auto -dataSources: - - kind: ethereum/contract - name: Contract - network: mainnet -``` - -## Important Considerations - -- If [Time Travel Queries](/subgraphs/querying/graphql-api/#time-travel-queries) are desired as well as pruning, pruning must be performed accurately to retain Time Travel Query functionality. Due to this, it is generally not recommended to use `indexerHints: prune: auto` with Time Travel Queries. Instead, prune using `indexerHints: prune: ` to accurately prune to a block height that preserves the historical data required by Time Travel Queries, or use `prune: never` to maintain all data. - -- It is not possible to [graft](/subgraphs/cookbook/grafting/) at a block height that has been pruned. If grafting is routinely performed and pruning is desired, it is recommended to use `indexerHints: prune: ` that will accurately retain a set number of blocks (e.g., enough for six months). - -## Conclusion - -Pruning using `indexerHints` is a best practice for Subgraph development, offering significant query performance improvements. - -## Subgraph Best Practices 1-6 - -1. [Improve Query Speed with Subgraph Pruning](/subgraphs/best-practices/pruning/) - -2. [Improve Indexing and Query Responsiveness by Using @derivedFrom](/subgraphs/best-practices/derivedfrom/) - -3. [Improve Indexing and Query Performance by Using Immutable Entities and Bytes as IDs](/subgraphs/best-practices/immutable-entities-bytes-as-ids/) - -4. [Improve Indexing Speed by Avoiding `eth_calls`](/subgraphs/best-practices/avoid-eth-calls/) - -5. [Simplify and Optimize with Timeseries and Aggregations](/subgraphs/best-practices/timeseries/) - -6. [Use Grafting for Quick Hotfix Deployment](/subgraphs/best-practices/grafting-hotfix/) diff --git a/website/src/pages/ar/subgraphs/best-practices/timeseries.mdx b/website/src/pages/ar/subgraphs/best-practices/timeseries.mdx deleted file mode 100644 index d713d6cd8864..000000000000 --- a/website/src/pages/ar/subgraphs/best-practices/timeseries.mdx +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: Subgraph Best Practice 5 - Simplify and Optimize with Timeseries and Aggregations -sidebarTitle: Timeseries and Aggregations ---- - -## TLDR - -Leveraging the new time-series and aggregations feature in Subgraphs can significantly enhance both indexing speed and query performance. - -## نظره عامة - -Timeseries and aggregations reduce data processing overhead and accelerate queries by offloading aggregation computations to the database and simplifying mapping code. This approach is particularly effective when handling large volumes of time-based data. - -## Benefits of Timeseries and Aggregations - -1. Improved Indexing Time - -- Less Data to Load: Mappings handle less data since raw data points are stored as immutable timeseries entities. -- Database-Managed Aggregations: Aggregations are automatically computed by the database, reducing the workload on the mappings. - -2. Simplified Mapping Code - -- No Manual Calculations: Developers no longer need to write complex aggregation logic in mappings. -- Reduced Complexity: Simplifies code maintenance and minimizes the potential for errors. - -3. Dramatically Faster Queries - -- Immutable Data: All timeseries data is immutable, enabling efficient storage and retrieval. -- Efficient Data Separation: Aggregates are stored separately from raw timeseries data, allowing queries to process significantly less data—often several orders of magnitude less. - -### Important Considerations - -- Immutable Data: Timeseries data cannot be altered once written, ensuring data integrity and simplifying indexing. -- Automatic ID and Timestamp Management: id and timestamp fields are automatically managed by graph-node, reducing potential errors. -- Efficient Data Storage: By separating raw data from aggregates, storage is optimized, and queries run faster. - -## How to Implement Timeseries and Aggregations - -### Prerequisites - -You need `spec version 1.1.0` for this feature. - -### Defining Timeseries Entities - -A timeseries entity represents raw data points collected over time. It is defined with the `@entity(timeseries: true)` annotation. Key requirements: - -- Immutable: Timeseries entities are always immutable. -- Mandatory Fields: - - `id`: Must be of type `Int8!` and is auto-incremented. - - `timestamp`: Must be of type `Timestamp!` and is automatically set to the block timestamp. - -Example: - -```graphql -type Data @entity(timeseries: true) { - id: Int8! - timestamp: Timestamp! - amount: BigDecimal! -} -``` - -### Defining Aggregation Entities - -An aggregation entity computes aggregated values from a timeseries source. It is defined with the `@aggregation` annotation. Key components: - -- Annotation Arguments: - - `intervals`: Specifies time intervals (e.g., `["hour", "day"]`). - -Example: - -```graphql -type Stats @aggregation(intervals: ["hour", "day"], source: "Data") { - id: Int8! - timestamp: Timestamp! - sum: BigDecimal! @aggregate(fn: "sum", arg: "amount") -} -``` - -In this example, Stats aggregates the amount field from Data over hourly and daily intervals, computing the sum. - -### Querying Aggregated Data - -Aggregations are exposed via query fields that allow filtering and retrieval based on dimensions and time intervals. - -Example: - -```graphql -{ - tokenStats( - interval: "hour" - where: { token: "0x1234567890abcdef", timestamp_gte: "1704164640000000", timestamp_lt: "1704251040000000" } - ) { - id - timestamp - token { - id - } - totalVolume - priceUSD - count - } -} -``` - -### Using Dimensions in Aggregations - -Dimensions are non-aggregated fields used to group data points. They enable aggregations based on specific criteria, such as a token in a financial application. - -Example: - -### Timeseries Entity - -```graphql -type TokenData @entity(timeseries: true) { - id: Int8! - timestamp: Timestamp! - token: Token! - amount: BigDecimal! - priceUSD: BigDecimal! -} -``` - -### Aggregation Entity with Dimension - -```graphql -type TokenStats @aggregation(intervals: ["hour", "day"], source: "TokenData") { - id: Int8! - timestamp: Timestamp! - token: Token! - totalVolume: BigDecimal! @aggregate(fn: "sum", arg: "amount") - priceUSD: BigDecimal! @aggregate(fn: "last", arg: "priceUSD") - count: Int8! @aggregate(fn: "count", cumulative: true) -} -``` - -- Dimension Field: token groups the data, so aggregates are computed per token. -- Aggregates: - - totalVolume: Sum of amount. - - priceUSD: Last recorded priceUSD. - - count: Cumulative count of records. - -### Aggregation Functions and Expressions - -Supported aggregation functions: - -- sum -- count -- min -- max -- first -- last - -### The arg in @aggregate can be - -- A field name from the timeseries entity. -- An expression using fields and constants. - -### Examples of Aggregation Expressions - -- Sum Token Value: @aggregate(fn: "sum", arg: "priceUSD \_ amount") -- Maximum Positive Amount: @aggregate(fn: "max", arg: "greatest(amount0, amount1, 0)") -- Conditional Sum: @aggregate(fn: "sum", arg: "case when amount0 > amount1 then amount0 else 0 end") - -Supported operators and functions include basic arithmetic (+, -, \_, /), comparison operators, logical operators (and, or, not), and SQL functions like greatest, least, coalesce, etc. - -### Query Parameters - -- interval: Specifies the time interval (e.g., "hour"). -- where: Filters based on dimensions and timestamp ranges. -- timestamp_gte / timestamp_lt: Filters for start and end times (microseconds since epoch). - -### Notes - -- Sorting: Results are automatically sorted by timestamp and id in descending order. -- Current Data: An optional current argument can include the current, partially filled interval. - -### Conclusion - -Implementing timeseries and aggregations in Subgraphs is a best practice for projects dealing with time-based data. This approach: - -- Enhances Performance: Speeds up indexing and querying by reducing data processing overhead. -- Simplifies Development: Eliminates the need for manual aggregation logic in mappings. -- Scales Efficiently: Handles large volumes of data without compromising on speed or responsiveness. - -By adopting this pattern, developers can build more efficient and scalable Subgraphs, providing faster and more reliable data access to end-users. To learn more about implementing timeseries and aggregations, refer to the [Timeseries and Aggregations Readme](https://github.com/graphprotocol/graph-node/blob/master/docs/aggregations.md) and consider experimenting with this feature in your Subgraphs. - -## Subgraph Best Practices 1-6 - -1. [Improve Query Speed with Subgraph Pruning](/subgraphs/best-practices/pruning/) - -2. [Improve Indexing and Query Responsiveness by Using @derivedFrom](/subgraphs/best-practices/derivedfrom/) - -3. [Improve Indexing and Query Performance by Using Immutable Entities and Bytes as IDs](/subgraphs/best-practices/immutable-entities-bytes-as-ids/) - -4. [Improve Indexing Speed by Avoiding `eth_calls`](/subgraphs/best-practices/avoid-eth-calls/) - -5. [Simplify and Optimize with Timeseries and Aggregations](/subgraphs/best-practices/timeseries/) - -6. [Use Grafting for Quick Hotfix Deployment](/subgraphs/best-practices/grafting-hotfix/) diff --git a/website/src/pages/ar/subgraphs/billing.mdx b/website/src/pages/ar/subgraphs/billing.mdx deleted file mode 100644 index 71e44f86c1ab..000000000000 --- a/website/src/pages/ar/subgraphs/billing.mdx +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: الفوترة ---- - -## Querying Plans - -There are two plans to use when querying Subgraphs on The Graph Network. - -- **Free Plan**: The Free Plan includes 100,000 free monthly queries with full access to the Subgraph Studio testing environment. This plan is designed for hobbyists, hackathoners, and those with side projects to try out The Graph before scaling their dapp. - -- **Growth Plan**: The Growth Plan includes everything in the Free Plan with all queries after 100,000 monthly queries requiring payments with GRT or credit card. The Growth Plan is flexible enough to cover teams that have established dapps across a variety of use cases. - -Learn more about pricing [here](https://thegraph.com/studio-pricing/). - - - -## Query Payments with credit card - -- To set up billing with credit/debit cards, users should access Subgraph Studio (https://thegraph.com/studio/) - 1. Go to the [Subgraph Studio Billing page](https://thegraph.com/studio/subgraphs/billing/). - 2. انقر على زر "توصيل المحفظة" في الزاوية اليمنى العليا من الصفحة. ستتم إعادة توجيهك إلى صفحة اختيار المحفظة. حدد محفظتك وانقر على "توصيل". - 3. Choose “Upgrade plan” if you are upgrading from the Free Plan or choose “Manage Plan” if you have already added GRT to your billing balance in the past. Next, you can estimate the number of queries to get a pricing estimate, but this is not a required step. - 4. To choose a credit card payment, choose “Credit card” as the payment method and fill out your credit card information. Those who have used Stripe before can use the Link feature to autofill their details. -- Invoices will be processed at the end of each month and require an active credit card on file for all queries beyond the free plan quota. - -## Query Payments with GRT - -Subgraph users can use The Graph Token (or GRT) to pay for queries on The Graph Network. With GRT, invoices will be processed at the end of each month and require a sufficient balance of GRT to make queries beyond the Free Plan quota of 100,000 monthly queries. You'll be required to pay fees generated from your API keys. Using the billing contract, you'll be able to: - -- إضافة وسحب GRT من رصيد حسابك. -- تتبع أرصدتك بناءً على مقدار GRT الذي أضفته إلى رصيد حسابك ، والمبلغ الذي قمت بإزالته ، وفواتيرك. -- دفع الفواتير تلقائيًا بناءً على رسوم الاستعلام التي تم إنشاؤها ، طالما أن هناك ما يكفي من GRT في رصيد حسابك. - -### GRT on Arbitrum or Ethereum - -The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on Arbitrum to pay their gas. While The Graph protocol started on Ethereum Mainnet, all activity, including the billing contracts, is now on Arbitrum One. - -To pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this: - -- If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges: - -- [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161) - -- [TransferTo](https://transferto.xyz/swap) - -- If you already have assets on Arbitrum, you can swap them for GRT via a swapping protocol like Uniswap. - -- Alternatively, you acquire GRT directly on Arbitrum through a decentralized exchange. - -> This section is written assuming you already have GRT in your wallet, and you're on Arbitrum. If you don't have GRT, you can learn how to get GRT [here](#getting-grt). - -Once you bridge GRT, you can add it to your billing balance. - -### Adding GRT using a wallet - -1. Go to the [Subgraph Studio Billing page](https://thegraph.com/studio/subgraphs/billing/). -2. انقر على زر "توصيل المحفظة" في الزاوية اليمنى العليا من الصفحة. ستتم إعادة توجيهك إلى صفحة اختيار المحفظة. حدد محفظتك وانقر على "توصيل". -3. Select the "Manage" button near the top right corner. First time users will see an option to "Upgrade to Growth plan" while returning users will click "Deposit from wallet". -4. Use the slider to estimate the number of queries you expect to make on a monthly basis. - - For suggestions on the number of queries you may use, see our **Frequently Asked Questions** page. -5. Choose "Cryptocurrency". GRT is currently the only cryptocurrency accepted on The Graph Network. -6. Select the number of months you would like to prepay. - - Paying in advance does not commit you to future usage. You will only be charged for what you use and you can withdraw your balance at any time. -7. Pick the network from which you are depositing your GRT. GRT on Arbitrum or Ethereum are both acceptable. -8. Click "Allow GRT Access" and then specify the amount of GRT that can be taken from you wallet. - - If you are prepaying for multiple months, you must allow access to the amount that corresponds with that amount. This interaction will not cost any gas. -9. Lastly, click on "Add GRT to Billing Balance". This transaction will require ETH on Arbitrum to cover the gas costs. - -- Note that GRT deposited from Arbitrum will process within a few moments while GRT deposited from Ethereum will take approximately 15-20 minutes to process. Once the transaction is confirmed, you'll see the GRT added to your account balance. - -### Withdrawing GRT using a wallet - -1. Go to the [Subgraph Studio Billing page](https://thegraph.com/studio/subgraphs/billing/). -2. Click on the "Connect Wallet" button on the top right corner of the page. Select your wallet and click on "Connect". -3. Click the "Manage" button at the top right corner of the page. Select "Withdraw GRT". A side panel will appear. -4. Enter the amount of GRT you would like to withdraw. -5. Click 'Withdraw GRT' to withdraw the GRT from your account balance. Sign the associated transaction in your wallet. This will cost gas. The GRT will be sent to your Arbitrum wallet. -6. Once the transaction is confirmed, you'll see the GRT withdrawn from your account balance in your Arbitrum wallet. - -### إضافة GRT باستخدام محفظة متعددة التوقيع (multisig wallet) - -1. Go to the [Subgraph Studio Billing page](https://thegraph.com/studio/subgraphs/billing/). -2. Click on the "Connect Wallet" button on the top right corner of the page. Select your wallet and click on "Connect". If you're using [Gnosis-Safe](https://gnosis-safe.io/), you'll be able to connect your multisig as well as your signing wallet. Then, sign the associated message. This will not cost any gas. -3. Select the "Manage" button near the top right corner. First time users will see an option to "Upgrade to Growth plan" while returning users will click "Deposit from wallet". -4. Use the slider to estimate the number of queries you expect to make on a monthly basis. - - For suggestions on the number of queries you may use, see our **Frequently Asked Questions** page. -5. Choose "Cryptocurrency". GRT is currently the only cryptocurrency accepted on The Graph Network. -6. Select the number of months you would like to prepay. - - Paying in advance does not commit you to future usage. You will only be charged for what you use and you can withdraw your balance at any time. -7. Pick the network from which you are depositing your GRT. GRT on Arbitrum or Ethereum are both acceptable. 8. Click "Allow GRT Access" and then specify the amount of GRT that can be taken from you wallet. - - If you are prepaying for multiple months, you must allow access to the amount that corresponds with that amount. This interaction will not cost any gas. -8. Lastly, click on "Add GRT to Billing Balance". This transaction will require ETH on Arbitrum to cover the gas costs. - -- Note that GRT deposited from Arbitrum will process within a few moments while GRT deposited from Ethereum will take approximately 15-20 minutes to process. Once the transaction is confirmed, you'll see the GRT added to your account balance. - -## Getting GRT - -This section will show you how to get GRT to pay for query fees. - -### Coinbase - -This will be a step by step guide for purchasing GRT on Coinbase. - -1. Go to [Coinbase](https://www.coinbase.com/) and create an account. -2. Once you have created an account, you will need to verify your identity through a process known as KYC (or Know Your Customer). This is a standard procedure for all centralized or custodial crypto exchanges. -3. Once you have verified your identity, you can purchase GRT. You can do this by clicking on the "Buy/Sell" button on the top right of the page. -4. Select the currency you want to purchase. Select GRT. -5. Select the payment method. Select your preferred payment method. -6. Select the amount of GRT you want to purchase. -7. Review your purchase. Review your purchase and click "Buy GRT". -8. Confirm your purchase. Confirm your purchase and you will have successfully purchased GRT. -9. You can transfer the GRT from your account to your wallet such as [MetaMask](https://metamask.io/). - - To transfer the GRT to your wallet, click on the "Accounts" button on the top right of the page. - - Click on the "Send" button next to the GRT account. - - Enter the amount of GRT you want to send and the wallet address you want to send it to. - - Click "Continue" and confirm your transaction. -Please note that for larger purchase amounts, Coinbase may require you to wait 7-10 days before transferring the full amount to a wallet. - -You can learn more about getting GRT on Coinbase [here](https://help.coinbase.com/en/coinbase/trading-and-funding/buying-selling-or-converting-crypto/how-do-i-buy-digital-currency). - -### Binance - -This will be a step by step guide for purchasing GRT on Binance. - -1. Go to [Binance](https://www.binance.com/en) and create an account. -2. Once you have created an account, you will need to verify your identity through a process known as KYC (or Know Your Customer). This is a standard procedure for all centralized or custodial crypto exchanges. -3. Once you have verified your identity, you can purchase GRT. You can do this by clicking on the "Buy Now" button on the homepage banner. -4. You will be taken to a page where you can select the currency you want to purchase. Select GRT. -5. Select your preferred payment method. You'll be able to pay with different fiat currencies such as Euros, US Dollars, and more. -6. Select the amount of GRT you want to purchase. -7. Review your purchase and click "Buy GRT". -8. Confirm your purchase and you will be able to see your GRT in your Binance Spot Wallet. -9. You can withdraw the GRT from your account to your wallet such as [MetaMask](https://metamask.io/). - - [To withdraw](https://www.binance.com/en/blog/ecosystem/how-to-transfer-crypto-from-binance-to-trust-wallet-8305050796630181570) the GRT to your wallet, add your wallet's address to the withdrawal whitelist. - - Click on the "wallet" button, click withdraw, and select GRT. - - Enter the amount of GRT you want to send and the whitelisted wallet address you want to send it to. - - Click "Continue" and confirm your transaction. - -You can learn more about getting GRT on Binance [here](https://www.binance.com/en/support/faq/how-to-buy-cryptocurrency-on-binance-homepage-400c38f5e0cd4b46a1d0805c296b5582). - -### Uniswap - -This is how you can purchase GRT on Uniswap. - -1. Go to [Uniswap](https://app.uniswap.org/swap?chain=arbitrum) and connect your wallet. -2. Select the token you want to swap from. Select ETH. -3. Select the token you want to swap to. Select GRT. - - Make sure you're swapping for the correct token. The GRT smart contract address on Arbitrum One is: [0x9623063377AD1B27544C965cCd7342f7EA7e88C7](https://arbiscan.io/token/0x9623063377ad1b27544c965ccd7342f7ea7e88c7) -4. Enter the amount of ETH you want to swap. -5. Click "Swap". -6. Confirm the transaction in your wallet and you wait for the transaction to process. - -You can learn more about getting GRT on Uniswap [here](https://support.uniswap.org/hc/en-us/articles/8370549680909-How-to-Swap-Tokens-). - -## Getting Ether - -This section will show you how to get Ether (ETH) to pay for transaction fees or gas costs. ETH is necessary to execute operations on the Ethereum network such as transferring tokens or interacting with contracts. - -### Coinbase - -This will be a step by step guide for purchasing ETH on Coinbase. - -1. Go to [Coinbase](https://www.coinbase.com/) and create an account. -2. Once you have created an account, verify your identity through a process known as KYC (or Know Your Customer). This is a standard procedure for all centralized or custodial crypto exchanges. -3. Once you have verified your identity, purchase ETH by clicking on the "Buy/Sell" button on the top right of the page. -4. Select the currency you want to purchase. Select ETH. -5. Select your preferred payment method. -6. Enter the amount of ETH you want to purchase. -7. Review your purchase and click "Buy ETH". -8. Confirm your purchase and you will have successfully purchased ETH. -9. You can transfer the ETH from your Coinbase account to your wallet such as [MetaMask](https://metamask.io/). - - To transfer the ETH to your wallet, click on the "Accounts" button on the top right of the page. - - Click on the "Send" button next to the ETH account. - - Enter the amount of ETH you want to send and the wallet address you want to send it to. - - Ensure that you are sending to your Ethereum wallet address on Arbitrum One. - - Click "Continue" and confirm your transaction. - -You can learn more about getting ETH on Coinbase [here](https://help.coinbase.com/en/coinbase/trading-and-funding/buying-selling-or-converting-crypto/how-do-i-buy-digital-currency). - -### Binance - -This will be a step by step guide for purchasing ETH on Binance. - -1. Go to [Binance](https://www.binance.com/en) and create an account. -2. Once you have created an account, verify your identity through a process known as KYC (or Know Your Customer). This is a standard procedure for all centralized or custodial crypto exchanges. -3. Once you have verified your identity, purchase ETH by clicking on the "Buy Now" button on the homepage banner. -4. Select the currency you want to purchase. Select ETH. -5. Select your preferred payment method. -6. Enter the amount of ETH you want to purchase. -7. Review your purchase and click "Buy ETH". -8. Confirm your purchase and you will see your ETH in your Binance Spot Wallet. -9. You can withdraw the ETH from your account to your wallet such as [MetaMask](https://metamask.io/). - - To withdraw the ETH to your wallet, add your wallet's address to the withdrawal whitelist. - - Click on the "wallet" button, click withdraw, and select ETH. - - Enter the amount of ETH you want to send and the whitelisted wallet address you want to send it to. - - Ensure that you are sending to your Ethereum wallet address on Arbitrum One. - - Click "Continue" and confirm your transaction. - -You can learn more about getting ETH on Binance [here](https://www.binance.com/en/support/faq/how-to-buy-cryptocurrency-on-binance-homepage-400c38f5e0cd4b46a1d0805c296b5582). - -## Billing FAQs - -### How many queries will I need? - -You don't need to know how many queries you'll need in advance. You will only be charged for what you use and you can withdraw GRT from your account at any time. - -We recommend you overestimate the number of queries you will need so that you don’t have to top up your balance frequently. A good estimate for small to medium sized applications is to start with 1M-2M queries per month and monitor usage closely in the first weeks. For larger apps, a good estimate is to use the number of daily visits your site gets multiplied by the number of queries your most active page makes upon opening. - -Of course, both new and existing users can reach out to Edge & Node's BD team for a consult to learn more about anticipated usage. - -### Can I withdraw GRT from my billing balance? - -Yes, you can always withdraw GRT that has not already been used for queries from your billing balance. The billing contract is only designed to bridge GRT from Ethereum mainnet to the Arbitrum network. If you'd like to transfer your GRT from Arbitrum back to Ethereum mainnet, you'll need to use the [Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161). - -### What happens when my billing balance runs out? Will I get a warning? - -You will receive several email notifications before your billing balance runs out. diff --git a/website/src/pages/ar/subgraphs/developing/_meta-titles.json b/website/src/pages/ar/subgraphs/developing/_meta-titles.json deleted file mode 100644 index 01a91b09ed77..000000000000 --- a/website/src/pages/ar/subgraphs/developing/_meta-titles.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "creating": "Creating", - "deploying": "Deploying", - "publishing": "Publishing", - "managing": "Managing" -} diff --git a/website/src/pages/ar/subgraphs/developing/_meta.js b/website/src/pages/ar/subgraphs/developing/_meta.js deleted file mode 100644 index 51ad1ee1f5f9..000000000000 --- a/website/src/pages/ar/subgraphs/developing/_meta.js +++ /dev/null @@ -1,11 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - introduction: '', - subgraphs: '', - creating: titles.creating ?? '', - deploying: titles.deploying ?? '', - publishing: titles.publishing ?? '', - managing: titles.managing ?? '', - 'developer-faq': '', -} diff --git a/website/src/pages/ar/subgraphs/developing/creating/_meta-titles.json b/website/src/pages/ar/subgraphs/developing/creating/_meta-titles.json deleted file mode 100644 index 6106ac328dc1..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/_meta-titles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "graph-ts": "AssemblyScript API" -} diff --git a/website/src/pages/ar/subgraphs/developing/creating/_meta.js b/website/src/pages/ar/subgraphs/developing/creating/_meta.js deleted file mode 100644 index fba73e37424c..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/_meta.js +++ /dev/null @@ -1,13 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - 'starting-your-subgraph': '', - 'install-the-cli': '', - 'subgraph-manifest': '', - 'ql-schema': '', - 'assemblyscript-mappings': '', - 'graph-node-dev': '', - advanced: '', - 'graph-ts': titles['graph-ts'] ?? '', - 'unit-testing-framework': '', -} diff --git a/website/src/pages/ar/subgraphs/developing/creating/advanced.mdx b/website/src/pages/ar/subgraphs/developing/creating/advanced.mdx deleted file mode 100644 index c35d101f373e..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/advanced.mdx +++ /dev/null @@ -1,563 +0,0 @@ ---- -title: Advanced Subgraph Features ---- - -## نظره عامة - -Add and implement advanced Subgraph features to enhanced your Subgraph's built. - -Starting from `specVersion` `0.0.4`, Subgraph features must be explicitly declared in the `features` section at the top level of the manifest file, using their `camelCase` name, as listed in the table below: - -| Feature | Name | -| ---------------------------------------------------- | ---------------- | -| [Non-fatal errors](#non-fatal-errors) | `nonFatalErrors` | -| [Full-text Search](#defining-fulltext-search-fields) | `fullTextSearch` | -| [Grafting](#grafting-onto-existing-subgraphs) | `grafting` | - -For instance, if a Subgraph uses the **Full-Text Search** and the **Non-fatal Errors** features, the `features` field in the manifest should be: - -```yaml -specVersion: 1.3.0 -description: Gravatar for Ethereum -features: - - fullTextSearch - - nonFatalErrors -dataSources: ... -``` - -> Note that using a feature without declaring it will incur a **validation error** during Subgraph deployment, but no errors will occur if a feature is declared but not used. - -## Timeseries and Aggregations - -Prerequisites: - -- Subgraph specVersion must be ≥1.1.0. - -Timeseries and aggregations enable your Subgraph to track statistics like daily average price, hourly total transfers, and more. - -This feature introduces two new types of Subgraph entity. Timeseries entities record data points with timestamps. Aggregation entities perform pre-declared calculations on the timeseries data points on an hourly or daily basis, then store the results for easy access via GraphQL. - -### Example Schema - -```graphql -type Data @entity(timeseries: true) { - id: Int8! - timestamp: Timestamp! - price: BigDecimal! -} - -type Stats @aggregation(intervals: ["hour", "day"], source: "Data") { - id: Int8! - timestamp: Timestamp! - sum: BigDecimal! @aggregate(fn: "sum", arg: "price") -} -``` - -### How to Define Timeseries and Aggregations - -Timeseries entities are defined with `@entity(timeseries: true)` in the GraphQL schema. Every timeseries entity must: - -- have a unique ID of the int8 type -- have a timestamp of the Timestamp type -- include data that will be used for calculation by aggregation entities. - -These Timeseries entities can be saved in regular trigger handlers, and act as the “raw data” for the aggregation entities. - -Aggregation entities are defined with `@aggregation` in the GraphQL schema. Every aggregation entity defines the source from which it will gather data (which must be a timeseries entity), sets the intervals (e.g., hour, day), and specifies the aggregation function it will use (e.g., sum, count, min, max, first, last). - -Aggregation entities are automatically calculated on the basis of the specified source at the end of the required interval. - -#### Available Aggregation Intervals - -- `hour`: sets the timeseries period every hour, on the hour. -- `day`: sets the timeseries period every day, starting and ending at 00:00. - -#### Available Aggregation Functions - -- `sum`: Total of all values. -- `count`: Number of values. -- `min`: Minimum value. -- `max`: Maximum value. -- `first`: First value in the period. -- `last`: Last value in the period. - -#### Example Aggregations Query - -```graphql -{ - stats(interval: "hour", where: { timestamp_gt: 1704085200 }) { - id - timestamp - sum - } -} -``` - -[Read more](https://github.com/graphprotocol/graph-node/blob/master/docs/aggregations.md) about Timeseries and Aggregations. - -## أخطاء غير فادحة - -Indexing errors on already synced Subgraphs will, by default, cause the Subgraph to fail and stop syncing. Subgraphs can alternatively be configured to continue syncing in the presence of errors, by ignoring the changes made by the handler which provoked the error. This gives Subgraph authors time to correct their Subgraphs while queries continue to be served against the latest block, though the results might be inconsistent due to the bug that caused the error. Note that some errors are still always fatal. To be non-fatal, the error must be known to be deterministic. - -> **Note:** The Graph Network does not yet support non-fatal errors, and developers should not deploy Subgraphs using that functionality to the network via the Studio. - -Enabling non-fatal errors requires setting the following feature flag on the Subgraph manifest: - -```yaml -specVersion: 1.3.0 -description: Gravatar for Ethereum -features: - - nonFatalErrors - ... -``` - -The query must also opt-in to querying data with potential inconsistencies through the `subgraphError` argument. It is also recommended to query `_meta` to check if the Subgraph has skipped over errors, as in the example: - -```graphql -foos(first: 100, subgraphError: allow) { - id -} - -_meta { - hasIndexingErrors -} -``` - -If the Subgraph encounters an error, that query will return both the data and a graphql error with the message `"indexing_error"`, as in this example response: - -```graphql -"data": { - "foos": [ - { - "id": "0xdead" - } - ], - "_meta": { - "hasIndexingErrors": true - } -}, -"errors": [ - { - "message": "indexing_error" - } -] -``` - -## IPFS/Arweave File Data Sources - -File data sources are a new Subgraph functionality for accessing off-chain data during indexing in a robust, extendable way. File data sources support fetching files from IPFS and from Arweave. - -> This also lays the groundwork for deterministic indexing of off-chain data, as well as the potential introduction of arbitrary HTTP-sourced data. - -### نظره عامة - -Rather than fetching files "in line" during handler execution, this introduces templates which can be spawned as new data sources for a given file identifier. These new data sources fetch the files, retrying if they are unsuccessful, running a dedicated handler when the file is found. - -This is similar to the [existing data source templates](/developing/creating-a-subgraph/#data-source-templates), which are used to dynamically create new chain-based data sources. - -> This replaces the existing `ipfs.cat` API - -### Upgrade guide - -#### Update `graph-ts` and `graph-cli` - -File data sources requires graph-ts >=0.29.0 and graph-cli >=0.33.1 - -#### Add a new entity type which will be updated when files are found - -File data sources cannot access or update chain-based entities, but must update file specific entities. - -This may mean splitting out fields from existing entities into separate entities, linked together. - -Original combined entity: - -```graphql -type Token @entity { - id: ID! - tokenID: BigInt! - tokenURI: String! - externalURL: String! - ipfsURI: String! - image: String! - name: String! - description: String! - type: String! - updatedAtTimestamp: BigInt - owner: User! -} -``` - -New, split entity: - -```graphql -type Token @entity { - id: ID! - tokenID: BigInt! - tokenURI: String! - ipfsURI: TokenMetadata - updatedAtTimestamp: BigInt - owner: String! -} - -type TokenMetadata @entity { - id: ID! - image: String! - externalURL: String! - name: String! - description: String! -} -``` - -If the relationship is 1:1 between the parent entity and the resulting file data source entity, the simplest pattern is to link the parent entity to a resulting file entity by using the IPFS CID as the lookup. Get in touch on Discord if you are having difficulty modelling your new file-based entities! - -> You can use [nested filters](/subgraphs/querying/graphql-api/#example-for-nested-entity-filtering) to filter parent entities on the basis of these nested entities. - -#### Add a new templated data source with `kind: file/ipfs` or `kind: file/arweave` - -This is the data source which will be spawned when a file of interest is identified. - -```yaml -templates: - - name: TokenMetadata - kind: file/ipfs - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/mapping.ts - handler: handleMetadata - entities: - - TokenMetadata - abis: - - name: Token - file: ./abis/Token.json -``` - -> Currently `abis` are required, though it is not possible to call contracts from within file data sources - -The file data source must specifically mention all the entity types which it will interact with under `entities`. See [limitations](#limitations) for more details. - -#### Create a new handler to process files - -This handler should accept one `Bytes` parameter, which will be the contents of the file, when it is found, which can then be processed. This will often be a JSON file, which can be processed with `graph-ts` helpers ([documentation](/subgraphs/developing/creating/graph-ts/api/#json-api)). - -The CID of the file as a readable string can be accessed via the `dataSource` as follows: - -```typescript -const cid = dataSource.stringParam() -``` - -Example handler: - -```typescript -import { json, Bytes, dataSource } from '@graphprotocol/graph-ts' -import { TokenMetadata } from '../generated/schema' - -export function handleMetadata(content: Bytes): void { - let tokenMetadata = new TokenMetadata(dataSource.stringParam()) - const value = json.fromBytes(content).toObject() - if (value) { - const image = value.get('image') - const name = value.get('name') - const description = value.get('description') - const externalURL = value.get('external_url') - - if (name && image && description && externalURL) { - tokenMetadata.name = name.toString() - tokenMetadata.image = image.toString() - tokenMetadata.externalURL = externalURL.toString() - tokenMetadata.description = description.toString() - } - - tokenMetadata.save() - } -} -``` - -#### Spawn file data sources when required - -You can now create file data sources during execution of chain-based handlers: - -- Import the template from the auto-generated `templates` -- call `TemplateName.create(cid: string)` from within a mapping, where the cid is a valid content identifier for IPFS or Arweave - -For IPFS, Graph Node supports [v0 and v1 content identifiers](https://docs.ipfs.tech/concepts/content-addressing/), and content identifiers with directories (e.g. `bafyreighykzv2we26wfrbzkcdw37sbrby4upq7ae3aqobbq7i4er3tnxci/metadata.json`). - -For Arweave, as of version 0.33.0 Graph Node can fetch files stored on Arweave based on their [transaction ID](https://docs.arweave.org/developers/arweave-node-server/http-api#transactions) from an Arweave gateway ([example file](https://bdxujjl5ev5eerd5ouhhs6o4kjrs4g6hqstzlci5pf6vhxezkgaa.arweave.net/CO9EpX0lekJEfXUOeXncUmMuG8eEp5WJHXl9U9yZUYA)). Arweave supports transactions uploaded via Irys (previously Bundlr), and Graph Node can also fetch files based on [Irys manifests](https://docs.irys.xyz/overview/gateways#indexing). - -Example: - -```typescript -import { TokenMetadata as TokenMetadataTemplate } from '../generated/templates' - -const ipfshash = 'QmaXzZhcYnsisuue5WRdQDH6FDvqkLQX1NckLqBYeYYEfm' -//This example code is for a Crypto coven Subgraph. The above ipfs hash is a directory with token metadata for all crypto coven NFTs. - -export function handleTransfer(event: TransferEvent): void { - let token = Token.load(event.params.tokenId.toString()) - if (!token) { - token = new Token(event.params.tokenId.toString()) - token.tokenID = event.params.tokenId - - token.tokenURI = '/' + event.params.tokenId.toString() + '.json' - const tokenIpfsHash = ipfshash + token.tokenURI - //This creates a path to the metadata for a single Crypto coven NFT. It concats the directory with "/" + filename + ".json" - - token.ipfsURI = tokenIpfsHash - - TokenMetadataTemplate.create(tokenIpfsHash) - } - - token.updatedAtTimestamp = event.block.timestamp - token.owner = event.params.to.toHexString() - token.save() -} -``` - -This will create a new file data source, which will poll Graph Node's configured IPFS or Arweave endpoint, retrying if it is not found. When the file is found, the file data source handler will be executed. - -This example is using the CID as the lookup between the parent `Token` entity and the resulting `TokenMetadata` entity. - -> Previously, this is the point at which a Subgraph developer would have called `ipfs.cat(CID)` to fetch the file - -Congratulations, you are using file data sources! - -#### Deploying your Subgraphs - -You can now `build` and `deploy` your Subgraph to any Graph Node >=v0.30.0-rc.0. - -#### Limitations - -File data source handlers and entities are isolated from other Subgraph entities, ensuring that they are deterministic when executed, and ensuring no contamination of chain-based data sources. To be specific: - -- Entities created by File Data Sources are immutable, and cannot be updated -- File Data Source handlers cannot access entities from other file data sources -- Entities associated with File Data Sources cannot be accessed by chain-based handlers - -> While this constraint should not be problematic for most use-cases, it may introduce complexity for some. Please get in touch via Discord if you are having issues modelling your file-based data in a Subgraph! - -Additionally, it is not possible to create data sources from a file data source, be it an onchain data source or another file data source. This restriction may be lifted in the future. - -#### Best practices - -If you are linking NFT metadata to corresponding tokens, use the metadata's IPFS hash to reference a Metadata entity from the Token entity. Save the Metadata entity using the IPFS hash as an ID. - -You can use [DataSource context](/subgraphs/developing/creating/graph-ts/api/#entity-and-datasourcecontext) when creating File Data Sources to pass extra information which will be available to the File Data Source handler. - -If you have entities which are refreshed multiple times, create unique file-based entities using the IPFS hash & the entity ID, and reference them using a derived field in the chain-based entity. - -> We are working to improve the above recommendation, so queries only return the "most recent" version - -#### Known issues - -File data sources currently require ABIs, even though ABIs are not used ([issue](https://github.com/graphprotocol/graph-cli/issues/961)). Workaround is to add any ABI. - -Handlers for File Data Sources cannot be in files which import `eth_call` contract bindings, failing with "unknown import: `ethereum::ethereum.call` has not been defined" ([issue](https://github.com/graphprotocol/graph-node/issues/4309)). Workaround is to create file data source handlers in a dedicated file. - -#### Examples - -[Crypto Coven Subgraph migration](https://github.com/azf20/cryptocoven-api/tree/file-data-sources-refactor) - -#### المراجع - -[GIP File Data Sources](https://forum.thegraph.com/t/gip-file-data-sources/2721) - -## Indexed Argument Filters / Topic Filters - -> **Requires**: [SpecVersion](#specversion-releases) >= `1.2.0` - -Topic filters, also known as indexed argument filters, are a powerful feature in Subgraphs that allow users to precisely filter blockchain events based on the values of their indexed arguments. - -- These filters help isolate specific events of interest from the vast stream of events on the blockchain, allowing Subgraphs to operate more efficiently by focusing only on relevant data. - -- This is useful for creating personal Subgraphs that track specific addresses and their interactions with various smart contracts on the blockchain. - -### How Topic Filters Work - -When a smart contract emits an event, any arguments that are marked as indexed can be used as filters in a Subgraph's manifest. This allows the Subgraph to listen selectively for events that match these indexed arguments. - -- The event's first indexed argument corresponds to `topic1`, the second to `topic2`, and so on, up to `topic3`, since the Ethereum Virtual Machine (EVM) allows up to three indexed arguments per event. - -```solidity -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -contract Token { - // Event declaration with indexed parameters for addresses - event Transfer(address indexed from, address indexed to, uint256 value); - - // Function to simulate transferring tokens - function transfer(address to, uint256 value) public { - // Emitting the Transfer event with from, to, and value - emit Transfer(msg.sender, to, value); - } -} -``` - -In this example: - -- The `Transfer` event is used to log transactions of tokens between addresses. -- The `from` and `to` parameters are indexed, allowing event listeners to filter and monitor transfers involving specific addresses. -- The `transfer` function is a simple representation of a token transfer action, emitting the Transfer event whenever it is called. - -#### Configuration in Subgraphs - -Topic filters are defined directly within the event handler configuration in the Subgraph manifest. Here is how they are configured: - -```yaml -eventHandlers: - - event: SomeEvent(indexed uint256, indexed address, indexed uint256) - handler: handleSomeEvent - topic1: ['0xValue1', '0xValue2'] - topic2: ['0xAddress1', '0xAddress2'] - topic3: ['0xValue3'] -``` - -In this setup: - -- `topic1` corresponds to the first indexed argument of the event, `topic2` to the second, and `topic3` to the third. -- Each topic can have one or more values, and an event is only processed if it matches one of the values in each specified topic. - -#### Filter Logic - -- Within a Single Topic: The logic functions as an OR condition. The event will be processed if it matches any one of the listed values in a given topic. -- Between Different Topics: The logic functions as an AND condition. An event must satisfy all specified conditions across different topics to trigger the associated handler. - -#### Example 1: Tracking Direct Transfers from Address A to Address B - -```yaml -eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleDirectedTransfer - topic1: ['0xAddressA'] # Sender Address - topic2: ['0xAddressB'] # Receiver Address -``` - -In this configuration: - -- `topic1` is configured to filter `Transfer` events where `0xAddressA` is the sender. -- `topic2` is configured to filter `Transfer` events where `0xAddressB` is the receiver. -- The Subgraph will only index transactions that occur directly from `0xAddressA` to `0xAddressB`. - -#### Example 2: Tracking Transactions in Either Direction Between Two or More Addresses - -```yaml -eventHandlers: - - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransferToOrFrom - topic1: ['0xAddressA', '0xAddressB', '0xAddressC'] # Sender Address - topic2: ['0xAddressB', '0xAddressC'] # Receiver Address -``` - -In this configuration: - -- `topic1` is configured to filter `Transfer` events where `0xAddressA`, `0xAddressB`, `0xAddressC` is the sender. -- `topic2` is configured to filter `Transfer` events where `0xAddressB` and `0xAddressC` is the receiver. -- The Subgraph will index transactions that occur in either direction between multiple addresses allowing for comprehensive monitoring of interactions involving all addresses. - -## Declared eth_call - -> Note: This is an experimental feature that is not currently available in a stable Graph Node release yet. You can only use it in Subgraph Studio or your self-hosted node. - -Declarative `eth_calls` are a valuable Subgraph feature that allows `eth_calls` to be executed ahead of time, enabling `graph-node` to execute them in parallel. - -This feature does the following: - -- Significantly improves the performance of fetching data from the Ethereum blockchain by reducing the total time for multiple calls and optimizing the Subgraph's overall efficiency. -- Allows faster data fetching, resulting in quicker query responses and a better user experience. -- Reduces wait times for applications that need to aggregate data from multiple Ethereum calls, making the data retrieval process more efficient. - -### Key Concepts - -- Declarative `eth_calls`: Ethereum calls that are defined to be executed in parallel rather than sequentially. -- Parallel Execution: Instead of waiting for one call to finish before starting the next, multiple calls can be initiated simultaneously. -- Time Efficiency: The total time taken for all the calls changes from the sum of the individual call times (sequential) to the time taken by the longest call (parallel). - -#### Scenario without Declarative `eth_calls` - -Imagine you have a Subgraph that needs to make three Ethereum calls to fetch data about a user's transactions, balance, and token holdings. - -Traditionally, these calls might be made sequentially: - -1. Call 1 (Transactions): Takes 3 seconds -2. Call 2 (Balance): Takes 2 seconds -3. Call 3 (Token Holdings): Takes 4 seconds - -Total time taken = 3 + 2 + 4 = 9 seconds - -#### Scenario with Declarative `eth_calls` - -With this feature, you can declare these calls to be executed in parallel: - -1. Call 1 (Transactions): Takes 3 seconds -2. Call 2 (Balance): Takes 2 seconds -3. Call 3 (Token Holdings): Takes 4 seconds - -Since these calls are executed in parallel, the total time taken is equal to the time taken by the longest call. - -Total time taken = max (3, 2, 4) = 4 seconds - -#### How it Works - -1. Declarative Definition: In the Subgraph manifest, you declare the Ethereum calls in a way that indicates they can be executed in parallel. -2. Parallel Execution Engine: The Graph Node's execution engine recognizes these declarations and runs the calls simultaneously. -3. Result Aggregation: Once all calls are complete, the results are aggregated and used by the Subgraph for further processing. - -#### Example Configuration in Subgraph Manifest - -Declared `eth_calls` can access the `event.address` of the underlying event as well as all the `event.params`. - -`subgraph.yaml` using `event.address`: - -```yaml -eventHandlers: -event: Swap(indexed address,indexed address,int256,int256,uint160,uint128,int24) -handler: handleSwap -calls: - global0X128: Pool[event.address].feeGrowthGlobal0X128() - global1X128: Pool[event.address].feeGrowthGlobal1X128() -``` - -Details for the example above: - -- `global0X128` is the declared `eth_call`. -- The text (`global0X128`) is the label for this `eth_call` which is used when logging errors. -- The text (`Pool[event.address].feeGrowthGlobal0X128()`) is the actual `eth_call` that will be executed, which is in the form of `Contract[address].function(arguments)` -- The `address` and `arguments` can be replaced with variables that will be available when the handler is executed. - -`subgraph.yaml` using `event.params` - -```yaml -calls: - - ERC20DecimalsToken0: ERC20[event.params.token0].decimals() -``` - -### Grafting على Subgraphs موجودة - -> **Note:** it is not recommended to use grafting when initially upgrading to The Graph Network. Learn more [here](/subgraphs/cookbook/grafting/#important-note-on-grafting-when-upgrading-to-the-network). - -When a Subgraph is first deployed, it starts indexing events at the genesis block of the corresponding chain (or at the `startBlock` defined with each data source) In some circumstances; it is beneficial to reuse the data from an existing Subgraph and start indexing at a much later block. This mode of indexing is called _Grafting_. Grafting is, for example, useful during development to get past simple errors in the mappings quickly or to temporarily get an existing Subgraph working again after it has failed. - -A Subgraph is grafted onto a base Subgraph when the Subgraph manifest in `subgraph.yaml` contains a `graft` block at the top-level: - -```yaml -description: ... -graft: - base: Qm... # Subgraph ID of base Subgraph - block: 7345624 # Block number -``` - -When a Subgraph whose manifest contains a `graft` block is deployed, Graph Node will copy the data of the `base` Subgraph up to and including the given `block` and then continue indexing the new Subgraph from that block on. The base Subgraph must exist on the target Graph Node instance and must have indexed up to at least the given block. Because of this restriction, grafting should only be used during development or during an emergency to speed up producing an equivalent non-grafted Subgraph. - -Because grafting copies rather than indexes base data, it is much quicker to get the Subgraph to the desired block than indexing from scratch, though the initial data copy can still take several hours for very large Subgraphs. While the grafted Subgraph is being initialized, the Graph Node will log information about the entity types that have already been copied. - -The grafted Subgraph can use a GraphQL schema that is not identical to the one of the base Subgraph, but merely compatible with it. It has to be a valid Subgraph schema in its own right, but may deviate from the base Subgraph's schema in the following ways: - -- يضيف أو يزيل أنواع الكيانات -- يزيل الصفات من أنواع الكيانات -- It adds nullable attributes to entity types -- It turns non-nullable attributes into nullable attributes -- It adds values to enums -- It adds or removes interfaces -- يغير للكيانات التي يتم تنفيذ الواجهة لها - -> **[Feature Management](#experimental-features):** `grafting` must be declared under `features` in the Subgraph manifest. diff --git a/website/src/pages/ar/subgraphs/developing/creating/assemblyscript-mappings.mdx b/website/src/pages/ar/subgraphs/developing/creating/assemblyscript-mappings.mdx deleted file mode 100644 index 3062fe900657..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/assemblyscript-mappings.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Writing AssemblyScript Mappings ---- - -## نظره عامة - -The mappings take data from a particular source and transform it into entities that are defined within your schema. Mappings are written in a subset of [TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) called [AssemblyScript](https://github.com/AssemblyScript/assemblyscript/wiki) which can be compiled to WASM ([WebAssembly](https://webassembly.org/)). AssemblyScript is stricter than normal TypeScript, yet provides a familiar syntax. - -## كتابة الـ Mappings - -For each event handler that is defined in `subgraph.yaml` under `mapping.eventHandlers`, create an exported function of the same name. Each handler must accept a single parameter called `event` with a type corresponding to the name of the event which is being handled. - -In the example Subgraph, `src/mapping.ts` contains handlers for the `NewGravatar` and `UpdatedGravatar` events: - -```javascript -import { NewGravatar, UpdatedGravatar } from '../generated/Gravity/Gravity' -import { Gravatar } from '../generated/schema' - -export function handleNewGravatar(event: NewGravatar): void { - let gravatar = new Gravatar(event.params.id) - gravatar.owner = event.params.owner - gravatar.displayName = event.params.displayName - gravatar.imageUrl = event.params.imageUrl - gravatar.save() -} - -export function handleUpdatedGravatar(event: UpdatedGravatar): void { - let id = event.params.id - let gravatar = Gravatar.load(id) - if (gravatar == null) { - gravatar = new Gravatar(id) - } - gravatar.owner = event.params.owner - gravatar.displayName = event.params.displayName - gravatar.imageUrl = event.params.imageUrl - gravatar.save() -} -``` - -The first handler takes a `NewGravatar` event and creates a new `Gravatar` entity with `new Gravatar(event.params.id.toHex())`, populating the entity fields using the corresponding event parameters. This entity instance is represented by the variable `gravatar`, with an id value of `event.params.id.toHex()`. - -The second handler tries to load the existing `Gravatar` from the Graph Node store. If it does not exist yet, it is created on-demand. The entity is then updated to match the new event parameters before it is saved back to the store using `gravatar.save()`. - -### الـ IDs الموصى بها لإنشاء كيانات جديدة - -It is highly recommended to use `Bytes` as the type for `id` fields, and only use `String` for attributes that truly contain human-readable text, like the name of a token. Below are some recommended `id` values to consider when creating new entities. - -- `transfer.id = event.transaction.hash` - -- `let id = event.transaction.hash.concatI32(event.logIndex.toI32())` - -- For entities that store aggregated data, for e.g, daily trade volumes, the `id` usually contains the day number. Here, using a `Bytes` as the `id` is beneficial. Determining the `id` would look like - -```typescript -let dayID = event.block.timestamp.toI32() / 86400 -let id = Bytes.fromI32(dayID) -``` - -- Convert constant addresses to `Bytes`. - -`const id = Bytes.fromHexString('0xdead...beef')` - -There is a [Graph Typescript Library](https://github.com/graphprotocol/graph-tooling/tree/main/packages/ts) which contains utilities for interacting with the Graph Node store and conveniences for handling smart contract data and entities. It can be imported into `mapping.ts` from `@graphprotocol/graph-ts`. - -### Handling of entities with identical IDs - -When creating and saving a new entity, if an entity with the same ID already exists, the properties of the new entity are always preferred during the merge process. This means that the existing entity will be updated with the values from the new entity. - -If a null value is intentionally set for a field in the new entity with the same ID, the existing entity will be updated with the null value. - -If no value is set for a field in the new entity with the same ID, the field will result in null as well. - -## توليد الكود - -In order to make it easy and type-safe to work with smart contracts, events and entities, the Graph CLI can generate AssemblyScript types from the Subgraph's GraphQL schema and the contract ABIs included in the data sources. - -This is done with - -```sh -graph codegen [--output-dir ] [] -``` - -but in most cases, Subgraphs are already preconfigured via `package.json` to allow you to simply run one of the following to achieve the same: - -```sh -# Yarn -yarn codegen - -# NPM -npm run codegen -``` - -This will generate an AssemblyScript class for every smart contract in the ABI files mentioned in `subgraph.yaml`, allowing you to bind these contracts to specific addresses in the mappings and call read-only contract methods against the block being processed. It will also generate a class for every contract event to provide easy access to event parameters, as well as the block and transaction the event originated from. All of these types are written to `//.ts`. In the example Subgraph, this would be `generated/Gravity/Gravity.ts`, allowing mappings to import these types with. - -```javascript -import { - // The contract class: - Gravity, - // The events classes: - NewGravatar, - UpdatedGravatar, -} from '../generated/Gravity/Gravity' -``` - -In addition to this, one class is generated for each entity type in the Subgraph's GraphQL schema. These classes provide type-safe entity loading, read and write access to entity fields as well as a `save()` method to write entities to store. All entity classes are written to `/schema.ts`, allowing mappings to import them with - -```javascript -'import { Gravatar } from '../generated/schema -``` - -> **Note:** The code generation must be performed again after every change to the GraphQL schema or the ABIs included in the manifest. It must also be performed at least once before building or deploying the Subgraph. - -Code generation does not check your mapping code in `src/mapping.ts`. If you want to check that before trying to deploy your Subgraph to Graph Explorer, you can run `yarn build` and fix any syntax errors that the TypeScript compiler might find. diff --git a/website/src/pages/ar/subgraphs/developing/creating/graph-node-dev.mdx b/website/src/pages/ar/subgraphs/developing/creating/graph-node-dev.mdx deleted file mode 100644 index 3839473dcd29..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/graph-node-dev.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Graph Node Dev Mode ---- - -## Overview - -Graph Node Developer Mode (GND) is a developer-friendly Graph Node runner designed for local Subgraph development. It simplifies setup by removing the need for IPFS and offering smart defaults like automatic database handling (on Unix) and live Subgraph redeployment. - -## Prerequisites - -- PostgreSQL installed and running -- Access to an Ethereum RPC endpoint (e.g., Anvil, Hardhat) - -## Step 1. Set Up - -Install `gnd` using the Graph CLI: - -``` -graph node install -``` - -This installs the latest `gnd` binary to: - -- Unix: `~/.local/bin` -- Windows: `%USERPROFILE%\gnd\bin` - -Ensure this directory is in your system `PATH`: - -``` -gnd --version -``` - -## Step 2. Usage - -Run `gnd` inside your Subgraph project directory. - -### Minimal Usage (Unix) - -``` -gnd --ethereum-rpc mainnet:http://localhost: -``` - -### With Hot-Reloading - -``` -gnd --ethereum-rpc mainnet:http://localhost: --watch -``` - -`--watch` enables automatic Subgraph redeploys when the build directory changes - -### Windows (Postgres URL required) - -``` -gnd --ethereum-rpc mainnet:http://localhost: --postgres-url "postgre -sql://graph:yourpassword@localhost:5432/graph-node" -``` - -## Step 3. PostgreSQL Setup on Windows - -After installing PostgreSQL, follow these steps: - -### 1. Launch `psql` as SUPERUSER - -``` -psql -U postgres -``` - -Replace postgres with your superuser name if different. - -### 2. Run the following commands - -``` -create user graph with password 'yourpassword'; -create database "graph-node" with owner=graph template=template0 encodi -ng='UTF8' locale='C'; -\c graph-node -create extension pg_trgm; -create extension btree_gist; -create extension postgres_fdw; -grant usage on foreign data wrapper postgres_fdw to graph; -``` - -Use this URL when running `gnd`: - -``` ---postgres-url "postgresql://graph:yourpassword@localhost:5432/graph-nod -e" -``` - -### 3. Flags & Options - -| Flag | Description | -| ---------------- | --------------------------------------------------------------------------------------- | -| `--watch` | _(Optional)_ Watches the Subgraph build directory and redeploys on changes. | -| `--manifests` | Path(s) to manifest files. Format: `[BUILD_DIR:]/manifest`. Default: `./subgraph.yaml`. | -| `--sources` | Source manifest aliases for resolving shared data sources. | -| `--database-dir` | Directory to store temporary Postgres instance (**Unix only**). Default: `./build`. | -| `--postgres-url` | URL for PostgreSQL DB. **Required on Windows.** | -| `--ethereum-rpc` | Format: `network[:capabilities]:URL`. **Required.** | -| `--ipfs` | IPFS endpoint(s). Default: `https://api.thegraph.com/ipfs`. | - -## Step 4. Running a Subgraph - -To run a Subgraph: - -### 1. Navigate to your Subgraph directory - -``` -cd path/to/your-subgraph -``` - -### 2. Start gnd with an Ethereum RPC - -``` -gnd --ethereum-rpc mainnet:http://localhost: -``` - -This will build and start the Subgraph. - -### 3. Query your Subgraph at - -``` -http://localhost:8000/subgraphs/name/subgraph-0/ -``` - -## Notes - -- On Unix, if `-postgres-url` is not provided, `gnd` automatically starts a temporary Postgres instance in the `-database-dir` folder (default: `./build`). - -- On Windows, you must provide a valid `-postgres-url`. - -- IPFS is optional; `gnd` uses `https://api.thegraph.com/ipfs` by default. diff --git a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/CHANGELOG.md b/website/src/pages/ar/subgraphs/developing/creating/graph-ts/CHANGELOG.md deleted file mode 100644 index 5f964d3cbb78..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/CHANGELOG.md +++ /dev/null @@ -1,107 +0,0 @@ -# @graphprotocol/graph-ts - -## 0.38.0 - -### Minor Changes - -- [#1935](https://github.com/graphprotocol/graph-tooling/pull/1935) [`0c36a02`](https://github.com/graphprotocol/graph-tooling/commit/0c36a024e0516bbf883ae62b8312dba3d9945f04) Thanks [@isum](https://github.com/isum)! - feat: add yaml parsing support to mappings - -## 0.37.0 - -### Minor Changes - -- [#1843](https://github.com/graphprotocol/graph-tooling/pull/1843) - [`c09b56b`](https://github.com/graphprotocol/graph-tooling/commit/c09b56b093f23c80aa5d217b2fd56fccac061145) - Thanks [@YaroShkvorets](https://github.com/YaroShkvorets)! - Update all dependencies - -## 0.36.0 - -### Minor Changes - -- [#1754](https://github.com/graphprotocol/graph-tooling/pull/1754) - [`2050bf6`](https://github.com/graphprotocol/graph-tooling/commit/2050bf6259c19bd86a7446410c7e124dfaddf4cd) - Thanks [@incrypto32](https://github.com/incrypto32)! - Add support for subgraph datasource and - associated types. - -## 0.35.1 - -### Patch Changes - -- [#1637](https://github.com/graphprotocol/graph-tooling/pull/1637) - [`f0c583f`](https://github.com/graphprotocol/graph-tooling/commit/f0c583f00c90e917d87b707b5b7a892ad0da916f) - Thanks [@incrypto32](https://github.com/incrypto32)! - Update return type for ethereum.hasCode - -## 0.35.0 - -### Minor Changes - -- [#1609](https://github.com/graphprotocol/graph-tooling/pull/1609) - [`e299f6c`](https://github.com/graphprotocol/graph-tooling/commit/e299f6ce5cf1ad74cab993f6df3feb7ca9993254) - Thanks [@incrypto32](https://github.com/incrypto32)! - Add support for eth.hasCode method - -## 0.34.0 - -### Minor Changes - -- [#1522](https://github.com/graphprotocol/graph-tooling/pull/1522) - [`d132f9c`](https://github.com/graphprotocol/graph-tooling/commit/d132f9c9f6ea5283e40a8d913f3abefe5a8ad5f8) - Thanks [@dotansimha](https://github.com/dotansimha)! - Added support for handling GraphQL - `Timestamp` scalar as `i64` (AssemblyScript) - -## 0.33.0 - -### Minor Changes - -- [#1584](https://github.com/graphprotocol/graph-tooling/pull/1584) - [`0075f06`](https://github.com/graphprotocol/graph-tooling/commit/0075f06ddaa6d37606e42e1c12d11d19674d00ad) - Thanks [@incrypto32](https://github.com/incrypto32)! - Added getBalance call to ethereum API - -## 0.32.0 - -### Minor Changes - -- [#1523](https://github.com/graphprotocol/graph-tooling/pull/1523) - [`167696e`](https://github.com/graphprotocol/graph-tooling/commit/167696eb611db0da27a6cf92a7390e72c74672ca) - Thanks [@xJonathanLEI](https://github.com/xJonathanLEI)! - add starknet data types - -## 0.31.0 - -### Minor Changes - -- [#1340](https://github.com/graphprotocol/graph-tooling/pull/1340) - [`2375877`](https://github.com/graphprotocol/graph-tooling/commit/23758774b33b5b7c6934f57a3e137870205ca6f0) - Thanks [@incrypto32](https://github.com/incrypto32)! - export `loadRelated` host function - -- [#1296](https://github.com/graphprotocol/graph-tooling/pull/1296) - [`dab4ca1`](https://github.com/graphprotocol/graph-tooling/commit/dab4ca1f5df7dcd0928bbaa20304f41d23b20ced) - Thanks [@dotansimha](https://github.com/dotansimha)! - Added support for handling GraphQL `Int8` - scalar as `i64` (AssemblyScript) - -## 0.30.0 - -### Minor Changes - -- [#1299](https://github.com/graphprotocol/graph-tooling/pull/1299) - [`3f8b514`](https://github.com/graphprotocol/graph-tooling/commit/3f8b51440db281e69879be7d91d79cd43e45fe86) - Thanks [@saihaj](https://github.com/saihaj)! - introduce new Etherum utility to get a CREATE2 - Address - -- [#1306](https://github.com/graphprotocol/graph-tooling/pull/1306) - [`f5e4b58`](https://github.com/graphprotocol/graph-tooling/commit/f5e4b58989edc5f3bb8211f1b912449e77832de8) - Thanks [@saihaj](https://github.com/saihaj)! - expose Host's `get_in_block` function - -## 0.29.3 - -### Patch Changes - -- [#1057](https://github.com/graphprotocol/graph-tooling/pull/1057) - [`b7a2ec3`](https://github.com/graphprotocol/graph-tooling/commit/b7a2ec3e9e2206142236f892e2314118d410ac93) - Thanks [@saihaj](https://github.com/saihaj)! - fix publihsed contents - -## 0.29.2 - -### Patch Changes - -- [#1044](https://github.com/graphprotocol/graph-tooling/pull/1044) - [`8367f90`](https://github.com/graphprotocol/graph-tooling/commit/8367f90167172181870c1a7fe5b3e84d2c5aeb2c) - Thanks [@saihaj](https://github.com/saihaj)! - publish readme with packages diff --git a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/README.md b/website/src/pages/ar/subgraphs/developing/creating/graph-ts/README.md deleted file mode 100644 index b6771a8305e5..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# The Graph TypeScript Library (graph-ts) - -[![npm (scoped)](https://img.shields.io/npm/v/@graphprotocol/graph-ts.svg)](https://www.npmjs.com/package/@graphprotocol/graph-ts) -[![Build Status](https://travis-ci.org/graphprotocol/graph-ts.svg?branch=master)](https://travis-ci.org/graphprotocol/graph-ts) - -TypeScript/AssemblyScript library for writing subgraph mappings to be deployed to -[The Graph](https://github.com/graphprotocol/graph-node). - -## Usage - -For a detailed guide on how to create a subgraph, please see the -[Graph CLI docs](https://github.com/graphprotocol/graph-cli). - -One step of creating the subgraph is writing mappings that will process blockchain events and will -write entities into the store. These mappings are written in TypeScript/AssemblyScript. - -The `graph-ts` library provides APIs to access the Graph Node store, blockchain data, smart -contracts, data on IPFS, cryptographic functions and more. To use it, all you have to do is add a -dependency on it: - -```sh -npm install --dev @graphprotocol/graph-ts # NPM -yarn add --dev @graphprotocol/graph-ts # Yarn -``` - -After that, you can import the `store` API and other features from this library in your mappings. A -few examples: - -```typescript -import { crypto, store } from '@graphprotocol/graph-ts' -// This is just an example event type generated by `graph-cli` -// from an Ethereum smart contract ABI -import { NameRegistered } from './types/abis/SomeContract' -// This is an example of an entity type generated from a -// subgraph's GraphQL schema -import { Domain } from './types/schema' - -function handleNameRegistered(event: NameRegistered) { - // Example use of a crypto function - let id = crypto.keccak256(name).toHexString() - - // Example use of the generated `Entry` class - let domain = new Domain() - domain.name = name - domain.owner = event.params.owner - domain.timeRegistered = event.block.timestamp - - // Example use of the store API - store.set('Name', id, entity) -} -``` - -## Helper Functions for AssemblyScript - -Refer to the `helper-functions.ts` file in -[this](https://github.com/graphprotocol/graph-tooling/blob/main/packages/ts/helper-functions.ts) -repository for a few common functions that help build on top of the AssemblyScript library, such as -byte array concatenation, among others. - -## API - -Documentation on the API can be found -[here](https://thegraph.com/docs/en/developer/assemblyscript-api/). - -For examples of `graph-ts` in use take a look at one of the following subgraphs: - -- https://github.com/graphprotocol/ens-subgraph -- https://github.com/graphprotocol/decentraland-subgraph -- https://github.com/graphprotocol/adchain-subgraph -- https://github.com/graphprotocol/0x-subgraph -- https://github.com/graphprotocol/aragon-subgraph -- https://github.com/graphprotocol/dharma-subgraph - -## License - -Copyright © 2018 Graph Protocol, Inc. and contributors. - -The Graph TypeScript library is dual-licensed under the -[MIT license](https://github.com/graphprotocol/graph-tooling/blob/main/LICENSE-MIT) and the -[Apache License, Version 2.0](https://github.com/graphprotocol/graph-tooling/blob/main/LICENSE-APACHE). - -Unless required by applicable law or agreed to in writing, software distributed under the License is -distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied. See the License for the specific language governing permissions and limitations under the -License. diff --git a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta-titles.json b/website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta-titles.json deleted file mode 100644 index acdc14c39beb..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta-titles.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "README": "مقدمة", - "api": "مرجع API", - "common-issues": "Common Issues" -} diff --git a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta.js b/website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta.js deleted file mode 100644 index 3919234ad9bb..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/_meta.js +++ /dev/null @@ -1,7 +0,0 @@ -import titles from './_meta-titles.json' - -export default { - README: titles.README ?? '', - api: titles.api ?? '', - 'common-issues': titles['common-issues'] ?? '', -} diff --git a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/api.mdx b/website/src/pages/ar/subgraphs/developing/creating/graph-ts/api.mdx deleted file mode 100644 index a721f6bcd8d4..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/api.mdx +++ /dev/null @@ -1,890 +0,0 @@ ---- -title: AssemblyScript API ---- - -> Note: If you created a Subgraph prior to `graph-cli`/`graph-ts` version `0.22.0`, then you're using an older version of AssemblyScript. It is recommended to review the [`Migration Guide`](/resources/migration-guides/assemblyscript-migration-guide/). - -Learn what built-in APIs can be used when writing Subgraph mappings. There are two kinds of APIs available out of the box: - -- The [Graph TypeScript library](https://github.com/graphprotocol/graph-tooling/tree/main/packages/ts) (`graph-ts`) -- Code generated from Subgraph files by `graph codegen` - -You can also add other libraries as dependencies, as long as they are compatible with [AssemblyScript](https://github.com/AssemblyScript/assemblyscript). - -Since language mappings are written in AssemblyScript, it is useful to review the language and standard library features from the [AssemblyScript wiki](https://github.com/AssemblyScript/assemblyscript/wiki). - -## مرجع API - -The `@graphprotocol/graph-ts` library provides the following APIs: - -- An `ethereum` API for working with Ethereum smart contracts, events, blocks, transactions, and Ethereum values. -- A `store` API to load and save entities from and to the Graph Node store. -- A `log` API to log messages to the Graph Node output and Graph Explorer. -- An `ipfs` API to load files from IPFS. -- A `json` API to parse JSON data. -- A `crypto` API to use cryptographic functions. -- الأوامر الأساسية منخفضة المستوى للترجمة بين أنظمة الأنواع المختلفة مثل Ethereum و JSON و GraphQL و AssemblyScript. - -### إصدارات - -The `apiVersion` in the Subgraph manifest specifies the mapping API version which is run by Graph Node for a given Subgraph. - -| الاصدار | ملاحظات الإصدار | -| :-: | --- | -| 0.0.9 | Adds new host functions [`eth_get_balance`](#balance-of-an-address) & [`hasCode`](#check-if-an-address-is-a-contract-or-eoa) | -| 0.0.8 | Adds validation for existence of fields in the schema when saving an entity. | -| 0.0.7 | Added `TransactionReceipt` and `Log` classes to the Ethereum types
Added `receipt` field to the Ethereum Event object | -| 0.0.6 | Added `nonce` field to the Ethereum Transaction object
Added `baseFeePerGas` to the Ethereum Block object | -| 0.0.5 | AssemblyScript upgraded to version 0.19.10 (this includes breaking changes, please see the [`Migration Guide`](/resources/migration-guides/assemblyscript-migration-guide/))
`ethereum.transaction.gasUsed` renamed to `ethereum.transaction.gasLimit` | -| 0.0.4 | Added `functionSignature` field to the Ethereum SmartContractCall object | -| 0.0.3 | Added `from` field to the Ethereum Call object
`ethereum.call.address` renamed to `ethereum.call.to` | -| 0.0.2 | Added `input` field to the Ethereum Transaction object | - -### الأنواع المضمنة (Built-in) - -Documentation on the base types built into AssemblyScript can be found in the [AssemblyScript wiki](https://www.assemblyscript.org/types.html). - -The following additional types are provided by `@graphprotocol/graph-ts`. - -#### ByteArray - -```typescript -'import { ByteArray } from '@graphprotocol/graph-ts -``` - -`ByteArray` represents an array of `u8`. - -_Construction_ - -- `fromI32(x: i32): ByteArray` - Decomposes `x` into bytes. -- `fromHexString(hex: string): ByteArray` - Input length must be even. Prefixing with `0x` is optional. - -_Type conversions_ - -- `toHexString(): string` - Converts to a hex string prefixed with `0x`. -- `toString(): string` - Interprets the bytes as a UTF-8 string. -- `toBase58(): string` - Encodes the bytes into a base58 string. -- `toU32(): u32` - Interprets the bytes as a little-endian `u32`. Throws in case of overflow. -- `toI32(): i32` - Interprets the byte array as a little-endian `i32`. Throws in case of overflow. - -_Operators_ - -- `equals(y: ByteArray): bool` – can be written as `x == y`. -- `concat(other: ByteArray) : ByteArray` - return a new `ByteArray` consisting of `this` directly followed by `other` -- `concatI32(other: i32) : ByteArray` - return a new `ByteArray` consisting of `this` directly followed by the byte representation of `other` - -#### BigDecimal - -```typescript -'import { BigDecimal } from '@graphprotocol/graph-ts -``` - -`BigDecimal` is used to represent arbitrary precision decimals. - -> Note: [Internally](https://github.com/graphprotocol/graph-node/blob/master/graph/src/data/store/scalar/bigdecimal.rs) `BigDecimal` is stored in [IEEE-754 decimal128 floating-point format](https://en.wikipedia.org/wiki/Decimal128_floating-point_format), which supports 34 decimal digits of significand. This makes `BigDecimal` unsuitable for representing fixed-point types that can span wider than 34 digits, such as a Solidity [`ufixed256x18`](https://docs.soliditylang.org/en/latest/types.html#fixed-point-numbers) or equivalent. - -_Construction_ - -- `constructor(bigInt: BigInt)` – creates a `BigDecimal` from an `BigInt`. -- `static fromString(s: string): BigDecimal` – parses from a decimal string. - -_Type conversions_ - -- `toString(): string` – prints to a decimal string. - -_Math_ - -- `plus(y: BigDecimal): BigDecimal` – can be written as `x + y`. -- `minus(y: BigDecimal): BigDecimal` – can be written as `x - y`. -- `times(y: BigDecimal): BigDecimal` – can be written as `x * y`. -- `div(y: BigDecimal): BigDecimal` – can be written as `x / y`. -- `equals(y: BigDecimal): bool` – can be written as `x == y`. -- `notEqual(y: BigDecimal): bool` – can be written as `x != y`. -- `lt(y: BigDecimal): bool` – can be written as `x < y`. -- `le(y: BigDecimal): bool` – can be written as `x <= y`. -- `gt(y: BigDecimal): bool` – can be written as `x > y`. -- `ge(y: BigDecimal): bool` – can be written as `x >= y`. -- `neg(): BigDecimal` - can be written as `-x`. - -#### BigInt - -```typescript -'import { BigInt } from '@graphprotocol/graph-ts -``` - -`BigInt` is used to represent big integers. This includes Ethereum values of type `uint32` to `uint256` and `int64` to `int256`. Everything below `uint32`, such as `int32`, `uint24` or `int8` is represented as `i32`. - -The `BigInt` class has the following API: - -_Construction_ - -- `BigInt.fromI32(x: i32): BigInt` – creates a `BigInt` from an `i32`. - -- `BigInt.fromString(s: string): BigInt`– Parses a `BigInt` from a string. - -- `BigInt.fromUnsignedBytes(x: Bytes): BigInt` – Interprets `bytes` as an unsigned, little-endian integer. If your input is big-endian, call `.reverse()` first. - -- `BigInt.fromSignedBytes(x: Bytes): BigInt` – Interprets `bytes` as a signed, little-endian integer. If your input is big-endian, call `.reverse()` first. - - _Type conversions_ - -- `x.toHex(): string` – turns `BigInt` into a string of hexadecimal characters. - -- `x.toString(): string` – turns `BigInt` into a decimal number string. - -- `x.toI32(): i32` – returns the `BigInt` as an `i32`; fails if the value does not fit into `i32`. It's a good idea to first check `x.isI32()`. - -- `x.toBigDecimal(): BigDecimal` - converts into a decimal with no fractional part. - -_Math_ - -- `x.plus(y: BigInt): BigInt` – can be written as `x + y`. -- `x.minus(y: BigInt): BigInt` – can be written as `x - y`. -- `x.times(y: BigInt): BigInt` – can be written as `x * y`. -- `x.div(y: BigInt): BigInt` – can be written as `x / y`. -- `x.mod(y: BigInt): BigInt` – can be written as `x % y`. -- `x.equals(y: BigInt): bool` – can be written as `x == y`. -- `x.notEqual(y: BigInt): bool` – can be written as `x != y`. -- `x.lt(y: BigInt): bool` – can be written as `x < y`. -- `x.le(y: BigInt): bool` – can be written as `x <= y`. -- `x.gt(y: BigInt): bool` – can be written as `x > y`. -- `x.ge(y: BigInt): bool` – can be written as `x >= y`. -- `x.neg(): BigInt` – can be written as `-x`. -- `x.divDecimal(y: BigDecimal): BigDecimal` – divides by a decimal, giving a decimal result. -- `x.isZero(): bool` – Convenience for checking if the number is zero. -- `x.isI32(): bool` – Check if the number fits in an `i32`. -- `x.abs(): BigInt` – Absolute value. -- `x.pow(exp: u8): BigInt` – Exponentiation. -- `bitOr(x: BigInt, y: BigInt): BigInt` – can be written as `x | y`. -- `bitAnd(x: BigInt, y: BigInt): BigInt` – can be written as `x & y`. -- `leftShift(x: BigInt, bits: u8): BigInt` – can be written as `x << y`. -- `rightShift(x: BigInt, bits: u8): BigInt` – can be written as `x >> y`. - -#### TypedMap - -```typescript -'import { TypedMap } from '@graphprotocol/graph-ts -``` - -`TypedMap` can be used to store key-value pairs. See [this example](https://github.com/graphprotocol/aragon-subgraph/blob/29dd38680c5e5104d9fdc2f90e740298c67e4a31/individual-dao-subgraph/mappings/constants.ts#L51). - -The `TypedMap` class has the following API: - -- `new TypedMap()` – creates an empty map with keys of type `K` and values of type `V` -- `map.set(key: K, value: V): void` – sets the value of `key` to `value` -- `map.getEntry(key: K): TypedMapEntry | null` – returns the key-value pair for a `key` or `null` if the `key` does not exist in the map -- `map.get(key: K): V | null` – returns the value for a `key` or `null` if the `key` does not exist in the map -- `map.isSet(key: K): bool` – returns `true` if the `key` exists in the map and `false` if it does not - -#### Bytes - -```typescript -'import { Bytes } from '@graphprotocol/graph-ts -``` - -`Bytes` is used to represent arbitrary-length arrays of bytes. This includes Ethereum values of type `bytes`, `bytes32`, etc. - -The `Bytes` class extends AssemblyScript's [Uint8Array](https://github.com/AssemblyScript/assemblyscript/blob/3b1852bc376ae799d9ebca888e6413afac7b572f/std/assembly/typedarray.ts#L64) and this supports all the `Uint8Array` functionality, plus the following new methods: - -_Construction_ - -- `fromHexString(hex: string) : Bytes` - Convert the string `hex` which must consist of an even number of hexadecimal digits to a `ByteArray`. The string `hex` can optionally start with `0x` -- `fromI32(i: i32) : Bytes` - Convert `i` to an array of bytes - -_Type conversions_ - -- `b.toHex()` – returns a hexadecimal string representing the bytes in the array -- `b.toString()` – converts the bytes in the array to a string of unicode characters -- `b.toBase58()` – turns an Ethereum Bytes value to base58 encoding (used for IPFS hashes) - -_Operators_ - -- `b.concat(other: Bytes) : Bytes` - - return new `Bytes` consisting of `this` directly followed by `other` -- `b.concatI32(other: i32) : ByteArray` - return new `Bytes` consisting of `this` directly follow by the byte representation of `other` - -#### العنوان - -```typescript -'import { Address } from '@graphprotocol/graph-ts -``` - -`Address` extends `Bytes` to represent Ethereum `address` values. - -It adds the following method on top of the `Bytes` API: - -- `Address.fromString(s: string): Address` – creates an `Address` from a hexadecimal string -- `Address.fromBytes(b: Bytes): Address` – create an `Address` from `b` which must be exactly 20 bytes long. Passing in a value with fewer or more bytes will result in an error - -### مخزن API - -```typescript -'import { store } from '@graphprotocol/graph-ts -``` - -The `store` API allows to load, save and remove entities from and to the Graph Node store. - -Entities written to the store map one-to-one to the `@entity` types defined in the Subgraph's GraphQL schema. To make working with these entities convenient, the `graph codegen` command provided by the [Graph CLI](https://github.com/graphprotocol/graph-tooling/tree/main/packages/cli) generates entity classes, which are subclasses of the built-in `Entity` type, with property getters and setters for the fields in the schema as well as methods to load and save these entities. - -#### إنشاء الكيانات - -The following is a common pattern for creating entities from Ethereum events. - -```typescript -// Import the Transfer event class generated from the ERC20 ABI -import { Transfer as TransferEvent } from '../generated/ERC20/ERC20' - -// Import the Transfer entity type generated from the GraphQL schema -import { Transfer } from '../generated/schema' - -// Transfer event handler -export function handleTransfer(event: TransferEvent): void { - // Create a Transfer entity, using the transaction hash as the entity ID - let id = event.transaction.hash - let transfer = new Transfer(id) - - // Set properties on the entity, using the event parameters - transfer.from = event.params.from - transfer.to = event.params.to - transfer.amount = event.params.amount - - // Save the entity to the store - transfer.save() -} -``` - -When a `Transfer` event is encountered while processing the chain, it is passed to the `handleTransfer` event handler using the generated `Transfer` type (aliased to `TransferEvent` here to avoid a naming conflict with the entity type). This type allows accessing data such as the event's parent transaction and its parameters. - -Each entity must have a unique ID to avoid collisions with other entities. It is fairly common for event parameters to include a unique identifier that can be used. - -> Note: Using the transaction hash as the ID assumes that no other events in the same transaction create entities with this hash as the ID. - -#### تحميل الكيانات من المخزن - -If an entity already exists, it can be loaded from the store with the following: - -```typescript -let id = event.transaction.hash // or however the ID is constructed -let transfer = Transfer.load(id) -if (transfer == null) { - transfer = new Transfer(id) -} - -// Use the Transfer entity as before -``` - -As the entity may not exist in the store yet, the `load` method returns a value of type `Transfer | null`. It may be necessary to check for the `null` case before using the value. - -> Note: Loading entities is only necessary if the changes made in the mapping depend on the previous data of an entity. See the next section for the two ways of updating existing entities. - -#### Looking up entities created withing a block - -As of `graph-node` v0.31.0, `@graphprotocol/graph-ts` v0.30.0 and `@graphprotocol/graph-cli` v0.49.0 the `loadInBlock` method is available on all entity types. - -The store API facilitates the retrieval of entities that were created or updated in the current block. A typical situation for this is that one handler creates a transaction from some onchain event, and a later handler wants to access this transaction if it exists. - -- In the case where the transaction does not exist, the Subgraph will have to go to the database simply to find out that the entity does not exist. If the Subgraph author already knows that the entity must have been created in the same block, using `loadInBlock` avoids this database roundtrip. -- For some Subgraphs, these missed lookups can contribute significantly to the indexing time. - -```typescript -let id = event.transaction.hash // or however the ID is constructed -let transfer = Transfer.loadInBlock(id) -if (transfer == null) { - transfer = new Transfer(id) -} - -// Use the Transfer entity as before -``` - -> Note: If there is no entity created in the given block, `loadInBlock` will return `null` even if there is an entity with the given ID in the store. - -#### Looking up derived entities - -As of `graph-node` v0.31.0, `@graphprotocol/graph-ts` v0.31.0 and `@graphprotocol/graph-cli` v0.51.0 the `loadRelated` method is available. - -This enables loading derived entity fields from within an event handler. For example, given the following schema: - -```graphql -type Token @entity { - id: ID! - holder: Holder! - color: String -} - -type Holder @entity { - id: ID! - tokens: [Token!]! @derivedFrom(field: "holder") -} -``` - -The following code will load the `Token` entity that the `Holder` entity was derived from: - -```typescript -let holder = Holder.load('test-id') -// Load the Token entities associated with a given holder -let tokens = holder.tokens.load() -``` - -#### تحديث الكيانات الموجودة - -There are two ways to update an existing entity: - -1. Load the entity with e.g. `Transfer.load(id)`, set properties on the entity, then `.save()` it back to the store. -2. Simply create the entity with e.g. `new Transfer(id)`, set properties on the entity, then `.save()` it to the store. If the entity already exists, the changes are merged into it. - -Changing properties is straight forward in most cases, thanks to the generated property setters: - -```typescript -let transfer = new Transfer(id) -transfer.from = ... -transfer.to = ... -transfer.amount = ... -``` - -It is also possible to unset properties with one of the following two instructions: - -```typescript -transfer.from.unset() -transfer.from = null -``` - -This only works with optional properties, i.e. properties that are declared without a `!` in GraphQL. Two examples would be `owner: Bytes` or `amount: BigInt`. - -Updating array properties is a little more involved, as the getting an array from an entity creates a copy of that array. This means array properties have to be set again explicitly after changing the array. The following assumes `entity` has a `numbers: [BigInt!]!` field. - -```typescript -// This won't work -entity.numbers.push(BigInt.fromI32(1)) -entity.save() - -// This will work -let numbers = entity.numbers -numbers.push(BigInt.fromI32(1)) -entity.numbers = numbers -entity.save() -``` - -#### إزالة الكيانات من المخزن - -There is currently no way to remove an entity via the generated types. Instead, removing an entity requires passing the name of the entity type and the entity ID to `store.remove`: - -```typescript -import { store } from '@graphprotocol/graph-ts' -... -let id = event.transaction.hash -store.remove('Transfer', id) -``` - -### API إيثيريوم - -The Ethereum API provides access to smart contracts, public state variables, contract functions, events, transactions, blocks and the encoding/decoding Ethereum data. - -#### دعم أنواع الإيثيريوم - -As with entities, `graph codegen` generates classes for all smart contracts and events used in a Subgraph. For this, the contract ABIs need to be part of the data source in the Subgraph manifest. Typically, the ABI files are stored in an `abis/` folder. - -With the generated classes, conversions between Ethereum types and the [built-in types](#built-in-types) take place behind the scenes so that Subgraph authors do not have to worry about them. - -The following example illustrates this. Given a Subgraph schema like - -```graphql -type Transfer @entity { - id: Bytes! - from: Bytes! - to: Bytes! - amount: BigInt! -} -``` - -and a `Transfer(address,address,uint256)` event signature on Ethereum, the `from`, `to` and `amount` values of type `address`, `address` and `uint256` are converted to `Address` and `BigInt`, allowing them to be passed on to the `Bytes!` and `BigInt!` properties of the `Transfer` entity: - -```typescript -let id = event.transaction.hash -let transfer = new Transfer(id) -transfer.from = event.params.from -transfer.to = event.params.to -transfer.amount = event.params.amount -transfer.save() -``` - -#### الأحداث وبيانات الكتلة/ الإجراء - -Ethereum events passed to event handlers, such as the `Transfer` event in the previous examples, not only provide access to the event parameters but also to their parent transaction and the block they are part of. The following data can be obtained from `event` instances (these classes are a part of the `ethereum` module in `graph-ts`): - -```typescript -class Event { - address: Address - logIndex: BigInt - transactionLogIndex: BigInt - logType: string | null - block: Block - transaction: Transaction - parameters: Array - receipt: TransactionReceipt | null -} - -class Block { - hash: Bytes - parentHash: Bytes - unclesHash: Bytes - author: Address - stateRoot: Bytes - transactionsRoot: Bytes - receiptsRoot: Bytes - number: BigInt - gasUsed: BigInt - gasLimit: BigInt - timestamp: BigInt - difficulty: BigInt - totalDifficulty: BigInt - size: BigInt | null - baseFeePerGas: BigInt | null -} - -class Transaction { - hash: Bytes - index: BigInt - from: Address - to: Address | null - value: BigInt - gasLimit: BigInt - gasPrice: BigInt - input: Bytes - nonce: BigInt -} - -class TransactionReceipt { - transactionHash: Bytes - transactionIndex: BigInt - blockHash: Bytes - blockNumber: BigInt - cumulativeGasUsed: BigInt - gasUsed: BigInt - contractAddress: Address - logs: Array - status: BigInt - root: Bytes - logsBloom: Bytes -} - -class Log { - address: Address - topics: Array - data: Bytes - blockHash: Bytes - blockNumber: Bytes - transactionHash: Bytes - transactionIndex: BigInt - logIndex: BigInt - transactionLogIndex: BigInt - logType: string - removed: bool | null -} -``` - -#### الوصول إلى حالة العقد الذكي Smart Contract - -The code generated by `graph codegen` also includes classes for the smart contracts used in the Subgraph. These can be used to access public state variables and call functions of the contract at the current block. - -A common pattern is to access the contract from which an event originates. This is achieved with the following code: - -```typescript -// Import the generated contract class and generated Transfer event class -import { ERC20Contract, Transfer as TransferEvent } from '../generated/ERC20Contract/ERC20Contract' -// Import the generated entity class -import { Transfer } from '../generated/schema' - -export function handleTransfer(event: TransferEvent) { - // Bind the contract to the address that emitted the event - let contract = ERC20Contract.bind(event.address) - - // Access state variables and functions by calling them - let erc20Symbol = contract.symbol() -} -``` - -`Transfer` is aliased to `TransferEvent` here to avoid a naming conflict with the entity type - -As long as the `ERC20Contract` on Ethereum has a public read-only function called `symbol`, it can be called with `.symbol()`. For public state variables a method with the same name is created automatically. - -Any other contract that is part of the Subgraph can be imported from the generated code and can be bound to a valid address. - -#### معالجة الاستدعاءات المعادة - -If the read-only methods of your contract may revert, then you should handle that by calling the generated contract method prefixed with `try_`. - -- For example, the Gravity contract exposes the `gravatarToOwner` method. This code would be able to handle a revert in that method: - -```typescript -let gravity = Gravity.bind(event.address) -let callResult = gravity.try_gravatarToOwner(gravatar) -if (callResult.reverted) { - log.info('getGravatar reverted', []) -} else { - let owner = callResult.value -} -``` - -> Note: A Graph node connected to a Geth or Infura client may not detect all reverts. If you rely on this, we recommend using a Graph Node connected to a Parity client. - -#### تشفير/فك تشفير ABI - -Data can be encoded and decoded according to Ethereum's ABI encoding format using the `encode` and `decode` functions in the `ethereum` module. - -```typescript -import { Address, BigInt, ethereum } from '@graphprotocol/graph-ts' - -let tupleArray: Array = [ - ethereum.Value.fromAddress(Address.fromString('0x0000000000000000000000000000000000000420')), - ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(62)), -] - -let tuple = tupleArray as ethereum.Tuple - -let encoded = ethereum.encode(ethereum.Value.fromTuple(tuple))! - -let decoded = ethereum.decode('(address,uint256)', encoded) -``` - -For more information: - -- [ABI Spec](https://docs.soliditylang.org/en/v0.7.4/abi-spec.html#types) -- Encoding/decoding [Rust library/CLI](https://github.com/rust-ethereum/ethabi) -- More [complex example](https://github.com/graphprotocol/graph-node/blob/08da7cb46ddc8c09f448c5ea4b210c9021ea05ad/tests/integration-tests/host-exports/src/mapping.ts#L86). - -#### Balance of an Address - -The native token balance of an address can be retrieved using the `ethereum` module. This feature is available from `apiVersion: 0.0.9` which is defined `subgraph.yaml`. The `getBalance()` retrieves the balance of the specified address as of the end of the block in which the event is triggered. - -```typescript -import { ethereum } from '@graphprotocol/graph-ts' - -let address = Address.fromString('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045') -let balance = ethereum.getBalance(address) // returns balance in BigInt -``` - -#### Check if an Address is a Contract or EOA - -To check whether an address is a smart contract address or an externally owned address (EOA), use the `hasCode()` function from the `ethereum` module which will return `boolean`. This feature is available from `apiVersion: 0.0.9` which is defined `subgraph.yaml`. - -```typescript -import { ethereum } from '@graphprotocol/graph-ts' - -let contractAddr = Address.fromString('0x2E645469f354BB4F5c8a05B3b30A929361cf77eC') -let isContract = ethereum.hasCode(contractAddr).inner // returns true - -let eoa = Address.fromString('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045') -let isContract = ethereum.hasCode(eoa).inner // returns false -``` - -### Logging API - -```typescript -import { log } from '@graphprotocol/graph-ts -``` - -The `log` API allows Subgraphs to log information to the Graph Node standard output as well as Graph Explorer. Messages can be logged using different log levels. A basic format string syntax is provided to compose log messages from argument. - -The `log` API includes the following functions: - -- `log.debug(fmt: string, args: Array): void` - logs a debug message. -- `log.info(fmt: string, args: Array): void` - logs an informational message. -- `log.warning(fmt: string, args: Array): void` - logs a warning. -- `log.error(fmt: string, args: Array): void` - logs an error message. -- `log.critical(fmt: string, args: Array): void` – logs a critical message _and_ terminates the Subgraph. - -The `log` API takes a format string and an array of string values. It then replaces placeholders with the string values from the array. The first `{}` placeholder gets replaced by the first value in the array, the second `{}` placeholder gets replaced by the second value and so on. - -```typescript -log.info('Message to be displayed: {}, {}, {}', [value.toString(), anotherValue.toString(), 'already a string']) -``` - -#### تسجيل قيمة واحدة أو أكثر - -##### تسجيل قيمة واحدة - -In the example below, the string value "A" is passed into an array to become`['A']` before being logged: - -```typescript -let myValue = 'A' - -export function handleSomeEvent(event: SomeEvent): void { - // Displays : "My value is: A" - log.info('My value is: {}', [myValue]) -} -``` - -##### تسجيل إدخال واحد من مصفوفة موجودة - -In the example below, only the first value of the argument array is logged, despite the array containing three values. - -```typescript -let myArray = ['A', 'B', 'C'] - -export function handleSomeEvent(event: SomeEvent): void { - // Displays : "My value is: A" (Even though three values are passed to `log.info`) - log.info('My value is: {}', myArray) -} -``` - -#### تسجيل إدخالات متعددة من مصفوفة موجودة - -Each entry in the arguments array requires its own placeholder `{}` in the log message string. The below example contains three placeholders `{}` in the log message. Because of this, all three values in `myArray` are logged. - -```typescript -let myArray = ['A', 'B', 'C'] - -export function handleSomeEvent(event: SomeEvent): void { - // Displays : "My first value is: A, second value is: B, third value is: C" - log.info('My first value is: {}, second value is: {}, third value is: {}', myArray) -} -``` - -##### تسجيل إدخال محدد من مصفوفة موجودة - -To display a specific value in the array, the indexed value must be provided. - -```typescript -export function handleSomeEvent(event: SomeEvent): void { - // Displays : "My third value is C" - log.info('My third value is: {}', [myArray[2]]) -} -``` - -##### تسجيل معلومات الحدث - -The example below logs the block number, block hash and transaction hash from an event: - -```typescript -import { log } from '@graphprotocol/graph-ts' - -export function handleSomeEvent(event: SomeEvent): void { - log.debug('Block number: {}, block hash: {}, transaction hash: {}', [ - event.block.number.toString(), // "47596000" - event.block.hash.toHexString(), // "0x..." - event.transaction.hash.toHexString(), // "0x..." - ]) -} -``` - -### IPFS API - -```typescript -'import { ipfs } from '@graphprotocol/graph-ts -``` - -Smart contracts occasionally anchor IPFS files onchain. This allows mappings to obtain the IPFS hashes from the contract and read the corresponding files from IPFS. The file data will be returned as `Bytes`, which usually requires further processing, e.g. with the `json` API documented later on this page. - -Given an IPFS hash or path, reading a file from IPFS is done as follows: - -```typescript -// Put this inside an event handler in the mapping -let hash = 'QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D' -let data = ipfs.cat(hash) - -// Paths like `QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/Makefile` -// that include files in directories are also supported -let path = 'QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/Makefile' -let data = ipfs.cat(path) -``` - -**Note:** `ipfs.cat` is not deterministic at the moment. If the file cannot be retrieved over the IPFS network before the request times out, it will return `null`. Due to this, it's always worth checking the result for `null`. - -It is also possible to process larger files in a streaming fashion with `ipfs.map`. The function expects the hash or path for an IPFS file, the name of a callback, and flags to modify its behavior: - -```typescript -import { JSONValue, Value } from '@graphprotocol/graph-ts' - -export function processItem(value: JSONValue, userData: Value): void { - // See the JSONValue documentation for details on dealing - // with JSON values - let obj = value.toObject() - let id = obj.get('id') - let title = obj.get('title') - - if (!id || !title) { - return - } - - // Callbacks can also created entities - let newItem = new Item(id) - newItem.title = title.toString() - newitem.parent = userData.toString() // Set parent to "parentId" - newitem.save() -} - -// Put this inside an event handler in the mapping -ipfs.map('Qm...', 'processItem', Value.fromString('parentId'), ['json']) - -// Alternatively, use `ipfs.mapJSON` -ipfs.mapJSON('Qm...', 'processItem', Value.fromString('parentId')) -``` - -The only flag currently supported is `json`, which must be passed to `ipfs.map`. With the `json` flag, the IPFS file must consist of a series of JSON values, one value per line. The call to `ipfs.map` will read each line in the file, deserialize it into a `JSONValue` and call the callback for each of them. The callback can then use entity operations to store data from the `JSONValue`. Entity changes are stored only when the handler that called `ipfs.map` finishes successfully; in the meantime, they are kept in memory, and the size of the file that `ipfs.map` can process is therefore limited. - -On success, `ipfs.map` returns `void`. If any invocation of the callback causes an error, the handler that invoked `ipfs.map` is aborted, and the Subgraph is marked as failed. - -### Crypto API - -```typescript -'import { crypto } from '@graphprotocol/graph-ts -``` - -The `crypto` API makes a cryptographic functions available for use in mappings. Right now, there is only one: - -- `crypto.keccak256(input: ByteArray): ByteArray` - -### JSON API - -```typescript -'import { json, JSONValueKind } from '@graphprotocol/graph-ts -``` - -JSON data can be parsed using the `json` API: - -- `json.fromBytes(data: Bytes): JSONValue` – parses JSON data from a `Bytes` array interpreted as a valid UTF-8 sequence -- `json.try_fromBytes(data: Bytes): Result` – safe version of `json.fromBytes`, it returns an error variant if the parsing failed -- `json.fromString(data: string): JSONValue` – parses JSON data from a valid UTF-8 `String` -- `json.try_fromString(data: string): Result` – safe version of `json.fromString`, it returns an error variant if the parsing failed - -The `JSONValue` class provides a way to pull values out of an arbitrary JSON document. Since JSON values can be booleans, numbers, arrays and more, `JSONValue` comes with a `kind` property to check the type of a value: - -```typescript -let value = json.fromBytes(...) -if (value.kind == JSONValueKind.BOOL) { - ... -} -``` - -In addition, there is a method to check if the value is `null`: - -- `value.isNull(): boolean` - -When the type of a value is certain, it can be converted to a [built-in type](#built-in-types) using one of the following methods: - -- `value.toBool(): boolean` -- `value.toI64(): i64` -- `value.toF64(): f64` -- `value.toBigInt(): BigInt` -- `value.toString(): string` -- `value.toArray(): Array` - (and then convert `JSONValue` with one of the 5 methods above) - -### مرجع تحويلات الأنواع - -| Source(s) | Destination | Conversion function | -| -------------------- | -------------------- | ---------------------------- | -| Address | Bytes | none | -| Address | String | s.toHexString() | -| BigDecimal | String | s.toString() | -| BigInt | BigDecimal | s.toBigDecimal() | -| BigInt | String (hexadecimal) | s.toHexString() or s.toHex() | -| BigInt | String (unicode) | s.toString() | -| BigInt | i32 | s.toI32() | -| Boolean | Boolean | none | -| Bytes (signed) | BigInt | BigInt.fromSignedBytes(s) | -| Bytes (unsigned) | BigInt | BigInt.fromUnsignedBytes(s) | -| Bytes | String (hexadecimal) | s.toHexString() or s.toHex() | -| Bytes | String (unicode) | s.toString() | -| Bytes | String (base58) | s.toBase58() | -| Bytes | i32 | s.toI32() | -| Bytes | u32 | s.toU32() | -| Bytes | JSON | json.fromBytes(s) | -| int8 | i32 | none | -| int32 | i32 | none | -| int32 | BigInt | BigInt.fromI32(s) | -| uint24 | i32 | none | -| int64 - int256 | BigInt | none | -| uint32 - uint256 | BigInt | none | -| JSON | boolean | s.toBool() | -| JSON | i64 | s.toI64() | -| JSON | u64 | s.toU64() | -| JSON | f64 | s.toF64() | -| JSON | BigInt | s.toBigInt() | -| JSON | string | s.toString() | -| JSON | Array | s.toArray() | -| JSON | Object | s.toObject() | -| String | Address | Address.fromString(s) | -| Bytes | Address | Address.fromBytes(s) | -| String | BigInt | BigInt.fromString(s) | -| String | BigDecimal | BigDecimal.fromString(s) | -| String (hexadecimal) | Bytes | ByteArray.fromHexString(s) | -| String (UTF-8) | Bytes | ByteArray.fromUTF8(s) | - -### البيانات الوصفية لمصدر البيانات - -You can inspect the contract address, network and context of the data source that invoked the handler through the `dataSource` namespace: - -- `dataSource.address(): Address` -- `dataSource.network(): string` -- `dataSource.context(): DataSourceContext` - -### الكيان و DataSourceContext - -The base `Entity` class and the child `DataSourceContext` class have helpers to dynamically set and get fields: - -- `setString(key: string, value: string): void` -- `setI32(key: string, value: i32): void` -- `setBigInt(key: string, value: BigInt): void` -- `setBytes(key: string, value: Bytes): void` -- `setBoolean(key: string, value: bool): void` -- `setBigDecimal(key, value: BigDecimal): void` -- `getString(key: string): string` -- `getI32(key: string): i32` -- `getBigInt(key: string): BigInt` -- `getBytes(key: string): Bytes` -- `getBoolean(key: string): boolean` -- `getBigDecimal(key: string): BigDecimal` - -### DataSourceContext in Manifest - -The `context` section within `dataSources` allows you to define key-value pairs that are accessible within your Subgraph mappings. The available types are `Bool`, `String`, `Int`, `Int8`, `BigDecimal`, `Bytes`, `List`, and `BigInt`. - -Here is a YAML example illustrating the usage of various types in the `context` section: - -```yaml -dataSources: - - kind: ethereum/contract - name: ContractName - network: mainnet - context: - bool_example: - type: Bool - data: true - string_example: - type: String - data: 'hello' - int_example: - type: Int - data: 42 - int8_example: - type: Int8 - data: 127 - big_decimal_example: - type: BigDecimal - data: '10.99' - bytes_example: - type: Bytes - data: '0x68656c6c6f' - list_example: - type: List - data: - - type: Int - data: 1 - - type: Int - data: 2 - - type: Int - data: 3 - big_int_example: - type: BigInt - data: '1000000000000000000000000' -``` - -- `Bool`: Specifies a Boolean value (`true` or `false`). -- `String`: Specifies a String value. -- `Int`: Specifies a 32-bit integer. -- `Int8`: Specifies an 8-bit integer. -- `BigDecimal`: Specifies a decimal number. Must be quoted. -- `Bytes`: Specifies a hexadecimal string. -- `List`: Specifies a list of items. Each item needs to specify its type and data. -- `BigInt`: Specifies a large integer value. Must be quoted due to its large size. - -This context is then accessible in your Subgraph mapping files, enabling more dynamic and configurable Subgraphs. diff --git a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/common-issues.mdx b/website/src/pages/ar/subgraphs/developing/creating/graph-ts/common-issues.mdx deleted file mode 100644 index b0ce00e687e3..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/graph-ts/common-issues.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: مشاكل شائعة في أسمبلي سكريبت (AssemblyScript) ---- - -There are certain [AssemblyScript](https://github.com/AssemblyScript/assemblyscript) issues that are common to run into during Subgraph development. They range in debug difficulty, however, being aware of them may help. The following is a non-exhaustive list of these issues: - -- `Private` class variables are not enforced in [AssemblyScript](https://www.assemblyscript.org/status.html#language-features). There is no way to protect class variables from being directly changed from the class object. -- لا يتم توريث النطاق في [دوال الإغلاق](https://www.assemblyscript.org/status.html#on-closures)، أي لا يمكن استخدام المتغيرات المعلنة خارج دوال الإغلاق. الشرح في [ النقاط الهامة للمطورين #3](https://www.youtube.com/watch?v=1-8AW-lVfrA&t=3243s). diff --git a/website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx deleted file mode 100644 index 618eedef134d..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: قم بتثبيت Graph CLI ---- - -> In order to use your Subgraph on The Graph's decentralized network, you will need to [create an API key](/resources/subgraph-studio-faq/#2-how-do-i-create-an-api-key) in [Subgraph Studio](https://thegraph.com/studio/apikeys/). It is recommended that you add signal to your Subgraph with at least 3,000 GRT to attract 2-3 Indexers. To learn more about signaling, check out [curating](/resources/roles/curating/). - -## نظره عامة - -The [Graph CLI](https://github.com/graphprotocol/graph-tooling/tree/main/packages/cli) is a command-line interface that facilitates developers' commands for The Graph. It processes a [Subgraph manifest](/subgraphs/developing/creating/subgraph-manifest/) and compiles the [mappings](/subgraphs/developing/creating/assemblyscript-mappings/) to create the files you will need to deploy the Subgraph to [Subgraph Studio](https://thegraph.com/studio/) and the network. - -## Getting Started - -### قم بتثبيت Graph CLI - -The Graph CLI is written in TypeScript, and you must have `node` and either `npm` or `yarn` installed to use it. Check for the [most recent](https://github.com/graphprotocol/graph-tooling/releases?q=%40graphprotocol%2Fgraph-cli&expanded=true) CLI version. - -On your local machine, run one of the following commands: - -#### Using [npm](https://www.npmjs.com/) - -```bash -npm install -g @graphprotocol/graph-cli@latest -``` - -#### Using [yarn](https://yarnpkg.com/) - -```bash -yarn global add @graphprotocol/graph-cli -``` - -The `graph init` command can be used to set up a new Subgraph project, either from an existing contract or from an example Subgraph. If you already have a smart contract deployed to your preferred network, you can bootstrap a new Subgraph from that contract to get started. - -## إنشاء الـ Subgraph - -### من عقد موجود - -The following command creates a Subgraph that indexes all events of an existing contract: - -```sh -graph init \ - --product subgraph-studio - --from-contract \ - [--network ] \ - [--abi ] \ - [] -``` - -- The command tries to retrieve the contract ABI from Etherscan. - - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI. - -- If any of the optional arguments are missing, it guides you through an interactive form. - -- The `` is the ID of your Subgraph in [Subgraph Studio](https://thegraph.com/studio/). It can be found on your Subgraph details page. - -### من مثال Subgraph - -The following command initializes a new project from an example Subgraph: - -```sh -graph init --from-example=example-subgraph -``` - -- The [example Subgraph](https://github.com/graphprotocol/example-subgraph) is based on the Gravity contract by Dani Grant, which manages user avatars and emits `NewGravatar` or `UpdateGravatar` events whenever avatars are created or updated. - -- The Subgraph handles these events by writing `Gravatar` entities to the Graph Node store and ensuring these are updated according to the events. - -### Add New `dataSources` to an Existing Subgraph - -`dataSources` are key components of Subgraphs. They define the sources of data that the Subgraph indexes and processes. A `dataSource` specifies which smart contract to listen to, which events to process, and how to handle them. - -Recent versions of the Graph CLI supports adding new `dataSources` to an existing Subgraph through the `graph add` command: - -```sh -graph add
[] - -Options: - - --abi Path to the contract ABI (default: download from Etherscan) - --contract-name Name of the contract (default: Contract) - --merge-entities Whether to merge entities with the same name (default: false) - --network-file Networks config file path (default: "./networks.json") -``` - -#### Specifics - -The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts. - -- The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts: - - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`. - - - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`. - -- The contract `address` will be written to the `networks.json` for the relevant network. - -> Note: When using the interactive CLI, after successfully running `graph init`, you'll be prompted to add a new `dataSource`. - -### Getting The ABIs - -يجب أن تتطابق ملف (ملفات) ABI مع العقد (العقود) الخاصة بك. هناك عدة طرق للحصول على ملفات ABI: - -- إذا كنت تقوم ببناء مشروعك الخاص ، فمن المحتمل أن تتمكن من الوصول إلى أحدث ABIs. -- If you are building a Subgraph for a public project, you can download that project to your computer and get the ABI by using [`npx hardhat compile`](https://hardhat.org/hardhat-runner/docs/guides/compile-contracts#compiling-your-contracts) or using `solc` to compile. -- You can also find the ABI on [Etherscan](https://etherscan.io/), but this isn't always reliable, as the ABI that is uploaded there may be out of date. Make sure you have the right ABI, otherwise running your Subgraph will fail. diff --git a/website/src/pages/ar/subgraphs/developing/creating/ql-schema.mdx b/website/src/pages/ar/subgraphs/developing/creating/ql-schema.mdx deleted file mode 100644 index a9d52647e13e..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/ql-schema.mdx +++ /dev/null @@ -1,324 +0,0 @@ ---- -title: The Graph QL Schema ---- - -## نظره عامة - -The schema for your Subgraph is in the file `schema.graphql`. GraphQL schemas are defined using the GraphQL interface definition language. - -> Note: If you've never written a GraphQL schema, it is recommended that you check out this primer on the GraphQL type system. Reference documentation for GraphQL schemas can be found in the [GraphQL API](/subgraphs/querying/graphql-api/) section. - -### Defining Entities - -Before defining entities, it is important to take a step back and think about how your data is structured and linked. - -- All queries will be made against the data model defined in the Subgraph schema. As a result, the design of the Subgraph schema should be informed by the queries that your application will need to perform. -- It may be useful to imagine entities as "objects containing data", rather than as events or functions. -- You define entity types in `schema.graphql`, and Graph Node will generate top-level fields for querying single instances and collections of that entity type. -- Each type that should be an entity is required to be annotated with an `@entity` directive. -- By default, entities are mutable, meaning that mappings can load existing entities, modify them and store a new version of that entity. - - Mutability comes at a price, so for entity types that will never be modified, such as those containing data extracted verbatim from the chain, it is recommended to mark them as immutable with `@entity(immutable: true)`. - - If changes happen in the same block in which the entity was created, then mappings can make changes to immutable entities. Immutable entities are much faster to write and to query so they should be used whenever possible. - -#### مثال جيد - -The following `Gravatar` entity is structured around a Gravatar object and is a good example of how an entity could be defined. - -```graphql -type Gravatar @entity(immutable: true) { - id: Bytes! - owner: Bytes - displayName: String - imageUrl: String - accepted: Boolean -} -``` - -#### مثال سيئ - -The following example `GravatarAccepted` and `GravatarDeclined` entities are based around events. It is not recommended to map events or function calls to entities 1:1. - -```graphql -type GravatarAccepted @entity { - id: Bytes! - owner: Bytes - displayName: String - imageUrl: String -} - -type GravatarDeclined @entity { - id: Bytes! - owner: Bytes - displayName: String - imageUrl: String -} -``` - -#### الحقول الاختيارية والمطلوبة - -Entity fields can be defined as required or optional. Required fields are indicated by the `!` in the schema. If the field is a scalar field, you get an error when you try to store the entity. If the field references another entity then you get this error: - -``` -'Null value resolved for non-null field 'name -``` - -Each entity must have an `id` field, which must be of type `Bytes!` or `String!`. It is generally recommended to use `Bytes!`, unless the `id` contains human-readable text, since entities with `Bytes!` id's will be faster to write and query as those with a `String!` `id`. The `id` field serves as the primary key, and needs to be unique among all entities of the same type. For historical reasons, the type `ID!` is also accepted and is a synonym for `String!`. - -For some entity types the `id` for `Bytes!` is constructed from the id's of two other entities; that is possible using `concat`, e.g., `let id = left.id.concat(right.id) ` to form the id from the id's of `left` and `right`. Similarly, to construct an id from the id of an existing entity and a counter `count`, `let id = left.id.concatI32(count)` can be used. The concatenation is guaranteed to produce unique id's as long as the length of `left` is the same for all such entities, for example, because `left.id` is an `Address`. - -### أنواع المقاييس المضمنة - -#### المقاييس المدعومة من GraphQL - -The following scalars are supported in the GraphQL API: - -| النوع | الوصف | -| --- | --- | -| `Bytes` | مصفوفة Byte ، ممثلة كسلسلة سداسية عشرية. يشيع استخدامها في Ethereum hashes وعناوينه. | -| `String` | Scalar for `string` values. Null characters are not supported and are automatically removed. | -| `Boolean` | Scalar for `boolean` values. | -| `Int` | The GraphQL spec defines `Int` to be a signed 32-bit integer. | -| `Int8` | An 8-byte signed integer, also known as a 64-bit signed integer, can store values in the range from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. Prefer using this to represent `i64` from ethereum. | -| `BigInt` | Large integers. Used for Ethereum's `uint32`, `int64`, `uint64`, ..., `uint256` types. Note: Everything below `uint32`, such as `int32`, `uint24` or `int8` is represented as `i32`. | -| `BigDecimal` | `BigDecimal` High precision decimals represented as a significand and an exponent. The exponent range is from −6143 to +6144. Rounded to 34 significant digits. | -| `Timestamp` | It is an `i64` value in microseconds. Commonly used for `timestamp` fields for timeseries and aggregations. | - -### Enums - -You can also create enums within a schema. Enums have the following syntax: - -```graphql -enum TokenStatus { - OriginalOwner - SecondOwner - ThirdOwner -} -``` - -Once the enum is defined in the schema, you can use the string representation of the enum value to set an enum field on an entity. For example, you can set the `tokenStatus` to `SecondOwner` by first defining your entity and subsequently setting the field with `entity.tokenStatus = "SecondOwner"`. The example below demonstrates what the Token entity would look like with an enum field: - -More detail on writing enums can be found in the [GraphQL documentation](https://graphql.org/learn/schema/). - -### علاقات الكيانات - -An entity may have a relationship to one or more other entities in your schema. These relationships may be traversed in your queries. Relationships in The Graph are unidirectional. It is possible to simulate bidirectional relationships by defining a unidirectional relationship on either "end" of the relationship. - -Relationships are defined on entities just like any other field except that the type specified is that of another entity. - -#### العلاقات واحد-لواحد - -Define a `Transaction` entity type with an optional one-to-one relationship with a `TransactionReceipt` entity type: - -```graphql -type Transaction @entity(immutable: true) { - id: Bytes! - transactionReceipt: TransactionReceipt -} - -type TransactionReceipt @entity(immutable: true) { - id: Bytes! - transaction: Transaction -} -``` - -#### علاقات واحد-لمتعدد - -Define a `TokenBalance` entity type with a required one-to-many relationship with a Token entity type: - -```graphql -type Token @entity(immutable: true) { - id: Bytes! -} - -type TokenBalance @entity { - id: Bytes! - amount: Int! - token: Token! -} -``` - -### البحث العكسي - -Reverse lookups can be defined on an entity through the `@derivedFrom` field. This creates a virtual field on the entity that may be queried but cannot be set manually through the mappings API. Rather, it is derived from the relationship defined on the other entity. For such relationships, it rarely makes sense to store both sides of the relationship, and both indexing and query performance will be better when only one side is stored and the other is derived. - -For one-to-many relationships, the relationship should always be stored on the 'one' side, and the 'many' side should always be derived. Storing the relationship this way, rather than storing an array of entities on the 'many' side, will result in dramatically better performance for both indexing and querying the Subgraph. In general, storing arrays of entities should be avoided as much as is practical. - -#### Example - -We can make the balances for a token accessible from the token by deriving a `tokenBalances` field: - -```graphql -type Token @entity(immutable: true) { - id: Bytes! - tokenBalances: [TokenBalance!]! @derivedFrom(field: "token") -} - -type TokenBalance @entity { - id: Bytes! - amount: Int! - token: Token! -} -``` - -Here is an example of how to write a mapping for a Subgraph with reverse lookups: - -```typescript -let token = new Token(event.address) // Create Token -token.save() // tokenBalances is derived automatically - -let tokenBalance = new TokenBalance(event.address) -tokenBalance.amount = BigInt.fromI32(0) -tokenBalance.token = token.id // Reference stored here -tokenBalance.save() -``` - -#### علاقات متعدد_لمتعدد - -For many-to-many relationships, such as users that each may belong to any number of organizations, the most straightforward, but generally not the most performant, way to model the relationship is as an array in each of the two entities involved. If the relationship is symmetric, only one side of the relationship needs to be stored and the other side can be derived. - -#### Example - -Define a reverse lookup from a `User` entity type to an `Organization` entity type. In the example below, this is achieved by looking up the `members` attribute from within the `Organization` entity. In queries, the `organizations` field on `User` will be resolved by finding all `Organization` entities that include the user's ID. - -```graphql -type Organization @entity { - id: Bytes! - name: String! - members: [User!]! -} - -type User @entity { - id: Bytes! - name: String! - organizations: [Organization!]! @derivedFrom(field: "members") -} -``` - -A more performant way to store this relationship is through a mapping table that has one entry for each `User` / `Organization` pair with a schema like - -```graphql -type Organization @entity { - id: Bytes! - name: String! - members: [UserOrganization!]! @derivedFrom(field: "organization") -} - -type User @entity { - id: Bytes! - name: String! - organizations: [UserOrganization!] @derivedFrom(field: "user") -} - -type UserOrganization @entity { - id: Bytes! # Set to `user.id.concat(organization.id)` - user: User! - organization: Organization! -} -``` - -This approach requires that queries descend into one additional level to retrieve, for example, the organizations for users: - -```graphql -query usersWithOrganizations { - users { - organizations { - # this is a UserOrganization entity - organization { - name - } - } - } -} -``` - -This more elaborate way of storing many-to-many relationships will result in less data stored for the Subgraph, and therefore to a Subgraph that is often dramatically faster to index and to query. - -### إضافة تعليقات إلى المخطط (schema) - -As per GraphQL spec, comments can be added above schema entity attributes using the hash symbol `#`. This is illustrated in the example below: - -```graphql -type MyFirstEntity @entity { - # unique identifier and primary key of the entity - id: Bytes! - address: Bytes! -} -``` - -## تعريف حقول البحث عن النص الكامل - -Fulltext search queries filter and rank entities based on a text search input. Fulltext queries are able to return matches for similar words by processing the query text input into stems before comparing them to the indexed text data. - -A fulltext query definition includes the query name, the language dictionary used to process the text fields, the ranking algorithm used to order the results, and the fields included in the search. Each fulltext query may span multiple fields, but all included fields must be from a single entity type. - -To add a fulltext query, include a `_Schema_` type with a fulltext directive in the GraphQL schema. - -```graphql -type _Schema_ - @fulltext( - name: "bandSearch" - language: en - algorithm: rank - include: [{ entity: "Band", fields: [{ name: "name" }, { name: "description" }, { name: "bio" }] }] - ) - -type Band @entity { - id: Bytes! - name: String! - description: String! - bio: String - wallet: Address - labels: [Label!]! - discography: [Album!]! - members: [Musician!]! -} -``` - -The example `bandSearch` field can be used in queries to filter `Band` entities based on the text documents in the `name`, `description`, and `bio` fields. Jump to [GraphQL API - Queries](/subgraphs/querying/graphql-api/#queries) for a description of the fulltext search API and more example usage. - -```graphql -query { - bandSearch(text: "breaks & electro & detroit") { - id - name - description - wallet - } -} -``` - -> **[Feature Management](#experimental-features):** From `specVersion` `0.0.4` and onwards, `fullTextSearch` must be declared under the `features` section in the Subgraph manifest. - -## اللغات المدعومة - -Choosing a different language will have a definitive, though sometimes subtle, effect on the fulltext search API. Fields covered by a fulltext query field are examined in the context of the chosen language, so the lexemes produced by analysis and search queries vary from language to language. For example: when using the supported Turkish dictionary "token" is stemmed to "toke" while, of course, the English dictionary will stem it to "token". - -Supported language dictionaries: - -| Code | القاموس | -| ------ | ---------- | -| simple | General | -| da | Danish | -| nl | Dutch | -| en | English | -| fi | Finnish | -| fr | French | -| de | German | -| hu | Hungarian | -| it | Italian | -| no | Norwegian | -| pt | Portuguese | -| ro | Romanian | -| ru | Russian | -| es | Spanish | -| sv | Swedish | -| tr | Turkish | - -### خوارزميات التصنيف - -Supported algorithms for ordering results: - -| Algorithm | Description | -| ------------- | --------------------------------------------------------------- | -| rank | استخدم جودة مطابقة استعلام النص-الكامل (0-1) لترتيب النتائج. | -| proximityRank | Similar to rank but also includes the proximity of the matches. | diff --git a/website/src/pages/ar/subgraphs/developing/creating/starting-your-subgraph.mdx b/website/src/pages/ar/subgraphs/developing/creating/starting-your-subgraph.mdx deleted file mode 100644 index fa6c44e61fb2..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/starting-your-subgraph.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Starting Your Subgraph ---- - -## نظره عامة - -The Graph is home to thousands of Subgraphs already available for query, so check [The Graph Explorer](https://thegraph.com/explorer) and find one that already matches your needs. - -When you create a [Subgraph](/subgraphs/developing/subgraphs/), you create a custom open API that extracts data from a blockchain, processes it, stores it, and makes it easy to query via GraphQL. - -Subgraph development ranges from simple scaffold Subgraphs to advanced, specifically tailored Subgraphs. - -### Start Building - -Start the process and build a Subgraph that matches your needs: - -1. [Install the CLI](/subgraphs/developing/creating/install-the-cli/) - Set up your infrastructure -2. [Subgraph Manifest](/subgraphs/developing/creating/subgraph-manifest/) - Understand a Subgraph's key component -3. [The GraphQL Schema](/subgraphs/developing/creating/ql-schema/) - Write your schema -4. [Writing AssemblyScript Mappings](/subgraphs/developing/creating/assemblyscript-mappings/) - Write your mappings -5. [Advanced Features](/subgraphs/developing/creating/advanced/) - Customize your Subgraph with advanced features - -Explore additional [resources for APIs](/subgraphs/developing/creating/graph-ts/README/) and conduct local testing with [Matchstick](/subgraphs/developing/creating/unit-testing-framework/). - -| الاصدار | ملاحظات الإصدار | -| :-: | --- | -| 1.2.0 | Added support for [Indexed Argument Filtering](/#indexed-argument-filters--topic-filters) & declared `eth_call` | -| 1.1.0 | Supports [Timeseries & Aggregations](#timeseries-and-aggregations). Added support for type `Int8` for `id`. | -| 1.0.0 | Supports [`indexerHints`](/developing/creating-a-subgraph/#indexer-hints) feature to prune Subgraphs | -| 0.0.9 | Supports `endBlock` feature | -| 0.0.8 | Added support for polling [Block Handlers](/developing/creating-a-subgraph/#polling-filter) and [Initialisation Handlers](/developing/creating-a-subgraph/#once-filter). | -| 0.0.7 | Added support for [File Data Sources](/developing/creating-a-subgraph/#file-data-sources). | -| 0.0.6 | Supports fast [Proof of Indexing](/indexing/overview/#what-is-a-proof-of-indexing-poi) calculation variant. | -| 0.0.5 | Added support for event handlers having access to transaction receipts. | -| 0.0.4 | Added support for managing subgraph features. | diff --git a/website/src/pages/ar/subgraphs/developing/creating/subgraph-manifest.mdx b/website/src/pages/ar/subgraphs/developing/creating/subgraph-manifest.mdx deleted file mode 100644 index 29a666a8a297..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/subgraph-manifest.mdx +++ /dev/null @@ -1,549 +0,0 @@ ---- -title: Subgraph Manifest ---- - -## نظره عامة - -The Subgraph manifest, `subgraph.yaml`, defines the smart contracts & network your Subgraph will index, the events from these contracts to pay attention to, and how to map event data to entities that Graph Node stores and allows to query. - -The **Subgraph definition** consists of the following files: - -- `subgraph.yaml`: Contains the Subgraph manifest - -- `schema.graphql`: A GraphQL schema defining the data stored for your Subgraph and how to query it via GraphQL - -- `mapping.ts`: [AssemblyScript Mappings](https://github.com/AssemblyScript/assemblyscript) code that translates event data into entities defined in your schema (e.g. `mapping.ts` in this guide) - -### Subgraph Capabilities - -A single Subgraph can: - -- Index data from multiple smart contracts (but not multiple networks). - -- Index data from IPFS files using File Data Sources. - -- Add an entry for each contract that requires indexing to the `dataSources` array. - -The full specification for Subgraph manifests can be found [here](https://github.com/graphprotocol/graph-node/blob/master/docs/subgraph-manifest.md). - -For the example Subgraph listed above, `subgraph.yaml` is: - -```yaml -specVersion: 1.3.0 -description: Gravatar for Ethereum -repository: https://github.com/graphprotocol/graph-tooling -schema: - file: ./schema.graphql -indexerHints: - prune: auto -dataSources: - - kind: ethereum/contract - name: Gravity - network: mainnet - source: - address: '0x2E645469f354BB4F5c8a05B3b30A929361cf77eC' - abi: Gravity - startBlock: 6175244 - endBlock: 7175245 - context: - foo: - type: Bool - data: true - bar: - type: String - data: 'bar' - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - entities: - - Gravatar - abis: - - name: Gravity - file: ./abis/Gravity.json - eventHandlers: - - event: NewGravatar(uint256,address,string,string) - handler: handleNewGravatar - - event: UpdatedGravatar(uint256,address,string,string) - handler: handleUpdatedGravatar - callHandlers: - - function: createGravatar(string,string) - handler: handleCreateGravatar - blockHandlers: - - handler: handleBlock - - handler: handleBlockWithCall - filter: - kind: call - file: ./src/mapping.ts -``` - -## Subgraph Entries - -> Important Note: Be sure you populate your Subgraph manifest with all handlers and [entities](/subgraphs/developing/creating/ql-schema/). - -الإدخالات الهامة لتحديث manifest هي: - -- `specVersion`: a semver version that identifies the supported manifest structure and functionality for the Subgraph. The latest version is `1.3.0`. See [specVersion releases](#specversion-releases) section to see more details on features & releases. - -- `description`: a human-readable description of what the Subgraph is. This description is displayed in Graph Explorer when the Subgraph is deployed to Subgraph Studio. - -- `repository`: the URL of the repository where the Subgraph manifest can be found. This is also displayed in Graph Explorer. - -- `features`: a list of all used [feature](#experimental-features) names. - -- `indexerHints.prune`: Defines the retention of historical block data for a Subgraph. See [prune](#prune) in [indexerHints](#indexer-hints) section. - -- `dataSources.source`: the address of the smart contract the Subgraph sources, and the ABI of the smart contract to use. The address is optional; omitting it allows to index matching events from all contracts. - -- `dataSources.source.startBlock`: the optional number of the block that the data source starts indexing from. In most cases, we suggest using the block in which the contract was created. - -- `dataSources.source.endBlock`: The optional number of the block that the data source stops indexing at, including that block. Minimum spec version required: `0.0.9`. - -- `dataSources.context`: key-value pairs that can be used within Subgraph mappings. Supports various data types like `Bool`, `String`, `Int`, `Int8`, `BigDecimal`, `Bytes`, `List`, and `BigInt`. Each variable needs to specify its `type` and `data`. These context variables are then accessible in the mapping files, offering more configurable options for Subgraph development. - -- `dataSources.mapping.entities`: the entities that the data source writes to the store. The schema for each entity is defined in the schema.graphql file. - -- `dataSources.mapping.abis`: one or more named ABI files for the source contract as well as any other smart contracts that you interact with from within the mappings. - -- `dataSources.mapping.eventHandlers`: lists the smart contract events this Subgraph reacts to and the handlers in the mapping—./src/mapping.ts in the example—that transform these events into entities in the store. - -- `dataSources.mapping.callHandlers`: lists the smart contract functions this Subgraph reacts to and handlers in the mapping that transform the inputs and outputs to function calls into entities in the store. - -- `dataSources.mapping.blockHandlers`: lists the blocks this Subgraph reacts to and handlers in the mapping to run when a block is appended to the chain. Without a filter, the block handler will be run every block. An optional call-filter can be provided by adding a `filter` field with `kind: call` to the handler. This will only run the handler if the block contains at least one call to the data source contract. - -A single Subgraph can index data from multiple smart contracts. Add an entry for each contract from which data needs to be indexed to the `dataSources` array. - -## Event Handlers - -Event handlers in a Subgraph react to specific events emitted by smart contracts on the blockchain and trigger handlers defined in the Subgraph's manifest. This enables Subgraphs to process and store event data according to defined logic. - -### Defining an Event Handler - -An event handler is declared within a data source in the Subgraph's YAML configuration. It specifies which events to listen for and the corresponding function to execute when those events are detected. - -```yaml -dataSources: - - kind: ethereum/contract - name: Gravity - network: dev - source: - address: '0x731a10897d267e19b34503ad902d0a29173ba4b1' - abi: Gravity - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - entities: - - Gravatar - - Transaction - abis: - - name: Gravity - file: ./abis/Gravity.json - eventHandlers: - - event: Approval(address,address,uint256) - handler: handleApproval - - event: Transfer(address,address,uint256) - handler: handleTransfer - topic1: ['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', '0xc8dA6BF26964aF9D7eEd9e03E53415D37aA96325'] # Optional topic filter which filters only events with the specified topic. -``` - -## معالجات الاستدعاء(Call Handlers) - -While events provide an effective way to collect relevant changes to the state of a contract, many contracts avoid generating logs to optimize gas costs. In these cases, a Subgraph can subscribe to calls made to the data source contract. This is achieved by defining call handlers referencing the function signature and the mapping handler that will process calls to this function. To process these calls, the mapping handler will receive an `ethereum.Call` as an argument with the typed inputs to and outputs from the call. Calls made at any depth in a transaction's call chain will trigger the mapping, allowing activity with the data source contract through proxy contracts to be captured. - -Call handlers will only trigger in one of two cases: when the function specified is called by an account other than the contract itself or when it is marked as external in Solidity and called as part of another function in the same contract. - -> **Note:** Call handlers currently depend on the Parity tracing API. Certain networks, such as BNB chain and Arbitrum, does not support this API. If a Subgraph indexing one of these networks contain one or more call handlers, it will not start syncing. Subgraph developers should instead use event handlers. These are far more performant than call handlers, and are supported on every evm network. - -### تعريف معالج الاستدعاء - -To define a call handler in your manifest, simply add a `callHandlers` array under the data source you would like to subscribe to. - -```yaml -dataSources: - - kind: ethereum/contract - name: Gravity - network: mainnet - source: - address: '0x731a10897d267e19b34503ad902d0a29173ba4b1' - abi: Gravity - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - entities: - - Gravatar - - Transaction - abis: - - name: Gravity - file: ./abis/Gravity.json - callHandlers: - - function: createGravatar(string,string) - handler: handleCreateGravatar -``` - -The `function` is the normalized function signature to filter calls by. The `handler` property is the name of the function in your mapping you would like to execute when the target function is called in the data source contract. - -### دالة الـ Mapping - -Each call handler takes a single parameter that has a type corresponding to the name of the called function. In the example Subgraph above, the mapping contains a handler for when the `createGravatar` function is called and receives a `CreateGravatarCall` parameter as an argument: - -```typescript -import { CreateGravatarCall } from '../generated/Gravity/Gravity' -import { Transaction } from '../generated/schema' - -export function handleCreateGravatar(call: CreateGravatarCall): void { - let id = call.transaction.hash - let transaction = new Transaction(id) - transaction.displayName = call.inputs._displayName - transaction.imageUrl = call.inputs._imageUrl - transaction.save() -} -``` - -The `handleCreateGravatar` function takes a new `CreateGravatarCall` which is a subclass of `ethereum.Call`, provided by `@graphprotocol/graph-ts`, that includes the typed inputs and outputs of the call. The `CreateGravatarCall` type is generated for you when you run `graph codegen`. - -## معالجات الكتلة - -In addition to subscribing to contract events or function calls, a Subgraph may want to update its data as new blocks are appended to the chain. To achieve this a Subgraph can run a function after every block or after blocks that match a pre-defined filter. - -### الفلاتر المدعومة - -#### Call Filter - -```yaml -filter: - kind: call -``` - -_The defined handler will be called once for every block which contains a call to the contract (data source) the handler is defined under._ - -> **Note:** The `call` filter currently depend on the Parity tracing API. Certain networks, such as BNB chain and Arbitrum, does not support this API. If a Subgraph indexing one of these networks contain one or more block handlers with a `call` filter, it will not start syncing. - -The absence of a filter for a block handler will ensure that the handler is called every block. A data source can only contain one block handler for each filter type. - -```yaml -dataSources: - - kind: ethereum/contract - name: Gravity - network: dev - source: - address: '0x731a10897d267e19b34503ad902d0a29173ba4b1' - abi: Gravity - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - entities: - - Gravatar - - Transaction - abis: - - name: Gravity - file: ./abis/Gravity.json - blockHandlers: - - handler: handleBlock - - handler: handleBlockWithCallToContract - filter: - kind: call -``` - -#### Polling Filter - -> **Requires `specVersion` >= 0.0.8** -> -> **Note:** Polling filters are only available on dataSources of `kind: ethereum`. - -```yaml -blockHandlers: - - handler: handleBlock - filter: - kind: polling - every: 10 -``` - -The defined handler will be called once for every `n` blocks, where `n` is the value provided in the `every` field. This configuration allows the Subgraph to perform specific operations at regular block intervals. - -#### Once Filter - -> **Requires `specVersion` >= 0.0.8** -> -> **Note:** Once filters are only available on dataSources of `kind: ethereum`. - -```yaml -blockHandlers: - - handler: handleOnce - filter: - kind: once -``` - -The defined handler with the once filter will be called only once before all other handlers run. This configuration allows the Subgraph to use the handler as an initialization handler, performing specific tasks at the start of indexing. - -```ts -export function handleOnce(block: ethereum.Block): void { - let data = new InitialData(Bytes.fromUTF8('initial')) - data.data = 'Setup data here' - data.save() -} -``` - -### دالة الـ Mapping - -The mapping function will receive an `ethereum.Block` as its only argument. Like mapping functions for events, this function can access existing Subgraph entities in the store, call smart contracts and create or update entities. - -```typescript -import { ethereum } from '@graphprotocol/graph-ts' - -export function handleBlock(block: ethereum.Block): void { - let id = block.hash - let entity = new Block(id) - entity.save() -} -``` - -## أحداث الـ مجهول - -If you need to process anonymous events in Solidity, that can be achieved by providing the topic 0 of the event, as in the example: - -```yaml -eventHandlers: - - event: LogNote(bytes4,address,bytes32,bytes32,uint256,bytes) - topic0: '0x644843f351d3fba4abcd60109eaff9f54bac8fb8ccf0bab941009c21df21cf31' - handler: handleGive -``` - -An event will only be triggered when both the signature and topic 0 match. By default, `topic0` is equal to the hash of the event signature. - -## Transaction Receipts in Event Handlers - -Starting from `specVersion` `0.0.5` and `apiVersion` `0.0.7`, event handlers can have access to the receipt for the transaction which emitted them. - -To do so, event handlers must be declared in the Subgraph manifest with the new `receipt: true` key, which is optional and defaults to false. - -```yaml -eventHandlers: - - event: NewGravatar(uint256,address,string,string) - handler: handleNewGravatar - receipt: true -``` - -Inside the handler function, the receipt can be accessed in the `Event.receipt` field. When the `receipt` key is set to `false` or omitted in the manifest, a `null` value will be returned instead. - -## Order of Triggering Handlers - -يتم ترتيب المشغلات (triggers) لمصدر البيانات داخل الكتلة باستخدام العملية التالية: - -1. يتم ترتيب triggers الأحداث والاستدعاءات أولا من خلال فهرس الإجراء داخل الكتلة. -2. Event and call triggers within the same transaction are ordered using a convention: event triggers first then call triggers, each type respecting the order they are defined in the manifest. -3. يتم تشغيل مشغلات الكتلة بعد مشغلات الحدث والاستدعاء، بالترتيب المحدد في الـ manifest. - -قواعد الترتيب هذه عرضة للتغيير. - -> **Note:** When new [dynamic data source](#data-source-templates-for-dynamically-created-contracts) are created, the handlers defined for dynamic data sources will only start processing after all existing data source handlers are processed, and will repeat in the same sequence whenever triggered. - -## قوالب مصدر البيانات - -A common pattern in EVM-compatible smart contracts is the use of registry or factory contracts, where one contract creates, manages, or references an arbitrary number of other contracts that each have their own state and events. - -The addresses of these sub-contracts may or may not be known upfront and many of these contracts may be created and/or added over time. This is why, in such cases, defining a single data source or a fixed number of data sources is impossible and a more dynamic approach is needed: _data source templates_. - -### مصدر البيانات للعقد الرئيسي - -First, you define a regular data source for the main contract. The snippet below shows a simplified example data source for the [Uniswap](https://uniswap.org) exchange factory contract. Note the `NewExchange(address,address)` event handler. This is emitted when a new exchange contract is created onchain by the factory contract. - -```yaml -dataSources: - - kind: ethereum/contract - name: Factory - network: mainnet - source: - address: '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95' - abi: Factory - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/mappings/factory.ts - entities: - - Directory - abis: - - name: Factory - file: ./abis/factory.json - eventHandlers: - - event: NewExchange(address,address) - handler: handleNewExchange -``` - -### قوالب مصدر البيانات للعقود التي تم إنشاؤها ديناميكيا - -Then, you add _data source templates_ to the manifest. These are identical to regular data sources, except that they lack a pre-defined contract address under `source`. Typically, you would define one template for each type of sub-contract managed or referenced by the parent contract. - -```yaml -dataSources: - - kind: ethereum/contract - name: Factory - # ... other source fields for the main contract ... -templates: - - name: Exchange - kind: ethereum/contract - network: mainnet - source: - abi: Exchange - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/mappings/exchange.ts - entities: - - Exchange - abis: - - name: Exchange - file: ./abis/exchange.json - eventHandlers: - - event: TokenPurchase(address,uint256,uint256) - handler: handleTokenPurchase - - event: EthPurchase(address,uint256,uint256) - handler: handleEthPurchase - - event: AddLiquidity(address,uint256,uint256) - handler: handleAddLiquidity - - event: RemoveLiquidity(address,uint256,uint256) - handler: handleRemoveLiquidity -``` - -### إنشاء قالب مصدر البيانات - -In the final step, you update your main contract mapping to create a dynamic data source instance from one of the templates. In this example, you would change the main contract mapping to import the `Exchange` template and call the `Exchange.create(address)` method on it to start indexing the new exchange contract. - -```typescript -import { Exchange } from '../generated/templates' - -export function handleNewExchange(event: NewExchange): void { - // Start indexing the exchange; `event.params.exchange` is the - // address of the new exchange contract - Exchange.create(event.params.exchange) -} -``` - -> **Note:** A new data source will only process the calls and events for the block in which it was created and all following blocks, but will not process historical data, i.e., data that is contained in prior blocks. -> -> إذا كانت الكتل السابقة تحتوي على بيانات ذات صلة بمصدر البيانات الجديد ، فمن الأفضل فهرسة تلك البيانات من خلال قراءة الحالة الحالية للعقد وإنشاء كيانات تمثل تلك الحالة في وقت إنشاء مصدر البيانات الجديد. - -### سياق مصدر البيانات - -Data source contexts allow passing extra configuration when instantiating a template. In our example, let's say exchanges are associated with a particular trading pair, which is included in the `NewExchange` event. That information can be passed into the instantiated data source, like so: - -```typescript -import { Exchange } from '../generated/templates' - -export function handleNewExchange(event: NewExchange): void { - let context = new DataSourceContext() - context.setString('tradingPair', event.params.tradingPair) - Exchange.createWithContext(event.params.exchange, context) -} -``` - -Inside a mapping of the `Exchange` template, the context can then be accessed: - -```typescript -import { dataSource } from '@graphprotocol/graph-ts' - -let context = dataSource.context() -let tradingPair = context.getString('tradingPair') -``` - -There are setters and getters like `setString` and `getString` for all value types. - -## كتل البدء - -The `startBlock` is an optional setting that allows you to define from which block in the chain the data source will start indexing. Setting the start block allows the data source to skip potentially millions of blocks that are irrelevant. Typically, a Subgraph developer will set `startBlock` to the block in which the smart contract of the data source was created. - -```yaml -dataSources: - - kind: ethereum/contract - name: ExampleSource - network: mainnet - source: - address: '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95' - abi: ExampleContract - startBlock: 6627917 - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/mappings/factory.ts - entities: - - User - abis: - - name: ExampleContract - file: ./abis/ExampleContract.json - eventHandlers: - - event: NewEvent(address,address) - handler: handleNewEvent -``` - -> **Note:** The contract creation block can be quickly looked up on Etherscan: -> -> 1. ابحث عن العقد بإدخال عنوانه في شريط البحث. -> 2. Click on the creation transaction hash in the `Contract Creator` section. -> 3. قم بتحميل صفحة تفاصيل الإجراء(transaction) حيث ستجد كتلة البدء لذلك العقد. - -## Indexer Hints - -The `indexerHints` setting in a Subgraph's manifest provides directives for indexers on processing and managing a Subgraph. It influences operational decisions across data handling, indexing strategies, and optimizations. Presently, it features the `prune` option for managing historical data retention or pruning. - -> This feature is available from `specVersion: 1.0.0` - -### Prune - -`indexerHints.prune`: Defines the retention of historical block data for a Subgraph. Options include: - -1. `"never"`: No pruning of historical data; retains the entire history. -2. `"auto"`: Retains the minimum necessary history as set by the indexer, optimizing query performance. -3. A specific number: Sets a custom limit on the number of historical blocks to retain. - -``` - indexerHints: - prune: auto -``` - -> The term "history" in this context of Subgraphs is about storing data that reflects the old states of mutable entities. - -History as of a given block is required for: - -- [Time travel queries](/subgraphs/querying/graphql-api/#time-travel-queries), which enable querying the past states of these entities at specific blocks throughout the Subgraph's history -- Using the Subgraph as a [graft base](/developing/creating-a-subgraph/#grafting-onto-existing-subgraphs) in another Subgraph, at that block -- Rewinding the Subgraph back to that block - -If historical data as of the block has been pruned, the above capabilities will not be available. - -> Using `"auto"` is generally recommended as it maximizes query performance and is sufficient for most users who do not require access to extensive historical data. - -For Subgraphs leveraging [time travel queries](/subgraphs/querying/graphql-api/#time-travel-queries), it's advisable to either set a specific number of blocks for historical data retention or use `prune: never` to keep all historical entity states. Below are examples of how to configure both options in your Subgraph's settings: - -To retain a specific amount of historical data: - -``` - indexerHints: - prune: 1000 # Replace 1000 with the desired number of blocks to retain -``` - -To preserve the complete history of entity states: - -``` -indexerHints: - prune: never -``` - -## SpecVersion Releases - -| الاصدار | ملاحظات الإصدار | -| :-: | --- | -| 1.3.0 | Added support for [Subgraph Composition](/cookbook/subgraph-composition-three-sources) | -| 1.2.0 | Added support for [Indexed Argument Filtering](/developing/creating/advanced/#indexed-argument-filters--topic-filters) & declared `eth_call` | -| 1.1.0 | Supports [Timeseries & Aggregations](/developing/creating/advanced/#timeseries-and-aggregations). Added support for type `Int8` for `id`. | -| 1.0.0 | Supports [`indexerHints`](/developing/creating/subgraph-manifest/#indexer-hints) feature to prune Subgraphs | -| 0.0.9 | Supports `endBlock` feature | -| 0.0.8 | Added support for polling [Block Handlers](/developing/creating/subgraph-manifest/#polling-filter) and [Initialisation Handlers](/developing/creating/subgraph-manifest/#once-filter). | -| 0.0.7 | Added support for [File Data Sources](/developing/creating/advanced/#ipfsarweave-file-data-sources). | -| 0.0.6 | Supports fast [Proof of Indexing](/indexing/overview/#what-is-a-proof-of-indexing-poi) calculation variant. | -| 0.0.5 | Added support for event handlers having access to transaction receipts. | -| 0.0.4 | Added support for managing subgraph features. | diff --git a/website/src/pages/ar/subgraphs/developing/creating/unit-testing-framework.mdx b/website/src/pages/ar/subgraphs/developing/creating/unit-testing-framework.mdx deleted file mode 100644 index 44c9fedacb10..000000000000 --- a/website/src/pages/ar/subgraphs/developing/creating/unit-testing-framework.mdx +++ /dev/null @@ -1,1402 +0,0 @@ ---- -title: اختبار وحدة Framework ---- - -Learn how to use Matchstick, a unit testing framework developed by [LimeChain](https://limechain.tech/). Matchstick enables Subgraph developers to test their mapping logic in a sandboxed environment and successfully deploy their Subgraphs. - -## Benefits of Using Matchstick - -- It's written in Rust and optimized for high performance. -- It gives you access to developer features, including the ability to mock contract calls, make assertions about the store state, monitor Subgraph failures, check test performance, and many more. - -## Getting Started - -### Install Dependencies - -In order to use the test helper methods and run tests, you need to install the following dependencies: - -```sh -yarn add --dev matchstick-as -``` - -### Install PostgreSQL - -`graph-node` depends on PostgreSQL, so if you don't already have it, then you will need to install it. - -> Note: It's highly recommended to use the commands below to avoid unexpected errors. - -#### Using MacOS - -Installation command: - -```sh -brew install postgresql -``` - -Create a symlink to the latest libpq.5.lib _You may need to create this dir first_ `/usr/local/opt/postgresql/lib/` - -```sh -ln -sf /usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /usr/local/opt/postgresql/lib/libpq.5.dylib -``` - -#### Using Linux - -Installation command (depends on your distro): - -```sh -sudo apt install postgresql -``` - -### Using WSL (Windows Subsystem for Linux) - -You can use Matchstick on WSL both using the Docker approach and the binary approach. As WSL can be a bit tricky, here's a few tips in case you encounter issues like - -``` -static BYTES = Symbol("Bytes") SyntaxError: Unexpected token = -``` - -or - -``` -/node_modules/gluegun/build/index.js:13 throw up; -``` - -Please make sure you're on a newer version of Node.js graph-cli doesn't support **v10.19.0** anymore, and that is still the default version for new Ubuntu images on WSL. For instance Matchstick is confirmed to be working on WSL with **v18.1.0**, you can switch to it either via **nvm** or if you update your global Node.js. Don't forget to delete `node_modules` and to run `npm install` again after updating you nodejs! Then, make sure you have **libpq** installed, you can do that by running - -``` -sudo apt-get install libpq-dev -``` - -And finally, do not use `graph test` (which uses your global installation of graph-cli and for some reason that looks like it's broken on WSL currently), instead use `yarn test` or `npm run test` (that will use the local, project-level instance of graph-cli, which works like a charm). For that you would of course need to have a `"test"` script in your `package.json` file which can be something as simple as - -```json -{ - "name": "demo-subgraph", - "version": "0.1.0", - "scripts": { - "test": "graph test", - ... - }, - "dependencies": { - "@graphprotocol/graph-cli": "^0.56.0", - "@graphprotocol/graph-ts": "^0.31.0", - "matchstick-as": "^0.6.0" - } -} -``` - -### Using Matchstick - -To use **Matchstick** in your Subgraph project just open up a terminal, navigate to the root folder of your project and simply run `graph test [options] ` - it downloads the latest **Matchstick** binary and runs the specified test or all tests in a test folder (or all existing tests if no datasource flag is specified). - -### CLI options - -This will run all tests in the test folder: - -```sh -graph test -``` - -This will run a test named gravity.test.ts and/or all test inside of a folder named gravity: - -```sh -graph test gravity -``` - -This will run only that specific test file: - -```sh -graph test path/to/file.test.ts -``` - -**Options:** - -```sh --c, --coverage Run the tests in coverage mode --d, --docker Run the tests in a docker container (Note: Please execute from the root folder of the Subgraph) --f, --force Binary: Redownloads the binary. Docker: Redownloads the Dockerfile and rebuilds the docker image. --h, --help Show usage information --l, --logs Logs to the console information about the OS, CPU model and download url (debugging purposes) --r, --recompile Forces tests to be recompiled --v, --version Choose the version of the rust binary that you want to be downloaded/used -``` - -### Docker - -From `graph-cli 0.25.2`, the `graph test` command supports running `matchstick` in a docker container with the `-d` flag. The docker implementation uses [bind mount](https://docs.docker.com/storage/bind-mounts/) so it does not have to rebuild the docker image every time the `graph test -d` command is executed. Alternatively you can follow the instructions from the [matchstick](https://github.com/LimeChain/matchstick#docker-) repository to run docker manually. - -❗ `graph test -d` forces `docker run` to run with flag `-t`. This must be removed to run inside non-interactive environments (like GitHub CI). - -❗ If you have previously ran `graph test` you may encounter the following error during docker build: - -```sh - error from sender: failed to xattr node_modules/binary-install-raw/bin/binary-: permission denied -``` - -In this case create a `.dockerignore` in the root folder and add `node_modules/binary-install-raw/bin` - -### Configuration - -Matchstick can be configured to use a custom tests, libs and manifest path via `matchstick.yaml` config file: - -```yaml -testsFolder: path/to/tests -libsFolder: path/to/libs -manifestPath: path/to/subgraph.yaml -``` - -### Demo Subgraph - -You can try out and play around with the examples from this guide by cloning the [Demo Subgraph repo](https://github.com/LimeChain/demo-subgraph) - -### Video tutorials - -Also you can check out the video series on ["How to use Matchstick to write unit tests for your Subgraphs"](https://www.youtube.com/playlist?list=PLTqyKgxaGF3SNakGQwczpSGVjS_xvOv3h) - -## Tests structure - -_**IMPORTANT: The test structure described below depends on `matchstick-as` version >=0.5.0**_ - -### describe() - -`describe(name: String , () => {})` - Defines a test group. - -**_Notes:_** - -- _Describes are not mandatory. You can still use test() the old way, outside of the describe() blocks_ - -Example: - -```typescript -import { describe, test } from "matchstick-as/assembly/index" -import { handleNewGravatar } from "../../src/gravity" - -describe("handleNewGravatar()", () => { - test("Should create a new Gravatar entity", () => { - ... - }) -}) -``` - -Nested `describe()` example: - -```typescript -import { describe, test } from "matchstick-as/assembly/index" -import { handleUpdatedGravatar } from "../../src/gravity" - -describe("handleUpdatedGravatar()", () => { - describe("When entity exists", () => { - test("updates the entity", () => { - ... - }) - }) - - describe("When entity does not exists", () => { - test("it creates a new entity", () => { - ... - }) - }) -}) -``` - ---- - -### test() - -`test(name: String, () =>, should_fail: bool)` - Defines a test case. You can use test() inside of describe() blocks or independently. - -Example: - -```typescript -import { describe, test } from "matchstick-as/assembly/index" -import { handleNewGravatar } from "../../src/gravity" - -describe("handleNewGravatar()", () => { - test("Should create a new Entity", () => { - ... - }) -}) -``` - -or - -```typescript -test("handleNewGravatar() should create a new entity", () => { - ... -}) - - -``` - ---- - -### beforeAll() - -Runs a code block before any of the tests in the file. If `beforeAll` is declared inside of a `describe` block, it runs at the beginning of that `describe` block. - -أمثلة: - -Code inside `beforeAll` will execute once before _all_ tests in the file. - -```typescript -import { describe, test, beforeAll } from "matchstick-as/assembly/index" -import { handleUpdatedGravatar, handleNewGravatar } from "../../src/gravity" -import { Gravatar } from "../../generated/schema" - -beforeAll(() => { - let gravatar = new Gravatar("0x0") - gravatar.displayName = “First Gravatar” - gravatar.save() - ... -}) - -describe("When the entity does not exist", () => { - test("it should create a new Gravatar with id 0x1", () => { - ... - }) -}) - -describe("When entity already exists", () => { - test("it should update the Gravatar with id 0x0", () => { - ... - }) -}) -``` - -Code inside `beforeAll` will execute once before all tests in the first describe block - -```typescript -import { describe, test, beforeAll } from "matchstick-as/assembly/index" -import { handleUpdatedGravatar, handleNewGravatar } from "../../src/gravity" -import { Gravatar } from "../../generated/schema" - -describe("handleUpdatedGravatar()", () => { - beforeAll(() => { - let gravatar = new Gravatar("0x0") - gravatar.displayName = “First Gravatar” - gravatar.save() - ... - }) - - test("updates Gravatar with id 0x0", () => { - ... - }) - - test("creates new Gravatar with id 0x1", () => { - ... - }) -}) -``` - ---- - -### afterAll() - -Runs a code block after all of the tests in the file. If `afterAll` is declared inside of a `describe` block, it runs at the end of that `describe` block. - -Example: - -Code inside `afterAll` will execute once after _all_ tests in the file. - -```typescript -import { describe, test, afterAll } from "matchstick-as/assembly/index" -import { handleUpdatedGravatar, handleNewGravatar } from "../../src/gravity" -import { store } from "@graphprotocol/graph-ts" - -afterAll(() => { - store.remove("Gravatar", "0x0") - ... -}) - -describe("handleNewGravatar, () => { - test("creates Gravatar with id 0x0", () => { - ... - }) -}) - -describe("handleUpdatedGravatar", () => { - test("updates Gravatar with id 0x0", () => { - ... - }) -}) -``` - -Code inside `afterAll` will execute once after all tests in the first describe block - -```typescript -import { describe, test, afterAll, clearStore } from "matchstick-as/assembly/index" -import { handleUpdatedGravatar, handleNewGravatar } from "../../src/gravity" - -describe("handleNewGravatar", () => { - afterAll(() => { - store.remove("Gravatar", "0x1") - ... - }) - - test("It creates a new entity with Id 0x0", () => { - ... - }) - - test("It creates a new entity with Id 0x1", () => { - ... - }) -}) - -describe("handleUpdatedGravatar", () => { - test("updates Gravatar with id 0x0", () => { - ... - }) -}) -``` - ---- - -### beforeEach() - -Runs a code block before every test. If `beforeEach` is declared inside of a `describe` block, it runs before each test in that `describe` block. - -Examples: Code inside `beforeEach` will execute before each tests. - -```typescript -import { describe, test, beforeEach, clearStore } from "matchstick-as/assembly/index" -import { handleNewGravatars } from "./utils" - -beforeEach(() => { - clearStore() // <-- clear the store before each test in the file -}) - -describe("handleNewGravatars, () => { - test("A test that requires a clean store", () => { - ... - }) - - test("Second that requires a clean store", () => { - ... - }) -}) - - ... -``` - -Code inside `beforeEach` will execute only before each test in the that describe - -```typescript -import { describe, test, beforeEach } from 'matchstick-as/assembly/index' -import { handleUpdatedGravatar, handleNewGravatar } from '../../src/gravity' - -describe('handleUpdatedGravatars', () => { - beforeEach(() => { - let gravatar = new Gravatar('0x0') - gravatar.displayName = 'First Gravatar' - gravatar.imageUrl = '' - gravatar.save() - }) - - test('Updates the displayName', () => { - assert.fieldEquals('Gravatar', '0x0', 'displayName', 'First Gravatar') - - // code that should update the displayName to 1st Gravatar - - assert.fieldEquals('Gravatar', '0x0', 'displayName', '1st Gravatar') - store.remove('Gravatar', '0x0') - }) - - test('Updates the imageUrl', () => { - assert.fieldEquals('Gravatar', '0x0', 'imageUrl', '') - - // code that should changes the imageUrl to https://www.gravatar.com/avatar/0x0 - - assert.fieldEquals('Gravatar', '0x0', 'imageUrl', 'https://www.gravatar.com/avatar/0x0') - store.remove('Gravatar', '0x0') - }) -}) -``` - ---- - -### afterEach() - -Runs a code block after every test. If `afterEach` is declared inside of a `describe` block, it runs after each test in that `describe` block. - -أمثلة: - -Code inside `afterEach` will execute after every test. - -```typescript -import { describe, test, beforeEach, afterEach } from "matchstick-as/assembly/index" -import { handleUpdatedGravatar, handleNewGravatar } from "../../src/gravity" - -beforeEach(() => { - let gravatar = new Gravatar("0x0") - gravatar.displayName = “First Gravatar” - gravatar.save() -}) - -afterEach(() => { - store.remove("Gravatar", "0x0") -}) - -describe("handleNewGravatar", () => { - ... -}) - -describe("handleUpdatedGravatar", () => { - test("Updates the displayName", () => { - assert.fieldEquals("Gravatar", "0x0", "displayName", "First Gravatar") - - // code that should update the displayName to 1st Gravatar - - assert.fieldEquals("Gravatar", "0x0", "displayName", "1st Gravatar") - }) - - test("Updates the imageUrl", () => { - assert.fieldEquals("Gravatar", "0x0", "imageUrl", "") - - // code that should changes the imageUrl to https://www.gravatar.com/avatar/0x0 - - assert.fieldEquals("Gravatar", "0x0", "imageUrl", "https://www.gravatar.com/avatar/0x0") - }) -}) -``` - -Code inside `afterEach` will execute after each test in that describe - -```typescript -import { describe, test, beforeEach, afterEach } from "matchstick-as/assembly/index" -import { handleUpdatedGravatar, handleNewGravatar } from "../../src/gravity" - -describe("handleNewGravatar", () => { - ... -}) - -describe("handleUpdatedGravatar", () => { - beforeEach(() => { - let gravatar = new Gravatar("0x0") - gravatar.displayName = "First Gravatar" - gravatar.imageUrl = "" - gravatar.save() - }) - - afterEach(() => { - store.remove("Gravatar", "0x0") - }) - - test("Updates the displayName", () => { - assert.fieldEquals("Gravatar", "0x0", "displayName", "First Gravatar") - - // code that should update the displayName to 1st Gravatar - - assert.fieldEquals("Gravatar", "0x0", "displayName", "1st Gravatar") - }) - - test("Updates the imageUrl", () => { - assert.fieldEquals("Gravatar", "0x0", "imageUrl", "") - - // code that should changes the imageUrl to https://www.gravatar.com/avatar/0x0 - - assert.fieldEquals("Gravatar", "0x0", "imageUrl", "https://www.gravatar.com/avatar/0x0") - }) -}) -``` - -## Asserts - -```typescript -fieldEquals(entityType: string, id: string, fieldName: string, expectedVal: string) - -equals(expected: ethereum.Value, actual: ethereum.Value) - -notInStore(entityType: string, id: string) - -addressEquals(address1: Address, address2: Address) - -bytesEquals(bytes1: Bytes, bytes2: Bytes) - -i32Equals(number1: i32, number2: i32) - -bigIntEquals(bigInt1: BigInt, bigInt2: BigInt) - -booleanEquals(bool1: boolean, bool2: boolean) - -stringEquals(string1: string, string2: string) - -arrayEquals(array1: Array, array2: Array) - -tupleEquals(tuple1: ethereum.Tuple, tuple2: ethereum.Tuple) - -assertTrue(value: boolean) - -assertNull(value: T) - -assertNotNull(value: T) - -entityCount(entityType: string, expectedCount: i32) -``` - -As of version 0.6.0, asserts support custom error messages as well - -```typescript -assert.fieldEquals('Gravatar', '0x123', 'id', '0x123', 'Id should be 0x123') -assert.equals(ethereum.Value.fromI32(1), ethereum.Value.fromI32(1), 'Value should equal 1') -assert.notInStore('Gravatar', '0x124', 'Gravatar should not be in store') -assert.addressEquals(Address.zero(), Address.zero(), 'Address should be zero') -assert.bytesEquals(Bytes.fromUTF8('0x123'), Bytes.fromUTF8('0x123'), 'Bytes should be equal') -assert.i32Equals(2, 2, 'I32 should equal 2') -assert.bigIntEquals(BigInt.fromI32(1), BigInt.fromI32(1), 'BigInt should equal 1') -assert.booleanEquals(true, true, 'Boolean should be true') -assert.stringEquals('1', '1', 'String should equal 1') -assert.arrayEquals([ethereum.Value.fromI32(1)], [ethereum.Value.fromI32(1)], 'Arrays should be equal') -assert.tupleEquals( - changetype([ethereum.Value.fromI32(1)]), - changetype([ethereum.Value.fromI32(1)]), - 'Tuples should be equal', -) -assert.assertTrue(true, 'Should be true') -assert.assertNull(null, 'Should be null') -assert.assertNotNull('not null', 'Should be not null') -assert.entityCount('Gravatar', 1, 'There should be 2 gravatars') -assert.dataSourceCount('GraphTokenLockWallet', 1, 'GraphTokenLockWallet template should have one data source') -assert.dataSourceExists( - 'GraphTokenLockWallet', - Address.zero().toHexString(), - 'GraphTokenLockWallet should have a data source for zero address', -) -``` - -## Write a Unit Test - -Let's see how a simple unit test would look like using the Gravatar examples in the [Demo Subgraph](https://github.com/LimeChain/demo-subgraph/blob/main/src/gravity.ts). - -Assuming we have the following handler function (along with two helper functions to make our life easier): - -```typescript -export function handleNewGravatar(event: NewGravatar): void { - let gravatar = new Gravatar(event.params.id.toHex()) - gravatar.owner = event.params.owner - gravatar.displayName = event.params.displayName - gravatar.imageUrl = event.params.imageUrl - gravatar.save() -} - -export function handleNewGravatars(events: NewGravatar[]): void { - events.forEach((event) => { - handleNewGravatar(event) - }) -} - -export function createNewGravatarEvent( - id: i32, - ownerAddress: string, - displayName: string, - imageUrl: string, -): NewGravatar { - let mockEvent = newMockEvent() - let newGravatarEvent = new NewGravatar( - mockEvent.address, - mockEvent.logIndex, - mockEvent.transactionLogIndex, - mockEvent.logType, - mockEvent.block, - mockEvent.transaction, - mockEvent.parameters, - ) - newGravatarEvent.parameters = new Array() - let idParam = new ethereum.EventParam('id', ethereum.Value.fromI32(id)) - let addressParam = new ethereum.EventParam( - 'ownerAddress', - ethereum.Value.fromAddress(Address.fromString(ownerAddress)), - ) - let displayNameParam = new ethereum.EventParam('displayName', ethereum.Value.fromString(displayName)) - let imageUrlParam = new ethereum.EventParam('imageUrl', ethereum.Value.fromString(imageUrl)) - - newGravatarEvent.parameters.push(idParam) - newGravatarEvent.parameters.push(addressParam) - newGravatarEvent.parameters.push(displayNameParam) - newGravatarEvent.parameters.push(imageUrlParam) - - return newGravatarEvent -} -``` - -We first have to create a test file in our project. This is an example of how that might look like: - -```typescript -import { clearStore, test, assert } from 'matchstick-as/assembly/index' -import { Gravatar } from '../../generated/schema' -import { NewGravatar } from '../../generated/Gravity/Gravity' -import { createNewGravatarEvent, handleNewGravatars } from '../mappings/gravity' - -test('Can call mappings with custom events', () => { - // Create a test entity and save it in the store as initial state (optional) - let gravatar = new Gravatar('gravatarId0') - gravatar.save() - - // Create mock events - let newGravatarEvent = createNewGravatarEvent(12345, '0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7', 'cap', 'pac') - let anotherGravatarEvent = createNewGravatarEvent(3546, '0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7', 'cap', 'pac') - - // Call mapping functions passing the events we just created - handleNewGravatars([newGravatarEvent, anotherGravatarEvent]) - - // Assert the state of the store - assert.fieldEquals('Gravatar', 'gravatarId0', 'id', 'gravatarId0') - assert.fieldEquals('Gravatar', '12345', 'owner', '0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7') - assert.fieldEquals('Gravatar', '3546', 'displayName', 'cap') - - // Clear the store in order to start the next test off on a clean slate - clearStore() -}) - -test('Next test', () => { - //... -}) -``` - -That's a lot to unpack! First off, an important thing to notice is that we're importing things from `matchstick-as`, our AssemblyScript helper library (distributed as an npm module). You can find the repository [here](https://github.com/LimeChain/matchstick-as). `matchstick-as` provides us with useful testing methods and also defines the `test()` function which we will use to build our test blocks. The rest of it is pretty straightforward - here's what happens: - -- We're setting up our initial state and adding one custom Gravatar entity; -- We define two `NewGravatar` event objects along with their data, using the `createNewGravatarEvent()` function; -- We're calling out handler methods for those events - `handleNewGravatars()` and passing in the list of our custom events; -- We assert the state of the store. How does that work? - We're passing a unique combination of Entity type and id. Then we check a specific field on that Entity and assert that it has the value we expect it to have. We're doing this both for the initial Gravatar Entity we added to the store, as well as the two Gravatar entities that gets added when the handler function is called; -- And lastly - we're cleaning the store using `clearStore()` so that our next test can start with a fresh and empty store object. We can define as many test blocks as we want. - -There we go - we've created our first test! 👏 - -Now in order to run our tests you simply need to run the following in your Subgraph root folder: - -`graph test Gravity` - -And if all goes well you should be greeted with the following: - -![Matchstick saying “All tests passed!”](/img/matchstick-tests-passed.png) - -## Common test scenarios - -### Hydrating the store with a certain state - -Users are able to hydrate the store with a known set of entities. Here's an example to initialise the store with a Gravatar entity: - -```typescript -let gravatar = new Gravatar('entryId') -gravatar.save() -``` - -### Calling a mapping function with an event - -A user can create a custom event and pass it to a mapping function that is bound to the store: - -```typescript -import { store } from 'matchstick-as/assembly/store' -import { NewGravatar } from '../../generated/Gravity/Gravity' -import { handleNewGravatars, createNewGravatarEvent } from './mapping' - -let newGravatarEvent = createNewGravatarEvent(12345, '0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7', 'cap', 'pac') - -handleNewGravatar(newGravatarEvent) -``` - -### Calling all of the mappings with event fixtures - -Users can call the mappings with test fixtures. - -```typescript -import { NewGravatar } from '../../generated/Gravity/Gravity' -import { store } from 'matchstick-as/assembly/store' -import { handleNewGravatars, createNewGravatarEvent } from './mapping' - -let newGravatarEvent = createNewGravatarEvent(12345, '0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7', 'cap', 'pac') - -let anotherGravatarEvent = createNewGravatarEvent(3546, '0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7', 'cap', 'pac') - -handleNewGravatars([newGravatarEvent, anotherGravatarEvent]) -``` - -``` -export function handleNewGravatars(events: NewGravatar[]): void { - events.forEach(event => { - handleNewGravatar(event); - }); -} -``` - -### Mocking contract calls - -Users can mock contract calls: - -```typescript -import { addMetadata, assert, createMockedFunction, clearStore, test } from 'matchstick-as/assembly/index' -import { Gravity } from '../../generated/Gravity/Gravity' -import { Address, BigInt, ethereum } from '@graphprotocol/graph-ts' - -let contractAddress = Address.fromString('0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7') -let expectedResult = Address.fromString('0x90cBa2Bbb19ecc291A12066Fd8329D65FA1f1947') -let bigIntParam = BigInt.fromString('1234') -createMockedFunction(contractAddress, 'gravatarToOwner', 'gravatarToOwner(uint256):(address)') - .withArgs([ethereum.Value.fromSignedBigInt(bigIntParam)]) - .returns([ethereum.Value.fromAddress(Address.fromString('0x90cBa2Bbb19ecc291A12066Fd8329D65FA1f1947'))]) - -let gravity = Gravity.bind(contractAddress) -let result = gravity.gravatarToOwner(bigIntParam) - -assert.equals(ethereum.Value.fromAddress(expectedResult), ethereum.Value.fromAddress(result)) -``` - -As demonstrated, in order to mock a contract call and hardcore a return value, the user must provide a contract address, function name, function signature, an array of arguments, and of course - the return value. - -Users can also mock function reverts: - -```typescript -let contractAddress = Address.fromString('0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7') -createMockedFunction(contractAddress, 'getGravatar', 'getGravatar(address):(string,string)') - .withArgs([ethereum.Value.fromAddress(contractAddress)]) - .reverts() -``` - -### Mocking IPFS files (from matchstick 0.4.1) - -Users can mock IPFS files by using `mockIpfsFile(hash, filePath)` function. The function accepts two arguments, the first one is the IPFS file hash/path and the second one is the path to a local file. - -NOTE: When testing `ipfs.map/ipfs.mapJSON`, the callback function must be exported from the test file in order for matchstick to detect it, like the `processGravatar()` function in the test example bellow: - -`.test.ts` file: - -```typescript -import { assert, test, mockIpfsFile } from 'matchstick-as/assembly/index' -import { ipfs } from '@graphprotocol/graph-ts' -import { gravatarFromIpfs } from './utils' - -// Export ipfs.map() callback in order for matchstick to detect it -export { processGravatar } from './utils' - -test('ipfs.cat', () => { - mockIpfsFile('ipfsCatfileHash', 'tests/ipfs/cat.json') - - assert.entityCount(GRAVATAR_ENTITY_TYPE, 0) - - gravatarFromIpfs() - - assert.entityCount(GRAVATAR_ENTITY_TYPE, 1) - assert.fieldEquals(GRAVATAR_ENTITY_TYPE, '1', 'imageUrl', 'https://i.ytimg.com/vi/MELP46s8Cic/maxresdefault.jpg') - - clearStore() -}) - -test('ipfs.map', () => { - mockIpfsFile('ipfsMapfileHash', 'tests/ipfs/map.json') - - assert.entityCount(GRAVATAR_ENTITY_TYPE, 0) - - ipfs.map('ipfsMapfileHash', 'processGravatar', Value.fromString('Gravatar'), ['json']) - - assert.entityCount(GRAVATAR_ENTITY_TYPE, 3) - assert.fieldEquals(GRAVATAR_ENTITY_TYPE, '1', 'displayName', 'Gravatar1') - assert.fieldEquals(GRAVATAR_ENTITY_TYPE, '2', 'displayName', 'Gravatar2') - assert.fieldEquals(GRAVATAR_ENTITY_TYPE, '3', 'displayName', 'Gravatar3') -}) -``` - -`utils.ts` file: - -```typescript -import { Address, ethereum, JSONValue, Value, ipfs, json, Bytes } from "@graphprotocol/graph-ts" -import { Gravatar } from "../../generated/schema" - -... - -// ipfs.map callback -export function processGravatar(value: JSONValue, userData: Value): void { - // See the JSONValue documentation for details on dealing - // with JSON values - let obj = value.toObject() - let id = obj.get('id') - - if (!id) { - return - } - - // Callbacks can also created entities - let gravatar = new Gravatar(id.toString()) - gravatar.displayName = userData.toString() + id.toString() - gravatar.save() -} - -// function that calls ipfs.cat -export function gravatarFromIpfs(): void { - let rawData = ipfs.cat("ipfsCatfileHash") - - if (!rawData) { - return - } - - let jsonData = json.fromBytes(rawData as Bytes).toObject() - - let id = jsonData.get('id') - let url = jsonData.get("imageUrl") - - if (!id || !url) { - return - } - - let gravatar = new Gravatar(id.toString()) - gravatar.imageUrl = url.toString() - gravatar.save() -} -``` - -### Asserting the state of the store - -Users are able to assert the final (or midway) state of the store through asserting entities. In order to do this, the user has to supply an Entity type, the specific ID of an Entity, a name of a field on that Entity, and the expected value of the field. Here's a quick example: - -```typescript -import { assert } from 'matchstick-as/assembly/index' -import { Gravatar } from '../generated/schema' - -let gravatar = new Gravatar('gravatarId0') -gravatar.save() - -assert.fieldEquals('Gravatar', 'gravatarId0', 'id', 'gravatarId0') -``` - -Running the assert.fieldEquals() function will check for equality of the given field against the given expected value. The test will fail and an error message will be outputted if the values are **NOT** equal. Otherwise the test will pass successfully. - -### Interacting with Event metadata - -Users can use default transaction metadata, which could be returned as an ethereum.Event by using the `newMockEvent()` function. The following example shows how you can read/write to those fields on the Event object: - -```typescript -// Read -let logType = newGravatarEvent.logType - -// Write -let UPDATED_ADDRESS = '0xB16081F360e3847006dB660bae1c6d1b2e17eC2A' -newGravatarEvent.address = Address.fromString(UPDATED_ADDRESS) -``` - -### Asserting variable equality - -```typescript -assert.equals(ethereum.Value.fromString("hello"); ethereum.Value.fromString("hello")); -``` - -### Asserting that an Entity is **not** in the store - -Users can assert that an entity does not exist in the store. The function takes an entity type and an id. If the entity is in fact in the store, the test will fail with a relevant error message. Here's a quick example of how to use this functionality: - -```typescript -assert.notInStore('Gravatar', '23') -``` - -### Printing the whole store, or single entities from it (for debug purposes) - -You can print the whole store to the console using this helper function: - -```typescript -import { logStore } from 'matchstick-as/assembly/store' - -logStore() -``` - -As of version 0.6.0, `logStore` no longer prints derived fields, instead users can use the new `logEntity` function. Of course `logEntity` can be used to print any entity, not just ones that have derived fields. `logEntity` takes the entity type, entity id and a `showRelated` flag to indicate if users want to print the related derived entities. - -``` -import { logEntity } from 'matchstick-as/assembly/store' - - -logEntity("Gravatar", 23, true) -``` - -### Expected failure - -Users can have expected test failures, using the shouldFail flag on the test() functions: - -```typescript -test( - 'Should throw an error', - () => { - throw new Error() - }, - true, -) -``` - -If the test is marked with shouldFail = true but DOES NOT fail, that will show up as an error in the logs and the test block will fail. Also, if it's marked with shouldFail = false (the default state), the test executor will crash. - -### Logging - -Having custom logs in the unit tests is exactly the same as logging in the mappings. The difference is that the log object needs to be imported from matchstick-as rather than graph-ts. Here's a simple example with all non-critical log types: - -```typescript -import { test } from "matchstick-as/assembly/index"; -import { log } from "matchstick-as/assembly/log"; - -test("Success", () => { - log.success("Success!". []); -}); -test("Error", () => { - log.error("Error :( ", []); -}); -test("Debug", () => { - log.debug("Debugging...", []); -}); -test("Info", () => { - log.info("Info!", []); -}); -test("Warning", () => { - log.warning("Warning!", []); -}); -``` - -Users can also simulate a critical failure, like so: - -```typescript -test('Blow everything up', () => { - log.critical('Boom!') -}) -``` - -Logging critical errors will stop the execution of the tests and blow everything up. After all - we want to make sure you're code doesn't have critical logs in deployment, and you should notice right away if that were to happen. - -### Testing derived fields - -Testing derived fields is a feature which allows users to set a field on a certain entity and have another entity be updated automatically if it derives one of its fields from the first entity. - -Before version `0.6.0` it was possible to get the derived entities by accessing them as entity fields/properties, like so: - -```typescript -let entity = ExampleEntity.load('id') -let derivedEntity = entity.derived_entity -``` - -As of version `0.6.0`, this is done by using the `loadRelated` function of graph-node, the derived entities can be accessed the same way as in the handlers. - -```typescript -test('Derived fields example test', () => { - let mainAccount = GraphAccount.load('12')! - - assert.assertNull(mainAccount.get('nameSignalTransactions')) - assert.assertNull(mainAccount.get('operatorOf')) - - let operatedAccount = GraphAccount.load('1')! - operatedAccount.operators = [mainAccount.id] - operatedAccount.save() - - mockNameSignalTransaction('1234', mainAccount.id) - mockNameSignalTransaction('2', mainAccount.id) - - mainAccount = GraphAccount.load('12')! - - assert.assertNull(mainAccount.get('nameSignalTransactions')) - assert.assertNull(mainAccount.get('operatorOf')) - - const nameSignalTransactions = mainAccount.nameSignalTransactions.load() - const operatorsOfMainAccount = mainAccount.operatorOf.load() - - assert.i32Equals(2, nameSignalTransactions.length) - assert.i32Equals(1, operatorsOfMainAccount.length) - - assert.stringEquals('1', operatorsOfMainAccount[0].id) - - mockNameSignalTransaction('2345', mainAccount.id) - - let nst = NameSignalTransaction.load('1234')! - nst.signer = '11' - nst.save() - - store.remove('NameSignalTransaction', '2') - - mainAccount = GraphAccount.load('12')! - assert.i32Equals(1, mainAccount.nameSignalTransactions.load().length) -}) -``` - -### Testing `loadInBlock` - -As of version `0.6.0`, users can test `loadInBlock` by using the `mockInBlockStore`, it allows mocking entities in the block cache. - -```typescript -import { afterAll, beforeAll, describe, mockInBlockStore, test } from 'matchstick-as' -import { Gravatar } from '../../generated/schema' - -describe('loadInBlock', () => { - beforeAll(() => { - mockInBlockStore('Gravatar', 'gravatarId0', gravatar) - }) - - afterAll(() => { - clearInBlockStore() - }) - - test('Can use entity.loadInBlock() to retrieve entity from cache store in the current block', () => { - let retrievedGravatar = Gravatar.loadInBlock('gravatarId0') - assert.stringEquals('gravatarId0', retrievedGravatar!.get('id')!.toString()) - }) - - test("Returns null when calling entity.loadInBlock() if an entity doesn't exist in the current block", () => { - let retrievedGravatar = Gravatar.loadInBlock('IDoNotExist') - assert.assertNull(retrievedGravatar) - }) -}) -``` - -### Testing dynamic data sources - -Testing dynamic data sources can be be done by mocking the return value of the `context()`, `address()` and `network()` functions of the dataSource namespace. These functions currently return the following: `context()` - returns an empty entity (DataSourceContext), `address()` - returns `0x0000000000000000000000000000000000000000`, `network()` - returns `mainnet`. The `create(...)` and `createWithContext(...)` functions are mocked to do nothing so they don't need to be called in the tests at all. Changes to the return values can be done through the functions of the `dataSourceMock` namespace in `matchstick-as` (version 0.3.0+). - -Example below: - -First we have the following event handler (which has been intentionally repurposed to showcase datasource mocking): - -```typescript -export function handleApproveTokenDestinations(event: ApproveTokenDestinations): void { - let tokenLockWallet = TokenLockWallet.load(dataSource.address().toHexString())! - if (dataSource.network() == 'rinkeby') { - tokenLockWallet.tokenDestinationsApproved = true - } - let context = dataSource.context() - if (context.get('contextVal')!.toI32() > 0) { - tokenLockWallet.setBigInt('tokensReleased', BigInt.fromI32(context.get('contextVal')!.toI32())) - } - tokenLockWallet.save() -} -``` - -And then we have the test using one of the methods in the dataSourceMock namespace to set a new return value for all of the dataSource functions: - -```typescript -import { assert, test, newMockEvent, dataSourceMock } from 'matchstick-as/assembly/index' -import { BigInt, DataSourceContext, Value } from '@graphprotocol/graph-ts' - -import { handleApproveTokenDestinations } from '../../src/token-lock-wallet' -import { ApproveTokenDestinations } from '../../generated/templates/GraphTokenLockWallet/GraphTokenLockWallet' -import { TokenLockWallet } from '../../generated/schema' - -test('Data source simple mocking example', () => { - let addressString = '0xA16081F360e3847006dB660bae1c6d1b2e17eC2A' - let address = Address.fromString(addressString) - - let wallet = new TokenLockWallet(address.toHexString()) - wallet.save() - let context = new DataSourceContext() - context.set('contextVal', Value.fromI32(325)) - dataSourceMock.setReturnValues(addressString, 'rinkeby', context) - let event = changetype(newMockEvent()) - - assert.assertTrue(!wallet.tokenDestinationsApproved) - - handleApproveTokenDestinations(event) - - wallet = TokenLockWallet.load(address.toHexString())! - assert.assertTrue(wallet.tokenDestinationsApproved) - assert.bigIntEquals(wallet.tokensReleased, BigInt.fromI32(325)) - - dataSourceMock.resetValues() -}) -``` - -Notice that dataSourceMock.resetValues() is called at the end. That's because the values are remembered when they are changed and need to be reset if you want to go back to the default values. - -### Testing dynamic data source creation - -As of version `0.6.0`, it is possible to test if a new data source has been created from a template. This feature supports both ethereum/contract and file/ipfs templates. There are four functions for this: - -- `assert.dataSourceCount(templateName, expectedCount)` can be used to assert the expected count of data sources from the specified template -- `assert.dataSourceExists(templateName, address/ipfsHash)` asserts that a data source with the specified identifier (could be a contract address or IPFS file hash) from a specified template was created -- `logDataSources(templateName)` prints all data sources from the specified template to the console for debugging purposes -- `readFile(path)` reads a JSON file that represents an IPFS file and returns the content as Bytes - -#### Testing `ethereum/contract` templates - -```typescript -test('ethereum/contract dataSource creation example', () => { - // Assert there are no dataSources created from GraphTokenLockWallet template - assert.dataSourceCount('GraphTokenLockWallet', 0) - - // Create a new GraphTokenLockWallet datasource with address 0xA16081F360e3847006dB660bae1c6d1b2e17eC2A - GraphTokenLockWallet.create(Address.fromString('0xA16081F360e3847006dB660bae1c6d1b2e17eC2A')) - - // Assert the dataSource has been created - assert.dataSourceCount('GraphTokenLockWallet', 1) - - // Add a second dataSource with context - let context = new DataSourceContext() - context.set('contextVal', Value.fromI32(325)) - - GraphTokenLockWallet.createWithContext(Address.fromString('0xA16081F360e3847006dB660bae1c6d1b2e17eC2B'), context) - - // Assert there are now 2 dataSources - assert.dataSourceCount('GraphTokenLockWallet', 2) - - // Assert that a dataSource with address "0xA16081F360e3847006dB660bae1c6d1b2e17eC2B" was created - // Keep in mind that `Address` type is transformed to lower case when decoded, so you have to pass the address as all lower case when asserting if it exists - assert.dataSourceExists('GraphTokenLockWallet', '0xA16081F360e3847006dB660bae1c6d1b2e17eC2B'.toLowerCase()) - - logDataSources('GraphTokenLockWallet') -}) -``` - -##### Example `logDataSource` output - -```bash -🛠 { - "0xa16081f360e3847006db660bae1c6d1b2e17ec2a": { - "kind": "ethereum/contract", - "name": "GraphTokenLockWallet", - "address": "0xa16081f360e3847006db660bae1c6d1b2e17ec2a", - "context": null - }, - "0xa16081f360e3847006db660bae1c6d1b2e17ec2b": { - "kind": "ethereum/contract", - "name": "GraphTokenLockWallet", - "address": "0xa16081f360e3847006db660bae1c6d1b2e17ec2b", - "context": { - "contextVal": { - "type": "Int", - "data": 325 - } - } - } -} -``` - -#### Testing `file/ipfs` templates - -Similarly to contract dynamic data sources, users can test test file data sources and their handlers - -##### Example `subgraph.yaml` - -```yaml -... -templates: - - kind: file/ipfs - name: GraphTokenLockMetadata - network: mainnet - mapping: - kind: ethereum/events - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/token-lock-wallet.ts - handler: handleMetadata - entities: - - TokenLockMetadata - abis: - - name: GraphTokenLockWallet - file: ./abis/GraphTokenLockWallet.json -``` - -##### Example `schema.graphql` - -```graphql -""" -Token Lock Wallets which hold locked GRT -""" -type TokenLockMetadata @entity { - "The address of the token lock wallet" - id: ID! - "Start time of the release schedule" - startTime: BigInt! - "End time of the release schedule" - endTime: BigInt! - "Number of periods between start time and end time" - periods: BigInt! - "Time when the releases start" - releaseStartTime: BigInt! -} -``` - -##### Example `metadata.json` - -```json -{ - "startTime": 1, - "endTime": 1, - "periods": 1, - "releaseStartTime": 1 -} -``` - -##### Example handler - -```typescript -export function handleMetadata(content: Bytes): void { - // dataSource.stringParams() returns the File DataSource CID - // stringParam() will be mocked in the handler test - // for more info https://thegraph.com/docs/en/developing/creating-a-subgraph/#create-a-new-handler-to-process-files - let tokenMetadata = new TokenLockMetadata(dataSource.stringParam()) - const value = json.fromBytes(content).toObject() - - if (value) { - const startTime = value.get('startTime') - const endTime = value.get('endTime') - const periods = value.get('periods') - const releaseStartTime = value.get('releaseStartTime') - - if (startTime && endTime && periods && releaseStartTime) { - tokenMetadata.startTime = startTime.toBigInt() - tokenMetadata.endTime = endTime.toBigInt() - tokenMetadata.periods = periods.toBigInt() - tokenMetadata.releaseStartTime = releaseStartTime.toBigInt() - } - - tokenMetadata.save() - } -} -``` - -##### Example test - -```typescript -import { assert, test, dataSourceMock, readFile } from 'matchstick-as' -import { Address, BigInt, Bytes, DataSourceContext, ipfs, json, store, Value } from '@graphprotocol/graph-ts' - -import { handleMetadata } from '../../src/token-lock-wallet' -import { TokenLockMetadata } from '../../generated/schema' -import { GraphTokenLockMetadata } from '../../generated/templates' - -test('file/ipfs dataSource creation example', () => { - // Generate the dataSource CID from the ipfsHash + ipfs path file - // For example QmaXzZhcYnsisuue5WRdQDH6FDvqkLQX1NckLqBYeYYEfm/example.json - const ipfshash = 'QmaXzZhcYnsisuue5WRdQDH6FDvqkLQX1NckLqBYeYYEfm' - const CID = `${ipfshash}/example.json` - - // Create a new dataSource using the generated CID - GraphTokenLockMetadata.create(CID) - - // Assert the dataSource has been created - assert.dataSourceCount('GraphTokenLockMetadata', 1) - assert.dataSourceExists('GraphTokenLockMetadata', CID) - logDataSources('GraphTokenLockMetadata') - - // Now we have to mock the dataSource metadata and specifically dataSource.stringParam() - // dataSource.stringParams actually uses the value of dataSource.address(), so we will mock the address using dataSourceMock from matchstick-as - // First we will reset the values and then use dataSourceMock.setAddress() to set the CID - dataSourceMock.resetValues() - dataSourceMock.setAddress(CID) - - // Now we need to generate the Bytes to pass to the dataSource handler - // For this case we introduced a new function readFile, that reads a local json and returns the content as Bytes - const content = readFile(`path/to/metadata.json`) - handleMetadata(content) - - // Now we will test if a TokenLockMetadata was created - const metadata = TokenLockMetadata.load(CID) - - assert.bigIntEquals(metadata!.endTime, BigInt.fromI32(1)) - assert.bigIntEquals(metadata!.periods, BigInt.fromI32(1)) - assert.bigIntEquals(metadata!.releaseStartTime, BigInt.fromI32(1)) - assert.bigIntEquals(metadata!.startTime, BigInt.fromI32(1)) -}) -``` - -## Test Coverage - -Using **Matchstick**, Subgraph developers are able to run a script that will calculate the test coverage of the written unit tests. - -The test coverage tool takes the compiled test `wasm` binaries and converts them to `wat` files, which can then be easily inspected to see whether or not the handlers defined in `subgraph.yaml` have been called. Since code coverage (and testing as whole) is in very early stages in AssemblyScript and WebAssembly, **Matchstick** cannot check for branch coverage. Instead we rely on the assertion that if a given handler has been called, the event/function for it have been properly mocked. - -### Prerequisites - -To run the test coverage functionality provided in **Matchstick**, there are a few things you need to prepare beforehand: - -#### Export your handlers - -In order for **Matchstick** to check which handlers are being run, those handlers need to be exported from the **test file**. So for instance in our example, in our gravity.test.ts file we have the following handler being imported: - -```typescript -import { handleNewGravatar } from '../../src/gravity' -``` - -In order for that function to be visible (for it to be included in the `wat` file **by name**) we need to also export it, like this: - -```typescript -export { handleNewGravatar } -``` - -### Usage - -Once that's all set up, to run the test coverage tool, simply run: - -```sh -graph test -- -c -``` - -You could also add a custom `coverage` command to your `package.json` file, like so: - -```typescript - "scripts": { - /.../ - "coverage": "graph test -- -c" - }, -``` - -That will execute the coverage tool and you should see something like this in the terminal: - -```sh -$ graph test -c -Skipping download/install step because binary already exists at /Users/petko/work/demo-subgraph/node_modules/binary-install-raw/bin/0.4.0 - -___ ___ _ _ _ _ _ -| \/ | | | | | | | (_) | | -| . . | __ _| |_ ___| |__ ___| |_ _ ___| | __ -| |\/| |/ _` | __/ __| '_ \/ __| __| |/ __| |/ / -| | | | (_| | || (__| | | \__ \ |_| | (__| < -\_| |_/\__,_|\__\___|_| |_|___/\__|_|\___|_|\_\ - -Compiling... - -Running in coverage report mode. - ️ -Reading generated test modules... 🔎️ - -Generating coverage report 📝 - -Handlers for source 'Gravity': -Handler 'handleNewGravatar' is tested. -Handler 'handleUpdatedGravatar' is not tested. -Handler 'handleCreateGravatar' is tested. -Test coverage: 66.7% (2/3 handlers). - -Handlers for source 'GraphTokenLockWallet': -Handler 'handleTokensReleased' is not tested. -Handler 'handleTokensWithdrawn' is not tested. -Handler 'handleTokensRevoked' is not tested. -Handler 'handleManagerUpdated' is not tested. -Handler 'handleApproveTokenDestinations' is not tested. -Handler 'handleRevokeTokenDestinations' is not tested. -Test coverage: 0.0% (0/6 handlers). - -Global test coverage: 22.2% (2/9 handlers). -``` - -### Test run time duration in the log output - -The log output includes the test run duration. Here's an example: - -`[Thu, 31 Mar 2022 13:54:54 +0300] Program executed in: 42.270ms.` - -## Common compiler errors - -> Critical: Could not create WasmInstance from valid module with context: unknown import: wasi_snapshot_preview1::fd_write has not been defined - -This means you have used `console.log` in your code, which is not supported by AssemblyScript. Please consider using the [Logging API](/subgraphs/developing/creating/graph-ts/api/#logging-api) - -> ERROR TS2554: Expected ? arguments, but got ?. -> -> return new ethereum.Block(defaultAddressBytes, defaultAddressBytes, defaultAddressBytes, defaultAddress, defaultAddressBytes, defaultAddressBytes, defaultAddressBytes, defaultBigInt, defaultBigInt, defaultBigInt, defaultBigInt, defaultBigInt, defaultBigInt, defaultBigInt, defaultBigInt); -> -> in ~lib/matchstick-as/assembly/defaults.ts(18,12) -> -> ERROR TS2554: Expected ? arguments, but got ?. -> -> return new ethereum.Transaction(defaultAddressBytes, defaultBigInt, defaultAddress, defaultAddress, defaultBigInt, defaultBigInt, defaultBigInt, defaultAddressBytes, defaultBigInt); -> -> in ~lib/matchstick-as/assembly/defaults.ts(24,12) - -The mismatch in arguments is caused by mismatch in `graph-ts` and `matchstick-as`. The best way to fix issues like this one is to update everything to the latest released version. - -## مصادر إضافية - -For any additional support, check out this [demo Subgraph repo using Matchstick](https://github.com/LimeChain/demo-subgraph#readme_). - -## Feedback - -If you have any questions, feedback, feature requests or just want to reach out, the best place would be The Graph Discord where we have a dedicated channel for Matchstick, called 🔥| unit-testing. diff --git a/website/src/pages/ar/subgraphs/developing/deploying/_meta.js b/website/src/pages/ar/subgraphs/developing/deploying/_meta.js deleted file mode 100644 index cb7ed6c18bcc..000000000000 --- a/website/src/pages/ar/subgraphs/developing/deploying/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - 'using-subgraph-studio': '', - 'multiple-networks': '', -} diff --git a/website/src/pages/ar/subgraphs/developing/deploying/multiple-networks.mdx b/website/src/pages/ar/subgraphs/developing/deploying/multiple-networks.mdx deleted file mode 100644 index 3b2b1bbc70ae..000000000000 --- a/website/src/pages/ar/subgraphs/developing/deploying/multiple-networks.mdx +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Deploying a Subgraph to Multiple Networks -sidebarTitle: Deploying to Multiple Networks ---- - -This page explains how to deploy a Subgraph to multiple networks. To deploy a Subgraph you need to first install the [Graph CLI](https://github.com/graphprotocol/graph-tooling/tree/main/packages/cli). If you have not created a Subgraph already, see [Creating a Subgraph](/developing/creating-a-subgraph/). - -## Deploying the Subgraph to multiple networks - -In some cases, you will want to deploy the same Subgraph to multiple networks without duplicating all of its code. The main challenge that comes with this is that the contract addresses on these networks are different. - -### Using `graph-cli` - -Both `graph build` (since `v0.29.0`) and `graph deploy` (since `v0.32.0`) accept two new options: - -```sh -Options: - - ... - --network Network configuration to use from the networks config file - --network-file Networks config file path (default: "./networks.json") -``` - -You can use the `--network` option to specify a network configuration from a `json` standard file (defaults to `networks.json`) to easily update your Subgraph during development. - -> Note: The `init` command will now auto-generate a `networks.json` based on the provided information. You will then be able to update existing or add additional networks. - -If you don't have a `networks.json` file, you'll need to manually create one with the following structure: - -```json -{ - "network1": { // the network name - "dataSource1": { // the dataSource name - "address": "0xabc...", // the contract address (optional) - "startBlock": 123456 // the startBlock (optional) - }, - "dataSource2": { - "address": "0x123...", - "startBlock": 123444 - } - }, - "network2": { - "dataSource1": { - "address": "0x987...", - "startBlock": 123 - }, - "dataSource2": { - "address": "0xxyz..", - "startBlock": 456 - } - }, - ... -} -``` - -> Note: You don't have to specify any of the `templates` (if you have any) in the config file, only the `dataSources`. If there are any `templates` declared in the `subgraph.yaml` file, their network will be automatically updated to the one specified with the `--network` option. - -Now, let's assume you want to be able to deploy your Subgraph to the `mainnet` and `sepolia` networks, and this is your `subgraph.yaml`: - -```yaml -# ... -dataSources: - - kind: ethereum/contract - name: Gravity - network: mainnet - source: - address: '0x123...' - abi: Gravity - mapping: - kind: ethereum/events -``` - -This is what your networks config file should look like: - -```json -{ - "mainnet": { - "Gravity": { - "address": "0x123..." - } - }, - "sepolia": { - "Gravity": { - "address": "0xabc..." - } - } -} -``` - -Now we can run one of the following commands: - -```sh -# Using default networks.json file -yarn build --network sepolia - -# Using custom named file -yarn build --network sepolia --network-file path/to/config -``` - -The `build` command will update your `subgraph.yaml` with the `sepolia` configuration and then re-compile the Subgraph. Your `subgraph.yaml` file now should look like this: - -```yaml -# ... -dataSources: - - kind: ethereum/contract - name: Gravity - network: sepolia - source: - address: '0xabc...' - abi: Gravity - mapping: - kind: ethereum/events -``` - -Now you are ready to `yarn deploy`. - -> Note: As mentioned earlier, since `graph-cli 0.32.0` you can directly run `yarn deploy` with the `--network` option: - -```sh -# Using default networks.json file -yarn deploy --network sepolia - -# Using custom named file -yarn deploy --network sepolia --network-file path/to/config -``` - -### Using subgraph.yaml template - -One way to parameterize aspects like contract addresses using older `graph-cli` versions is to generate parts of it with a templating system like [Mustache](https://mustache.github.io/) or [Handlebars](https://handlebarsjs.com/). - -To illustrate this approach, let's assume a Subgraph should be deployed to mainnet and Sepolia using different contract addresses. You could then define two config files providing the addresses for each network: - -```json -{ - "network": "mainnet", - "address": "0x123..." -} -``` - -and - -```json -{ - "network": "sepolia", - "address": "0xabc..." -} -``` - -Along with that, you would substitute the network name and addresses in the manifest with variable placeholders `{{network}}` and `{{address}}` and rename the manifest to e.g. `subgraph.template.yaml`: - -```yaml -# ... -dataSources: - - kind: ethereum/contract - name: Gravity - network: mainnet - network: {{network}} - source: - address: '0x2E645469f354BB4F5c8a05B3b30A929361cf77eC' - address: '{{address}}' - abi: Gravity - mapping: - kind: ethereum/events -``` - -In order to generate a manifest to either network, you could add two additional commands to `package.json` along with a dependency on `mustache`: - -```json -{ - ... - "scripts": { - ... - "prepare:mainnet": "mustache config/mainnet.json subgraph.template.yaml > subgraph.yaml", - "prepare:sepolia": "mustache config/sepolia.json subgraph.template.yaml > subgraph.yaml" - }, - "devDependencies": { - ... - "mustache": "^3.1.0" - } -} -``` - -To deploy this Subgraph for mainnet or Sepolia you would now simply run one of the two following commands: - -```sh -# Mainnet: -yarn prepare:mainnet && yarn deploy - -# Sepolia: -yarn prepare:sepolia && yarn deploy -``` - -A working example of this can be found [here](https://github.com/graphprotocol/example-subgraph/tree/371232cf68e6d814facf5e5413ad0fef65144759). - -**Note:** This approach can also be applied to more complex situations, where it is necessary to substitute more than contract addresses and network names or where generating mappings or ABIs from templates as well. - -This will give you the `chainHeadBlock` which you can compare with the `latestBlock` on your Subgraph to check if it is running behind. `synced` informs if the Subgraph has ever caught up to the chain. `health` can currently take the values of `healthy` if no errors occurred, or `failed` if there was an error which halted the progress of the Subgraph. In this case, you can check the `fatalError` field for details on this error. - -## Subgraph Studio Subgraph archive policy - -A Subgraph version in Studio is archived if and only if it meets the following criteria: - -- The version is not published to the network (or pending publish) -- The version was created 45 or more days ago -- The Subgraph hasn't been queried in 30 days - -In addition, when a new version is deployed, if the Subgraph has not been published, then the N-2 version of the Subgraph is archived. - -Every Subgraph affected with this policy has an option to bring the version in question back. - -## Checking Subgraph health - -If a Subgraph syncs successfully, that is a good sign that it will continue to run well forever. However, new triggers on the network might cause your Subgraph to hit an untested error condition or it may start to fall behind due to performance issues or issues with the node operators. - -Graph Node exposes a GraphQL endpoint which you can query to check the status of your Subgraph. On the hosted service, it is available at `https://api.thegraph.com/index-node/graphql`. On a local node, it is available on port `8030/graphql` by default. The full schema for this endpoint can be found [here](https://github.com/graphprotocol/graph-node/blob/master/server/index-node/src/schema.graphql). Here is an example query that checks the status of the current version of a Subgraph: - -```graphql -{ - indexingStatusForCurrentVersion(subgraphName: "org/subgraph") { - synced - health - fatalError { - message - block { - number - hash - } - handler - } - chains { - chainHeadBlock { - number - } - latestBlock { - number - } - } - } -} -``` - -This will give you the `chainHeadBlock` which you can compare with the `latestBlock` on your Subgraph to check if it is running behind. `synced` informs if the Subgraph has ever caught up to the chain. `health` can currently take the values of `healthy` if no errors occurred, or `failed` if there was an error which halted the progress of the Subgraph. In this case, you can check the `fatalError` field for details on this error. diff --git a/website/src/pages/ar/subgraphs/developing/deploying/using-subgraph-studio.mdx b/website/src/pages/ar/subgraphs/developing/deploying/using-subgraph-studio.mdx deleted file mode 100644 index 1e0826bfe148..000000000000 --- a/website/src/pages/ar/subgraphs/developing/deploying/using-subgraph-studio.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Deploying Using Subgraph Studio ---- - -Learn how to deploy your Subgraph to Subgraph Studio. - -> Note: When you deploy a Subgraph, you push it to Subgraph Studio, where you'll be able to test it. It's important to remember that deploying is not the same as publishing. When you publish a Subgraph, you're publishing it onchain. - -## Subgraph Studio Overview - -In [Subgraph Studio](https://thegraph.com/studio/), you can do the following: - -- View a list of Subgraphs you've created -- Manage, view details, and visualize the status of a specific Subgraph -- Create and manage your API keys for specific Subgraphs -- Restrict your API keys to specific domains and allow only certain Indexers to query with them -- Create your Subgraph -- Deploy your Subgraph using The Graph CLI -- Test your Subgraph in the playground environment -- Integrate your Subgraph in staging using the development query URL -- Publish your Subgraph to The Graph Network -- Manage your billing - -## Install The Graph CLI - -Before deploying, you must install The Graph CLI. - -You must have [Node.js](https://nodejs.org/) and a package manager of your choice (`npm`, `yarn` or `pnpm`) installed to use The Graph CLI. Check for the [most recent](https://github.com/graphprotocol/graph-tooling/releases?q=%40graphprotocol%2Fgraph-cli&expanded=true) CLI version. - -### Install with yarn - -```bash -yarn global add @graphprotocol/graph-cli -``` - -### Install with npm - -```bash -npm install -g @graphprotocol/graph-cli -``` - -## Get Started - -1. Open [Subgraph Studio](https://thegraph.com/studio/). -2. Connect your wallet to sign in. - - You can do this via MetaMask, Coinbase Wallet, WalletConnect, or Safe. -3. After you sign in, your unique deploy key will be displayed on your Subgraph details page. - - The deploy key allows you to publish your Subgraphs or manage your API keys and billing. It is unique but can be regenerated if you think it has been compromised. - -> Important: You need an API key to query Subgraphs - -### How to Create a Subgraph in Subgraph Studio - - - -> For additional written detail, review the [Quick Start](/subgraphs/quick-start/). - -### توافق الـ Subgraph مع شبكة The Graph - -To be supported by Indexers on The Graph Network, Subgraphs must index a [supported network](/supported-networks/). For a full list of supported and unsupported features, check out the [Feature Support Matrix](https://github.com/graphprotocol/indexer/blob/main/docs/feature-support-matrix.md) repo. - -## Initialize Your Subgraph - -Once your Subgraph has been created in Subgraph Studio, you can initialize its code through the CLI using this command: - -```bash -graph init -``` - -You can find the `` value on your Subgraph details page in Subgraph Studio, see image below: - -![Subgraph Studio - Slug](/img/doc-subgraph-slug.png) - -After running `graph init`, you will be asked to input the contract address, network, and an ABI that you want to query. This will generate a new folder on your local machine with some basic code to start working on your Subgraph. You can then finalize your Subgraph to make sure it works as expected. - -## Graph Auth - -Before you can deploy your Subgraph to Subgraph Studio, you need to log into your account within the CLI. To do this, you will need your deploy key, which you can find under your Subgraph details page. - -Then, use the following command to authenticate from the CLI: - -```bash -graph auth -``` - -## Deploying a Subgraph - -Once you are ready, you can deploy your Subgraph to Subgraph Studio. - -> Deploying a Subgraph with the CLI pushes it to the Studio, where you can test it and update the metadata. This action won't publish your Subgraph to the decentralized network. - -Use the following CLI command to deploy your Subgraph: - -```bash -graph deploy -``` - -After running this command, the CLI will ask for a version label. - -- It's strongly recommended to use [semver](https://semver.org/) for versioning like `0.0.1`. That said, you are free to choose any string as version such as `v1`, `version1`, or `asdf`. -- The labels you create will be visible in Graph Explorer and can be used by curators to decide if they want to signal on a specific version or not, so choose them wisely. - -## Testing Your Subgraph - -After deploying, you can test your Subgraph (either in Subgraph Studio or in your own app, with the deployment query URL), deploy another version, update the metadata, and publish to [Graph Explorer](https://thegraph.com/explorer) when you are ready. - -Use Subgraph Studio to check the logs on the dashboard and look for any errors with your Subgraph. - -## Publish Your Subgraph - -In order to publish your Subgraph successfully, review [publishing a Subgraph](/subgraphs/developing/publishing/publishing-a-subgraph/). - -## Versioning Your Subgraph with the CLI - -If you want to update your Subgraph, you can do the following: - -- You can deploy a new version to Studio using the CLI (it will only be private at this point). -- Once you're happy with it, you can publish your new deployment to [Graph Explorer](https://thegraph.com/explorer). -- This action will create a new version of your Subgraph that Curators can start signaling on and Indexers can index. - -You can also update your Subgraph's metadata without publishing a new version. You can update your Subgraph details in Studio (under the profile picture, name, description, etc.) by checking an option called **Update Details** in [Graph Explorer](https://thegraph.com/explorer). If this is checked, an onchain transaction will be generated that updates Subgraph details in Explorer without having to publish a new version with a new deployment. - -> Note: There are costs associated with publishing a new version of a Subgraph to the network. In addition to the transaction fees, you must also fund a part of the curation tax on the auto-migrating signal. You cannot publish a new version of your Subgraph if Curators have not signaled on it. For more information, please read more [here](/resources/roles/curating/). - -## الأرشفة التلقائية لإصدارات الـ Subgraph - -Whenever you deploy a new Subgraph version in Subgraph Studio, the previous version will be archived. Archived versions won't be indexed/synced and therefore cannot be queried. You can unarchive an archived version of your Subgraph in Subgraph Studio. - -> Note: Previous versions of non-published Subgraphs deployed to Studio will be automatically archived. - -![Subgraph Studio - Unarchive](/img/Unarchive.png) diff --git a/website/src/pages/ar/subgraphs/developing/developer-faq.mdx b/website/src/pages/ar/subgraphs/developing/developer-faq.mdx deleted file mode 100644 index 016a7a8e5a04..000000000000 --- a/website/src/pages/ar/subgraphs/developing/developer-faq.mdx +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Developer FAQ -sidebarTitle: FAQ ---- - -This page summarizes some of the most common questions for developers building on The Graph. - -## Subgraph Related - -### 1. What is a Subgraph? - -A Subgraph is a custom API built on blockchain data. Subgraphs are queried using the GraphQL query language and are deployed to a Graph Node using The Graph CLI. Once deployed and published to The Graph's decentralized network, Indexers process Subgraphs and make them available for Subgraph consumers to query. - -### 2. What is the first step to create a Subgraph? - -To successfully create a Subgraph, you will need to install The Graph CLI. Review the [Quick Start](/subgraphs/quick-start/) to get started. For detailed information, see [Creating a Subgraph](/developing/creating-a-subgraph/). - -### 3. Can I still create a Subgraph if my smart contracts don't have events? - -It is highly recommended that you structure your smart contracts to have events associated with data you are interested in querying. Event handlers in the Subgraph are triggered by contract events and are the fastest way to retrieve useful data. - -If the contracts you work with do not contain events, your Subgraph can use call and block handlers to trigger indexing. However, this is not recommended, as performance will be significantly slower. - -### 4. Can I change the GitHub account associated with my Subgraph? - -No. Once a Subgraph is created, the associated GitHub account cannot be changed. Please make sure to carefully consider this before creating your Subgraph. - -### 5. How do I update a Subgraph on mainnet? - -You can deploy a new version of your Subgraph to Subgraph Studio using the CLI. This action maintains your Subgraph private, but once you’re happy with it, you can publish to Graph Explorer. This will create a new version of your Subgraph that Curators can start signaling on. - -### 6. Is it possible to duplicate a Subgraph to another account or endpoint without redeploying? - -You have to redeploy the Subgraph, but if the Subgraph ID (IPFS hash) doesn't change, it won't have to sync from the beginning. - -### 7. How do I call a contract function or access a public state variable from my Subgraph mappings? - -Take a look at `Access to smart contract` state inside the section [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/#access-to-smart-contract-state). - -### 8. Can I import `ethers.js` or other JS libraries into my Subgraph mappings? - -Not currently, as mappings are written in AssemblyScript. - -One possible alternative solution to this is to store raw data in entities and perform logic that requires JS libraries on the client. - -### 9. When listening to multiple contracts, is it possible to select the contract order to listen to events? - -Within a Subgraph, the events are always processed in the order they appear in the blocks, regardless of whether that is across multiple contracts or not. - -### 10. How are templates different from data sources? - -Templates allow you to create data sources quickly, while your Subgraph is indexing. Your contract might spawn new contracts as people interact with it. Since you know the shape of those contracts (ABI, events, etc.) upfront, you can define how you want to index them in a template. When they are spawned, your Subgraph will create a dynamic data source by supplying the contract address. - -Check out the "Instantiating a data source template" section on: [Data Source Templates](/developing/creating-a-subgraph/#data-source-templates). - -### 11. Is it possible to set up a Subgraph using `graph init` from `graph-cli` with two contracts? Or should I manually add another dataSource in `subgraph.yaml` after running `graph init`? - -Yes. On `graph init` command itself you can add multiple dataSources by entering contracts one after the other. - -You can also use `graph add` command to add a new dataSource. - -### 12. In what order are the event, block, and call handlers triggered for a data source? - -Event and call handlers are first ordered by transaction index within the block. Event and call handlers within the same transaction are ordered using a convention: event handlers first then call handlers, each type respecting the order they are defined in the manifest. Block handlers are run after event and call handlers, in the order they are defined in the manifest. Also these ordering rules are subject to change. - -When new dynamic data source are created, the handlers defined for dynamic data sources will only start processing after all existing data source handlers are processed, and will repeat in the same sequence whenever triggered. - -### 13. How do I make sure I'm using the latest version of graph-node for my local deployments? - -يمكنك تشغيل الأمر التالي: - -```sh -docker pull graphprotocol/graph-node:latest -``` - -> Note: docker / docker-compose will always use whatever graph-node version was pulled the first time you ran it, so make sure you're up to date with the latest version of graph-node. - -### 14. What is the recommended way to build "autogenerated" ids for an entity when handling events? - -If only one entity is created during the event and if there's nothing better available, then the transaction hash + log index would be unique. You can obfuscate these by converting that to Bytes and then piping it through `crypto.keccak256` but this won't make it more unique. - -### 15. Can I delete my Subgraph? - -Yes, you can [delete](/subgraphs/developing/managing/deleting-a-subgraph/) and [transfer](/subgraphs/developing/managing/transferring-a-subgraph/) your Subgraph. - -## Network Related - -### 16. What networks are supported by The Graph? - -You can find the list of the supported networks [here](/supported-networks/). - -### 17. Is it possible to differentiate between networks (mainnet, Sepolia, local) within event handlers? - -Yes. You can do this by importing `graph-ts` as per the example below: - -```javascript -'import { dataSource } from '@graphprotocol/graph-ts - -()dataSource.network -()dataSource.address -``` - -### 18. Do you support block and call handlers on Sepolia? - -Yes. Sepolia supports block handlers, call handlers and event handlers. It should be noted that event handlers are far more performant than the other two handlers, and they are supported on every EVM-compatible network. - -## Indexing & Querying Related - -### 19. Is it possible to specify what block to start indexing on? - -Yes. `dataSources.source.startBlock` in the `subgraph.yaml` file specifies the number of the block that the dataSource starts indexing from. In most cases, we suggest using the block where the contract was created: [Start blocks](/developing/creating-a-subgraph/#start-blocks) - -### 20. What are some tips to increase the performance of indexing? My Subgraph is taking a very long time to sync - -Yes, you should take a look at the optional start block feature to start indexing from the block where the contract was deployed: [Start blocks](/developing/creating-a-subgraph/#start-blocks) - -### 21. Is there a way to query the Subgraph directly to determine the latest block number it has indexed? - -نعم! جرب الأمر التالي ، مع استبدال "Organization / subgraphName" بالمؤسسة واسم الـ subgraph الخاص بك: - -```sh -curl -X POST -d '{ "query": "{indexingStatusForCurrentVersion(subgraphName: \"organization/subgraphName\") { chains { latestBlock { hash number }}}}"}' https://api.thegraph.com/index-node/graphql -``` - -### 22. Is there a limit to how many objects The Graph can return per query? - -By default, query responses are limited to 100 items per collection. If you want to receive more, you can go up to 1000 items per collection and beyond that, you can paginate with: - -```graphql -someCollection(first: 1000, skip: ) { ... } -``` - -### 23. If my dapp frontend uses The Graph for querying, do I need to write my API key into the frontend directly? What if we pay query fees for users – will malicious users cause our query fees to be very high? - -Currently, the recommended approach for a dapp is to add the key to the frontend and expose it to end users. That said, you can limit that key to a hostname, like _yourdapp.io_ and Subgraph. The gateway is currently being run by Edge & Node. Part of the responsibility of a gateway is to monitor for abusive behavior and block traffic from malicious clients. - -## Miscellaneous - -### 24. Is it possible to use Apollo Federation on top of graph-node? - -Federation is not supported yet. At the moment, you can use schema stitching, either on the client or via a proxy service. - -### 25. I want to contribute or add a GitHub issue. Where can I find the open source repositories? - -- [graph-node](https://github.com/graphprotocol/graph-node) -- [graph-tooling](https://github.com/graphprotocol/graph-tooling) -- [graph-docs](https://github.com/graphprotocol/docs) -- [graph-client](https://github.com/graphprotocol/graph-client) diff --git a/website/src/pages/ar/subgraphs/developing/introduction.mdx b/website/src/pages/ar/subgraphs/developing/introduction.mdx deleted file mode 100644 index 946e62affbe7..000000000000 --- a/website/src/pages/ar/subgraphs/developing/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction to Subgraph Development -sidebarTitle: مقدمة ---- - -To start coding right away, go to [Developer Quick Start](/subgraphs/quick-start/). - -## نظره عامة - -As a developer, you need data to build and power your dapp. Querying and indexing blockchain data is challenging, but The Graph provides a solution to this issue. - -On The Graph, you can: - -1. Create, deploy, and publish Subgraphs to The Graph using Graph CLI and [Subgraph Studio](https://thegraph.com/studio/). -2. Use GraphQL to query existing Subgraphs. - -### What is GraphQL? - -- [GraphQL](https://graphql.org/learn/) is the query language for APIs and a runtime for executing those queries with your existing data. The Graph uses GraphQL to query Subgraphs. - -### Developer Actions - -- Query Subgraphs built by other developers in [The Graph Network](https://thegraph.com/explorer) and integrate them into your own dapps. -- Create custom Subgraphs to fulfill specific data needs, allowing improved scalability and flexibility for other developers. -- Deploy, publish and signal your Subgraphs within The Graph Network. - -### What are Subgraphs? - -A Subgraph is a custom API built on blockchain data. It extracts data from a blockchain, processes it, and stores it so that it can be easily queried via GraphQL. - -Check out the documentation on [Subgraphs](/subgraphs/developing/subgraphs/) to learn specifics. diff --git a/website/src/pages/ar/subgraphs/developing/managing/_meta.js b/website/src/pages/ar/subgraphs/developing/managing/_meta.js deleted file mode 100644 index 7f23e3ebfcfc..000000000000 --- a/website/src/pages/ar/subgraphs/developing/managing/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - 'transferring-a-subgraph': '', - 'deleting-a-subgraph': '', -} diff --git a/website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx deleted file mode 100644 index f842a0e04ac4..000000000000 --- a/website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Deleting a Subgraph ---- - -Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/). - -> Deleting your Subgraph will remove all published versions from The Graph Network, but it will remain visible on Graph Explorer and Subgraph Studio for users who have signaled on it. - -## Step-by-Step - -1. Visit the Subgraph's page on [Subgraph Studio](https://thegraph.com/studio/). - -2. Click on the three-dots to the right of the "publish" button. - -3. Click on the option to "delete this Subgraph": - - ![Delete-subgraph](/img/Delete-subgraph.png) - -4. Depending on the Subgraph's status, you will be prompted with various options. - - If the Subgraph is not published, simply click “delete” and confirm. - - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required. - -> If the owner of the Subgraph has signal on it, the signaled GRT will be returned to the owner. - -### Important Reminders - -- Once you delete a Subgraph, it will **not** appear on Graph Explorer's homepage. However, users who have signaled on it will still be able to view it on their profile pages and remove their signal. -- Curators will not be able to signal on the Subgraph anymore. -- Curators that already signaled on the Subgraph can withdraw their signal at an average share price. -- Deleted Subgraphs will show an error message. diff --git a/website/src/pages/ar/subgraphs/developing/managing/transferring-a-subgraph.mdx b/website/src/pages/ar/subgraphs/developing/managing/transferring-a-subgraph.mdx deleted file mode 100644 index e80bde3fa6d2..000000000000 --- a/website/src/pages/ar/subgraphs/developing/managing/transferring-a-subgraph.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Transferring a Subgraph ---- - -Subgraphs published to the decentralized network have an NFT minted to the address that published the Subgraph. The NFT is based on a standard ERC721, which facilitates transfers between accounts on The Graph Network. - -## Reminders - -- Whoever owns the NFT controls the Subgraph. -- If the owner decides to sell or transfer the NFT, they will no longer be able to edit or update that Subgraph on the network. -- You can easily move control of a Subgraph to a multi-sig. -- A community member can create a Subgraph on behalf of a DAO. - -## View Your Subgraph as an NFT - -To view your Subgraph as an NFT, you can visit an NFT marketplace like **OpenSea**: - -``` -https://opensea.io/your-wallet-address -``` - -Or a wallet explorer like **Rainbow.me**: - -``` -https://rainbow.me/your-wallet-addres -``` - -## Step-by-Step - -To transfer ownership of a Subgraph, do the following: - -1. Use the UI built into Subgraph Studio: - - ![Subgraph Ownership Transfer](/img/subgraph-ownership-transfer-1.png) - -2. Choose the address that you would like to transfer the Subgraph to: - - ![Subgraph Ownership Transfer](/img/subgraph-ownership-transfer-2.png) - -Optionally, you can also use the built-in UI of NFT marketplaces like OpenSea: - -![Subgraph Ownership Transfer from NFT marketplace](/img/subgraph-ownership-transfer-nft-marketplace.png) diff --git a/website/src/pages/ar/subgraphs/developing/publishing/_meta.js b/website/src/pages/ar/subgraphs/developing/publishing/_meta.js deleted file mode 100644 index 956339c6b49e..000000000000 --- a/website/src/pages/ar/subgraphs/developing/publishing/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - 'publishing-a-subgraph': '', -} diff --git a/website/src/pages/ar/subgraphs/developing/publishing/publishing-a-subgraph.mdx b/website/src/pages/ar/subgraphs/developing/publishing/publishing-a-subgraph.mdx deleted file mode 100644 index e3e3a7e3d455..000000000000 --- a/website/src/pages/ar/subgraphs/developing/publishing/publishing-a-subgraph.mdx +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Publishing a Subgraph to the Decentralized Network -sidebarTitle: Publishing to the Decentralized Network ---- - -Once you have [deployed your Subgraph to Subgraph Studio](/deploying/deploying-a-subgraph-to-studio/) and it's ready to go into production, you can publish it to the decentralized network. - -When you publish a Subgraph to the decentralized network, you make it available for: - -- [Curators](/resources/roles/curating/) to begin curating it. -- [Indexers](/indexing/overview/) to begin indexing it. - - - -Check out the list of [supported networks](/supported-networks/). - -## Publishing from Subgraph Studio - -1. Go to the [Subgraph Studio](https://thegraph.com/studio/) dashboard -2. Click on the **Publish** button -3. Your Subgraph will now be visible in [Graph Explorer](https://thegraph.com/explorer/). - -All published versions of an existing Subgraph can: - -- Be published to Arbitrum One. [Learn more about The Graph Network on Arbitrum](/archived/arbitrum/arbitrum-faq/). - -- Index data on any of the [supported networks](/supported-networks/), regardless of the network on which the Subgraph was published. - -### Updating metadata for a published Subgraph - -- After publishing your Subgraph to the decentralized network, you can update the metadata anytime in Subgraph Studio. -- Once you’ve saved your changes and published the updates, they will appear in Graph Explorer. -- It's important to note that this process will not create a new version since your deployment has not changed. - -## Publishing from the CLI - -As of version 0.73.0, you can also publish your Subgraph with the [`graph-cli`](https://github.com/graphprotocol/graph-tooling/tree/main/packages/cli). - -1. Open the `graph-cli`. -2. Use the following commands: `graph codegen && graph build` then `graph publish`. -3. A window will open, allowing you to connect your wallet, add metadata, and deploy your finalized Subgraph to a network of your choice. - -![cli-ui](/img/cli-ui.png) - -### Customizing your deployment - -You can upload your Subgraph build to a specific IPFS node and further customize your deployment with the following flags: - -``` -USAGE - $ graph publish [SUBGRAPH-MANIFEST] [-h] [--protocol-network arbitrum-one|arbitrum-sepolia --subgraph-id ] [-i ] [--ipfs-hash ] [--webapp-url - ] - -FLAGS - -h, --help Show CLI help. - -i, --ipfs= [default: https://ipfs.thegraph.com/api/v0] Upload build results to an IPFS node. - --ipfs-hash= IPFS hash of the subgraph manifest to deploy. - --protocol-network=