From 245dc8453c0c51f6093846832f3cfa3cdcbb118a Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Wed, 8 Oct 2025 15:43:50 +0300 Subject: [PATCH 01/10] bump sdk --- bun.lock | 128 +++++++++++++++++++++++++------------------------ package.json | 2 +- repos/airdrops | 2 +- repos/flow | 2 +- repos/lockup | 2 +- 5 files changed, 70 insertions(+), 66 deletions(-) diff --git a/bun.lock b/bun.lock index d95dc221..ef61bb93 100644 --- a/bun.lock +++ b/bun.lock @@ -32,7 +32,7 @@ "rehype-external-links": "^3.0.0", "rehype-katex": "7.0.1", "remark-math": "6.0.0", - "sablier": "1.1.0", + "sablier": "1.2.0-beta.4", "viem": "^2.37.9", }, "devDependencies": { @@ -316,23 +316,23 @@ "@babel/types": ["@babel/types@7.28.4", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q=="], - "@biomejs/biome": ["@biomejs/biome@2.2.6", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.2.6", "@biomejs/cli-darwin-x64": "2.2.6", "@biomejs/cli-linux-arm64": "2.2.6", "@biomejs/cli-linux-arm64-musl": "2.2.6", "@biomejs/cli-linux-x64": "2.2.6", "@biomejs/cli-linux-x64-musl": "2.2.6", "@biomejs/cli-win32-arm64": "2.2.6", "@biomejs/cli-win32-x64": "2.2.6" }, "bin": { "biome": "bin/biome" } }, "sha512-yKTCNGhek0rL5OEW1jbLeZX8LHaM8yk7+3JRGv08my+gkpmtb5dDE+54r2ZjZx0ediFEn1pYBOJSmOdDP9xtFw=="], + "@biomejs/biome": ["@biomejs/biome@2.2.7", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.2.7", "@biomejs/cli-darwin-x64": "2.2.7", "@biomejs/cli-linux-arm64": "2.2.7", "@biomejs/cli-linux-arm64-musl": "2.2.7", "@biomejs/cli-linux-x64": "2.2.7", "@biomejs/cli-linux-x64-musl": "2.2.7", "@biomejs/cli-win32-arm64": "2.2.7", "@biomejs/cli-win32-x64": "2.2.7" }, "bin": { "biome": "bin/biome" } }, "sha512-1a8j0UP1vXVUf3UzMZEJ/zS2VgAG6wU6Cuh/I764sUGI+MCnJs/9WaojHYBDCxCMLTgU60/WqnYof85emXmSBA=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.2.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-UZPmn3M45CjTYulgcrFJFZv7YmK3pTxTJDrFYlNElT2FNnkkX4fsxjExTSMeWKQYoZjvekpH5cvrYZZlWu3yfA=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.2.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-xBUUsebnO2/Qj1v7eZmKUy2ZcFkZ4/jLUkxN02Qup1RPoRaiW9AKXHrqS3L7iX6PzofHY2xuZ+Pb9kAcpoe0qA=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.2.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-HOUIquhHVgh/jvxyClpwlpl/oeMqntlteL89YqjuFDiZ091P0vhHccwz+8muu3nTyHWM5FQslt+4Jdcd67+xWQ=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.2.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-vsY4NhmxqgfLJufr9XUnC+yGUPJiXAc1mz6FcjaAmuIuLwfghN4uQO7hnW2AneGyoi2mNe9Jbvf6Qtq4AjzrFg=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-BpGtuMJGN+o8pQjvYsUKZ+4JEErxdSmcRD/JG3mXoWc6zrcA7OkuyGFN1mDggO0Q1n7qXxo/PcupHk8gzijt5g=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-nUdco104rjV9dULi1VssQ5R/kX2jE/Z2sDjyqS+siV9sTQda0DwmEUixFNRCWvZJRRiZUWhgiDFJ4n7RowO8Mg=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-TjCenQq3N6g1C+5UT3jE1bIiJb5MWQvulpUngTIpFsL4StVAUXucWD0SL9MCW89Tm6awWfeXBbZBAhJwjyFbRQ=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-FrTwvKO/7t5HbVTvhlMOTOVQLAcR7r4O4iFQhEpZXUtBfosHqrX/JJlX7daPawoe14MDcCu9CDg0zLVpTuDvuQ=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1HaM/dpI/1Z68zp8ZdT6EiBq+/O/z97a2AiHMl+VAdv5/ELckFt9EvRb8hDHpk8hUMoz03gXkC7VPXOVtU7faA=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-tPTcGAIEOOZrj2tQ7fdraWlaxNKApBw6l4In8wQQV1IyxnAexqi0hykHzKEX8hKKctf5gxGBfNCzyIvqpj4CFQ=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1ZcBux8zVM3JhWN2ZCPaYf0+ogxXG316uaoXJdgoPZcdK/rmRcRY7PqHdAos2ExzvjIdvhQp72UcveI98hgOog=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-MnsysF5s/iLC5wnYvuMseOy+m8Pd4bWG1uwlVyy2AUbfjAVUgtbYbboc5wMXljFrDY7e6rLjLTR4S2xqDpGlQg=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.2.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-h3A88G8PGM1ryTeZyLlSdfC/gz3e95EJw9BZmA6Po412DRqwqPBa2Y9U+4ZSGUAXCsnSQE00jLV8Pyrh0d+jQw=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.2.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-h5D1jhwA2b7cFXerYiJfXHSzzAMFFoEDL5Mc2BgiaEw0iaSgSso/3Nc6FbOR55aTQISql+IpB4PS7JoV26Gdbw=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.2.6", "", { "os": "win32", "cpu": "x64" }, "sha512-yx0CqeOhPjYQ5ZXgPfu8QYkgBhVJyvWe36as7jRuPrKPO5ylVDfwVtPQ+K/mooNTADW0IhxOZm3aPu16dP8yNQ=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.2.7", "", { "os": "win32", "cpu": "x64" }, "sha512-URqAJi0kONyBKG4V9NVafHLDtm6IHmF4qPYi/b6x7MD6jxpWeJiTCO6R5+xDlWckX2T/OGv6Yq3nkz6s0M8Ykw=="], "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.1", "", {}, "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw=="], @@ -448,67 +448,67 @@ "@docsearch/react": ["@docsearch/react@4.2.0", "", { "dependencies": { "@ai-sdk/react": "^2.0.30", "@algolia/autocomplete-core": "1.19.2", "@docsearch/css": "4.2.0", "ai": "^5.0.30", "algoliasearch": "^5.28.0", "marked": "^16.3.0", "zod": "^4.1.8" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", "react": ">= 16.8.0 < 20.0.0", "react-dom": ">= 16.8.0 < 20.0.0", "search-insights": ">= 1 < 3" }, "optionalPeers": ["@types/react", "react", "react-dom", "search-insights"] }, "sha512-zSN/KblmtBcerf7Z87yuKIHZQmxuXvYc6/m0+qnjyNu+Ir67AVOagTa1zBqcxkVUVkmBqUExdcyrdo9hbGbqTw=="], - "@docusaurus/babel": ["@docusaurus/babel@3.9.1", "", { "dependencies": { "@babel/core": "^7.25.9", "@babel/generator": "^7.25.9", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-runtime": "^7.25.9", "@babel/preset-env": "^7.25.9", "@babel/preset-react": "^7.25.9", "@babel/preset-typescript": "^7.25.9", "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", "@docusaurus/logger": "3.9.1", "@docusaurus/utils": "3.9.1", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" } }, "sha512-/uoi3oG+wvbVWNBRfPrzrEslOSeLxrQEyWMywK51TLDFTANqIRivzkMusudh5bdDty8fXzCYUT+tg5t697jYqg=="], + "@docusaurus/babel": ["@docusaurus/babel@3.9.2", "", { "dependencies": { "@babel/core": "^7.25.9", "@babel/generator": "^7.25.9", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-runtime": "^7.25.9", "@babel/preset-env": "^7.25.9", "@babel/preset-react": "^7.25.9", "@babel/preset-typescript": "^7.25.9", "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", "@docusaurus/logger": "3.9.2", "@docusaurus/utils": "3.9.2", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" } }, "sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA=="], - "@docusaurus/bundler": ["@docusaurus/bundler@3.9.1", "", { "dependencies": { "@babel/core": "^7.25.9", "@docusaurus/babel": "3.9.1", "@docusaurus/cssnano-preset": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "babel-loader": "^9.2.1", "clean-css": "^5.3.3", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.11.0", "css-minimizer-webpack-plugin": "^5.0.1", "cssnano": "^6.1.2", "file-loader": "^6.2.0", "html-minifier-terser": "^7.2.0", "mini-css-extract-plugin": "^2.9.2", "null-loader": "^4.0.1", "postcss": "^8.5.4", "postcss-loader": "^7.3.4", "postcss-preset-env": "^10.2.1", "terser-webpack-plugin": "^5.3.9", "tslib": "^2.6.0", "url-loader": "^4.1.1", "webpack": "^5.95.0", "webpackbar": "^6.0.1" }, "peerDependencies": { "@docusaurus/faster": "*" }, "optionalPeers": ["@docusaurus/faster"] }, "sha512-E1c9DgNmAz4NqbNtiJVp4UgjLtr8O01IgtXD/NDQ4PZaK8895cMiTOgb3k7mN0qX8A3lb8vqyrPJ842+yMpuUg=="], + "@docusaurus/bundler": ["@docusaurus/bundler@3.9.2", "", { "dependencies": { "@babel/core": "^7.25.9", "@docusaurus/babel": "3.9.2", "@docusaurus/cssnano-preset": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "babel-loader": "^9.2.1", "clean-css": "^5.3.3", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.11.0", "css-minimizer-webpack-plugin": "^5.0.1", "cssnano": "^6.1.2", "file-loader": "^6.2.0", "html-minifier-terser": "^7.2.0", "mini-css-extract-plugin": "^2.9.2", "null-loader": "^4.0.1", "postcss": "^8.5.4", "postcss-loader": "^7.3.4", "postcss-preset-env": "^10.2.1", "terser-webpack-plugin": "^5.3.9", "tslib": "^2.6.0", "url-loader": "^4.1.1", "webpack": "^5.95.0", "webpackbar": "^6.0.1" }, "peerDependencies": { "@docusaurus/faster": "*" }, "optionalPeers": ["@docusaurus/faster"] }, "sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA=="], - "@docusaurus/core": ["@docusaurus/core@3.9.1", "", { "dependencies": { "@docusaurus/babel": "3.9.1", "@docusaurus/bundler": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/mdx-loader": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", "cli-table3": "^0.6.3", "combine-promises": "^1.1.0", "commander": "^5.1.0", "core-js": "^3.31.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", "execa": "5.1.1", "fs-extra": "^11.1.1", "html-tags": "^3.3.1", "html-webpack-plugin": "^5.6.0", "leven": "^3.1.0", "lodash": "^4.17.21", "open": "^8.4.0", "p-map": "^4.0.0", "prompts": "^2.4.2", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", "semver": "^7.5.4", "serve-handler": "^6.1.6", "tinypool": "^1.0.2", "tslib": "^2.6.0", "update-notifier": "^6.0.2", "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2", "webpack-dev-server": "^5.2.2", "webpack-merge": "^6.0.1" }, "peerDependencies": { "@mdx-js/react": "^3.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "bin": { "docusaurus": "bin/docusaurus.mjs" } }, "sha512-FWDk1LIGD5UR5Zmm9rCrXRoxZUgbwuP6FBA7rc50DVfzqDOMkeMe3NyJhOsA2dF0zBE3VbHEIMmTjKwTZJwbaA=="], + "@docusaurus/core": ["@docusaurus/core@3.9.2", "", { "dependencies": { "@docusaurus/babel": "3.9.2", "@docusaurus/bundler": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/mdx-loader": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", "cli-table3": "^0.6.3", "combine-promises": "^1.1.0", "commander": "^5.1.0", "core-js": "^3.31.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", "execa": "5.1.1", "fs-extra": "^11.1.1", "html-tags": "^3.3.1", "html-webpack-plugin": "^5.6.0", "leven": "^3.1.0", "lodash": "^4.17.21", "open": "^8.4.0", "p-map": "^4.0.0", "prompts": "^2.4.2", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", "semver": "^7.5.4", "serve-handler": "^6.1.6", "tinypool": "^1.0.2", "tslib": "^2.6.0", "update-notifier": "^6.0.2", "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2", "webpack-dev-server": "^5.2.2", "webpack-merge": "^6.0.1" }, "peerDependencies": { "@mdx-js/react": "^3.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "bin": { "docusaurus": "bin/docusaurus.mjs" } }, "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw=="], - "@docusaurus/cssnano-preset": ["@docusaurus/cssnano-preset@3.9.1", "", { "dependencies": { "cssnano-preset-advanced": "^6.1.2", "postcss": "^8.5.4", "postcss-sort-media-queries": "^5.2.0", "tslib": "^2.6.0" } }, "sha512-2y7+s7RWQMqBg+9ejeKwvZs7Bdw/hHIVJIodwMXbs2kr+S48AhcmAfdOh6Cwm0unJb0hJUshN0ROwRoQMwl3xg=="], + "@docusaurus/cssnano-preset": ["@docusaurus/cssnano-preset@3.9.2", "", { "dependencies": { "cssnano-preset-advanced": "^6.1.2", "postcss": "^8.5.4", "postcss-sort-media-queries": "^5.2.0", "tslib": "^2.6.0" } }, "sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ=="], - "@docusaurus/faster": ["@docusaurus/faster@3.9.1", "", { "dependencies": { "@docusaurus/types": "3.9.1", "@rspack/core": "^1.5.0", "@swc/core": "^1.7.39", "@swc/html": "^1.13.5", "browserslist": "^4.24.2", "lightningcss": "^1.27.0", "swc-loader": "^0.2.6", "tslib": "^2.6.0", "webpack": "^5.95.0" } }, "sha512-zJIrIv+R/IN5TTLV9L+SvO3hwz62L6pO/L16k+b2nC3to3Gn01cnEGHL6doTGAezuPwTSmteJl+kzaoOf+znzg=="], + "@docusaurus/faster": ["@docusaurus/faster@3.9.2", "", { "dependencies": { "@docusaurus/types": "3.9.2", "@rspack/core": "^1.5.0", "@swc/core": "^1.7.39", "@swc/html": "^1.13.5", "browserslist": "^4.24.2", "lightningcss": "^1.27.0", "swc-loader": "^0.2.6", "tslib": "^2.6.0", "webpack": "^5.95.0" } }, "sha512-DEVIwhbrZZ4ir31X+qQNEQqDWkgCJUV6kiPPAd2MGTY8n5/n0c4B8qA5k1ipF2izwH00JEf0h6Daaut71zzkyw=="], - "@docusaurus/logger": ["@docusaurus/logger@3.9.1", "", { "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" } }, "sha512-C9iFzXwHzwvGlisE4bZx+XQE0JIqlGAYAd5LzpR7fEDgjctu7yL8bE5U4nTNywXKHURDzMt4RJK8V6+stFHVkA=="], + "@docusaurus/logger": ["@docusaurus/logger@3.9.2", "", { "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" } }, "sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA=="], - "@docusaurus/mdx-loader": ["@docusaurus/mdx-loader@3.9.1", "", { "dependencies": { "@docusaurus/logger": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", "estree-util-value-to-estree": "^3.0.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "image-size": "^2.0.2", "mdast-util-mdx": "^3.0.0", "mdast-util-to-string": "^4.0.0", "rehype-raw": "^7.0.0", "remark-directive": "^3.0.0", "remark-emoji": "^4.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", "stringify-object": "^3.3.0", "tslib": "^2.6.0", "unified": "^11.0.3", "unist-util-visit": "^5.0.0", "url-loader": "^4.1.1", "vfile": "^6.0.1", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-/1PY8lqry8jCt0qZddJSpc0U2sH6XC27kVJZfpA7o2TiQ3mdBQyH5AVbj/B2m682B1ounE+XjI0LdpOkAQLPoA=="], + "@docusaurus/mdx-loader": ["@docusaurus/mdx-loader@3.9.2", "", { "dependencies": { "@docusaurus/logger": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", "estree-util-value-to-estree": "^3.0.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "image-size": "^2.0.2", "mdast-util-mdx": "^3.0.0", "mdast-util-to-string": "^4.0.0", "rehype-raw": "^7.0.0", "remark-directive": "^3.0.0", "remark-emoji": "^4.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", "stringify-object": "^3.3.0", "tslib": "^2.6.0", "unified": "^11.0.3", "unist-util-visit": "^5.0.0", "url-loader": "^4.1.1", "vfile": "^6.0.1", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ=="], - "@docusaurus/module-type-aliases": ["@docusaurus/module-type-aliases@3.9.1", "", { "dependencies": { "@docusaurus/types": "3.9.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { "react": "*", "react-dom": "*" } }, "sha512-YBce3GbJGGcMbJTyHcnEOMvdXqg41pa5HsrMCGA5Rm4z0h0tHS6YtEldj0mlfQRhCG7Y0VD66t2tb87Aom+11g=="], + "@docusaurus/module-type-aliases": ["@docusaurus/module-type-aliases@3.9.2", "", { "dependencies": { "@docusaurus/types": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { "react": "*", "react-dom": "*" } }, "sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew=="], - "@docusaurus/plugin-client-redirects": ["@docusaurus/plugin-client-redirects@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-+1InCGvAnw46H+TnVqxaYlJC0qy9AY5gTMgTx2ZFryjAsImJNs3i1pEYW/iUTVbOdtWRj3E/87E4ehbBIaA1TA=="], + "@docusaurus/plugin-client-redirects": ["@docusaurus/plugin-client-redirects@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-lUgMArI9vyOYMzLRBUILcg9vcPTCyyI2aiuXq/4npcMVqOr6GfmwtmBYWSbNMlIUM0147smm4WhpXD0KFboffw=="], - "@docusaurus/plugin-content-blog": ["@docusaurus/plugin-content-blog@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/mdx-loader": "3.9.1", "@docusaurus/theme-common": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "schema-dts": "^1.1.2", "srcset": "^4.0.0", "tslib": "^2.6.0", "unist-util-visit": "^5.0.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-vT6kIimpJLWvW9iuWzH4u7VpTdsGlmn4yfyhq0/Kb1h4kf9uVouGsTmrD7WgtYBUG1P+TSmQzUUQa+ALBSRTig=="], + "@docusaurus/plugin-content-blog": ["@docusaurus/plugin-content-blog@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/mdx-loader": "3.9.2", "@docusaurus/theme-common": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "schema-dts": "^1.1.2", "srcset": "^4.0.0", "tslib": "^2.6.0", "unist-util-visit": "^5.0.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-3I2HXy3L1QcjLJLGAoTvoBnpOwa6DPUa3Q0dMK19UTY9mhPkKQg/DYhAGTiBUKcTR0f08iw7kLPqOhIgdV3eVQ=="], - "@docusaurus/plugin-content-docs": ["@docusaurus/plugin-content-docs@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/mdx-loader": "3.9.1", "@docusaurus/module-type-aliases": "3.9.1", "@docusaurus/theme-common": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "schema-dts": "^1.1.2", "tslib": "^2.6.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-DyLk9BIA6I9gPIuia8XIL+XIEbNnExam6AHzRsfrEq4zJr7k/DsWW7oi4aJMepDnL7jMRhpVcdsCxdjb0/A9xg=="], + "@docusaurus/plugin-content-docs": ["@docusaurus/plugin-content-docs@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/mdx-loader": "3.9.2", "@docusaurus/module-type-aliases": "3.9.2", "@docusaurus/theme-common": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "schema-dts": "^1.1.2", "tslib": "^2.6.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg=="], - "@docusaurus/plugin-content-pages": ["@docusaurus/plugin-content-pages@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/mdx-loader": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-/1wFzRnXYASI+Nv9ck9IVPIMw0O5BGQ8ZVhDzEwhkL+tl44ycvSnY6PIe6rW2HLxsw61Z3WFwAiU8+xMMtMZpg=="], + "@docusaurus/plugin-content-pages": ["@docusaurus/plugin-content-pages@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/mdx-loader": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-s4849w/p4noXUrGpPUF0BPqIAfdAe76BLaRGAGKZ1gTDNiGxGcpsLcwJ9OTi1/V8A+AzvsmI9pkjie2zjIQZKA=="], - "@docusaurus/plugin-css-cascade-layers": ["@docusaurus/plugin-css-cascade-layers@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "tslib": "^2.6.0" } }, "sha512-/QyW2gRCk/XE3ttCK/ERIgle8KJ024dBNKMu6U5SmpJvuT2il1n5jR/48Pp/9wEwut8WVml4imNm6X8JsL5A0Q=="], + "@docusaurus/plugin-css-cascade-layers": ["@docusaurus/plugin-css-cascade-layers@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" } }, "sha512-w1s3+Ss+eOQbscGM4cfIFBlVg/QKxyYgj26k5AnakuHkKxH6004ZtuLe5awMBotIYF2bbGDoDhpgQ4r/kcj4rQ=="], - "@docusaurus/plugin-debug": ["@docusaurus/plugin-debug@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "fs-extra": "^11.1.1", "react-json-view-lite": "^2.3.0", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-qPeAuk0LccC251d7jg2MRhNI+o7niyqa924oEM/AxnZJvIpMa596aAxkRImiAqNN6+gtLE1Hkrz/RHUH2HDGsA=="], + "@docusaurus/plugin-debug": ["@docusaurus/plugin-debug@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "fs-extra": "^11.1.1", "react-json-view-lite": "^2.3.0", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-j7a5hWuAFxyQAkilZwhsQ/b3T7FfHZ+0dub6j/GxKNFJp2h9qk/P1Bp7vrGASnvA9KNQBBL1ZXTe7jlh4VdPdA=="], - "@docusaurus/plugin-google-analytics": ["@docusaurus/plugin-google-analytics@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-k4Qq2HphqOrIU/CevGPdEO1yJnWUI8m0zOJsYt5NfMJwNsIn/gDD6gv/DKD+hxHndQT5pacsfBd4BWHZVNVroQ=="], + "@docusaurus/plugin-google-analytics": ["@docusaurus/plugin-google-analytics@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw=="], - "@docusaurus/plugin-google-gtag": ["@docusaurus/plugin-google-gtag@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-n9BURBiQyJKI/Ecz35IUjXYwXcgNCSq7/eA07+ZYcDiSyH2p/EjPf8q/QcZG3CyEJPZ/SzGkDHePfcVPahY4Gg=="], + "@docusaurus/plugin-google-gtag": ["@docusaurus/plugin-google-gtag@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-YJ4lDCphabBtw19ooSlc1MnxtYGpjFV9rEdzjLsUnBCeis2djUyCozZaFhCg6NGEwOn7HDDyMh0yzcdRpnuIvA=="], - "@docusaurus/plugin-google-tag-manager": ["@docusaurus/plugin-google-tag-manager@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-rZAQZ25ZuXaThBajxzLjXieTDUCMmBzfAA6ThElQ3o7Q+LEpOjCIrwGFau0KLY9HeG6x91+FwwsAM8zeApYDrg=="], + "@docusaurus/plugin-google-tag-manager": ["@docusaurus/plugin-google-tag-manager@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-LJtIrkZN/tuHD8NqDAW1Tnw0ekOwRTfobWPsdO15YxcicBo2ykKF0/D6n0vVBfd3srwr9Z6rzrIWYrMzBGrvNw=="], - "@docusaurus/plugin-sitemap": ["@docusaurus/plugin-sitemap@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-k/bf5cXDxAJUYTzqatgFJwmZsLUbIgl6S8AdZMKGG2Mv2wcOHt+EQNN9qPyWZ5/9cFj+Q8f8DN+KQheBMYLong=="], + "@docusaurus/plugin-sitemap": ["@docusaurus/plugin-sitemap@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw=="], - "@docusaurus/plugin-svgr": ["@docusaurus/plugin-svgr@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "@svgr/core": "8.1.0", "@svgr/webpack": "^8.1.0", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-TeZOXT2PSdTNR1OpDJMkYqFyX7MMhbd4t16hQByXksgZQCXNyw3Dio+KaDJ2Nj+LA4WkOvsk45bWgYG5MAaXSQ=="], + "@docusaurus/plugin-svgr": ["@docusaurus/plugin-svgr@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "@svgr/core": "8.1.0", "@svgr/webpack": "^8.1.0", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw=="], - "@docusaurus/plugin-vercel-analytics": ["@docusaurus/plugin-vercel-analytics@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "@vercel/analytics": "^1.1.1", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-KfJq5xZn4mtPfLooOgs7UzYQr3WAqIRPQLKgSf9gwiyvzllo5/XL4mF/ifg/7yymRAUiUAlFz3X5UmFdgnbgHA=="], + "@docusaurus/plugin-vercel-analytics": ["@docusaurus/plugin-vercel-analytics@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "@vercel/analytics": "^1.1.1", "tslib": "^2.6.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-4ZrTEuFkQBCzo5gplgwlmw/r0dXQR4ATruSwfkfzvXnm3WruhX2oNE3cuzy5yOJ80bFgTJTC4MiUYviQouUbGw=="], - "@docusaurus/preset-classic": ["@docusaurus/preset-classic@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/plugin-content-blog": "3.9.1", "@docusaurus/plugin-content-docs": "3.9.1", "@docusaurus/plugin-content-pages": "3.9.1", "@docusaurus/plugin-css-cascade-layers": "3.9.1", "@docusaurus/plugin-debug": "3.9.1", "@docusaurus/plugin-google-analytics": "3.9.1", "@docusaurus/plugin-google-gtag": "3.9.1", "@docusaurus/plugin-google-tag-manager": "3.9.1", "@docusaurus/plugin-sitemap": "3.9.1", "@docusaurus/plugin-svgr": "3.9.1", "@docusaurus/theme-classic": "3.9.1", "@docusaurus/theme-common": "3.9.1", "@docusaurus/theme-search-algolia": "3.9.1", "@docusaurus/types": "3.9.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-ZHga2xsxxsyd0dN1BpLj8S889Eu9eMBuj2suqxdw/vaaXu/FjJ8KEGbcaeo6nHPo8VQcBBnPEdkBtSDm2TfMNw=="], + "@docusaurus/preset-classic": ["@docusaurus/preset-classic@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/plugin-content-blog": "3.9.2", "@docusaurus/plugin-content-docs": "3.9.2", "@docusaurus/plugin-content-pages": "3.9.2", "@docusaurus/plugin-css-cascade-layers": "3.9.2", "@docusaurus/plugin-debug": "3.9.2", "@docusaurus/plugin-google-analytics": "3.9.2", "@docusaurus/plugin-google-gtag": "3.9.2", "@docusaurus/plugin-google-tag-manager": "3.9.2", "@docusaurus/plugin-sitemap": "3.9.2", "@docusaurus/plugin-svgr": "3.9.2", "@docusaurus/theme-classic": "3.9.2", "@docusaurus/theme-common": "3.9.2", "@docusaurus/theme-search-algolia": "3.9.2", "@docusaurus/types": "3.9.2" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-IgyYO2Gvaigi21LuDIe+nvmN/dfGXAiMcV/murFqcpjnZc7jxFAxW+9LEjdPt61uZLxG4ByW/oUmX/DDK9t/8w=="], - "@docusaurus/theme-classic": ["@docusaurus/theme-classic@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/mdx-loader": "3.9.1", "@docusaurus/module-type-aliases": "3.9.1", "@docusaurus/plugin-content-blog": "3.9.1", "@docusaurus/plugin-content-docs": "3.9.1", "@docusaurus/plugin-content-pages": "3.9.1", "@docusaurus/theme-common": "3.9.1", "@docusaurus/theme-translations": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", "postcss": "^8.5.4", "prism-react-renderer": "^2.3.0", "prismjs": "^1.29.0", "react-router-dom": "^5.3.4", "rtlcss": "^4.1.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-LrAIu/mQ04nG6s1cssC0TMmICD8twFIIn/hJ5Pd9uIPQvtKnyAKEn12RefopAul5KfMo9kixPaqogV5jIJr26w=="], + "@docusaurus/theme-classic": ["@docusaurus/theme-classic@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/mdx-loader": "3.9.2", "@docusaurus/module-type-aliases": "3.9.2", "@docusaurus/plugin-content-blog": "3.9.2", "@docusaurus/plugin-content-docs": "3.9.2", "@docusaurus/plugin-content-pages": "3.9.2", "@docusaurus/theme-common": "3.9.2", "@docusaurus/theme-translations": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", "postcss": "^8.5.4", "prism-react-renderer": "^2.3.0", "prismjs": "^1.29.0", "react-router-dom": "^5.3.4", "rtlcss": "^4.1.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-IGUsArG5hhekXd7RDb11v94ycpJpFdJPkLnt10fFQWOVxAtq5/D7hT6lzc2fhyQKaaCE62qVajOMKL7OiAFAIA=="], - "@docusaurus/theme-common": ["@docusaurus/theme-common@3.9.1", "", { "dependencies": { "@docusaurus/mdx-loader": "3.9.1", "@docusaurus/module-type-aliases": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "clsx": "^2.0.0", "parse-numeric-range": "^1.3.0", "prism-react-renderer": "^2.3.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-j9adi961F+6Ps9d0jcb5BokMcbjXAAJqKkV43eo8nh4YgmDj7KUNDX4EnOh/MjTQeO06oPY5cxp3yUXdW/8Ggw=="], + "@docusaurus/theme-common": ["@docusaurus/theme-common@3.9.2", "", { "dependencies": { "@docusaurus/mdx-loader": "3.9.2", "@docusaurus/module-type-aliases": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "clsx": "^2.0.0", "parse-numeric-range": "^1.3.0", "prism-react-renderer": "^2.3.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag=="], - "@docusaurus/theme-mermaid": ["@docusaurus/theme-mermaid@3.9.1", "", { "dependencies": { "@docusaurus/core": "3.9.1", "@docusaurus/module-type-aliases": "3.9.1", "@docusaurus/theme-common": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "mermaid": ">=11.6.0", "tslib": "^2.6.0" }, "peerDependencies": { "@mermaid-js/layout-elk": "^0.1.9", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@mermaid-js/layout-elk"] }, "sha512-aKMFlQfxueVBPdCdrNSshG12fOkJXSn1sb6EhI/sGn3UpiTEiazJm4QLP6NoF78mqq8O5Ar2Yll+iHWLvCsuZQ=="], + "@docusaurus/theme-mermaid": ["@docusaurus/theme-mermaid@3.9.2", "", { "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/module-type-aliases": "3.9.2", "@docusaurus/theme-common": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "mermaid": ">=11.6.0", "tslib": "^2.6.0" }, "peerDependencies": { "@mermaid-js/layout-elk": "^0.1.9", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@mermaid-js/layout-elk"] }, "sha512-5vhShRDq/ntLzdInsQkTdoKWSzw8d1jB17sNPYhA/KvYYFXfuVEGHLM6nrf8MFbV8TruAHDG21Fn3W4lO8GaDw=="], - "@docusaurus/theme-search-algolia": ["@docusaurus/theme-search-algolia@3.9.1", "", { "dependencies": { "@docsearch/react": "^3.9.0 || ^4.1.0", "@docusaurus/core": "3.9.1", "@docusaurus/logger": "3.9.1", "@docusaurus/plugin-content-docs": "3.9.1", "@docusaurus/theme-common": "3.9.1", "@docusaurus/theme-translations": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-validation": "3.9.1", "algoliasearch": "^5.37.0", "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-WjM28bzlgfT6nHlEJemkwyGVpvGsZWPireV/w+wZ1Uo64xCZ8lNOb4xwQRukDaLSed3oPBN0gSnu06l5VuCXHg=="], + "@docusaurus/theme-search-algolia": ["@docusaurus/theme-search-algolia@3.9.2", "", { "dependencies": { "@docsearch/react": "^3.9.0 || ^4.1.0", "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", "@docusaurus/plugin-content-docs": "3.9.2", "@docusaurus/theme-common": "3.9.2", "@docusaurus/theme-translations": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-validation": "3.9.2", "algoliasearch": "^5.37.0", "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw=="], - "@docusaurus/theme-translations": ["@docusaurus/theme-translations@3.9.1", "", { "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" } }, "sha512-mUQd49BSGKTiM6vP9+JFgRJL28lMIN3PUvXjF3rzuOHMByUZUBNwCt26Z23GkKiSIOrRkjKoaBNTipR/MHdYSQ=="], + "@docusaurus/theme-translations": ["@docusaurus/theme-translations@3.9.2", "", { "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" } }, "sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA=="], - "@docusaurus/tsconfig": ["@docusaurus/tsconfig@3.9.1", "", {}, "sha512-stdzM1dNDgRO0OvxeznXlE3N1igUoeHPNJjiKqyffLizgpVgNXJBAWeG6fuoYiCH4udGUBqy2dyM+1+kG2/UPQ=="], + "@docusaurus/tsconfig": ["@docusaurus/tsconfig@3.9.2", "", {}, "sha512-j6/Fp4Rlpxsc632cnRnl5HpOWeb6ZKssDj6/XzzAzVGXXfm9Eptx3rxCC+fDzySn9fHTS+CWJjPineCR1bB5WQ=="], - "@docusaurus/types": ["@docusaurus/types@3.9.1", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", "@types/mdast": "^4.0.2", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "^3.10.0", "webpack": "^5.95.0", "webpack-merge": "^5.9.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-ElekJ29sk39s5LTEZMByY1c2oH9FMtw7KbWFU3BtuQ1TytfIK39HhUivDEJvm5KCLyEnnfUZlvSNDXeyk0vzAA=="], + "@docusaurus/types": ["@docusaurus/types@3.9.2", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", "@types/mdast": "^4.0.2", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "^3.10.0", "webpack": "^5.95.0", "webpack-merge": "^5.9.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q=="], - "@docusaurus/utils": ["@docusaurus/utils@3.9.1", "", { "dependencies": { "@docusaurus/logger": "3.9.1", "@docusaurus/types": "3.9.1", "@docusaurus/utils-common": "3.9.1", "escape-string-regexp": "^4.0.0", "execa": "5.1.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", "globby": "^11.1.0", "gray-matter": "^4.0.3", "jiti": "^1.20.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", "p-queue": "^6.6.2", "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", "tslib": "^2.6.0", "url-loader": "^4.1.1", "utility-types": "^3.10.0", "webpack": "^5.88.1" } }, "sha512-YAL4yhhWLl9DXuf5MVig260a6INz4MehrBGFU/CZu8yXmRiYEuQvRFWh9ZsjfAOyaG7za1MNmBVZ4VVAi/CiJA=="], + "@docusaurus/utils": ["@docusaurus/utils@3.9.2", "", { "dependencies": { "@docusaurus/logger": "3.9.2", "@docusaurus/types": "3.9.2", "@docusaurus/utils-common": "3.9.2", "escape-string-regexp": "^4.0.0", "execa": "5.1.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", "globby": "^11.1.0", "gray-matter": "^4.0.3", "jiti": "^1.20.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", "p-queue": "^6.6.2", "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", "tslib": "^2.6.0", "url-loader": "^4.1.1", "utility-types": "^3.10.0", "webpack": "^5.88.1" } }, "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ=="], - "@docusaurus/utils-common": ["@docusaurus/utils-common@3.9.1", "", { "dependencies": { "@docusaurus/types": "3.9.1", "tslib": "^2.6.0" } }, "sha512-4M1u5Q8Zn2CYL2TJ864M51FV4YlxyGyfC3x+7CLuR6xsyTVNBNU4QMcPgsTHRS9J2+X6Lq7MyH6hiWXyi/sXUQ=="], + "@docusaurus/utils-common": ["@docusaurus/utils-common@3.9.2", "", { "dependencies": { "@docusaurus/types": "3.9.2", "tslib": "^2.6.0" } }, "sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw=="], - "@docusaurus/utils-validation": ["@docusaurus/utils-validation@3.9.1", "", { "dependencies": { "@docusaurus/logger": "3.9.1", "@docusaurus/utils": "3.9.1", "@docusaurus/utils-common": "3.9.1", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "tslib": "^2.6.0" } }, "sha512-5bzab5si3E1udrlZuVGR17857Lfwe8iFPoy5AvMP9PXqDfoyIKT7gDQgAmxdRDMurgHaJlyhXEHHdzDKkOxxZQ=="], + "@docusaurus/utils-validation": ["@docusaurus/utils-validation@3.9.2", "", { "dependencies": { "@docusaurus/logger": "3.9.2", "@docusaurus/utils": "3.9.2", "@docusaurus/utils-common": "3.9.2", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "tslib": "^2.6.0" } }, "sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A=="], "@edge-runtime/format": ["@edge-runtime/format@2.2.1", "", {}, "sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g=="], @@ -520,9 +520,9 @@ "@edge-runtime/vm": ["@edge-runtime/vm@3.2.0", "", { "dependencies": { "@edge-runtime/primitives": "4.1.0" } }, "sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw=="], - "@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], + "@emnapi/core": ["@emnapi/core@1.6.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg=="], - "@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], + "@emnapi/runtime": ["@emnapi/runtime@1.6.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA=="], "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], @@ -564,17 +564,17 @@ "@eslint/compat": ["@eslint/compat@1.4.0", "", { "dependencies": { "@eslint/core": "^0.16.0" }, "peerDependencies": { "eslint": "^8.40 || 9" }, "optionalPeers": ["eslint"] }, "sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg=="], - "@eslint/config-array": ["@eslint/config-array@0.21.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ=="], + "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="], - "@eslint/config-helpers": ["@eslint/config-helpers@0.4.0", "", { "dependencies": { "@eslint/core": "^0.16.0" } }, "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog=="], + "@eslint/config-helpers": ["@eslint/config-helpers@0.4.1", "", { "dependencies": { "@eslint/core": "^0.16.0" } }, "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw=="], "@eslint/core": ["@eslint/core@0.16.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q=="], "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], - "@eslint/js": ["@eslint/js@9.37.0", "", {}, "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg=="], + "@eslint/js": ["@eslint/js@9.38.0", "", {}, "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A=="], - "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], + "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.0", "", { "dependencies": { "@eslint/core": "^0.16.0", "levn": "^0.4.1" } }, "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A=="], @@ -778,7 +778,7 @@ "@rspack/lite-tapable": ["@rspack/lite-tapable@1.0.1", "", {}, "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w=="], - "@sablier/devkit": ["@sablier/devkit@github:sablier-labs/devkit#d7c5768", {}, "sablier-labs-devkit-d7c5768"], + "@sablier/devkit": ["@sablier/devkit@github:sablier-labs/devkit#5de9cc0", {}, "sablier-labs-devkit-5de9cc0"], "@sablier/docusaurus-plugin-llms": ["@sablier/docusaurus-plugin-llms@0.3.0", "", { "dependencies": { "gray-matter": "^4.0.3", "minimatch": "^9.0.3", "yaml": "^2.8.1" }, "peerDependencies": { "@docusaurus/core": "^3.0.0" } }, "sha512-5AwcuaQGEolcbpENM+QBXa581hhF4gzfoaM67AOp1Rvs9O8DsqC/As/8W0ABvdQdoXcoBAlpmrF/gBacuyhFzw=="], @@ -1022,7 +1022,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@24.8.1", "", { "dependencies": { "undici-types": "~7.14.0" } }, "sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q=="], + "@types/node": ["@types/node@24.9.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg=="], "@types/node-forge": ["@types/node-forge@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw=="], @@ -1234,7 +1234,7 @@ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.8.17", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-j5zJcx6golJYTG6c05LUZ3Z8Gi+M62zRT/ycz4Xq4iCOdpcxwg7ngEYD4KA0eWZC7U17qh/Smq8bYbACJ0ipBA=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.8.19", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ=="], "batch": ["batch@0.6.1", "", {}, "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="], @@ -1608,7 +1608,7 @@ "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], - "electron-to-chromium": ["electron-to-chromium@1.5.237", "", {}, "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg=="], + "electron-to-chromium": ["electron-to-chromium@1.5.238", "", {}, "sha512-khBdc+w/Gv+cS8e/Pbnaw/FXcBUeKrRVik9IxfXtgREOWyJhR4tj43n3amkVogJ/yeQUqzkrZcFhtIxIdqmmcQ=="], "elkjs": ["elkjs@0.9.3", "", {}, "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ=="], @@ -1638,7 +1638,7 @@ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-module-lexer": ["es-module-lexer@1.4.1", "", {}, "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="], + "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], @@ -1698,7 +1698,7 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.37.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.4.0", "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.37.0", "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig=="], + "eslint": ["eslint@9.38.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.1", "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.38.0", "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw=="], "eslint-mdx": ["eslint-mdx@3.6.2", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "espree": "^9.6.1 || ^10.4.0", "estree-util-visit": "^2.0.0", "remark-mdx": "^3.1.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "synckit": "^0.11.8", "unified": "^11.0.5", "unified-engine": "^11.2.2", "unist-util-visit": "^5.0.0", "uvu": "^0.5.6", "vfile": "^6.0.3" }, "peerDependencies": { "eslint": ">=8.0.0", "remark-lint-file-extension": "*" }, "optionalPeers": ["remark-lint-file-extension"] }, "sha512-5hczn5iSSEcwtNtVXFwCKIk6iLEDaZpwc3vjYDl/B779OzaAAK/ou16J2xVdO6ecOLEO1WZqp7MRCQ/WsKDUig=="], @@ -1728,7 +1728,7 @@ "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], - "estree-util-value-to-estree": ["estree-util-value-to-estree@3.4.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ=="], + "estree-util-value-to-estree": ["estree-util-value-to-estree@3.4.1", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-E4fEc8KLhDXnbyDa5XrbdT9PbgSMt0AGZPFUsGFok8N2Q7DTO+F6xAFJjIdw71EkidRg186I1mQCKzZ1ZbEsCw=="], "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], @@ -2160,9 +2160,9 @@ "lines-and-columns": ["lines-and-columns@2.0.4", "", {}, "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A=="], - "lint-staged": ["lint-staged@16.2.4", "", { "dependencies": { "commander": "^14.0.1", "listr2": "^9.0.4", "micromatch": "^4.0.8", "nano-spawn": "^2.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-Pkyr/wd90oAyXk98i/2KwfkIhoYQUMtss769FIT9hFM5ogYZwrk+GRE46yKXSg2ZGhcJ1p38Gf5gmI5Ohjg2yg=="], + "lint-staged": ["lint-staged@16.2.5", "", { "dependencies": { "commander": "^14.0.1", "listr2": "^9.0.4", "micromatch": "^4.0.8", "nano-spawn": "^2.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-o36wH3OX0jRWqDw5dOa8a8x6GXTKaLM+LvhRaucZxez0IxA+KNDUCiyjBfNgsMNmchwSX6urLSL7wShcUqAang=="], - "listr2": ["listr2@9.0.4", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ=="], + "listr2": ["listr2@9.0.5", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g=="], "load-plugin": ["load-plugin@6.0.3", "", { "dependencies": { "@npmcli/config": "^8.0.0", "import-meta-resolve": "^4.0.0" } }, "sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w=="], @@ -2410,7 +2410,7 @@ "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], - "node-releases": ["node-releases@2.0.25", "", {}, "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA=="], + "node-releases": ["node-releases@2.0.26", "", {}, "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA=="], "nopt": ["nopt@8.1.0", "", { "dependencies": { "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A=="], @@ -2486,7 +2486,7 @@ "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], - "package-manager-detector": ["package-manager-detector@1.4.1", "", {}, "sha512-dSMiVLBEA4XaNJ0PRb4N5cV/SEP4BWrWZKBmfF+OUm2pQTiZ6DDkKeWaltwu3JRhLoy59ayIkJ00cx9K9CaYTg=="], + "package-manager-detector": ["package-manager-detector@1.5.0", "", {}, "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw=="], "param-case": ["param-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A=="], @@ -2826,7 +2826,7 @@ "requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="], - "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], "resolve-alpn": ["resolve-alpn@1.2.1", "", {}, "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="], @@ -2856,7 +2856,7 @@ "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], - "sablier": ["sablier@1.1.0", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-ye/kRIwqhew/O4wVASvRX/V3c07AwPHjYvUdjAHMS8PIidprXPFoKR6T0nsPWgunBNH8rbVkhi9bDrmAvaJ2Jg=="], + "sablier": ["sablier@1.2.0-beta.4", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-RveeGQJBqhVOiMLWObpuG5UVgZGnOKkYmy0MgABh7IsrEVopshiCiT1vxzKCVYzvgiPGSHqmaVLW+TQkAhlTQw=="], "sade": ["sade@1.8.1", "", { "dependencies": { "mri": "^1.1.0" } }, "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="], @@ -3088,7 +3088,7 @@ "undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - "undici-types": ["undici-types@7.14.0", "", {}, "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA=="], + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], "unicode-canonical-property-names-ecmascript": ["unicode-canonical-property-names-ecmascript@2.0.1", "", {}, "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg=="], @@ -3354,6 +3354,8 @@ "@sablier/docusaurus-plugin-llms/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + "@sablier/indexers/sablier": ["sablier@1.4.0", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-E7eaniXEKPJuK6io1GHPOulb+RuMK9R11246KSMnVulo6HPV81hh6UQ9RjxpFP1+5XTWkboMugnTtlwnJWdK6w=="], + "@slorber/remark-comment/micromark-factory-space": ["micromark-factory-space@1.1.0", "", { "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ=="], "@slorber/remark-comment/micromark-util-character": ["micromark-util-character@1.2.0", "", { "dependencies": { "micromark-util-symbol": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg=="], @@ -3382,6 +3384,8 @@ "@vercel/node/async-listen": ["async-listen@3.0.0", "", {}, "sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg=="], + "@vercel/node/es-module-lexer": ["es-module-lexer@1.4.1", "", {}, "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="], + "@vercel/node/node-fetch": ["node-fetch@2.6.9", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg=="], "@vercel/node/typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="], @@ -3642,7 +3646,7 @@ "undici/@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="], - "unified-engine/@types/node": ["@types/node@22.18.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-Gd33J2XIrXurb+eT2ktze3rJAfAp9ZNjlBdh4SVgyrKEOADwCbdUDaK7QgJno8Ue4kcajscsKqu6n8OBG3hhCQ=="], + "unified-engine/@types/node": ["@types/node@22.18.12", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog=="], "unified-engine/ignore": ["ignore@6.0.2", "", {}, "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A=="], diff --git a/package.json b/package.json index 0ae16bc0..2da8c191 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "rehype-external-links": "^3.0.0", "rehype-katex": "7.0.1", "remark-math": "6.0.0", - "sablier": "1.1.0", + "sablier": "1.2.0-beta.4", "viem": "^2.37.9" }, "devDependencies": { diff --git a/repos/airdrops b/repos/airdrops index f9a358c0..077c6b97 160000 --- a/repos/airdrops +++ b/repos/airdrops @@ -1 +1 @@ -Subproject commit f9a358c0a5bccfec77601d4490ef9117e0488068 +Subproject commit 077c6b9766ef7693ba9e82a9e001dc0097709c01 diff --git a/repos/flow b/repos/flow index a0fa33d2..a4143de4 160000 --- a/repos/flow +++ b/repos/flow @@ -1 +1 @@ -Subproject commit a0fa33d2843af0817e34970cdc05822ead31daaa +Subproject commit a4143de45478f508bca8305fec2bd81b7ad25fe9 diff --git a/repos/lockup b/repos/lockup index 463278db..58eaac45 160000 --- a/repos/lockup +++ b/repos/lockup @@ -1 +1 @@ -Subproject commit 463278dbb461b1733d6424cf0aeee3b8d6bc036a +Subproject commit 58eaac45c20c57a93b73d887c714e68f061ec3e6 From c9bbe6d427d49a96b7a582d1c9d0d7378eeaf1c0 Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Wed, 8 Oct 2025 16:51:20 +0300 Subject: [PATCH 02/10] add latest contract deployments --- docs/guides/04-custom-deployments.mdx | 48 +++++++++++-------- docs/guides/airdrops/02-deployments.mdx | 20 ++++++-- .../previous-deployments/_category_.json | 6 +++ .../airdrops/previous-deployments/v1.3.mdx | 30 ++++++++++++ docs/guides/flow/02-deployments.mdx | 6 +-- .../guides/flow/previous-deployments/v1.1.mdx | 26 ++++++++++ docs/guides/lockup/02-deployments.mdx | 6 +-- .../lockup/previous-deployments/v1.0.mdx | 2 +- .../lockup/previous-deployments/v1.1.mdx | 2 +- .../lockup/previous-deployments/v1.2.mdx | 2 +- .../lockup/previous-deployments/v2.0.mdx | 26 ++++++++++ src/snippets/_release-history-airdrops.mdx | 7 +-- src/snippets/_release-history-flow.mdx | 3 +- src/snippets/_release-history-lockup.mdx | 3 +- 14 files changed, 151 insertions(+), 36 deletions(-) create mode 100644 docs/guides/airdrops/previous-deployments/_category_.json create mode 100644 docs/guides/airdrops/previous-deployments/v1.3.mdx create mode 100644 docs/guides/flow/previous-deployments/v1.1.mdx create mode 100644 docs/guides/lockup/previous-deployments/v2.0.mdx diff --git a/docs/guides/04-custom-deployments.mdx b/docs/guides/04-custom-deployments.mdx index 80040843..9e9ae8df 100644 --- a/docs/guides/04-custom-deployments.mdx +++ b/docs/guides/04-custom-deployments.mdx @@ -23,7 +23,8 @@ can schedule a call here to discuss integra - [x] Blockchain explorer with instructions for verifying contracts, e.g., [Etherscan](https://etherscan.io) - [x] Functional JSON-RPC endpoint, ideally listed on [ChainList](https://chainlist.org) - [x] Bridge, and instructions for how to obtain gas tokens (e.g., ETH) and ERC-20 tokens to the target chain -- [x] Support for [Shanghai](https://docs.soliditylang.org/en/latest/using-the-compiler.html#target-options) EVM version or later +- [x] Support for [Shanghai](https://docs.soliditylang.org/en/latest/using-the-compiler.html#target-options) EVM version + or later - [x] Support for Solidity v0.8.22 or later ### Contracts @@ -45,8 +46,11 @@ section is not relevant to you. ### Prerequisites -- Check if the deployments are not already made: [Airdrops](/guides/airdrops/deployments), [Flow](/guides/flow/deployments), [Lockup](/guides/lockup/deployments) -- Follow the contributing guides for Airdrops, Flow and Lockup. +- Check if the deployments are not already made: [Airdrops](/guides/airdrops/deployments), + [Flow](/guides/flow/deployments), [Lockup](/guides/lockup/deployments) +- Follow the contributing guides for Airdrops, + Flow and Lockup. - RPC endpoint, e.g., a paid [Infura](https://www.infura.io/) or [Alchemy](https://www.alchemy.com/) account - Have enough gas tokens (e.g., ETH) in your deployer account - Have an Etherscan API key (for source code verification) @@ -98,13 +102,18 @@ forge script scripts/solidity/DeployDeterministicComptrollerProxy.s.sol:DeployDe -vvv ``` -The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, -modify the verifier arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You should -also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. +The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier +arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You +should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. #### Step 4: Update the EVM Utils repository -Add the chain ID of your newly deployed chain to the `ChainId` library in the [EVM Utils repo](https://github.com/sablier-labs/evm-utils/blob/d7d6c051a39cbacadef672e92ed9d57628c80dc4/src/tests/ChainId.sol). Then, bump the EVM Utils version in each protocol repository's `package.json` file (e.g., [Lockup](https://github.com/sablier-labs/lockup/blob/58eaac45c20c57a93b73d887c714e68f061ec3e6/package.json#L16), [Flow](https://github.com/sablier-labs/flow/blob/a4143de45478f508bca8305fec2bd81b7ad25fe9/package.json#L16), [Airdrops](https://github.com/sablier-labs/airdrops/blob/077c6b9766ef7693ba9e82a9e001dc0097709c01/package.json#L16)). +Add the chain ID of your newly deployed chain to the `ChainId` library in the +[EVM Utils repo](https://github.com/sablier-labs/evm-utils/blob/d7d6c051a39cbacadef672e92ed9d57628c80dc4/src/tests/ChainId.sol). +Then, bump the EVM Utils version in each protocol repository's `package.json` file (e.g., +[Lockup](https://github.com/sablier-labs/lockup/blob/58eaac45c20c57a93b73d887c714e68f061ec3e6/package.json#L16), +[Flow](https://github.com/sablier-labs/flow/blob/a4143de45478f508bca8305fec2bd81b7ad25fe9/package.json#L16), +[Airdrops](https://github.com/sablier-labs/airdrops/blob/077c6b9766ef7693ba9e82a9e001dc0097709c01/package.json#L16)). ### Lockup Deployment @@ -153,9 +162,9 @@ forge script scripts/solidity/DeployDeterministicProtocol.s.sol:DeployDeterminis -vvv ``` -The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, -modify the verifier arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You should -also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. +The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier +arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You +should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. ### Merkle Airdrops Deployment @@ -204,9 +213,9 @@ forge script scripts/solidity/DeployDeterministicFactories.s.sol:DeployDetermini -vvv ``` -The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, -modify the verifier arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You should -also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. +The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier +arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You +should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. ### Flow Deployment @@ -255,16 +264,17 @@ forge script scripts/solidity/DeployDeterministicProtocol.s.sol:DeployDeterminis -vvv ``` -The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, -modify the verifier arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You should -also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. +The above command works for etherscan equivalent explorers. If the chain uses a custom explorer, modify the verifier +arguments according to [forge script documentation](https://getfoundry.sh/forge/reference/script/#forge-script). You +should also refer to the forge script documentation for different wallet options such as mnemonic or hardware device. ### List your deployments -After the contracts are deployed, you can submit a PR in the SDK -repo by including the following details: +After the contracts are deployed, you can submit a PR in the SDK repo by including +the following details: -- Add the broadcast files (JSON) to deployments directory. +- Add the broadcast files (JSON) to deployments + directory. - Add the deployment addresses to the following files: - Comptroller Deployments - Airdrops Deployments diff --git a/docs/guides/airdrops/02-deployments.mdx b/docs/guides/airdrops/02-deployments.mdx index 8c9c4f6c..664bdb85 100644 --- a/docs/guides/airdrops/02-deployments.mdx +++ b/docs/guides/airdrops/02-deployments.mdx @@ -4,11 +4,12 @@ sidebar_position: 2 title: "Deployment Addresses" --- -import DeploymentsV1_3 from "../../../src/autogen/airdrops/_table-deployments-v1.3.mdx"; +import DeploymentsV2_0 from "../../../src/autogen/airdrops/_table-deployments-v2.0.mdx"; +import ReleaseHistoryAirdrops from "../../../src/snippets/_release-history-airdrops.mdx"; # Merkle Airdrops Deployments -This section contains the deployment addresses for the v1.3 release of +This section contains the deployment addresses for the v2.0 release of [@sablier/airdrops](https://npmjs.com/package/@sablier/airdrops). A few noteworthy details about the deployments: @@ -19,8 +20,21 @@ A few noteworthy details about the deployments: ## Versions +Any updates or additional features will require a new deployment of the protocol, due to its immutable nature. + +Came here looking for the previous deployments? Click below to see other versions. + + + This repository is the successor of [Lockup Periphery](https://github.com/sablier-labs/v2-periphery), which has been discontinued. For previous deployments, please refer to the [Lockup deployments](/guides/lockup/previous-deployments/v1.2) page. - +:::info + +Stay up to date with any new releases by [subscribing](https://x.com/Sablier/status/1821220784661995627) to the official +Sablier repositories on Github. + +::: + + diff --git a/docs/guides/airdrops/previous-deployments/_category_.json b/docs/guides/airdrops/previous-deployments/_category_.json new file mode 100644 index 00000000..7d407683 --- /dev/null +++ b/docs/guides/airdrops/previous-deployments/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Previous Deployments", + "position": 3, + "collapsible": true, + "collapsed": false +} diff --git a/docs/guides/airdrops/previous-deployments/v1.3.mdx b/docs/guides/airdrops/previous-deployments/v1.3.mdx new file mode 100644 index 00000000..ca20c1c0 --- /dev/null +++ b/docs/guides/airdrops/previous-deployments/v1.3.mdx @@ -0,0 +1,30 @@ +--- +id: "v1.3" +sidebar_position: 1 +title: "v1.3" +--- + +import DeploymentsV1_3 from "../../../../src/autogen/airdrops/_table-deployments-v1.3.mdx"; + +# Merkle Airdrops v1.3 + +This section contains the deployment addresses for the v1.3 release of +[@sablier/airdrops](https://npmjs.com/package/@sablier/airdrops). + +A few noteworthy details about the deployments: + +- The addresses are final +- All contracts are non-upgradeable +- The source code is verified on Etherscan across all chains + +:::info + +This is an outdated version of the Merkle Airdrops protocol. See the latest version [here](/guides/airdrops/deployments). + +::: + +This repository is the successor of [Lockup Periphery](https://github.com/sablier-labs/v2-periphery), which has been +discontinued. For previous deployments, please refer to the +[Lockup deployments](/guides/lockup/previous-deployments/v1.2) page. + + diff --git a/docs/guides/flow/02-deployments.mdx b/docs/guides/flow/02-deployments.mdx index 94e73608..ec5371fb 100644 --- a/docs/guides/flow/02-deployments.mdx +++ b/docs/guides/flow/02-deployments.mdx @@ -4,12 +4,12 @@ sidebar_position: 2 title: "Deployment Addresses" --- -import DeploymentsV1_1 from "../../../src/autogen/flow/_table-deployments-v1.1.mdx"; +import DeploymentsV2_0 from "../../../src/autogen/flow/_table-deployments-v2.0.mdx"; import ReleaseHistoryFlow from "../../../src/snippets/_release-history-flow.mdx"; # Flow Deployments -This section contains the deployment addresses for the v1.1 release of +This section contains the deployment addresses for the v2.0 release of [@sablier/flow](https://npmjs.com/package/@sablier/flow). A few noteworthy details about the deployments: @@ -33,4 +33,4 @@ Sablier repositories on Github. ::: - + diff --git a/docs/guides/flow/previous-deployments/v1.1.mdx b/docs/guides/flow/previous-deployments/v1.1.mdx new file mode 100644 index 00000000..de944ecd --- /dev/null +++ b/docs/guides/flow/previous-deployments/v1.1.mdx @@ -0,0 +1,26 @@ +--- +id: "v1.1" +sidebar_position: 2 +title: "v1.1" +--- + +import DeploymentsV1_1 from "../../../../src/autogen/flow/_table-deployments-v1.1.mdx"; + +# Flow v1.1 + +This section contains the deployment addresses for the v1.1 release of +[@sablier/flow](https://npmjs.com/package/@sablier/flow). + +A few noteworthy details about the deployments: + +- The addresses are final +- All contracts are non-upgradeable +- The source code is verified on Etherscan across all chains + +:::info + +This is an outdated version of the Flow protocol. See the latest version [here](/guides/flow/deployments). + +::: + + diff --git a/docs/guides/lockup/02-deployments.mdx b/docs/guides/lockup/02-deployments.mdx index e36c2b3c..a79b2e73 100644 --- a/docs/guides/lockup/02-deployments.mdx +++ b/docs/guides/lockup/02-deployments.mdx @@ -4,12 +4,12 @@ sidebar_position: 2 title: "Deployment Addresses" --- -import DeploymentsV2_0 from "../../../src/autogen/lockup/_table-deployments-v2.0.mdx"; +import DeploymentsV3_0 from "../../../src/autogen/lockup/_table-deployments-v3.0.mdx"; import ReleaseHistoryLockup from "../../../src/snippets/_release-history-lockup.mdx"; # Lockup Deployments -This section contains the deployment addresses for the v2.0 release of +This section contains the deployment addresses for the v3.0 release of [@sablier/lockup](https://npmjs.com/package/@sablier/lockup). A few noteworthy details about the deployments: @@ -41,4 +41,4 @@ Sablier repositories on Github. ::: - + diff --git a/docs/guides/lockup/previous-deployments/v1.0.mdx b/docs/guides/lockup/previous-deployments/v1.0.mdx index 2c0cc6d9..573b871c 100644 --- a/docs/guides/lockup/previous-deployments/v1.0.mdx +++ b/docs/guides/lockup/previous-deployments/v1.0.mdx @@ -1,6 +1,6 @@ --- id: "v1.0" -sidebar_position: 3 +sidebar_position: 4 title: "v1.0" --- diff --git a/docs/guides/lockup/previous-deployments/v1.1.mdx b/docs/guides/lockup/previous-deployments/v1.1.mdx index b12ecb90..f08a956a 100644 --- a/docs/guides/lockup/previous-deployments/v1.1.mdx +++ b/docs/guides/lockup/previous-deployments/v1.1.mdx @@ -1,6 +1,6 @@ --- id: "v1.1" -sidebar_position: 2 +sidebar_position: 3 title: "v1.1" --- diff --git a/docs/guides/lockup/previous-deployments/v1.2.mdx b/docs/guides/lockup/previous-deployments/v1.2.mdx index 11cddc57..4ea06146 100644 --- a/docs/guides/lockup/previous-deployments/v1.2.mdx +++ b/docs/guides/lockup/previous-deployments/v1.2.mdx @@ -1,6 +1,6 @@ --- id: "v1.2" -sidebar_position: 1 +sidebar_position: 2 title: "v1.2" --- diff --git a/docs/guides/lockup/previous-deployments/v2.0.mdx b/docs/guides/lockup/previous-deployments/v2.0.mdx new file mode 100644 index 00000000..14f46996 --- /dev/null +++ b/docs/guides/lockup/previous-deployments/v2.0.mdx @@ -0,0 +1,26 @@ +--- +id: "v2.0" +sidebar_position: 1 +title: "v2.0" +--- + +import DeploymentsV2_0 from "../../../../src/autogen/lockup/_table-deployments-v2.0.mdx"; + +# Lockup v2.0 + +This section contains the deployment addresses for the v2.0 release of +[@sablier/lockup](https://npmjs.com/package/@sablier/lockup). + +A few noteworthy details about the deployments: + +- The addresses are final +- All contracts are non-upgradeable +- The source code is verified on Etherscan across all chains + +:::info + +This is an outdated version of the Lockup protocol. See the latest version [here](/guides/lockup/deployments). + +::: + + diff --git a/src/snippets/_release-history-airdrops.mdx b/src/snippets/_release-history-airdrops.mdx index cb3fd8de..cd20ce5e 100644 --- a/src/snippets/_release-history-airdrops.mdx +++ b/src/snippets/_release-history-airdrops.mdx @@ -1,3 +1,4 @@ -| Version | Release Date | -| --------------------------------- | ------------- | -| [v1.3](/guides/airdrops/overview) | February 2025 | +| Version | Release Date | +| -------------------------------------------------- | ------------- | +| [v2.0](/guides/airdrops/overview) | October 2025 | +| [v1.3](/guides/airdrops/previous-deployments/v1.3) | February 2025 | diff --git a/src/snippets/_release-history-flow.mdx b/src/snippets/_release-history-flow.mdx index acec4de7..4df17101 100644 --- a/src/snippets/_release-history-flow.mdx +++ b/src/snippets/_release-history-flow.mdx @@ -1,4 +1,5 @@ | Version | Release Date | UI Aliases | | ---------------------------------------------- | ------------- | ---------- | -| [v1.1](/guides/flow/overview) (latest) | February 2025 | FL2 | +| [v2.0](/guides/flow/overview) (latest) | October 2025 | FL3 | +| [v1.1](/guides/flow/previous-deployments/v1.1) | February 2025 | FL2 | | [v1.0](/guides/flow/previous-deployments/v1.0) | December 2024 | FL | diff --git a/src/snippets/_release-history-lockup.mdx b/src/snippets/_release-history-lockup.mdx index 30d2759b..3681b55f 100644 --- a/src/snippets/_release-history-lockup.mdx +++ b/src/snippets/_release-history-lockup.mdx @@ -1,6 +1,7 @@ | Version | Release Date | UI Aliases | | ------------------------------------------------ | ------------- | ---------------------------------------------------------------------- | -| [v2.0](/guides/lockup/deployments) (latest) | February 2025 | `LK` (Lockup): all models have been merged into a single contract | +| [v3.0](/guides/lockup/deployments) (latest) | October 2025 | `LK` (Lockup): all models have been merged into a single contract | +| [v2.0](/guides/lockup/previous-deployments/v2.0) | February 2025 | `LK` (Lockup): all models have been merged into a single contract | | [v1.2](/guides/lockup/previous-deployments/v1.2) | July 2024 | `LD3` (Lockup Dynamic), `LL3` (Lockup Linear), `LT3` (Lockup Tranched) | | [v1.1](/guides/lockup/previous-deployments/v1.1) | December 2023 | `LD2` (Lockup Dynamic), `LL2` (Lockup Linear) | | [v1.0](/guides/lockup/previous-deployments/v1.0) | July 2023 | `LD` (Lockup Dynamic), `LL` (Lockup Linear) | From 4e9cbd2d9722cdc2589bd02a369acb3322a7e1cc Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Wed, 15 Oct 2025 19:25:10 +0300 Subject: [PATCH 03/10] bump sdk --- bun.lock | 10 +++------- package.json | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/bun.lock b/bun.lock index ef61bb93..f96e33b9 100644 --- a/bun.lock +++ b/bun.lock @@ -32,7 +32,7 @@ "rehype-external-links": "^3.0.0", "rehype-katex": "7.0.1", "remark-math": "6.0.0", - "sablier": "1.2.0-beta.4", + "sablier": "1.2.0", "viem": "^2.37.9", }, "devDependencies": { @@ -2856,7 +2856,7 @@ "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], - "sablier": ["sablier@1.2.0-beta.4", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-RveeGQJBqhVOiMLWObpuG5UVgZGnOKkYmy0MgABh7IsrEVopshiCiT1vxzKCVYzvgiPGSHqmaVLW+TQkAhlTQw=="], + "sablier": ["sablier@1.2.0", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-Py3nLGlL/noqeM12yxPj9UE8m+b4j8xpeidwLBiDFAd2AVBS/tadB3CsE7/Bix2/0WBqcjBrZQNE24GJWhFaPQ=="], "sade": ["sade@1.8.1", "", { "dependencies": { "mri": "^1.1.0" } }, "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="], @@ -3354,8 +3354,6 @@ "@sablier/docusaurus-plugin-llms/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "@sablier/indexers/sablier": ["sablier@1.4.0", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-E7eaniXEKPJuK6io1GHPOulb+RuMK9R11246KSMnVulo6HPV81hh6UQ9RjxpFP1+5XTWkboMugnTtlwnJWdK6w=="], - "@slorber/remark-comment/micromark-factory-space": ["micromark-factory-space@1.1.0", "", { "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ=="], "@slorber/remark-comment/micromark-util-character": ["micromark-util-character@1.2.0", "", { "dependencies": { "micromark-util-symbol": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg=="], @@ -3430,8 +3428,6 @@ "cli-truncate/string-width": ["string-width@8.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.0", "strip-ansi": "^7.1.0" } }, "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg=="], - "compressible/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], - "compression/bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], @@ -3488,7 +3484,7 @@ "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "foreground-child/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "foreground-child/signal-exit": ["signal-exit@4.0.2", "", {}, "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q=="], "fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], diff --git a/package.json b/package.json index 2da8c191..45f3bb9a 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "rehype-external-links": "^3.0.0", "rehype-katex": "7.0.1", "remark-math": "6.0.0", - "sablier": "1.2.0-beta.4", + "sablier": "1.2.0", "viem": "^2.37.9" }, "devDependencies": { From e701d30fbad807797464186382a6726e47d5395a Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Thu, 16 Oct 2025 18:46:02 +0300 Subject: [PATCH 04/10] feat: comptrollers table refactor: hardcode values instead of making rpc calls refactor: update governance page --- docs/concepts/11-governance.mdx | 55 ++++--- src/components/organisms/AdminsTable.tsx | 137 ++++++------------ .../organisms/ComptrollersTable.tsx | 51 +++++++ 3 files changed, 129 insertions(+), 114 deletions(-) create mode 100644 src/components/organisms/ComptrollersTable.tsx diff --git a/docs/concepts/11-governance.mdx b/docs/concepts/11-governance.mdx index d0512738..984421b6 100644 --- a/docs/concepts/11-governance.mdx +++ b/docs/concepts/11-governance.mdx @@ -5,45 +5,52 @@ title: "Governance" --- import AdminsTable from "@site/src/components/organisms/AdminsTable"; +import ComptrollersTable from "@site/src/components/organisms/ComptrollersTable"; -The Protocol Admin is an account with exclusive access to specific functions. More concretely, the Admin is a collection -of multisig wallets and EOAs currently in control of Sablier Labs. +## Comptroller -## Admins +The Sablier Protocol uses a Comptroller smart contract architecture for governance. The Comptroller acts as an +intermediary that has exclusive access to specific protocol functions. This design provides a more flexible and +centralized accross all protocols access control model while maintaining security. -Here's a table with the admins of the Sablier Protocol. Most of them are Safe multi-signature wallets. - - + ## Lockup -Admin has the following permissions on each chain where `Lockup` is deployed: +Comptroller has the following permissions on each chain where `Lockup` is deployed: -| Permission | Function | -| ------------------ | ------------------------------------------------------------------------------------------------------- | -| Allow to Hook | [allowToHook](../reference/lockup/contracts/abstracts/abstract.SablierLockupBase#allowtohook) | -| Set NFT Descriptor | [setNFTDescriptor](../reference/lockup/contracts/abstracts/abstract.SablierLockupBase#setnftdescriptor) | +| Permission | Function | +| ------------------ | -------------------------------------------------------------------------------- | +| Allow to Hook | [allowToHook](../reference/lockup/contracts/SablierLockup#allowtohook) | +| Recover | [recover](../reference/lockup/contracts/SablierLockup#recover) | +| Set Native Token | [setNativeToken](../reference/lockup/contracts/SablierLockup#setnativetoken) | +| Set NFT Descriptor | [setNFTDescriptor](../reference/lockup/contracts/SablierLockup#setnftdescriptor) | ## MerkleFactory -Admin has the following permissions on each chain where `MerkleFactory` is deployed: +Comptroller has the following permission on each chain where the factories are deployed: -| Permission | Function | -| ---------------- | ---------------------------------------------------------------------------------------------- | -| Reset Custom Fee | [resetCustomFee](../reference/airdrops/contracts/contract.SablierMerkleFactory#resetcustomfee) | -| Set Custom Fee | [setCustomFee](../reference/airdrops/contracts/contract.SablierMerkleFactory#setcustomfee) | -| Set Default Fee | [setDefaultFee](../reference/airdrops/contracts/contract.SablierMerkleFactory#setdefaultfee) | +| Permission | Function | +| ---------------- | ------------------------------------------------------------------------------------------------------------ | +| Set Native Token | [setNativeToken](../reference/airdrops/contracts/abstracts/abstract.SablierFactoryMerkleBase#setNativeToken) | ## Flow -Admin has the following permissions on each chain where `Flow` is deployed: +Comptroller has the following permissions on each chain where `Flow` is deployed: + +| Permission | Function | +| ------------------ | ---------------------------------------------------------------------------- | +| Recover | [recover](../reference/flow/contracts/SablierFlow#recover) | +| Set Native Token | [setNativeToken](../reference/flow/contracts/SablierFlow#setnativetoken) | +| Set NFT Descriptor | [setNFTDescriptor](../reference/flow/contracts/SablierFlow#setnftdescriptor) | -| Permission | Function | -| ------------------------ | --------------------------------------------------------------------------------------------------------------- | -| Collect Protocol Revenue | [collectProtocolRevenue](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#collectprotocolrevenue) | -| Recover ERC20 token | [recover](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#recover) | -| Set NFT Descriptor | [setNFTDescriptor](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#setnftdescriptor) | -| Set Protocol Fee | [setProtocolFee](../reference/flow/contracts/abstracts/abstract.SablierFlowBase#setprotocolfee) | +## Admin Addresses + +Before the introduction of the Comptroller architecture, we used a direct "Admin" role for +governance. These admin accounts had the same authority as the current Comptroller contract, with direct access to +specific protocol functions. More concretely, the Admin is a collection of multisig wallets and EOAs currently in control of Sablier Labs. + + ## Trustlessness diff --git a/src/components/organisms/AdminsTable.tsx b/src/components/organisms/AdminsTable.tsx index 884dea42..05eeebf0 100644 --- a/src/components/organisms/AdminsTable.tsx +++ b/src/components/organisms/AdminsTable.tsx @@ -1,108 +1,65 @@ import _ from "lodash"; -import { useEffect, useMemo, useState } from "react"; +import { useMemo } from "react"; import { sablier } from "sablier"; -import type { Chain as ViemChain } from "viem"; -import { createPublicClient, http } from "viem"; import GFMContent from "../atoms/GFMContent"; -interface AdminData { - adminAddress: string; - chainId: number; - chainName: string; - explorerUrl?: string; +// Hardcoded admin addresses per chain +const DEFAULT_SABLIER_ADMIN = "0xb1bEF51ebCA01EB12001a639bDBbFF6eEcA12B9F"; + +const ADMIN_ADDRESSES: Record = { + 1: "0x79Fb3e81aAc012c08501f41296CCC145a1E15844", // Ethereum + 10: "0x43c76FE8Aec91F63EbEfb4f5d2a4ba88ef880350", // Optimism + 56: "0x6666cA940D2f4B65883b454b7Bc7EEB039f64fa3", // BSC + 100: "0x72ACB57fa6a8fa768bE44Db453B1CDBa8B12A399", // Gnosis + 137: "0x40A518C5B9c1d3D6d62Ba789501CE4D526C9d9C6", // Polygon + 324: "0xaFeA787Ef04E280ad5Bb907363f214E4BAB9e288", // zkSync + 8453: "0x83A6fA8c04420B3F9C7A4CF1c040b63Fbbc89B66", // Base + 42161: "0xF34E41a6f6Ce5A45559B1D3Ee92E141a3De96376", // Arbitrum + 43114: "0x4735517616373c5137dE8bcCDc887637B8ac85Ce", // Avalanche + 59144: "0x72dCfa0483d5Ef91562817C6f20E8Ce07A81319D", // Linea + 88888: "0x74A234DcAdFCB395b37C8c2B3Edf7A13Be78c935", // Chiliz + 534352: "0x0F7Ad835235Ede685180A5c611111610813457a9", // Scroll +}; + +function getAdminAddress(chainId: number): string { + return ADMIN_ADDRESSES[chainId] ?? DEFAULT_SABLIER_ADMIN; } export function AdminsTable() { - const [admins, setAdmins] = useState([]); - const [loading, setLoading] = useState(true); - - const mainnets = useMemo(() => { - return sablier.chains.getMainnets().filter((c) => c.isSupportedByUI); - }, []); - - useEffect(() => { - async function fetchAdmins() { - const adminPromises = mainnets.map(async (chain): Promise => { - try { - const contracts = sablier.contracts.getAll({ chainId: chain.id, protocol: "lockup" }); - if (_.isEmpty(contracts)) { - console.warn(`No SablierLockup contract found for ${chain.name}`); - return undefined; - } - const lockupContract = contracts - .filter((c) => c.name === "SablierLockup" || c.name === "SablierV2LockupLinear") - .sort((a, b) => b.version.localeCompare(a.version))[0]; // Get latest version - - if (!lockupContract) { - console.warn(`No SablierLockup contract found for ${chain.name}`); - return undefined; - } - - // Create viem client for this chain - const client = createPublicClient({ - chain: chain as ViemChain, - transport: http(chain.rpc.defaults[0]), - }); - - // Define the ABI with proper const assertion - const adminAbi = [ - { - inputs: [], - name: "admin", - outputs: [{ name: "", type: "address" }], - stateMutability: "view", - type: "function", - }, - ] as const; - - // Call the admin() function on the contract - const adminAddress = await client.readContract({ - abi: adminAbi, - address: lockupContract.address as `0x${string}`, - authorizationList: undefined, - functionName: "admin", - }); - - return { - adminAddress: adminAddress as string, - chainId: chain.id, - chainName: chain.name, - explorerUrl: lockupContract.explorerURL ?? chain.blockExplorers.default.url, - }; - } catch (error) { - const errorMessage = error instanceof Error ? error.message : "Unknown error"; - console.warn(`Failed to fetch admin for ${chain.name}:`, errorMessage); - } - }); - - const results = (await Promise.all(adminPromises)).filter(Boolean); - - // Sort by chain name for consistent ordering - results.sort((a, b) => a.chainName.localeCompare(b.chainName)); - - setAdmins(results); - setLoading(false); - } - - void fetchAdmins(); - }, [mainnets]); - const content = useMemo(() => { - if (loading) { - return "| Chain | Address |\n| :---- | :------ |\n| Loading... | Loading... |"; - } + // Get the v2.0 lockup release + const release = sablier.releases.get({ + protocol: "lockup", + version: "v2.0", + }); + + // Get all chains that have v2.0 lockup contracts + const allContracts = sablier.contracts.getAll({ + release: release, + }); + + // Get unique chains from the contracts + const chainIds = _.uniq(allContracts.map((c) => c.chainId)); + + // Get chain details and filter for mainnets supported by UI + const chains = chainIds + .map((chainId) => sablier.chains.get(chainId)) + .filter((chain) => chain && !chain.isTestnet && chain.isSupportedByUI) + .sort((a, b) => a.name.localeCompare(b.name)); let content = "| Chain | Address |\n"; content += "| :---- | :------ |\n"; - for (const admin of admins) { - const explorerBaseUrl = admin.explorerUrl?.replace(/\/address\/.*$/, "") || ""; - const addressLink = `[${admin.adminAddress}](${explorerBaseUrl}/address/${admin.adminAddress})`; - content += `| ${admin.chainName} | ${addressLink} |\n`; + for (const chain of chains) { + const adminAddress = getAdminAddress(chain.id); + + const explorerBaseUrl = chain.blockExplorers.default.url; + const addressLink = `[${adminAddress}](${explorerBaseUrl}/address/${adminAddress})`; + content += `| ${chain.name} | ${addressLink} |\n`; } return content; - }, [admins, loading]); + }, []); return ; } diff --git a/src/components/organisms/ComptrollersTable.tsx b/src/components/organisms/ComptrollersTable.tsx new file mode 100644 index 00000000..10adb1bd --- /dev/null +++ b/src/components/organisms/ComptrollersTable.tsx @@ -0,0 +1,51 @@ +import _ from "lodash"; +import { useMemo } from "react"; +import { sablier } from "sablier"; +import GFMContent from "../atoms/GFMContent"; + +// Hardcoded comptroller addresses +const DEFAULT_COMPTROLLER = "0x0000008ABbFf7a84a2fE09f9A9b74D3BC2072399"; +const LINEA_COMPTROLLER = "0xF21b304A08993f98A79C7Eb841f812CCeab49B8b"; +const LINEA_CHAIN_ID = 59144; + +export function ComptrollersTable() { + const content = useMemo(() => { + // Get the v3.0 lockup release + const release = sablier.releases.get({ + protocol: "lockup", + version: "v3.0", + }); + + // Get all chains that have v3.0 lockup contracts + const allContracts = sablier.contracts.getAll({ + release: release, + }); + + // Get unique chains from the contracts + const chainIds = _.uniq(allContracts.map((c) => c.chainId)); + + // Get chain details and filter for mainnets supported by UI + const chains = chainIds + .map((chainId) => sablier.chains.get(chainId)) + .filter((chain) => chain && !chain.isTestnet && chain.isSupportedByUI) + .sort((a, b) => a.name.localeCompare(b.name)); + + let content = "| Chain | Address |\n"; + content += "| :---- | :------ |\n"; + + for (const chain of chains) { + // Use special address for Linea, default for all others + const comptrollerAddress = chain.id === LINEA_CHAIN_ID ? LINEA_COMPTROLLER : DEFAULT_COMPTROLLER; + + const explorerBaseUrl = chain.blockExplorers.default.url; + const addressLink = `[${comptrollerAddress}](${explorerBaseUrl}/address/${comptrollerAddress})`; + content += `| ${chain.name} | ${addressLink} |\n`; + } + + return content; + }, []); + + return ; +} + +export default ComptrollersTable; From 40c92d061a2f23b12f72d45671c8ec3727c357d3 Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Fri, 17 Oct 2025 02:09:20 +0300 Subject: [PATCH 05/10] refactor: update supported chains chore: add PR NOTEs --- docs/concepts/07-chains.mdx | 6 ++--- docs/concepts/11-governance.mdx | 2 ++ src/components/organisms/Chains.tsx | 37 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/docs/concepts/07-chains.mdx b/docs/concepts/07-chains.mdx index 3a415195..77291e8b 100644 --- a/docs/concepts/07-chains.mdx +++ b/docs/concepts/07-chains.mdx @@ -4,14 +4,12 @@ title: Supported Chains sidebar_position: 7 --- -import Chains from "@site/src/components/organisms/Chains"; +import Chains, { getChainCount } from "@site/src/components/organisms/Chains"; import { Links } from "@site/src/constants"; -import { keys } from "lodash"; -import { sablier } from "sablier"; <> -The Sablier Protocol is deployed on {sablier.chains.getMainnets().length} mainnets and {sablier.chains.getTestnets().length} testnet EVM chains, although not all of these are supported by the +The Sablier Protocol is deployed on {getChainCount("mainnets")} mainnets and {getChainCount("testnets")} testnet EVM chains, although not all of these are supported by the [Sablier Interface](https://app.sablier.com/). diff --git a/docs/concepts/11-governance.mdx b/docs/concepts/11-governance.mdx index 984421b6..d570f317 100644 --- a/docs/concepts/11-governance.mdx +++ b/docs/concepts/11-governance.mdx @@ -52,6 +52,8 @@ specific protocol functions. More concretely, the Admin is a collection of multi +**PR NOTE:** I didn't add functions for the previous versions, since we won't have contract references for them. + ## Trustlessness Despite having an admin, the Sablier Protocol remains trustless. Here's why: diff --git a/src/components/organisms/Chains.tsx b/src/components/organisms/Chains.tsx index c5321fae..e556e9d1 100644 --- a/src/components/organisms/Chains.tsx +++ b/src/components/organisms/Chains.tsx @@ -1,3 +1,4 @@ +import _ from "lodash"; import { useMemo } from "react"; import { sablier } from "sablier"; import GFMContent from "../atoms/GFMContent"; @@ -6,24 +7,60 @@ export interface ChainProps { kind: "mainnets" | "testnets"; } +// Cache for chain counts +const chainCounts: { mainnets?: number; testnets?: number } = {}; + export function Chains({ kind }: ChainProps) { const content = useMemo(() => { + // Get the v3.0 lockup release + const lockupV3Release = sablier.releases.get({ + protocol: "lockup", + version: "v3.0", + }); + + // Get all chains that have v3.0 lockup contracts + const lockupV3Contracts = sablier.contracts.getAll({ + release: lockupV3Release, + }); + + // Get unique chain IDs that support Lockup v3.0 + const lockupV3ChainIds = new Set(_.uniq(lockupV3Contracts?.map((c) => c.chainId) || [])); + let content: string = ""; content += `| Name | Chain ID | In UI? | Native Token | Explorer |\n`; content += `| :--- | :------- | :----- | :----------- | :------- |\n`; + let count = 0; const getter = kind === "mainnets" ? sablier.chains.getMainnets : sablier.chains.getTestnets; + + // PR NOTE: I believe we should display only the latest chains we deployed on, + // instead of the entire list of chains where we have ever deployed a specific version. for (const chain of getter()) { + // Only include chains that have Lockup v3.0 deployed + if (!lockupV3ChainIds.has(chain.id)) { + continue; + } + + count++; const supportedCell = chain.isSupportedByUI ? "✅" : "❌"; const symbolCell = chain.nativeCurrency.symbol; const explorerURL = chain.blockExplorers.default.url; const explorerCell = `[${new URL(explorerURL).host}](${explorerURL})`; content += `| ${chain.name} | ${chain.id} | ${supportedCell} | ${symbolCell} | ${explorerCell} |\n`; } + + // Store the count for use in MDX + chainCounts[kind] = count; + return content; }, [kind]); return ; } +// Helper function to get the count - reads from cache populated by Chains component +export function getChainCount(kind: "mainnets" | "testnets"): number { + return chainCounts[kind] ?? 0; +} + export default Chains; From 52ac177e6cf85253b6e8cac2427eba71490e41d7 Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Fri, 17 Oct 2025 02:11:31 +0300 Subject: [PATCH 06/10] chore: nitpick --- docs/guides/airdrops/02-deployments.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/airdrops/02-deployments.mdx b/docs/guides/airdrops/02-deployments.mdx index 664bdb85..22749d06 100644 --- a/docs/guides/airdrops/02-deployments.mdx +++ b/docs/guides/airdrops/02-deployments.mdx @@ -28,7 +28,7 @@ Came here looking for the previous deployments? Click below to see other version This repository is the successor of [Lockup Periphery](https://github.com/sablier-labs/v2-periphery), which has been discontinued. For previous deployments, please refer to the -[Lockup deployments](/guides/lockup/previous-deployments/v1.2) page. +[Lockup v1.2 deployments](/guides/lockup/previous-deployments/v1.2) page. :::info From 99a9025fde38e2e47385be8c97e1161ca5ff6da5 Mon Sep 17 00:00:00 2001 From: smol-ninja Date: Fri, 17 Oct 2025 15:50:43 +0100 Subject: [PATCH 07/10] bump sablier --- bun.lock | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bun.lock b/bun.lock index f96e33b9..8d3cce6d 100644 --- a/bun.lock +++ b/bun.lock @@ -32,7 +32,7 @@ "rehype-external-links": "^3.0.0", "rehype-katex": "7.0.1", "remark-math": "6.0.0", - "sablier": "1.2.0", + "sablier": "1.2.1", "viem": "^2.37.9", }, "devDependencies": { @@ -2856,7 +2856,7 @@ "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], - "sablier": ["sablier@1.2.0", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-Py3nLGlL/noqeM12yxPj9UE8m+b4j8xpeidwLBiDFAd2AVBS/tadB3CsE7/Bix2/0WBqcjBrZQNE24GJWhFaPQ=="], + "sablier": ["sablier@1.2.1", "", { "dependencies": { "lodash": "^4.17.21", "viem": "^2.33" } }, "sha512-GnkohFhwEUiR7LNmhd71Vza2aCsf0LXcAn40O6qgLbtf/AgMvyG7q5mU1omlTwYaZI9G2Lc+MhGlgzMStzT0Kg=="], "sade": ["sade@1.8.1", "", { "dependencies": { "mri": "^1.1.0" } }, "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="], diff --git a/package.json b/package.json index 45f3bb9a..e265876e 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "rehype-external-links": "^3.0.0", "rehype-katex": "7.0.1", "remark-math": "6.0.0", - "sablier": "1.2.0", + "sablier": "1.2.1", "viem": "^2.37.9" }, "devDependencies": { From 1d193e70321cdad21e9616a1f59494bed41e4dcc Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Sat, 18 Oct 2025 01:49:02 +0300 Subject: [PATCH 08/10] chore: add todo about reference links chore: bump deps --- bun.lock | 6 ++-- docs/concepts/11-governance.mdx | 34 +++++++++++-------- .../airdrops/previous-deployments/v1.3.mdx | 2 +- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/bun.lock b/bun.lock index 8d3cce6d..e4959961 100644 --- a/bun.lock +++ b/bun.lock @@ -2880,7 +2880,7 @@ "selfsigned": ["selfsigned@2.4.1", "", { "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q=="], - "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="], "semver-diff": ["semver-diff@4.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA=="], @@ -3370,8 +3370,6 @@ "@vercel/fun/node-fetch": ["node-fetch@2.6.7", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ=="], - "@vercel/fun/semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="], - "@vercel/gatsby-plugin-vercel-builder/fs-extra": ["fs-extra@11.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="], "@vercel/nft/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], @@ -3428,6 +3426,8 @@ "cli-truncate/string-width": ["string-width@8.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.0", "strip-ansi": "^7.1.0" } }, "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg=="], + "compressible/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + "compression/bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], diff --git a/docs/concepts/11-governance.mdx b/docs/concepts/11-governance.mdx index d570f317..840a21e1 100644 --- a/docs/concepts/11-governance.mdx +++ b/docs/concepts/11-governance.mdx @@ -19,30 +19,36 @@ centralized accross all protocols access control model while maintaining securit Comptroller has the following permissions on each chain where `Lockup` is deployed: -| Permission | Function | -| ------------------ | -------------------------------------------------------------------------------- | -| Allow to Hook | [allowToHook](../reference/lockup/contracts/SablierLockup#allowtohook) | -| Recover | [recover](../reference/lockup/contracts/SablierLockup#recover) | -| Set Native Token | [setNativeToken](../reference/lockup/contracts/SablierLockup#setnativetoken) | -| Set NFT Descriptor | [setNFTDescriptor](../reference/lockup/contracts/SablierLockup#setnftdescriptor) | +| Permission | Function | +| ------------------ | ------------------ | +| Allow to Hook | `allowToHook` | +| Recover | `recover` | +| Set Native Token | `setNativeToken` | +| Set NFT Descriptor | `setNFTDescriptor` | + +TODO: Add links when reference pages are created ## MerkleFactory Comptroller has the following permission on each chain where the factories are deployed: -| Permission | Function | -| ---------------- | ------------------------------------------------------------------------------------------------------------ | -| Set Native Token | [setNativeToken](../reference/airdrops/contracts/abstracts/abstract.SablierFactoryMerkleBase#setNativeToken) | +| Permission | Function | +| ---------------- | ---------------- | +| Set Native Token | `setNativeToken` | + +TODO: Add links when reference pages are created ## Flow Comptroller has the following permissions on each chain where `Flow` is deployed: -| Permission | Function | -| ------------------ | ---------------------------------------------------------------------------- | -| Recover | [recover](../reference/flow/contracts/SablierFlow#recover) | -| Set Native Token | [setNativeToken](../reference/flow/contracts/SablierFlow#setnativetoken) | -| Set NFT Descriptor | [setNFTDescriptor](../reference/flow/contracts/SablierFlow#setnftdescriptor) | +| Permission | Function | +| ------------------ | ------------------ | +| Recover | `recover` | +| Set Native Token | `setNativeToken` | +| Set NFT Descriptor | `setNFTDescriptor` | + +TODO: Add links when reference pages are created ## Admin Addresses diff --git a/docs/guides/airdrops/previous-deployments/v1.3.mdx b/docs/guides/airdrops/previous-deployments/v1.3.mdx index ca20c1c0..a2ae31b2 100644 --- a/docs/guides/airdrops/previous-deployments/v1.3.mdx +++ b/docs/guides/airdrops/previous-deployments/v1.3.mdx @@ -25,6 +25,6 @@ This is an outdated version of the Merkle Airdrops protocol. See the latest vers This repository is the successor of [Lockup Periphery](https://github.com/sablier-labs/v2-periphery), which has been discontinued. For previous deployments, please refer to the -[Lockup deployments](/guides/lockup/previous-deployments/v1.2) page. +[Lockup v1.2 deployments](/guides/lockup/previous-deployments/v1.2) page. From a92f8b87bf135ddc65d15a73652a99f6adc2dfaa Mon Sep 17 00:00:00 2001 From: Andrei Vlad Birgaoanu Date: Sat, 18 Oct 2025 01:55:19 +0300 Subject: [PATCH 09/10] chore: fix deps --- bun.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bun.lock b/bun.lock index e4959961..8d3cce6d 100644 --- a/bun.lock +++ b/bun.lock @@ -2880,7 +2880,7 @@ "selfsigned": ["selfsigned@2.4.1", "", { "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q=="], - "semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="], + "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "semver-diff": ["semver-diff@4.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA=="], @@ -3370,6 +3370,8 @@ "@vercel/fun/node-fetch": ["node-fetch@2.6.7", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ=="], + "@vercel/fun/semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="], + "@vercel/gatsby-plugin-vercel-builder/fs-extra": ["fs-extra@11.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="], "@vercel/nft/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], @@ -3426,8 +3428,6 @@ "cli-truncate/string-width": ["string-width@8.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.0", "strip-ansi": "^7.1.0" } }, "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg=="], - "compressible/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], - "compression/bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], From f9f235e0b9a255504af79bf77ee4f0318e9cb2a0 Mon Sep 17 00:00:00 2001 From: Shubham Yadav Date: Wed, 22 Oct 2025 18:36:40 +0200 Subject: [PATCH 10/10] Feedback on PR #372 (#388) * feat: add getLatestLockupChainIds helper function refactor: getChainCount function to compute the count on its own refactor: query comptroller address from sdk chore: update words on the governance page refactor: create snippet for deployment note * capitalize comptroller remove redundant check from ComptrollersTable --- docs/concepts/11-governance.mdx | 21 +++++----- docs/guides/airdrops/02-deployments.mdx | 14 ++----- .../previous-deployments/_category_.json | 5 +-- .../airdrops/previous-deployments/v1.3.mdx | 13 +++--- docs/guides/flow/02-deployments.mdx | 10 ++--- .../guides/flow/previous-deployments/v1.0.mdx | 10 ++--- .../guides/flow/previous-deployments/v1.1.mdx | 10 ++--- docs/guides/lockup/02-deployments.mdx | 10 ++--- .../lockup/previous-deployments/v1.0.mdx | 11 ++--- .../lockup/previous-deployments/v1.1.mdx | 11 ++--- .../lockup/previous-deployments/v1.2.mdx | 11 ++--- .../lockup/previous-deployments/v2.0.mdx | 10 ++--- src/components/organisms/Chains.tsx | 42 +++++++------------ .../organisms/ComptrollersTable.tsx | 27 +++--------- src/helpers.ts | 11 +++++ src/snippets/_deployment-note.mdx | 5 +++ src/snippets/_release-history-airdrops.mdx | 8 ++-- src/snippets/_release-history-flow.mdx | 2 +- src/snippets/_release-history-lockup.mdx | 2 +- 19 files changed, 98 insertions(+), 135 deletions(-) create mode 100644 src/snippets/_deployment-note.mdx diff --git a/docs/concepts/11-governance.mdx b/docs/concepts/11-governance.mdx index 840a21e1..53336b0d 100644 --- a/docs/concepts/11-governance.mdx +++ b/docs/concepts/11-governance.mdx @@ -9,9 +9,11 @@ import ComptrollersTable from "@site/src/components/organisms/ComptrollersTable" ## Comptroller -The Sablier Protocol uses a Comptroller smart contract architecture for governance. The Comptroller acts as an -intermediary that has exclusive access to specific protocol functions. This design provides a more flexible and -centralized accross all protocols access control model while maintaining security. +The Sablier Comptroller is a smart contract that acts as an intermediary between the protocols and the admin. It has +exclusive access to specific protocol functions. This design provides a more flexible approach to access control across +all protocols while maintaining security. + +Admin addresses that control the Comptroller are listed in the [Admin Addresses](#admin-addresses) section. @@ -28,9 +30,9 @@ Comptroller has the following permissions on each chain where `Lockup` is deploy TODO: Add links when reference pages are created -## MerkleFactory +## Merkle Factory -Comptroller has the following permission on each chain where the factories are deployed: +Comptroller has the following permission on each chain where the Merkle Factories are deployed: | Permission | Function | | ---------------- | ---------------- | @@ -52,14 +54,13 @@ TODO: Add links when reference pages are created ## Admin Addresses -Before the introduction of the Comptroller architecture, we used a direct "Admin" role for -governance. These admin accounts had the same authority as the current Comptroller contract, with direct access to -specific protocol functions. More concretely, the Admin is a collection of multisig wallets and EOAs currently in control of Sablier Labs. +The Comptroller is introduced in Lockup v3.0, Airdrops v2.0 and Flow v2.0. For earlier versions, we use a direct "Admin" +role for governance. These admin accounts have the same authority as the current Comptroller contract, with direct +access to specific protocol functions. More concretely, the Admin is a collection of multisig wallets and EOAs currently +in control of Sablier Labs. -**PR NOTE:** I didn't add functions for the previous versions, since we won't have contract references for them. - ## Trustlessness Despite having an admin, the Sablier Protocol remains trustless. Here's why: diff --git a/docs/guides/airdrops/02-deployments.mdx b/docs/guides/airdrops/02-deployments.mdx index 22749d06..b161041c 100644 --- a/docs/guides/airdrops/02-deployments.mdx +++ b/docs/guides/airdrops/02-deployments.mdx @@ -6,17 +6,15 @@ title: "Deployment Addresses" import DeploymentsV2_0 from "../../../src/autogen/airdrops/_table-deployments-v2.0.mdx"; import ReleaseHistoryAirdrops from "../../../src/snippets/_release-history-airdrops.mdx"; +import DeploymentNote from "../../../src/snippets/_deployment-note.mdx"; # Merkle Airdrops Deployments -This section contains the deployment addresses for the v2.0 release of -[@sablier/airdrops](https://npmjs.com/package/@sablier/airdrops). +[latest]: https://npmjs.com/package/@sablier/airdrops -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v2.0 release of [@sablier/airdrops][latest]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + ## Versions @@ -26,10 +24,6 @@ Came here looking for the previous deployments? Click below to see other version -This repository is the successor of [Lockup Periphery](https://github.com/sablier-labs/v2-periphery), which has been -discontinued. For previous deployments, please refer to the -[Lockup v1.2 deployments](/guides/lockup/previous-deployments/v1.2) page. - :::info Stay up to date with any new releases by [subscribing](https://x.com/Sablier/status/1821220784661995627) to the official diff --git a/docs/guides/airdrops/previous-deployments/_category_.json b/docs/guides/airdrops/previous-deployments/_category_.json index 7d407683..9f700851 100644 --- a/docs/guides/airdrops/previous-deployments/_category_.json +++ b/docs/guides/airdrops/previous-deployments/_category_.json @@ -1,6 +1,5 @@ { + "collapsed": true, "label": "Previous Deployments", - "position": 3, - "collapsible": true, - "collapsed": false + "position": 3 } diff --git a/docs/guides/airdrops/previous-deployments/v1.3.mdx b/docs/guides/airdrops/previous-deployments/v1.3.mdx index a2ae31b2..ba88e9ae 100644 --- a/docs/guides/airdrops/previous-deployments/v1.3.mdx +++ b/docs/guides/airdrops/previous-deployments/v1.3.mdx @@ -5,21 +5,20 @@ title: "v1.3" --- import DeploymentsV1_3 from "../../../../src/autogen/airdrops/_table-deployments-v1.3.mdx"; +import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx"; # Merkle Airdrops v1.3 -This section contains the deployment addresses for the v1.3 release of -[@sablier/airdrops](https://npmjs.com/package/@sablier/airdrops). +[v1.3.0]: https://npmjs.com/package/@sablier/airdrops/v/1.3.0 -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v1.3 release of [@sablier/airdrops@1.3.0][v1.3.0]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info -This is an outdated version of the Merkle Airdrops protocol. See the latest version [here](/guides/airdrops/deployments). +This is an outdated version of the Merkle Airdrops protocol. See the latest version +[here](/guides/airdrops/deployments). ::: diff --git a/docs/guides/flow/02-deployments.mdx b/docs/guides/flow/02-deployments.mdx index ec5371fb..348a652a 100644 --- a/docs/guides/flow/02-deployments.mdx +++ b/docs/guides/flow/02-deployments.mdx @@ -6,17 +6,15 @@ title: "Deployment Addresses" import DeploymentsV2_0 from "../../../src/autogen/flow/_table-deployments-v2.0.mdx"; import ReleaseHistoryFlow from "../../../src/snippets/_release-history-flow.mdx"; +import DeploymentNote from "../../../src/snippets/_deployment-note.mdx"; # Flow Deployments -This section contains the deployment addresses for the v2.0 release of -[@sablier/flow](https://npmjs.com/package/@sablier/flow). +[latest]: https://npmjs.com/package/@sablier/flow -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v2.0 release of [@sablier/flow][latest]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + ## Versions diff --git a/docs/guides/flow/previous-deployments/v1.0.mdx b/docs/guides/flow/previous-deployments/v1.0.mdx index 49a5b69b..3833a345 100644 --- a/docs/guides/flow/previous-deployments/v1.0.mdx +++ b/docs/guides/flow/previous-deployments/v1.0.mdx @@ -5,17 +5,15 @@ title: "v1.0" --- import DeploymentsV1_0 from "../../../../src/autogen/flow/_table-deployments-v1.0.mdx"; +import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx"; # Flow v1.0 -This section contains the deployment addresses for the v1.0 release of -[@sablier/flow@1.0.0](https://npmjs.com/package/@sablier/flow/v/1.0.0). +[v1.0.0]: https://npmjs.com/package/@sablier/flow/v/1.0.0 -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v1.0 release of [@sablier/flow@1.0.0][v1.0.0]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info diff --git a/docs/guides/flow/previous-deployments/v1.1.mdx b/docs/guides/flow/previous-deployments/v1.1.mdx index de944ecd..c802d143 100644 --- a/docs/guides/flow/previous-deployments/v1.1.mdx +++ b/docs/guides/flow/previous-deployments/v1.1.mdx @@ -5,17 +5,15 @@ title: "v1.1" --- import DeploymentsV1_1 from "../../../../src/autogen/flow/_table-deployments-v1.1.mdx"; +import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx"; # Flow v1.1 -This section contains the deployment addresses for the v1.1 release of -[@sablier/flow](https://npmjs.com/package/@sablier/flow). +[v1.1.1]: https://npmjs.com/package/@sablier/flow/v/1.1.1 -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v1.1 release of [@sablier/flow@1.1.1][v1.1.1]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info diff --git a/docs/guides/lockup/02-deployments.mdx b/docs/guides/lockup/02-deployments.mdx index a79b2e73..16f8698c 100644 --- a/docs/guides/lockup/02-deployments.mdx +++ b/docs/guides/lockup/02-deployments.mdx @@ -6,17 +6,15 @@ title: "Deployment Addresses" import DeploymentsV3_0 from "../../../src/autogen/lockup/_table-deployments-v3.0.mdx"; import ReleaseHistoryLockup from "../../../src/snippets/_release-history-lockup.mdx"; +import DeploymentNote from "../../../src/snippets/_deployment-note.mdx"; # Lockup Deployments -This section contains the deployment addresses for the v3.0 release of -[@sablier/lockup](https://npmjs.com/package/@sablier/lockup). +[latest]: https://npmjs.com/package/@sablier/lockup -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v3.0 release of [@sablier/lockup][latest]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info[important] diff --git a/docs/guides/lockup/previous-deployments/v1.0.mdx b/docs/guides/lockup/previous-deployments/v1.0.mdx index 573b871c..b931855d 100644 --- a/docs/guides/lockup/previous-deployments/v1.0.mdx +++ b/docs/guides/lockup/previous-deployments/v1.0.mdx @@ -5,20 +5,17 @@ title: "v1.0" --- import DeploymentsV1_0 from "../../../../src/autogen/lockup/_table-deployments-v1.0.mdx"; +import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx"; # Lockup v1.0 -This section contains the deployment addresses for the v1.0 release of [@sablier/v2-core@1.0.2][v2-core] and -[@sablier/v2-periphery@1.0.3][v2-periphery]. - [v2-core]: https://npmjs.com/package/@sablier/v2-core/v/1.0.2 [v2-periphery]: https://npmjs.com/package/@sablier/v2-periphery/v/1.0.3 -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v1.0 release of [@sablier/v2-core@1.0.2][v2-core] and +[@sablier/v2-periphery@1.0.3][v2-periphery]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info diff --git a/docs/guides/lockup/previous-deployments/v1.1.mdx b/docs/guides/lockup/previous-deployments/v1.1.mdx index f08a956a..379d1664 100644 --- a/docs/guides/lockup/previous-deployments/v1.1.mdx +++ b/docs/guides/lockup/previous-deployments/v1.1.mdx @@ -5,20 +5,17 @@ title: "v1.1" --- import DeploymentsV1_1 from "../../../../src/autogen/lockup/_table-deployments-v1.1.mdx"; +import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx"; # Lockup v1.1 -This section contains the deployment addresses for the v1.1 release of [@sablier/v2-core@1.1.2][v2-core] and -[@sablier/v2-periphery@1.1.1][v2-periphery]. - [v2-core]: https://npmjs.com/package/@sablier/v2-core/v/1.1.2 [v2-periphery]: https://npmjs.com/package/@sablier/v2-periphery/v/1.1.1 -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v1.1 release of [@sablier/v2-core@1.1.2][v2-core] and +[@sablier/v2-periphery@1.1.1][v2-periphery]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info diff --git a/docs/guides/lockup/previous-deployments/v1.2.mdx b/docs/guides/lockup/previous-deployments/v1.2.mdx index 4ea06146..abc5d26c 100644 --- a/docs/guides/lockup/previous-deployments/v1.2.mdx +++ b/docs/guides/lockup/previous-deployments/v1.2.mdx @@ -5,20 +5,17 @@ title: "v1.2" --- import DeploymentsV1_2 from "../../../../src/autogen/lockup/_table-deployments-v1.2.mdx"; +import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx"; # Lockup v1.2 -This section contains the deployment addresses for the v1.2 release of [@sablier/v2-core@1.2.0][v2-core] and -[@sablier/v2-periphery@1.2.0][v2-periphery]. - [v2-core]: https://npmjs.com/package/@sablier/v2-core/v/1.2.0 [v2-periphery]: https://npmjs.com/package/@sablier/v2-periphery/v/1.2.0 -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v1.2 release of [@sablier/v2-core@1.2.0][v2-core] and +[@sablier/v2-periphery@1.2.0][v2-periphery]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info diff --git a/docs/guides/lockup/previous-deployments/v2.0.mdx b/docs/guides/lockup/previous-deployments/v2.0.mdx index 14f46996..d2758708 100644 --- a/docs/guides/lockup/previous-deployments/v2.0.mdx +++ b/docs/guides/lockup/previous-deployments/v2.0.mdx @@ -5,17 +5,15 @@ title: "v2.0" --- import DeploymentsV2_0 from "../../../../src/autogen/lockup/_table-deployments-v2.0.mdx"; +import DeploymentNote from "../../../../src/snippets/_deployment-note.mdx"; # Lockup v2.0 -This section contains the deployment addresses for the v2.0 release of -[@sablier/lockup](https://npmjs.com/package/@sablier/lockup). +[v2.0.1]: https://npmjs.com/package/@sablier/lockup/v/2.0.1 -A few noteworthy details about the deployments: +This section contains the deployment addresses for the v2.0 release of [@sablier/lockup@2.0.1][v2.0.1]. -- The addresses are final -- All contracts are non-upgradeable -- The source code is verified on Etherscan across all chains + :::info diff --git a/src/components/organisms/Chains.tsx b/src/components/organisms/Chains.tsx index e556e9d1..29d5ba35 100644 --- a/src/components/organisms/Chains.tsx +++ b/src/components/organisms/Chains.tsx @@ -1,47 +1,28 @@ -import _ from "lodash"; import { useMemo } from "react"; import { sablier } from "sablier"; +import { getLatestLockupChainIds } from "../../helpers"; import GFMContent from "../atoms/GFMContent"; export interface ChainProps { kind: "mainnets" | "testnets"; } -// Cache for chain counts -const chainCounts: { mainnets?: number; testnets?: number } = {}; - export function Chains({ kind }: ChainProps) { const content = useMemo(() => { - // Get the v3.0 lockup release - const lockupV3Release = sablier.releases.get({ - protocol: "lockup", - version: "v3.0", - }); - - // Get all chains that have v3.0 lockup contracts - const lockupV3Contracts = sablier.contracts.getAll({ - release: lockupV3Release, - }); - - // Get unique chain IDs that support Lockup v3.0 - const lockupV3ChainIds = new Set(_.uniq(lockupV3Contracts?.map((c) => c.chainId) || [])); + const latestLockupChainIds = new Set(getLatestLockupChainIds()); let content: string = ""; content += `| Name | Chain ID | In UI? | Native Token | Explorer |\n`; content += `| :--- | :------- | :----- | :----------- | :------- |\n`; - let count = 0; const getter = kind === "mainnets" ? sablier.chains.getMainnets : sablier.chains.getTestnets; - // PR NOTE: I believe we should display only the latest chains we deployed on, - // instead of the entire list of chains where we have ever deployed a specific version. for (const chain of getter()) { // Only include chains that have Lockup v3.0 deployed - if (!lockupV3ChainIds.has(chain.id)) { + if (!latestLockupChainIds.has(chain.id)) { continue; } - count++; const supportedCell = chain.isSupportedByUI ? "✅" : "❌"; const symbolCell = chain.nativeCurrency.symbol; const explorerURL = chain.blockExplorers.default.url; @@ -49,18 +30,25 @@ export function Chains({ kind }: ChainProps) { content += `| ${chain.name} | ${chain.id} | ${supportedCell} | ${symbolCell} | ${explorerCell} |\n`; } - // Store the count for use in MDX - chainCounts[kind] = count; - return content; }, [kind]); return ; } -// Helper function to get the count - reads from cache populated by Chains component +// Helper function to get the count export function getChainCount(kind: "mainnets" | "testnets"): number { - return chainCounts[kind] ?? 0; + const latestLockupChainIds = new Set(getLatestLockupChainIds()); + const query = kind === "mainnets" ? sablier.chains.getMainnets : sablier.chains.getTestnets; + + let count = 0; + for (const chain of query()) { + if (latestLockupChainIds.has(chain.id)) { + count++; + } + } + + return count; } export default Chains; diff --git a/src/components/organisms/ComptrollersTable.tsx b/src/components/organisms/ComptrollersTable.tsx index 10adb1bd..d53ee28b 100644 --- a/src/components/organisms/ComptrollersTable.tsx +++ b/src/components/organisms/ComptrollersTable.tsx @@ -1,28 +1,13 @@ import _ from "lodash"; import { useMemo } from "react"; -import { sablier } from "sablier"; +import { comptroller, sablier } from "sablier"; +import { getLatestLockupChainIds } from "../../helpers"; import GFMContent from "../atoms/GFMContent"; -// Hardcoded comptroller addresses -const DEFAULT_COMPTROLLER = "0x0000008ABbFf7a84a2fE09f9A9b74D3BC2072399"; -const LINEA_COMPTROLLER = "0xF21b304A08993f98A79C7Eb841f812CCeab49B8b"; -const LINEA_CHAIN_ID = 59144; - export function ComptrollersTable() { const content = useMemo(() => { - // Get the v3.0 lockup release - const release = sablier.releases.get({ - protocol: "lockup", - version: "v3.0", - }); - - // Get all chains that have v3.0 lockup contracts - const allContracts = sablier.contracts.getAll({ - release: release, - }); - - // Get unique chains from the contracts - const chainIds = _.uniq(allContracts.map((c) => c.chainId)); + // Get chain IDs that have the latest Lockup v3.0 release deployed + const chainIds = getLatestLockupChainIds(); // Get chain details and filter for mainnets supported by UI const chains = chainIds @@ -34,8 +19,8 @@ export function ComptrollersTable() { content += "| :---- | :------ |\n"; for (const chain of chains) { - // Use special address for Linea, default for all others - const comptrollerAddress = chain.id === LINEA_CHAIN_ID ? LINEA_COMPTROLLER : DEFAULT_COMPTROLLER; + // Get comptroller address from sablier package + const comptrollerAddress = comptroller.get(chain.id).address; const explorerBaseUrl = chain.blockExplorers.default.url; const addressLink = `[${comptrollerAddress}](${explorerBaseUrl}/address/${comptrollerAddress})`; diff --git a/src/helpers.ts b/src/helpers.ts index 9d52e7ca..33905abb 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -1,3 +1,5 @@ +import _ from "lodash"; +import { sablier } from "sablier"; import { BENCHMARKS_COMMIT, GITHUB_ORG } from "./constants"; export function getBenchmarkURL(path: string): string { @@ -7,3 +9,12 @@ export function getBenchmarkURL(path: string): string { export function getRawContentURL(repo: string, ref: string, path: string): string { return `https://raw.githubusercontent.com/${GITHUB_ORG}/${repo}/${ref}/${path}`; } + +/** + * Get chain IDs that have the latest lockup release deployed + */ +export function getLatestLockupChainIds(): number[] { + const release = sablier.releases.getLatest({ protocol: "lockup" }); + const contracts = sablier.contracts.getAll({ release }); + return _.uniq(contracts.map((c) => c.chainId)); +} diff --git a/src/snippets/_deployment-note.mdx b/src/snippets/_deployment-note.mdx new file mode 100644 index 00000000..51ef7bbb --- /dev/null +++ b/src/snippets/_deployment-note.mdx @@ -0,0 +1,5 @@ +A few noteworthy details about the deployments: + +- The addresses are final +- All contracts are non-upgradeable +- The source code is verified on Etherscan across all chains diff --git a/src/snippets/_release-history-airdrops.mdx b/src/snippets/_release-history-airdrops.mdx index cd20ce5e..94da5530 100644 --- a/src/snippets/_release-history-airdrops.mdx +++ b/src/snippets/_release-history-airdrops.mdx @@ -1,4 +1,4 @@ -| Version | Release Date | -| -------------------------------------------------- | ------------- | -| [v2.0](/guides/airdrops/overview) | October 2025 | -| [v1.3](/guides/airdrops/previous-deployments/v1.3) | February 2025 | +| Version | Release Date | UI Aliases | +| -------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| [v2.0](/guides/airdrops/deployments) (latest) | October 2025 | `MF_INST` (Merkle Factory Instant), `MF_LL` (Merkle Factory Linear), `MF_LT` (Merkle Factory Tranched), `MF_VCA` (Merkle Factory VCA) | +| [v1.3](/guides/airdrops/previous-deployments/v1.3) | February 2025 | `MSF4` (Merkle Factory): all factories merged into a single contract | diff --git a/src/snippets/_release-history-flow.mdx b/src/snippets/_release-history-flow.mdx index 4df17101..94927f2f 100644 --- a/src/snippets/_release-history-flow.mdx +++ b/src/snippets/_release-history-flow.mdx @@ -1,5 +1,5 @@ | Version | Release Date | UI Aliases | | ---------------------------------------------- | ------------- | ---------- | -| [v2.0](/guides/flow/overview) (latest) | October 2025 | FL3 | +| [v2.0](/guides/flow/deployments) (latest) | October 2025 | FL3 | | [v1.1](/guides/flow/previous-deployments/v1.1) | February 2025 | FL2 | | [v1.0](/guides/flow/previous-deployments/v1.0) | December 2024 | FL | diff --git a/src/snippets/_release-history-lockup.mdx b/src/snippets/_release-history-lockup.mdx index 3681b55f..6c1b83f8 100644 --- a/src/snippets/_release-history-lockup.mdx +++ b/src/snippets/_release-history-lockup.mdx @@ -1,6 +1,6 @@ | Version | Release Date | UI Aliases | | ------------------------------------------------ | ------------- | ---------------------------------------------------------------------- | -| [v3.0](/guides/lockup/deployments) (latest) | October 2025 | `LK` (Lockup): all models have been merged into a single contract | +| [v3.0](/guides/lockup/deployments) (latest) | October 2025 | `LK2` (Lockup): all models have been merged into a single contract | | [v2.0](/guides/lockup/previous-deployments/v2.0) | February 2025 | `LK` (Lockup): all models have been merged into a single contract | | [v1.2](/guides/lockup/previous-deployments/v1.2) | July 2024 | `LD3` (Lockup Dynamic), `LL3` (Lockup Linear), `LT3` (Lockup Tranched) | | [v1.1](/guides/lockup/previous-deployments/v1.1) | December 2023 | `LD2` (Lockup Dynamic), `LL2` (Lockup Linear) |