diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba22b1230..8a4f1e0b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,13 +20,13 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json - name: Use Node.js 20 uses: actions/setup-node@v4 with: node-version: 20 - cache: "pnpm" + cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/.github/workflows/change-reporter.yml b/.github/workflows/change-reporter.yml new file mode 100644 index 000000000..b49e41d03 --- /dev/null +++ b/.github/workflows/change-reporter.yml @@ -0,0 +1,68 @@ +name: Change Reporter +on: + workflow_dispatch: + schedule: + # Every day at midnight + - cron: 0 0 * * * + +jobs: + change-reporter: + if: github.repository == 'Vendicated/Vencord' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + if: ${{ github.event_name == 'schedule' }} + with: + ref: dev + + - uses: actions/checkout@v4 + if: ${{ github.event_name == 'workflow_dispatch' }} + + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: ^20.11.0 + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Google Chrome + id: setup-chrome + uses: browser-actions/setup-chrome@v1 + with: + chrome-version: stable + install-dependencies: true + + - name: Build Vencord web standalone + run: pnpm buildWebStandalone --skip-extension + + - name: Create Report (Stable) + timeout-minutes: 10 + run: | + cd packages/discord-types + pnpm change-reporter + env: + CHANNEL: stable + CHROMIUM_BIN: ${{ steps.setup-chrome.outputs.chrome-path }} + CHROMIUM_VERSION: ${{ steps.setup-chrome.outputs.chrome-version }} + DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + VENCORD_DIST: ../../dist/browser.js + + - name: Create Report (Canary) + timeout-minutes: 10 + if: ${{ !cancelled() }} # run even if previous one failed + run: | + cd packages/discord-types + pnpm change-reporter + env: + CHANNEL: canary + CHROMIUM_BIN: ${{ steps.setup-chrome.outputs.chrome-path }} + CHROMIUM_VERSION: ${{ steps.setup-chrome.outputs.chrome-version }} + DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + VENCORD_DIST: ../../dist/browser.js diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 190e3069c..eaf6795dd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,13 +20,13 @@ jobs: exit 1 fi - - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json - - name: Use Node.js 19 + - name: Use Node.js 20 uses: actions/setup-node@v4 with: node-version: 20 - cache: "pnpm" + cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/.github/workflows/reportBrokenPlugins.yml b/.github/workflows/reportBrokenPlugins.yml index a669c1a27..28d983cbf 100644 --- a/.github/workflows/reportBrokenPlugins.yml +++ b/.github/workflows/reportBrokenPlugins.yml @@ -19,13 +19,13 @@ jobs: - uses: actions/checkout@v4 if: ${{ github.event_name == 'workflow_dispatch' }} - - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json - name: Use Node.js 20 uses: actions/setup-node@v4 with: node-version: 20 - cache: "pnpm" + cache: pnpm - name: Install dependencies run: | diff --git a/.github/workflows/test-packages-discord-types.yml b/.github/workflows/test-packages-discord-types.yml new file mode 100644 index 000000000..1e8a8fcf4 --- /dev/null +++ b/.github/workflows/test-packages-discord-types.yml @@ -0,0 +1,34 @@ +name: Test packages/discord-types +on: + pull_request: + paths: + - packages/discord-types/** + push: + paths: + - packages/discord-types/** +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: ^20.9.0 + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Check packages/discord-types for TypeScript errors and lint + run: | # https://github.com/microsoft/TypeScript/issues/40431 + pnpm tspc --emitDeclarationOnly + cd packages/discord-types + pnpm test + + - name: Check if packages/discord-types is compatible with Vencord + run: pnpm testTsc && pnpm lint diff --git a/.github/workflows/test-scripts.yml b/.github/workflows/test-scripts.yml new file mode 100644 index 000000000..884eb11dd --- /dev/null +++ b/.github/workflows/test-scripts.yml @@ -0,0 +1,33 @@ +name: Test scripts +on: + pull_request: + paths: + - scripts/** + - eslint.config.mjs + push: + paths: + - scripts/** + - eslint.config.mjs +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: ^20.9.0 + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Check scripts for TypeScript errors + run: | # https://github.com/microsoft/TypeScript/issues/40431 + pnpm tspc --emitDeclarationOnly + cd scripts + pnpm tsc --noEmit diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7a2b320bf..cfe9a0ca5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,23 +1,27 @@ name: test on: push: + paths-ignore: + - packages/discord-types pull_request: branches: - main - dev + paths-ignore: + - packages/discord-types jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json - name: Use Node.js 20 uses: actions/setup-node@v4 with: - node-version: 20 - cache: "pnpm" + node-version: ^20.9.0 + cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/.stylelintrc.json b/.stylelintrc.json index 682695c07..ffe761323 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,6 +1,13 @@ { - "extends": "stylelint-config-standard", + "extends": [ + "stylelint-config-standard", + "@stylistic/stylelint-config" + ], + "plugins": [ + "@stylistic/stylelint-plugin" + ], "rules": { + "@stylistic/indentation": 4, "selector-class-pattern": [ "^[a-z][a-zA-Z0-9]*(-[a-z0-9][a-zA-Z0-9]*)*$", { diff --git a/.vscode/settings.json b/.vscode/settings.json index fa543b38c..1c27fac7e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,4 @@ { - "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, @@ -9,6 +8,8 @@ "[typescriptreact]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, + "files.eol": "\n", + "files.insertFinalNewline": true, "javascript.format.semicolons": "insert", "typescript.format.semicolons": "insert", "typescript.preferences.quoteStyle": "double", @@ -19,5 +20,8 @@ "domain": "codeberg.org", "type": "Gitea" } - ] + ], + + "typescript.tsdk": "./node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true } diff --git a/browser/VencordNativeStub.ts b/browser/VencordNativeStub.ts index 79f0f2cd3..071c90726 100644 --- a/browser/VencordNativeStub.ts +++ b/browser/VencordNativeStub.ts @@ -36,7 +36,7 @@ const cssListeners = new Set<(css: string) => void>(); const NOOP = () => { }; const NOOP_ASYNC = async () => { }; -const setCssDebounced = debounce((css: string) => VencordNative.quickCss.set(css)); +const setCssDebounced = debounce((css: string) => { VencordNative.quickCss.set(css); }); const themeStore = DataStore.createStore("VencordThemes", "VencordThemeData"); @@ -46,9 +46,8 @@ window.VencordNative = { uploadTheme: (fileName: string, fileData: string) => DataStore.set(fileName, fileData, themeStore), deleteTheme: (fileName: string) => DataStore.del(fileName, themeStore), getThemesDir: async () => "", - getThemesList: () => DataStore.entries(themeStore).then(entries => - entries.map(([name, css]) => getThemeInfo(css, name.toString())) - ), + getThemesList: async () => (await DataStore.entries(themeStore)) + .map(([name, css]) => getThemeInfo(css, name.toString())), getThemeData: (fileName: string) => DataStore.get(fileName, themeStore), getSystemValues: async () => ({}), }, @@ -66,10 +65,10 @@ window.VencordNative = { }, quickCss: { - get: () => DataStore.get("VencordQuickCss").then(s => s ?? ""), + get: async () => await DataStore.get("VencordQuickCss") ?? "", set: async (css: string) => { await DataStore.set("VencordQuickCss", css); - cssListeners.forEach(l => l(css)); + cssListeners.forEach(l => { l(css); }); }, addChangeListener(cb) { cssListeners.add(cb); @@ -109,5 +108,5 @@ window.VencordNative = { getSettingsDir: async () => "LocalStorage" }, - pluginHelpers: {} as any, + pluginHelpers: {}, }; diff --git a/browser/monaco.ts b/browser/monaco.ts index ead061d65..706d74bb7 100644 --- a/browser/monaco.ts +++ b/browser/monaco.ts @@ -6,7 +6,9 @@ import "./patch-worker"; +// @ts-expect-error import * as monaco from "monaco-editor/esm/vs/editor/editor.main.js"; +declare const monaco: typeof import("monaco-editor"); declare global { const baseUrl: string; diff --git a/eslint.config.mjs b/eslint.config.mjs index 54f53f745..6036a7373 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,126 +1,221 @@ -/* - * Vencord, a Discord client mod - * Copyright (c) 2023 Vendicated and contributors - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -// @ts-check - import stylistic from "@stylistic/eslint-plugin"; +// @ts-expect-error: No types import pathAlias from "eslint-plugin-path-alias"; -import header from "eslint-plugin-simple-header"; +// @ts-expect-error: https://github.com/jsx-eslint/eslint-plugin-react/issues/3776 +import eslintPluginReact from "eslint-plugin-react"; +import simpleHeader from "eslint-plugin-simple-header"; import simpleImportSort from "eslint-plugin-simple-import-sort"; import unusedImports from "eslint-plugin-unused-imports"; import tseslint from "typescript-eslint"; export default tseslint.config( - { ignores: ["dist", "browser", "packages/vencord-types"] }, + { ignores: ["browser", "dist", "packages", "src/**/*.?(c|m)js?(x)", "*.*"] }, { - files: ["src/**/*.{tsx,ts,mts,mjs,js,jsx}", "eslint.config.mjs"], - plugins: { - "simple-header": header, - "@stylistic": stylistic, - "@typescript-eslint": tseslint.plugin, - "simple-import-sort": simpleImportSort, - "unused-imports": unusedImports, - "path-alias": pathAlias, - }, - settings: { - "import/resolver": { - map: [ - ["@webpack", "./src/webpack"], - ["@webpack/common", "./src/webpack/common"], - ["@utils", "./src/utils"], - ["@api", "./src/api"], - ["@components", "./src/components"] - ] - } - }, + files: ["**/*.?(c|m)[jt]s?(x)"], languageOptions: { parser: tseslint.parser, parserOptions: { - project: ["./tsconfig.json"], - tsconfigRootDir: import.meta.dirname + projectService: true, + warnOnUnsupportedTypeScriptVersion: false } }, + plugins: { + // @ts-expect-error: https://github.com/eslint-stylistic/eslint-stylistic/issues/398#issuecomment-2178212946 + "@stylistic": stylistic, + "@typescript-eslint": tseslint.plugin, + "path-alias": pathAlias, + "react": eslintPluginReact, + "simple-header": simpleHeader, + "simple-import-sort": simpleImportSort, + "unused-imports": unusedImports, + }, + settings: { + react: { version: "18.2" }, + }, rules: { - /* - * Since it's only been a month and Vencord has already been stolen - * by random skids who rebranded it to "AlphaCord" and erased all license - * information - */ - "simple-header/header": [ - "error", - { - "files": ["scripts/header-new.txt", "scripts/header-old.txt"], - "templates": { "author": [".*", "Vendicated and contributors"] } - } - ], - - // Style Rules - "@stylistic/jsx-quotes": ["error", "prefer-double"], - "@stylistic/quotes": ["error", "double", { "avoidEscape": true }], - "@stylistic/no-mixed-spaces-and-tabs": "error", + // Since it's only been a month and Vencord has already been stolen + // by random skids who rebranded it to "AlphaCord" and erased all license + // information + "simple-header/header": ["error", { + files: ["scripts/header-new.txt", "scripts/header-old.txt"], + templates: { author: [".*", "Vendicated and contributors"] } + }], + "@stylistic/array-bracket-spacing": "error", "@stylistic/arrow-parens": ["error", "as-needed"], - "@stylistic/eol-last": ["error", "always"], - "@stylistic/no-multi-spaces": "error", + "@stylistic/arrow-spacing": "error", + "@stylistic/block-spacing": "error", + "@stylistic/brace-style": ["error", "1tbs", { allowSingleLine: true }], + "@stylistic/comma-spacing": "error", + "@stylistic/comma-style": "error", + "@stylistic/computed-property-spacing": "error", + "@stylistic/dot-location": ["error", "property"], + "@stylistic/eol-last": "error", + "@stylistic/func-call-spacing": "error", + "@stylistic/generator-star-spacing": ["error", { before: false, after: true }], + "@stylistic/indent": ["error", 4, { + SwitchCase: 1, + flatTernaryExpressions: true + }], + "@stylistic/jsx-closing-bracket-location": "error", + "@stylistic/jsx-closing-tag-location": "error", + "@stylistic/jsx-curly-brace-presence": ["error", { propElementValues: "always" }], + "@stylistic/jsx-curly-spacing": ["error", { children: true }], + "@stylistic/jsx-equals-spacing": "error", + "@stylistic/jsx-first-prop-new-line": ["error", "multiline"], + "@stylistic/jsx-quotes": "error", + "@stylistic/jsx-self-closing-comp": "error", + "@stylistic/jsx-tag-spacing": ["error", { beforeClosing: "never" }], + "@stylistic/jsx-wrap-multilines": ["error", { + declaration: "parens-new-line", + assignment: "parens-new-line", + return: "parens-new-line", + arrow: "parens-new-line", + condition: "parens-new-line", + logical: "parens-new-line", + propertyValue: "parens-new-line" + }], + "@stylistic/key-spacing": "error", + "@stylistic/keyword-spacing": "error", + "@stylistic/linebreak-style": "error", + "@stylistic/member-delimiter-style": ["error", { singleline: { requireLast: true } }], + "@stylistic/new-parens": "error", + "@stylistic/no-extra-semi": "error", + "@stylistic/no-floating-decimal": "error", + "@stylistic/no-multi-spaces": ["error", { exceptions: { Property: false } }], + "@stylistic/no-tabs": "error", "@stylistic/no-trailing-spaces": "error", "@stylistic/no-whitespace-before-property": "error", - "@stylistic/semi": ["error", "always"], - "@stylistic/semi-style": ["error", "last"], - "@stylistic/space-in-parens": ["error", "never"], - "@stylistic/block-spacing": ["error", "always"], "@stylistic/object-curly-spacing": ["error", "always"], - "@stylistic/spaced-comment": ["error", "always", { "markers": ["!"] }], - "@stylistic/no-extra-semi": "error", - - // TS Rules - "@stylistic/func-call-spacing": ["error", "never"], - - // ESLint Rules - "yoda": "error", - "eqeqeq": ["error", "always", { "null": "ignore" }], - "prefer-destructuring": ["error", { - "VariableDeclarator": { "array": false, "object": true }, - "AssignmentExpression": { "array": false, "object": false } + "@stylistic/padded-blocks": ["error", "never"], + "@stylistic/quotes": ["error", "double", { avoidEscape: true }], + "@stylistic/rest-spread-spacing": "error", + "@stylistic/semi": "error", + "@stylistic/semi-spacing": "error", + "@stylistic/semi-style": "error", + "@stylistic/space-before-blocks": "error", + "@stylistic/space-before-function-paren": ["error", { named: "never" }], + "@stylistic/space-in-parens": "error", + "@stylistic/space-infix-ops": "error", + "@stylistic/space-unary-ops": "error", + "@stylistic/spaced-comment": ["error", "always", { markers: ["!"] }], + "@stylistic/switch-colon-spacing": "error", + "@stylistic/template-curly-spacing": "error", + "@stylistic/template-tag-spacing": "error", + "@stylistic/type-annotation-spacing": "error", + "@stylistic/type-generic-spacing": "error", + "@stylistic/type-named-tuple-spacing": "error", + "@stylistic/yield-star-spacing": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/consistent-generic-constructors": "error", + "@typescript-eslint/consistent-type-assertions": ["error", { + assertionStyle: "as", + objectLiteralTypeAssertions: "allow-as-parameter" }], - "operator-assignment": ["error", "always"], - "no-useless-computed-key": "error", - "no-unneeded-ternary": ["error", { "defaultAssignment": false }], - "no-invalid-regexp": "error", - "no-constant-condition": ["error", { "checkLoops": false }], - "no-duplicate-imports": "error", - "dot-notation": "error", - "no-useless-escape": [ - "error", - { - "extra": "i" - } - ], - "no-fallthrough": "error", + "@typescript-eslint/consistent-type-exports": ["error", { + fixMixedExportsWithInlineTypeSpecifier: true + }], + "@typescript-eslint/consistent-type-imports": ["error", { + disallowTypeAnnotations: false, + fixStyle: "inline-type-imports" + }], + "@typescript-eslint/dot-notation": "error", + "@typescript-eslint/method-signature-style": "error", + "@typescript-eslint/no-confusing-void-expression": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-import-type-side-effects": "error", + "@typescript-eslint/no-misused-promises": ["error", { checksVoidReturn: false }], + "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-unnecessary-condition": ["error", { allowConstantLoopConditions: true }], + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unnecessary-type-parameters": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unused-expressions": ["error", { enforceForJSX: true }], + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/non-nullable-type-assertion-style": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-destructuring": "error", + "@typescript-eslint/prefer-find": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-reduce-type-parameter": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/return-await": "error", + "eqeqeq": ["error", "always", { null: "ignore" }], "for-direction": "error", + "no-array-constructor": "error", "no-async-promise-executor": "error", "no-cond-assign": "error", "no-dupe-else-if": "error", "no-duplicate-case": "error", + "no-duplicate-imports": "error", + "no-eval": ["error", { allowIndirect: true }], + "no-extra-boolean-cast": "error", + "no-extra-label": "error", + "no-fallthrough": "error", + "no-invalid-regexp": "error", "no-irregular-whitespace": "error", + "no-lone-blocks": "error", + "no-lonely-if": "error", "no-loss-of-precision": "error", "no-misleading-character-class": "error", + "no-new-wrappers": "error", + "no-object-constructor": "error", "no-prototype-builtins": "error", "no-regex-spaces": "error", + "no-restricted-globals": ["error", "_", "Diff", "JSX", "React", "ReactDOM"], + "no-restricted-imports": ["error", { + patterns: [{ + regex: "^discord-types(/|$)", + message: "Use @vencord/discord-types instead." + }] + }], + "no-restricted-syntax": ["error", + "SequenceExpression:not(.update):matches(:not(.callee), [expressions.length!=2])", + "SequenceExpression:not(.update) > :first-child:not(Literal)", + ], "no-shadow-restricted-names": "error", + "no-undef-init": "error", "no-unexpected-multiline": "error", - "no-unsafe-optional-chaining": "error", + "no-unneeded-ternary": ["error", { defaultAssignment: false }], + "no-unreachable": "error", + "no-unreachable-loop": "error", + "no-unused-labels": "error", "no-useless-backreference": "error", - "use-isnan": "error", + "no-useless-catch": "error", + "no-useless-computed-key": "error", + "no-useless-escape": ["error", { extra: "i" }], + "no-useless-rename": "error", + "no-void": "error", + "operator-assignment": "error", + "path-alias/no-relative": "error", "prefer-const": "error", + "prefer-numeric-literals": "error", + "prefer-object-spread": "error", + "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }], "prefer-spread": "error", - - // Plugin Rules - "simple-import-sort/imports": "error", + "react/forbid-dom-props": ["error", { + forbid: ["version", "xlinkActuate", "xlinkArcrole", "xlinkHref", "xlinkRole", "xlinkShow", "xlinkTitle", "xlinkType", "xmlBase", "xmlLang", "xmlns", "xmlnsXlink", "xmlSpace"] + }], + "react/jsx-fragments": "error", + "react/jsx-no-useless-fragment": "error", "simple-import-sort/exports": "error", + "simple-import-sort/imports": "error", "unused-imports/no-unused-imports": "error", - "path-alias/no-relative": "error" + "use-isnan": "error", + "yoda": "error", } - } + }, + // Declarations are not emitted for '.d.ts' files: https://github.com/microsoft/TypeScript/issues/38146 + { + files: ["src/webpack/common/types/**"], + rules: { + "no-restricted-syntax": ["error", { + selector: ":expression:not([declare=true] *, [type=/^TS/] *, ExportAllDeclaration *, ExportNamedDeclaration *, ImportDeclaration *)", + message: "This file is intended to contain only types." + }], + } + }, ); diff --git a/package.json b/package.json index e65e1b0a7..336b3b6ca 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,16 @@ "watch": "pnpm build --watch", "dev": "pnpm watch", "watchWeb": "pnpm buildWeb --watch", - "generatePluginJson": "tsx scripts/generatePluginList.ts", + "generatePluginJson": "tsx scripts/generatePluginList.mts", "generateTypes": "tspc --emitDeclarationOnly --declaration --outDir packages/vencord-types", "inject": "node scripts/runInstaller.mjs", "uninject": "node scripts/runInstaller.mjs", - "lint": "eslint", + "lint": "eslint . --ignore-pattern src/userplugins", "lint-styles": "stylelint \"src/**/*.css\" --ignore-pattern src/userplugins", "lint:fix": "pnpm lint --fix", "test": "pnpm buildStandalone && pnpm lint && pnpm lint-styles && pnpm testTsc && pnpm generatePluginJson", "testWeb": "pnpm lint && pnpm buildWeb && pnpm testTsc", - "testTsc": "tsc --noEmit" + "testTsc": "tsc --noEmit --emitDeclarationOnly false" }, "dependencies": { "@sapphi-red/web-noise-suppressor": "0.3.5", @@ -40,61 +40,92 @@ "@vap/shiki": "0.10.5", "fflate": "^0.8.2", "gifenc": "github:mattdesl/gifenc#64842fca317b112a8590f8fef2bf3825da8f6fe3", - "monaco-editor": "^0.50.0", - "nanoid": "^5.0.7", - "virtual-merge": "^1.0.1" + "monaco-editor": "^0.51.0", + "nanoid": "^5.0.7" }, "devDependencies": { - "@stylistic/eslint-plugin": "^2.6.1", - "@types/chrome": "^0.0.269", - "@types/diff": "^5.2.1", - "@types/lodash": "^4.17.7", - "@types/node": "^22.0.3", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", + "@stylistic/eslint-plugin": "^2.8.0", + "@stylistic/stylelint-config": "^2.0.0", + "@stylistic/stylelint-plugin": "^3.0.1", + "@types/chrome": "^0.0.271", + "@types/diff": "^5.2.2", + "@types/html-minifier-terser": "^7.0.2", + "@types/lodash": "~4.17.7", + "@types/node": "^18.19.50", + "@types/react": "~18.2.79", + "@types/react-dom": "~18.2.25", "@types/yazl": "^2.4.5", - "diff": "^5.2.0", - "discord-types": "^1.3.26", - "esbuild": "^0.15.18", - "eslint": "^9.8.0", - "eslint-import-resolver-alias": "^1.1.2", - "eslint-plugin-path-alias": "2.1.0", - "eslint-plugin-simple-header": "^1.1.1", + "@vencord/discord-types": "workspace:^", + "diff": "^7.0.0", + "discord-types": "latest", + "esbuild": "^0.23.1", + "eslint": "^9.10.0", + "eslint-plugin-path-alias": "^2.1.0", + "eslint-plugin-react": "^7.36.1", + "eslint-plugin-simple-header": "^1.2.1", "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-unused-imports": "^4.0.1", - "highlight.js": "10.7.3", + "eslint-plugin-unused-imports": "^4.1.4", + "highlight.js": "11.8.0", "html-minifier-terser": "^7.2.0", - "moment": "^2.30.1", - "puppeteer-core": "^22.15.0", + "moment": "2.22.2", + "puppeteer-core": "^23.4.0", "standalone-electron-types": "^1.0.0", - "stylelint": "^16.8.1", + "stylelint": "^16.9.0", "stylelint-config-standard": "^36.0.1", "ts-patch": "^3.2.1", - "ts-pattern": "^5.3.1", - "tsx": "^4.16.5", - "type-fest": "^4.23.0", - "typescript": "^5.5.4", - "typescript-eslint": "^8.0.0", - "typescript-transform-paths": "^3.4.7", + "ts-pattern": "5.0.4", + "tsx": "^4.19.1", + "type-fest": "^4.26.1", + "typescript": "^5.6.2", + "typescript-eslint": "^8.6.0", + "typescript-transform-paths": "^3.5.1", "zip-local": "^0.3.5" }, - "packageManager": "pnpm@9.1.0", + "packageManager": "pnpm@9.10.0", "pnpm": { "patchedDependencies": { - "eslint@9.8.0": "patches/eslint@9.8.0.patch", - "eslint-plugin-path-alias@2.1.0": "patches/eslint-plugin-path-alias@2.1.0.patch" + "@stylistic/eslint-plugin@2.8.0": "patches/@stylistic__eslint-plugin@2.8.0.patch", + "@typescript-eslint/eslint-plugin@8.6.0": "patches/@typescript-eslint__eslint-plugin@8.6.0.patch", + "eslint-plugin-path-alias@2.1.0": "patches/eslint-plugin-path-alias@2.1.0.patch", + "eslint@9.10.0": "patches/eslint@9.10.0.patch", + "standalone-electron-types@1.0.0": "patches/standalone-electron-types@1.0.0.patch", + "typescript-transform-paths@3.5.1": "patches/typescript-transform-paths@3.5.1.patch" + }, + "packageExtensions": { + "eslint": { + "dependencies": { + "@types/estree": "^1.0.5", + "@types/json-schema": "^7.0.15" + } + } }, "peerDependencyRules": { - "ignoreMissing": [ - "eslint-plugin-import", - "eslint" - ] + "allowedVersions": { + "eslint": "9" + } }, "allowedDeprecatedVersions": { "source-map-resolve": "*", "resolve-url": "*", "source-map-url": "*", "urix": "*" + }, + "overrides": { + "array-includes": "npm:@nolyfill/array-includes@^1", + "array.prototype.findlast": "npm:@nolyfill/array.prototype.findlast@^1", + "array.prototype.flat": "npm:@nolyfill/array.prototype.flat@^1", + "array.prototype.flatmap": "npm:@nolyfill/array.prototype.flatmap@^1", + "array.prototype.tosorted": "npm:@nolyfill/array.prototype.tosorted@^1", + "es-iterator-helpers": "npm:@nolyfill/es-iterator-helpers@^1", + "hasown": "npm:@nolyfill/hasown@^1", + "is-core-module": "npm:@nolyfill/is-core-module@^1", + "isarray": "npm:@nolyfill/isarray@^1", + "object.assign": "npm:@nolyfill/object.assign@^1", + "object.entries": "npm:@nolyfill/object.entries@^1", + "object.fromentries": "npm:@nolyfill/object.fromentries@^1", + "object.values": "npm:@nolyfill/object.values@^1", + "string.prototype.matchall": "npm:@nolyfill/string.prototype.matchall@^1", + "string.prototype.repeat": "npm:@nolyfill/string.prototype.repeat@^1" } }, "webExt": { diff --git a/packages/discord-types/LICENSE b/packages/discord-types/LICENSE new file mode 100644 index 000000000..f288702d2 --- /dev/null +++ b/packages/discord-types/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/packages/discord-types/README.md b/packages/discord-types/README.md new file mode 100644 index 000000000..9cc145bb1 --- /dev/null +++ b/packages/discord-types/README.md @@ -0,0 +1 @@ +discord-types diff --git a/packages/discord-types/eslint.config.mjs b/packages/discord-types/eslint.config.mjs new file mode 100644 index 000000000..911322fa3 --- /dev/null +++ b/packages/discord-types/eslint.config.mjs @@ -0,0 +1,257 @@ +import stylistic from "@stylistic/eslint-plugin"; +// @ts-expect-error: No types +import checkFile from "eslint-plugin-check-file"; +import eslintPluginImport from "eslint-plugin-import-x"; +import simpleHeader from "eslint-plugin-simple-header"; +import simpleImportSort from "eslint-plugin-simple-import-sort"; +import eslintPluginUnicorn from "eslint-plugin-unicorn"; +import unusedImports from "eslint-plugin-unused-imports"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { + files: ["**/*.?(c|m)[jt]s?(x)"], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + projectService: true, + warnOnUnsupportedTypeScriptVersion: false + } + }, + plugins: { + // @ts-expect-error: https://github.com/eslint-stylistic/eslint-stylistic/issues/398#issuecomment-2178212946 + "@stylistic": stylistic, + "@typescript-eslint": tseslint.plugin, + "check-file": checkFile, + import: eslintPluginImport, + "simple-header": simpleHeader, + "simple-import-sort": simpleImportSort, + unicorn: eslintPluginUnicorn, + "unused-imports": unusedImports, + }, + rules: { + "@stylistic/array-bracket-newline": ["error", "consistent"], + "@stylistic/array-bracket-spacing": "error", + "@stylistic/array-element-newline": ["error", "consistent"], + "@stylistic/arrow-parens": ["error", "as-needed"], + "@stylistic/block-spacing": "error", + "@stylistic/brace-style": ["error", "1tbs", { allowSingleLine: true }], + "@stylistic/comma-dangle": ["error", "only-multiline"], + "@stylistic/comma-spacing": "error", + "@stylistic/comma-style": "error", + "@stylistic/computed-property-spacing": "error", + "@stylistic/dot-location": ["error", "property"], + "@stylistic/eol-last": "error", + "@stylistic/function-call-argument-newline": ["error", "consistent"], + "@stylistic/function-call-spacing": "error", + "@stylistic/function-paren-newline": ["error", "consistent"], + "@stylistic/indent": ["error", 4, { + SwitchCase: 1, + flatTernaryExpressions: true + }], + "@stylistic/key-spacing": "error", + "@stylistic/keyword-spacing": "error", + "@stylistic/linebreak-style": "error", + "@stylistic/member-delimiter-style": ["error", { singleline: { requireLast: true } }], + "@stylistic/new-parens": "error", + "@stylistic/no-extra-semi": "error", + "@stylistic/no-floating-decimal": "error", + "@stylistic/no-multi-spaces": ["error", { exceptions: { Property: false } }], + "@stylistic/no-multiple-empty-lines": ["error", { max: 1, maxBOF: 0, maxEOF: 0 }], + "@stylistic/no-trailing-spaces": "error", + "@stylistic/no-whitespace-before-property": "error", + "@stylistic/object-curly-newline": "error", + "@stylistic/object-curly-spacing": ["error", "always"], + "@stylistic/quote-props": ["error", "as-needed"], + "@stylistic/quotes": ["error", "double", { avoidEscape: true }], + "@stylistic/rest-spread-spacing": "error", + "@stylistic/semi": "error", + "@stylistic/semi-spacing": "error", + "@stylistic/semi-style": "error", + "@stylistic/space-before-blocks": "error", + "@stylistic/space-before-function-paren": ["error", { named: "never" }], + "@stylistic/space-in-parens": "error", + "@stylistic/space-infix-ops": "error", + "@stylistic/space-unary-ops": "error", + "@stylistic/spaced-comment": "error", + "@stylistic/switch-colon-spacing": "error", + "@stylistic/template-curly-spacing": "error", + "@stylistic/template-tag-spacing": "error", + "@stylistic/type-annotation-spacing": "error", + "@stylistic/type-generic-spacing": "error", + "@stylistic/type-named-tuple-spacing": "error", + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": "error", + "@typescript-eslint/class-literal-property-style": "error", + "@typescript-eslint/consistent-generic-constructors": "error", + "@typescript-eslint/consistent-type-assertions": ["error", { + assertionStyle: "as", + objectLiteralTypeAssertions: "allow-as-parameter" + }], + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/consistent-type-exports": ["error", { fixMixedExportsWithInlineTypeSpecifier: true }], + "@typescript-eslint/consistent-type-imports": ["error", { fixStyle: "inline-type-imports" }], + "@typescript-eslint/dot-notation": "error", + "@typescript-eslint/method-signature-style": "error", + "@typescript-eslint/naming-convention": ["error", { + selector: "typeLike", + format: ["PascalCase"] + }], + "@typescript-eslint/no-confusing-void-expression": "error", + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-import-type-side-effects": "error", + "@typescript-eslint/no-invalid-void-type": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-misused-promises": ["error", { checksVoidReturn: false }], + "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-unnecessary-condition": ["error", { allowConstantLoopConditions: true }], + "@typescript-eslint/no-unnecessary-qualifier": "error", + "@typescript-eslint/no-unnecessary-type-arguments": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-useless-empty-export": "error", + "@typescript-eslint/non-nullable-type-assertion-style": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-find": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-reduce-type-parameter": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/return-await": "error", + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/unified-signatures": ["error", { ignoreDifferentlyNamedParameters: true }], + "check-file/filename-naming-convention": ["error", { "**/*": "+([.0-9A-Za-z])" }], + "check-file/folder-naming-convention": ["error", { "**/": "CAMEL_CASE" }], + "import/first": "error", + // https://github.com/import-js/eslint-plugin-import/issues/2913 + // "import/newline-after-import": ["error", { considerComments: true }], + "import/no-absolute-path": "error", + "import/no-duplicates": "error", + "import/no-empty-named-blocks": "error", + "import/no-extraneous-dependencies": ["error", { includeTypes: true }], + "import/no-relative-packages": "error", + "import/no-self-import": "error", + "import/no-unassigned-import": "error", + "import/no-useless-path-segments": "error", + "no-useless-computed-key": "error", + "simple-import-sort/exports": "error", + "simple-import-sort/imports": ["error", { groups: [["^[^.]"]] }], + "unicorn/escape-case": "error", + "unicorn/no-hex-escape": "error", + "unicorn/no-zero-fractions": "error", + "unicorn/number-literal-case": "error", + "unicorn/prefer-export-from": ["error", { ignoreUsedVariables: true }], + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": ["error", { + args: "all", + argsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + varsIgnorePattern: "^_" + }], + } + }, + { + files: ["**/*"], + ignores: ["src/**"], + rules: { + "@typescript-eslint/no-unnecessary-type-parameters": "error", + "simple-import-sort/imports": ["error", { + groups: [ + ["^((node:)?(assert(/strict)?|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|diagnostics_channel|dns(/promises)?|domain|events|fs(/promises)?|http|http2|https|module|net|os|path(/(posix|win32))?|perf_hooks|process|punycode|querystring|readline(/promises)?|repl|stream(/(consumers|promises|web))?|string_decoder|timers(/promises)?|tls|trace_events|tty|url|util(/types)?|v8|vm|wasi|worker_threads|zlib)|node:test(/reporters)?)$"], + ["^[^.]"] + ] + }], + "unicorn/prefer-node-protocol": "error", + } + }, + { + files: ["scripts/**", "src/**"], + rules: { + "simple-header/header": ["error", { + text: [ + "discord-types", + "Copyright (C) {year} Vencord project contributors", + "SPDX-License-Identifier: GPL-3.0-or-later" + ], + templates: { + year: ["\\d+(-\\d+)?(, \\d+(-\\d+)?)*", `${new Date().getFullYear()}`] + } + }], + } + }, + { + files: ["src/**"], + rules: { + "@typescript-eslint/ban-ts-comment": ["error", { "ts-expect-error": true }], + "@typescript-eslint/member-ordering": ["error", { + default: { + memberTypes: [ + "call-signature", + "constructor", + ["static-accessor", "static-field", "static-get", "static-method", "static-set"], + ["accessor", "get", "method", "set"], + "signature", + "field" + ], + order: "alphabetically-case-insensitive" + } + }], + "@typescript-eslint/prefer-enum-initializers": "error", + // Disallow .d.ts files so that package consumers can use exported enums + "check-file/filename-blocklist": ["error", { "!**/!(*.d).ts": "!(*.d).ts" }], + "import/extensions": "error", + // Does not work with ESLint 9 + // "import/no-default-export": "error", + "import/no-extraneous-dependencies": ["error", { + devDependencies: false, + includeTypes: true + }], + "import/no-unassigned-import": "error", + "no-restricted-globals": ["error", "_", "IntlMessageFormat", "JSX", "NodeJS", "React", "SimpleMarkdown"], + "no-restricted-syntax": [ + "error", + `:expression:not(${[ + // Allow ambient classes + "[declare=true] *", + // Allow enums, interfaces, and type aliases + "[type=/^TS/] *", + // Allow re-exporting of all named exports + "ExportAllDeclaration *", + // Allow imports + "ImportDeclaration *", + ].join(", ")})`, + // Prefer naming function parameters instead of destructuring them + ":matches(ArrayPattern, ObjectPattern).params", + // Prefer getters and setters + "[type=/^(TSAbstract)?AccessorProperty$/]", + // Disallow default exports + "ExportDefaultDeclaration", + // Disallow redundant constructor definitions + "ClassDeclaration[superClass=null] MethodDefinition[kind=constructor][value.params.length=0]", + // Disallow enums that are const or ambient since package consumers cannot use them + "TSEnumDeclaration:matches([const=true], [declare=true])", + // Disallow variance annotations + "TSTypeParameter:matches([in=true], [out=true])", + ], + "unicorn/numeric-separators-style": ["error", { number: { minimumDigits: 0 } }], + } + }, + { + // https://github.com/import-js/eslint-plugin-import/issues/2414 + files: ["src/**"], + ignores: ["src/**/index.ts"], + rules: { + "import/no-unused-modules": ["error", { missingExports: true }], + } + }, +); diff --git a/packages/discord-types/package.json b/packages/discord-types/package.json new file mode 100644 index 000000000..29c2c5697 --- /dev/null +++ b/packages/discord-types/package.json @@ -0,0 +1,50 @@ +{ + "name": "@vencord/discord-types", + "version": "1.0.0", + "description": "", + "license": "GPL-3.0-or-later", + "author": "Vencord", + "repository": { + "type": "git", + "url": "https://github.com/Vendicated/Vencord.git", + "directory": "packages/discord-types" + }, + "main": "./src/index.ts", + "files": ["src/**/!(tsconfig?(.*).json)"], + "scripts": { + "change-reporter": "tsx ./scripts/changeReporter/index.mts", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "tsc --noEmit && eslint .", + "test-ts": "tsc --noEmit" + }, + "sideEffects": false, + "dependencies": { + "@types/events": "~3.0.3", + "@types/intl-messageformat": "~1.3.1", + "@types/lodash": "~4.17.7", + "@types/react": "~18.2.79", + "dependency-graph": "0.9.0", + "moment": "2.22.2", + "simple-markdown": "0.7.2" + }, + "devDependencies": { + "@stylistic/eslint-plugin": "^2.8.0", + "@types/node": "^20.16.5", + "@types/semver": "^7.5.8", + "@typescript-eslint/typescript-estree": "^8.6.0", + "eslint": "^9.10.0", + "eslint-plugin-check-file": "^2.8.0", + "eslint-plugin-import-x": "^4.2.1", + "eslint-plugin-simple-header": "^1.2.1", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unicorn": "^55.0.0", + "eslint-plugin-unused-imports": "^4.1.4", + "puppeteer-core": "^23.4.0", + "semver": "^7.6.3", + "tsx": "^4.19.1", + "type-fest": "^4.26.1", + "typescript": "^5.6.2", + "typescript-eslint": "^8.6.0" + } +} diff --git a/packages/discord-types/scripts/changeReporter/config.mts b/packages/discord-types/scripts/changeReporter/config.mts new file mode 100644 index 000000000..56faf3413 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/config.mts @@ -0,0 +1,774 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { join } from "node:path"; + +import type { CR } from "./types.mts"; + +export default { + rootDir: join(import.meta.dirname, "../../src"), + deps: { + "../package.json": { + "@types/lodash": { + find() { + return this.Webpack.Common.lodash.VERSION; + }, + overrides: [["4.17.x", "4.17.x"]], + }, + "@types/react": { + find() { + return this.Webpack.Common.React.version; + }, + overrides: [["18.2.x", "18.2.x"]], + }, + moment: { + find() { + return this.Webpack.Common.moment.version; + }, + }, + }, + }, + src: { + "./flux/ActionHandlersGraph.ts": { + ActionHandlersGraph: { + type: "class", + }, + }, + "./flux/ActionLog.ts": { + ActionLog: { + type: "class", + find() { + return this.Webpack.Common.FluxDispatcher.actionLogger.log( + { type: Math.random().toString() as any }, + () => {} + ).constructor; + }, + }, + }, + "./flux/ActionLogger.ts": { + ActionLogger: { + type: "class", + }, + }, + "./flux/BatchedStoreListener.ts": { + BatchedStoreListener: { + type: "class", + }, + }, + "./flux/ChangeListeners.ts": { + ChangeListeners: { + type: "class", + }, + }, + "./flux/Dispatcher.ts": { + Dispatcher: { + type: "class", + }, + DispatchBand: { + type: "enum", + // Screaming snake case to pascal case (source enum's keys have no underscores) + keyMapper: key => key.replace(/(?<=^.).+/, s => s.toLowerCase()), + }, + SeverityLevel: { + type: "enum", + }, + }, + "./flux/Emitter.ts": { + Emitter: { + type: "class", + }, + }, + "./flux/PersistedStore.ts": { + PersistedStore: { + type: "class", + ignoredAdditions: { + // Overrides + staticMethodsAndFields: ["destroy"], + methods: ["initializeIfNeeded"], + }, + }, + }, + "./flux/SnapshotStore.ts": { + SnapshotStore: { + type: "class", + ignoredRemovals: { + // Exists on type to enforce that subclasses have `displayName` + staticMethodsAndFields: ["displayName"], + }, + }, + }, + "./flux/Store.ts": { + Store: { + type: "class", + }, + }, + "./flux/UserAgnosticStore.ts": { + UserAgnosticStore: { + type: "class", + find() { + return Object.getPrototypeOf(this.Webpack.Common.Flux.DeviceSettingsStore); + }, + ignoredAdditions: { + // Overrides + methods: ["initializeFromState", "initializeIfNeeded", "getState"], + }, + }, + }, + "./general/channels/ChannelRecord.ts": { + ChannelRecordBase: { + type: "class", + }, + ChannelRecordProperties: { + type: "class", + find() { + const { findByCode } = this.Webpack; + const constructor = findByCode("}isGroupDM(") ?? findByCode("{isGroupDM("); + return constructor && Object.getPrototypeOf(constructor); + }, + includeOptional: true, + ignoredRemovals: { + // Seems to have been removed + fields: ["voiceBackgroundDisplay"], + }, + }, + ForumLayout: { + type: "enum", + }, + ThreadSortOrder: { + type: "enum", + }, + ChannelFlags: { + type: "enum", + }, + ThreadMemberFlags: { + type: "enum", + }, + SafetyWarningType: { + type: "enum", + find() { + let key: string; + return new Promise(res => { + this.Webpack.waitFor(exps => { + for (const k in exps) { + try { + if (typeof exps[k]?.STRANGER_DANGER === "number") { + key = k; + return true; + } + } catch {} + } + return false; + }, exps => { res(exps[key]); }); + }); + }, + }, + ChannelType: { + type: "enum", + }, + VideoQualityMode: { + type: "enum", + }, + /* + // This seems to have been removed + VoiceCallBackgroundType: { + type: "enum", + }, + */ + }, + "./general/channels/ForumChannelRecord.ts": { + ForumChannelRecord: { + type: "class", + find() { + const castChannelRecord = this.Webpack.findByCode(".GUILD_TEXT]", "return("); + return castChannelRecord({ type: /* GUILD_FORUM */ 15 }).constructor; + }, + ignoredRemovals: { + fields: true, + }, + }, + }, + "./general/channels/GuildTextualChannelRecord.ts": { + GuildTextualChannelRecordBase: { + type: "class", + find() { + const castChannelRecord = this.Webpack.findByCode(".GUILD_TEXT]", "return("); + return Object.getPrototypeOf(castChannelRecord({ type: /* GUILD_TEXT */ 0 }).constructor); + }, + ignoredRemovals: { + fields: true, + }, + }, + }, + "./general/channels/GuildVocalChannelRecord.ts": { + GuildVocalChannelRecordBase: { + type: "class", + find() { + const castChannelRecord = this.Webpack.findByCode(".GUILD_TEXT]", "return("); + return Object.getPrototypeOf(castChannelRecord({ type: /* GUILD_VOICE */ 2 }).constructor); + }, + ignoredRemovals: { + fields: true, + }, + }, + }, + "./general/channels/PrivateChannelRecord.ts": { + PrivateChannelRecordBase: { + type: "class", + find() { + const castChannelRecord = this.Webpack.findByCode(".GUILD_TEXT]", "return("); + return Object.getPrototypeOf(castChannelRecord({ type: /* GROUP_DM */ 3 }).constructor); + }, + ignoredAdditions: { + // Overrides + methods: ["isSystemDM"], + }, + ignoredRemovals: { + fields: true, + }, + }, + }, + "./general/channels/ThreadChannelRecord.ts": { + ThreadChannelRecord: { + type: "class", + find() { + const castChannelRecord = this.Webpack.findByCode(".GUILD_TEXT]", "return("); + return castChannelRecord({ type: /* PUBLIC_THREAD */ 11 }).constructor; + }, + ignoredRemovals: { + fields: true, + }, + }, + }, + "./general/channels/UnknownChannelRecord.ts": { + UnknownChannelRecord: { + type: "class", + find() { + return this.Webpack.findByCode(".UNKNOWN", "static fromServer("); + }, + ignoredRemovals: { + fields: true, + }, + }, + }, + "./general/emojis/Emoji.ts": { + UnicodeEmoji: { + type: "class", + }, + EmojiType: { + type: "enum", + }, + }, + "./general/emojis/EmojiDisambiguations.ts": { + EmojiDisambiguations: { + type: "class", + find() { + return this.Webpack.Common.EmojiStore.getDisambiguatedEmojiContext().constructor; + }, + }, + }, + "./general/emojis/GuildEmojis.ts": { + GuildEmojis: { + type: "class", + async find() { + const { Common } = this.Webpack; + let values = Object.values(Common.EmojiStore.getGuilds()); + if (values.length <= 0) + await new Promise(res => { + Common.EmojiStore.addConditionalChangeListener(() => { + values = Object.values(Common.EmojiStore.getGuilds()); + if (values.length > 0) { + res(); + return false; + } + }); + Common.InstantInviteActionCreators.acceptInvite({ + inviteKey: "discord-townhall" + }).catch(() => {}); + }); + return values[0]?.constructor; + }, + }, + }, + "./general/messages/ChannelMessages.ts": { + ChannelMessages: { + type: "class", + }, + JumpType: { + type: "enum", + }, + }, + "./general/messages/InteractionRecord.ts": { + InteractionRecord: { + type: "class", + }, + InteractionType: { + type: "enum", + // From the API documentation + ignoredRemovals: [["PING"]], + }, + }, + "./general/messages/MessageCache.ts": { + MessageCache: { + type: "class", + find() { + return this.Webpack.Common.MessageStore.getMessages("")._after.constructor; + }, + }, + }, + "./general/messages/MessageRecord.ts": { + MessageRecord: { + type: "class", + }, + ActivityActionType: { + type: "enum", + // From the API documentation + ignoredRemovals: [["SPECTATE"]], + }, + MessageReferenceType: { + type: "enum", + }, + PollLayoutType: { + type: "enum", + }, + PurchaseNotificationType: { + type: "enum", + }, + ReactionType: { + type: "enum", + }, + MessageState: { + type: "enum", + }, + }, + "./general/messages/MessageSnapshotRecord.ts": { + MessageSnapshotRecord: { + type: "class", + }, + }, + "./general/messages/MinimalMessageRecord.ts": { + MinimalMessageRecord: { + type: "class", + }, + MessageAttachmentFlags: { + type: "enum", + }, + CodedLinkType: { + type: "enum", + }, + MessageButtonComponentStyle: { + type: "enum", + }, + MessageSelectComponentOptionType: { + type: "enum", + }, + MessageSelectComponentDefaultValueType: { + type: "enum", + find() { + let key: string; + return new Promise(res => { + this.Webpack.waitFor(exps => { + for (const k in exps) { + try { + if (exps[k]?.ROLE === "role") { + key = k; + return true; + } + } catch {} + } + return false; + }, exps => { res(exps[key]); }); + }); + }, + }, + MessageTextInputComponentStyle: { + type: "enum", + }, + ContentScanFlags: { + type: "enum", + }, + SeparatorSpacingSize: { + type: "enum", + }, + MessageComponentType: { + type: "enum", + }, + MessageEmbedFlags: { + type: "enum", + }, + MessageEmbedType: { + type: "enum", + }, + MessageFlags: { + type: "enum", + }, + StickerFormat: { + type: "enum", + }, + MetaStickerType: { + type: "enum" + }, + MessageType: { + type: "enum", + }, + }, + "./general/Activity.ts": { + ActivityFlags: { + type: "enum", + }, + ActivityGamePlatform: { + type: "enum", + }, + ActivityPlatform: { + type: "enum", + }, + ActivityType: { + type: "enum", + }, + }, + "./general/ApplicationCommand.ts": { + InteractionContextType: { + type: "enum", + }, + ApplicationCommandType: { + type: "enum", + }, + ApplicationCommandOptionType: { + type: "enum", + }, + }, + "./general/ApplicationRecord.ts": { + ApplicationRecord: { + type: "class", + }, + EmbeddedActivitySupportedPlatform: { + type: "enum", + }, + EmbeddedActivityLabelType: { + type: "enum", + }, + OrientationLockState: { + type: "enum", + }, + ApplicationIntegrationType: { + type: "enum", + }, + OAuth2Scope: { + type: "enum", + }, + ApplicationFlags: { + type: "enum", + }, + ApplicationOverlayMethodFlags: { + type: "enum", + }, + ApplicationType: { + type: "enum", + }, + }, + "./general/Clan.ts": { + ClanBadgeKind: { + type: "enum", + }, + ClanBannerKind: { + type: "enum", + }, + ClanPlaystyle: { + type: "enum", + }, + }, + "./general/CompanyRecord.ts": { + CompanyRecord: { + type: "class", + }, + }, + "./general/DisplayProfile.ts": { + DisplayProfile: { + type: "class", + }, + }, + "./general/Draft.ts": { + DraftType: { + type: "enum", + // Screaming snake case to pascal case + keyMapper: key => key.replaceAll( + /(?:^|_)(.)([^_]*)/g, + (_, first: string, rest: string) => first.toUpperCase() + rest.toLowerCase() + ), + }, + }, + "./general/Frecency.ts": { + Frecency: { + type: "class", + }, + }, + "./general/GuildMember.ts": { + GuildMemberFlags: { + type: "enum", + }, + }, + "./general/GuildRecord.ts": { + GuildRecord: { + type: "class", + ignoredAdditions: { + // Overrides + methods: ["merge", "toString"], + }, + }, + UserNotificationSetting: { + type: "enum", + }, + GuildExplicitContentFilterType: { + type: "enum", + }, + GuildFeature: { + type: "enum", + }, + /* + // Not exported; cannot be found + GuildHubType: { + type: "enum", + }, + */ + MFALevel: { + type: "enum", + }, + GuildNSFWContentLevel: { + type: "enum", + }, + BoostedGuildTier: { + type: "enum", + }, + SystemChannelFlags: { + type: "enum", + }, + VerificationLevel: { + type: "enum", + }, + }, + "./general/Permissions.ts": { + /* + // bigint enums are not yet possible: https://github.com/microsoft/TypeScript/issues/37783 + Permissions: { + type: "enum", + }, + */ + PermissionOverwriteType: { + type: "enum", + }, + }, + "./general/ReadState.ts": { + ReadState: { + type: "class", + async find() { + const { Common } = this.Webpack; + let me = Common.UserStore.getCurrentUser(); + if (!me) + await new Promise(res => { + Common.UserStore.addConditionalChangeListener(() => { + me = Common.UserStore.getCurrentUser(); + if (me) { + res(); + return false; + } + }); + }); + return Common.ReadStateStore.getNotifCenterReadState(me!.id)?.constructor; + }, + }, + ChannelNotificationSettingsFlags: { + type: "enum", + }, + /* + // Not exported; cannot be found + ReadStateFlags: { + type: "enum", + }, + */ + ReadStateType: { + type: "enum", + }, + }, + "./general/Record.ts": { + RecordBase: { + type: "class", + ignoredRemovals: { + // Exists on type to enforce that subclasses have a valid constructor + constructorDefinition: true, + }, + }, + }, + "./general/Role.ts": { + RoleFlags: { + type: "enum", + }, + }, + "./general/UserProfile.ts": { + PlatformType: { + type: "enum", + }, + }, + "./general/UserRecord.ts": { + UserRecord: { + type: "class", + ignoredAdditions: { + // Overrides + methods: ["toString"], + }, + }, + UserFlags: { + type: "enum", + // From the API documentation + ignoredRemovals: [["TEAM_PSEUDO_USER"]], + }, + PremiumType: { + type: "enum", + }, + }, + "./i18n/FormattedMessage.ts": { + FormattedMessage: { + type: "class", + }, + ASTNodeType: { + type: "enum", + // Undocumented + ignoredRemovals: [["HOOK"]], + }, + }, + "./i18n/I18N.ts": { + I18N: { + type: "class", + }, + }, + "./i18n/Provider.ts": { + Provider: { + type: "class", + find() { + const { constructor } = this.Webpack.Common.i18n._provider; + return [Object.getPrototypeOf(constructor), constructor]; + }, + }, + }, + "./stores/ApplicationStore.ts": { + ApplicationStore: { + type: "class", + }, + }, + "./stores/ChannelStore.ts": { + ChannelStore: { + type: "class", + }, + }, + "./stores/DraftStore.ts": { + DraftStore: { + type: "class", + ignoredAdditions: { + // Overrides + staticMethodsAndFields: ["migrations"], + }, + }, + }, + "./stores/EmojiStore.ts": { + EmojiStore: { + type: "class", + ignoredAdditions: { + // Overrides + staticMethodsAndFields: ["migrations"], + }, + }, + EmojiIntention: { + type: "enum", + }, + }, + "./stores/GuildChannelStore.ts": { + GuildChannelStore: { + type: "class", + }, + }, + "./stores/GuildMemberStore.ts": { + GuildMemberStore: { + type: "class", + }, + }, + "./stores/GuildStore.ts": { + GuildStore: { + type: "class", + }, + }, + "./stores/MessageStore.ts": { + MessageStore: { + type: "class", + }, + }, + "./stores/PermissionStore.ts": { + PermissionStore: { + type: "class", + }, + }, + "./stores/PresenceStore.ts": { + PresenceStore: { + type: "class", + }, + ClientType: { + type: "enum", + // Undocumented + ignoredRemovals: [["EMBEDDED"]], + }, + StatusType: { + type: "enum", + }, + }, + "./stores/ReadStateStore.ts": { + ReadStateStore: { + type: "class", + }, + }, + "./stores/RelationshipStore.ts": { + RelationshipStore: { + type: "class", + }, + RelationshipType: { + type: "enum", + }, + }, + "./stores/SelectedChannelStore.ts": { + SelectedChannelStore: { + type: "class", + }, + }, + "./stores/SelectedGuildStore.ts": { + SelectedGuildStore: { + type: "class", + }, + }, + "./stores/ThemeStore.ts": { + ThemeStore: { + type: "class", + ignoredAdditions: { + // Overrides + staticMethodsAndFields: ["migrations"], + }, + }, + Theme: { + type: "enum", + }, + }, + "./stores/UserProfileStore.ts": { + UserProfileStore: { + type: "class", + }, + }, + "./stores/UserStore.ts": { + UserStore: { + type: "class", + }, + }, + "./stores/WindowStore.ts": { + WindowStore: { + type: "class", + }, + }, + }, +} satisfies CR.ReporterConfig; diff --git a/packages/discord-types/scripts/changeReporter/finds/classes.mts b/packages/discord-types/scripts/changeReporter/finds/classes.mts new file mode 100644 index 000000000..e57939d90 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/finds/classes.mts @@ -0,0 +1,279 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +// eslint-disable-next-line import/no-relative-packages +import type * as Vencord from "../../../../../src/Vencord.ts"; +import type { CR } from "../types.mts"; + +export function autoFindStore(this: typeof Vencord, source: CR.ClassMembers, name: string) { + const persistKeyRE = new RegExp(`^${name}(?:V\\d+)?$`); + + const store: { constructor: CR.Class; } | undefined = this.Webpack.find(exp => { + // Find stores from exported instances + const { constructor } = exp; + return typeof constructor === "function" && ( + constructor.displayName === name + || persistKeyRE.test(constructor.persistKey) + ); + }); + + if (store) + return getClassChanges(source, [store.constructor]); +} + +export function autoFindClass(this: typeof Vencord, source: CR.ClassMembers) { + let bestMatch: CR.ClassChanges | undefined; + let lowestChangedCount = Infinity; + + const checked = new WeakSet(); + this.Webpack.find(exps => { + for (const name in exps) { + let constructor: CR.Class; + // Some getters throw errors + try { + // Find classes from exported constructors + if (isValidClass(exps[name])) + constructor = exps[name]; + // Find classes from exported instances + else if (isValidClass(exps[name]?.constructor)) + ({ constructor } = exps[name]); + else + continue; + } catch { + continue; + } + + if (!checked.has(constructor)) { + checked.add(constructor); + + const changes = getClassChanges(source, [constructor]); + const { changedCount } = changes; + if (changedCount < lowestChangedCount) { + lowestChangedCount = changedCount; + bestMatch = changes; + } + } + } + + return false; + }, { isIndirect: true }); + + return bestMatch; +} + +export function isValidClass(value: unknown): value is CR.Class { + if (typeof value !== "function") + return false; + const { prototype } = value; + return typeof prototype === "object" && prototype !== null; +} + +export function getClassChanges( + source: CR.ClassMembers, + constructors: readonly [CR.Class, ...CR.Class[]] | readonly [...CR.Class[], CR.Class] +): CR.ClassChanges { + let hasConstructorDefinition = false; + const constructorDescriptors = new Map(); + const prototypeDescriptors = new Map(); + const matchedFields = new Set(); + + // Ignore constructor definitions without parameters + const constructorRE = /[{}]constructor\([^)]/; + const fieldRE = /(?<=[{}]constructor\(.+?{.+\(this,")[^"]+(?=",)/g; + for (const constructor of constructors) { + const constructorString = constructor.toString(); + + if (constructorRE.test(constructorString)) + hasConstructorDefinition = true; + + const constDescriptors = Object.getOwnPropertyDescriptors(constructor); + for (const key of Object.getOwnPropertyNames(constructor)) + constructorDescriptors.set(key, constDescriptors[key]!); + for (const key of Object.getOwnPropertySymbols(constructor)) + constructorDescriptors.set(key, constDescriptors[key]!); + + const { prototype } = constructor; + const protoDescriptors = Object.getOwnPropertyDescriptors(prototype); + for (const key of Object.getOwnPropertyNames(prototype)) + prototypeDescriptors.set(key, protoDescriptors[key]!); + for (const key of Object.getOwnPropertySymbols(prototype)) + prototypeDescriptors.set(key, protoDescriptors[key]!); + + for (const [field] of constructorString.matchAll(fieldRE)) + matchedFields.add(field); + } + + const additions: CR.ClassMembers = { + constructorDefinition: false, + staticMethodsAndFields: [], + staticGetters: [], + staticSetters: [], + methods: [], + getters: [], + setters: [], + fields: [] + }; + let unchangedCount = 0; + let changedCount = 0; + + // Constructor definition with parameters removal + let constructorDefinition = false; + + if (hasConstructorDefinition) { + if (source.constructorDefinition) { + unchangedCount++; + } else { + additions.constructorDefinition = true; + changedCount++; + } + } else if (source.constructorDefinition) { + constructorDefinition = true; + changedCount++; + } else { + unchangedCount++; + } + + // Static member removals + const staticMethodsAndFields = new Set(source.staticMethodsAndFields); + const staticGetters = new Set(source.staticGetters); + const staticSetters = new Set(source.staticSetters); + + const ignoredConstructorKeys = new Set(["length", "name", "prototype"]); + for (const [rawKey, descriptor] of constructorDescriptors) { + if (ignoredConstructorKeys.has(rawKey)) continue; + + const key = rawKey.toString(); + + if (descriptor.get) { + if (staticGetters.has(key)) { + staticGetters.delete(key); + unchangedCount++; + } else { + additions.staticGetters.push(key); + changedCount++; + } + + if (descriptor.set) { + if (staticSetters.has(key)) { + staticSetters.delete(key); + unchangedCount++; + } else { + additions.staticSetters.push(key); + changedCount++; + } + } + + continue; + } + + if (descriptor.set) { + if (staticSetters.has(key)) { + staticSetters.delete(key); + unchangedCount++; + } else { + additions.staticSetters.push(key); + changedCount++; + } + continue; + } + + if (staticMethodsAndFields.has(key)) { + staticMethodsAndFields.delete(key); + unchangedCount++; + } else { + additions.staticMethodsAndFields.push(key); + changedCount++; + } + } + + changedCount += staticMethodsAndFields.size + staticGetters.size + staticSetters.size; + + // Instance method and getter/setter removals + const methods = new Set(source.methods); + const getters = new Set(source.getters); + const setters = new Set(source.setters); + + const ignoredPrototypeKeys = new Set(["constructor"]); + for (const [rawKey, descriptor] of prototypeDescriptors) { + if (ignoredPrototypeKeys.has(rawKey)) continue; + + const key = rawKey.toString(); + + if (descriptor.get) { + if (getters.has(key)) { + getters.delete(key); + unchangedCount++; + } else { + additions.getters.push(key); + changedCount++; + } + + if (descriptor.set) { + if (setters.has(key)) { + setters.delete(key); + unchangedCount++; + } else { + additions.setters.push(key); + changedCount++; + } + } + + continue; + } + + if (descriptor.set) { + if (setters.has(key)) { + setters.delete(key); + unchangedCount++; + } else { + additions.setters.push(key); + changedCount++; + } + continue; + } + + if (methods.has(key)) { + methods.delete(key); + unchangedCount++; + } else { + additions.methods.push(key); + changedCount++; + } + } + + changedCount += methods.size + getters.size + setters.size; + + // Field removals + const fields = new Set(source.fields); + + for (const field of matchedFields) { + if (fields.has(field)) { + fields.delete(field); + unchangedCount++; + } else { + additions.fields.push(field); + changedCount++; + } + } + + changedCount += fields.size; + + return { + additions, + removals: { + constructorDefinition, + staticMethodsAndFields: [...staticMethodsAndFields], + staticGetters: [...staticGetters], + staticSetters: [...staticSetters], + methods: [...methods], + getters: [...getters], + setters: [...setters], + fields: [...fields] + }, + unchangedCount, + changedCount + }; +} diff --git a/packages/discord-types/scripts/changeReporter/finds/enums.mts b/packages/discord-types/scripts/changeReporter/finds/enums.mts new file mode 100644 index 000000000..860d05547 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/finds/enums.mts @@ -0,0 +1,90 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +// eslint-disable-next-line import/no-relative-packages +import type * as Vencord from "../../../../../src/Vencord.ts"; +import type { CR } from "../types.mts"; + +export function autoFindEnum(this: typeof Vencord, source: CR.EnumSource) { + let bestMatch: CR.EnumChanges | undefined; + let lowestChangedCount = Infinity; + + const checked = new WeakSet(); + this.Webpack.find(exps => { + for (const name in exps) { + let exp: unknown; + // Some getters throw errors + try { + exp = exps[name]; + } catch { + continue; + } + + if (isValidEnum(exp) && !checked.has(exp)) { + checked.add(exp); + + const changes = getEnumChanges(source, exp); + const { changedCount } = changes; + if ( + changedCount < lowestChangedCount + // If changedCount is the same as lowestChangedCount, keep the match with the least removals. + || changedCount === lowestChangedCount + && bestMatch + && Object.keys(changes.removals).length < Object.keys(bestMatch.removals).length + ) { + lowestChangedCount = changedCount; + bestMatch = changes; + } + } + } + + return false; + }, { isIndirect: true }); + + return bestMatch; +} + +export function isValidEnum(value: unknown): value is CR.EnumMembers { + return typeof value === "object" + && value !== null + && !Array.isArray(value); +} + +export function getEnumChanges(source: CR.EnumSource, obj: CR.EnumMembers): CR.EnumChanges { + const additions: CR.EnumMembers = {}; + const removals: CR.EnumMembers = { ...source }; + let unchangedCount = 0; + let changedCount = 0; + + for (const key in obj) { + // Ignore numeric enum reverse mapping + if (parseFloat(key) === Number(key)) continue; + + // Some getters throw errors + try { + const value = obj[key]!; + if (key in source && value === source[key]) { + delete removals[key]; + unchangedCount++; + } else { + additions[key] = value; + changedCount++; + } + } catch { + changedCount = Infinity; + break; + } + } + + changedCount += Object.keys(removals).length; + + return { + additions, + removals, + unchangedCount, + changedCount + }; +} diff --git a/packages/discord-types/scripts/changeReporter/index.mts b/packages/discord-types/scripts/changeReporter/index.mts new file mode 100644 index 000000000..931526619 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/index.mts @@ -0,0 +1,83 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { readFileSync } from "node:fs"; +import { join } from "node:path"; +import process from "node:process"; + +import puppeteer from "puppeteer-core"; + +import { assertEnvValidity } from "../utils.mjs"; +import config from "./config.mjs"; +import { autoFindClass, autoFindStore, getClassChanges, isValidClass } from "./finds/classes.mjs"; +import { autoFindEnum, getEnumChanges, isValidEnum } from "./finds/enums.mjs"; +import { logSummary } from "./logging/summaries.mjs"; +import { postError, postReport } from "./logging/webhooks.mjs"; +import { getChangeReport } from "./reports/getChangeReport.mjs"; + +process.on("uncaughtExceptionMonitor", error => { + const { DISCORD_WEBHOOK, CHANNEL } = process.env; + postError(error, DISCORD_WEBHOOK, CHANNEL); +}); + +assertEnvValidity(process.env, { + CHANNEL: ["stable", "ptb", "canary"], + CHROMIUM_BIN: true, + CHROMIUM_VERSION: /^\d+(?:\.|$)/, + DISCORD_TOKEN: true, + DISCORD_WEBHOOK: false, + VENCORD_DIST: true, +}); + +const { CHANNEL, CHROMIUM_BIN, CHROMIUM_VERSION, DISCORD_TOKEN, DISCORD_WEBHOOK, VENCORD_DIST } = process.env; +const CWD = process.cwd(); + +const browser = await puppeteer.launch({ + executablePath: CHROMIUM_BIN, + headless: true, + args: ["--no-sandbox"] +}); + +const page = await browser.newPage(); +await page.setUserAgent(`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${CHROMIUM_VERSION.split(".", 1)[0]}.0.0.0 Safari/537.36`); +await page.setBypassCSP(true); + +await page.evaluateOnNewDocument(`(() => { + "use strict"; + if (/(?:^|\\.)discord\\.com$/.test(location.hostname)) { + ${readFileSync(join(CWD, VENCORD_DIST), "utf-8")}; + window.Vencord = Vencord; + window.CHANGE_REPORTER_LOGGED_IN = new Promise(res => { + Vencord.Webpack.waitFor("loginToken", async exps => { + await exps.loginToken(${JSON.stringify(DISCORD_TOKEN)}); + res(); + }); + }); + } +})(); +`); + +await page.goto(`https://${CHANNEL === "stable" ? "" : CHANNEL + "."}discord.com/login`); +await page.evaluate(`(async () => { + "use strict"; + await CHANGE_REPORTER_LOGGED_IN; + window.autoFindStore = (${autoFindStore}).bind(Vencord); + window.autoFindClass = (${autoFindClass}).bind(Vencord); + window.isValidClass = ${isValidClass}; + window.getClassChanges = ${getClassChanges}; + window.autoFindEnum = (${autoFindEnum}).bind(Vencord); + window.isValidEnum = ${isValidEnum}; + window.getEnumChanges = ${getEnumChanges}; +})(); +`); + +const report = await getChangeReport(page, config); +browser.close(); + +logSummary(report, CHANNEL); + +if (DISCORD_WEBHOOK) + postReport(report, DISCORD_WEBHOOK, CHANNEL); diff --git a/packages/discord-types/scripts/changeReporter/logging/summaries.mts b/packages/discord-types/scripts/changeReporter/logging/summaries.mts new file mode 100644 index 000000000..a182a174d --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/logging/summaries.mts @@ -0,0 +1,277 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import console from "node:console"; +import { writeFile } from "node:fs/promises"; +import process from "node:process"; + +import type { CR } from "../types.mts"; +import { capitalize, codeBlock, formatChannel, formatEnumEntryList, formatKeyList, formatWarnList } from "./utils.mjs"; + +export function logSummary(report: CR.ChangeReport, channel?: string) { + const { deps, src } = report; + + let summary = `# Change Report (${formatChannel(channel)})\n`; + + let sections = ""; + + if (deps.length > 0) { + sections += `## ${deps.length} file${deps.length === 1 ? "" : "s"} with watched dependencies:\n`; + + let fileToLogCount = 0; + let section = ""; + + for (const report of deps) { + const { fileName, fileError, fileWarns, passed, warned, failed, errored } = report; + + const toLogCount = warned.length + failed.length + errored.length; + if ( + toLogCount <= 0 + && fileError === undefined + && fileWarns.length <= 0 + ) continue; + fileToLogCount++; + + const count = passed.length + toLogCount; + section += `### \`${fileName}\`:\n` + + `${fileWarns.length} file-level warning${fileWarns.length === 1 ? "" : "s"}` + + (fileWarns.length > 0 ? ": \n" + formatWarnList(fileWarns) : ". \n") + + `${count} watched dependenc${count === 1 ? "y" : "ies"}: \n`; + + if (fileError === undefined) { + section += `* ${passed.length} passed without warnings.\n`; + + section += `* ${warned.length} passed with warnings`; + if (warned.length > 0) { + section += ":\n"; + for (const { name, warns } of warned) + section += ` * The report for \`${name}\` has ${warns.length} warning${warns.length === 1 ? "" : "s"}:\n` + + formatWarnList(warns, 1); + } else + section += ".\n"; + + section += `* ${failed.length} failed`; + if (failed.length > 0) { + section += ":\n"; + for (const { name, packageVersionRange, discordVersion, expectedVersionRange, warns } of failed) + section += ` * \`${name}\`: Expected range \`${expectedVersionRange}\` given range \`${discordVersion}\`` + + `, but got range \`${packageVersionRange}\`.\n` + + (warns.length > 0 + ? ` * The report for \`${name}\` has ${warns.length} warning${warns.length === 1 ? "" : "s"}:\n` + + formatWarnList(warns, 1) + : ""); + } else + section += ".\n"; + + section += `* ${errored.length} errored`; + if (errored.length > 0) { + section += ":\n"; + for (const { name, packageVersionRange, discordVersion, expectedVersionRange, error, warns } of errored) + section += ` * \`${name}\`: \`${fileName}\` version range: \`${packageVersionRange}\`` + + `, Found version: \`${discordVersion}\`` + + `, Expected version range: \`${expectedVersionRange}\`\n` + + (warns.length > 0 + ? ` * The report for \`${name}\` has ${warns.length} warning${warns.length === 1 ? "" : "s"}:\n` + + formatWarnList(warns, 1) + : "") + + ` * The report for \`${name}\` has an error:\n` + codeBlock(error, 1); + } else + section += ".\n\n"; + } else + section += "File-level error: \n" + codeBlock(fileError); + } + + if (fileToLogCount > 0) { + const fileToNotLogCount = deps.length - fileToLogCount; + sections += `### ${fileToNotLogCount} file${fileToNotLogCount === 1 ? " has" : "s have"}` + + " no file-level errors, file-level warnings, or watched dependencies that failed or have warnings.\n" + section; + } else + sections += "### No file-level errors or warnings.\n" + + "### All watched dependencies passed without warnings.\n"; + } + + if (src.length > 0) { + sections += `## ${src.length} file${src.length === 1 ? "" : "s"} with watched declarations:\n`; + + let fileToLogCount = 0; + let section = ""; + + for (const report of src) { + const { fileName, fileError, fileWarns, unchanged, warned, changed, errored } = report; + + const toLogCount = warned.length + changed.length + errored.length; + if ( + toLogCount <= 0 + && fileError === undefined + && fileWarns.length <= 0 + ) continue; + fileToLogCount++; + + const count = unchanged.length + toLogCount; + section += `### \`${fileName}\`:\n` + + `${fileWarns.length} file-level warning${fileWarns.length === 1 ? "" : "s"}` + + (fileWarns.length > 0 ? ": \n" + formatWarnList(fileWarns) : ". \n") + + `${count} watched declaration${count === 1 ? "" : "s"}: \n`; + + if (fileError === undefined) { + section += `* ${unchanged.length} ${unchanged.length === 1 ? "is" : "are"} unchanged without warnings.\n`; + + section += `* ${warned.length} ${warned.length === 1 ? "is" : "are"} unchanged with warnings`; + if (warned.length > 0) { + section += ":\n"; + for (const { type, identifier, warns } of warned) + section += ` * The report for ${type} \`${identifier}\` has ${warns.length} warning${warns.length === 1 ? "" : "s"}:\n` + + formatWarnList(warns, 1); + } else + section += ".\n"; + + section += `* ${changed.length} ha${changed.length === 1 ? "s" : "ve"} changes`; + if (changed.length > 0) { + section += ":\n"; + for (const { type, identifier, changes, warns } of changed) { + let additionCount = 0; + let added = ""; + + let removalCount = 0; + let removed = ""; + + switch (type) { + case "class": { + const { additions, removals } = changes; + + if (additions.constructorDefinition) { + additionCount++; + added += " * Constructor definition with parameters\n"; + } + if (additions.staticMethodsAndFields.length > 0) { + additionCount += additions.staticMethodsAndFields.length; + added += " * Static methods and fields:\n" + formatKeyList(additions.staticMethodsAndFields, 4); + } + if (additions.staticGetters.length > 0) { + additionCount += additions.staticGetters.length; + added += " * Static getters:\n" + formatKeyList(additions.staticGetters, 4); + } + if (additions.staticSetters.length > 0) { + additionCount += additions.staticSetters.length; + added += " * Static setters:\n" + formatKeyList(additions.staticSetters, 4); + } + if (additions.methods.length > 0) { + additionCount += additions.methods.length; + added += " * Instance methods:\n" + formatKeyList(additions.methods, 4); + } + if (additions.getters.length > 0) { + additionCount += additions.getters.length; + added += " * Getters:\n" + formatKeyList(additions.getters, 4); + } + if (additions.setters.length > 0) { + additionCount += additions.setters.length; + added += " * Setters:\n" + formatKeyList(additions.setters, 4); + } + if (additions.fields.length > 0) { + additionCount += additions.fields.length; + added += " * Fields:\n" + formatKeyList(additions.fields, 4); + } + + if (removals.constructorDefinition) { + removalCount++; + removed += " * Constructor definition with parameters\n"; + } + if (removals.staticMethodsAndFields.length > 0) { + removalCount += removals.staticMethodsAndFields.length; + removed += " * Static methods and fields:\n" + formatKeyList(removals.staticMethodsAndFields, 4); + } + if (removals.staticGetters.length > 0) { + removalCount += removals.staticGetters.length; + removed += " * Static getters:\n" + formatKeyList(removals.staticGetters, 4); + } + if (removals.staticSetters.length > 0) { + removalCount += removals.staticSetters.length; + removed += " * Static setters:\n" + formatKeyList(removals.staticSetters, 4); + } + if (removals.methods.length > 0) { + removalCount += removals.methods.length; + removed += " * Instance methods:\n" + formatKeyList(removals.methods, 4); + } + if (removals.getters.length > 0) { + removalCount += removals.getters.length; + removed += " * Getters:\n" + formatKeyList(removals.getters, 4); + } + if (removals.setters.length > 0) { + removalCount += removals.setters.length; + removed += " * Setters:\n" + formatKeyList(removals.setters, 4); + } + if (removals.fields.length > 0) { + removalCount += removals.fields.length; + removed += " * Fields:\n" + formatKeyList(removals.fields, 4); + } + + break; + } + case "enum": { + const { additions, removals } = changes; + + const addedEntries = Object.entries(additions); + if (addedEntries.length > 0) { + additionCount = addedEntries.length; + added += formatEnumEntryList(addedEntries, 3); + } + + const removedEntries = Object.entries(removals); + if (removedEntries.length > 0) { + removalCount = removedEntries.length; + removed += formatEnumEntryList(removedEntries, 3); + } + + break; + } + } + + const changeCount = additionCount + removalCount; + section += ` * ${capitalize(type)} \`${identifier}\` has ${changeCount} change${changeCount === 1 ? "" : "s"}:\n` + + ` * ${additionCount} addition${additionCount === 1 ? "" : "s"}` + + (additionCount > 0 ? ":\n" + added : ".\n") + + ` * ${removalCount} removal${removalCount === 1 ? "" : "s"}` + + (removalCount > 0 ? ":\n" + removed : ".\n") + + (warns.length > 0 + ? ` * The report for ${type} \`${identifier}\` has ${warns.length} warning${warns.length === 1 ? "" : "s"}:\n` + + formatWarnList(warns, 1) + : ""); + } + } else + section += ".\n"; + + section += `* ${errored.length} errored`; + if (errored.length > 0) { + section += ":\n"; + for (const { type, identifier, warns, error } of errored) + section += (warns.length > 0 + ? ` * The report for ${type} \`${identifier}\` has ${warns.length} warning${warns.length === 1 ? "" : "s"}:\n` + + formatWarnList(warns, 1) + : "") + + ` * The report for ${type} \`${identifier}\` has an error:\n` + codeBlock(error, 1); + } else + section += ".\n\n"; + } else + section += "File-level error: \n" + codeBlock(fileError); + } + + if (fileToLogCount > 0) { + const fileToNotLogCount = src.length - fileToLogCount; + sections += `### ${fileToNotLogCount} file${fileToNotLogCount === 1 ? " has" : "s have"}` + + " no file-level errors, file-level warnings, or watched declarations with changes or warnings.\n" + section; + } else + sections += "### No file-level errors or warnings.\n" + + "### All watched declarations are unchanged without warnings.\n"; + } + + summary += sections || "## There are 0 watched dependencies and declarations.\n"; + + const { GITHUB_STEP_SUMMARY } = process.env; + if (GITHUB_STEP_SUMMARY) + writeFile(GITHUB_STEP_SUMMARY, summary, "utf-8"); + else + console.log(summary); +} diff --git a/packages/discord-types/scripts/changeReporter/logging/utils.mts b/packages/discord-types/scripts/changeReporter/logging/utils.mts new file mode 100644 index 000000000..de8a1408e --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/logging/utils.mts @@ -0,0 +1,62 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import process from "node:process"; + +export function capitalize(string: string) { + return string.replace(/^./, c => c.toUpperCase()); +} + +export function codeBlock(content?: unknown, indentLevel = 0) { + const indent = " ".repeat(indentLevel); + return `\`\`\`\n${content}\n\`\`\``.replaceAll(/^/gm, indent) + "\n"; +} + +export function formatWarnList(warns: readonly string[], indentLevel = 0) { + return warns.reduce((list, warn) => list + codeBlock(warn, indentLevel), ""); +} + +export function formatKeyList(keys: readonly string[], indentLevel = 0) { + const indent = " ".repeat(indentLevel); + return keys.reduce((list, key) => list + indent + `* \`${key}\`\n`, ""); +} + +export function formatValue(value?: unknown) { + switch (typeof value) { + case "string": + return JSON.stringify(value); + case "bigint": + return value + "n"; + default: + return String(value); + } +} + +export function formatEnumEntryList(entries: readonly (readonly [key: string, value: unknown])[], indentLevel = 0) { + const indent = " ".repeat(indentLevel); + return entries.reduce((list, [key, value]) => list + indent + `* \`${key} = ${formatValue(value)}\`\n`, ""); +} + +export function formatChannel(channel?: string) { + switch (channel) { + case "stable": + case "canary": + return capitalize(channel); + case "ptb": + return channel.toUpperCase(); + default: + return "Unknown"; + } +} + +export function getSummaryURL(channel?: string) { + const { GITHUB_SERVER_URL, GITHUB_REPOSITORY, GITHUB_RUN_ID, GITHUB_RUN_ATTEMPT } = process.env; + if (GITHUB_SERVER_URL && GITHUB_REPOSITORY && GITHUB_RUN_ID && GITHUB_RUN_ATTEMPT) + return encodeURI( + `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}/attempts/${GITHUB_RUN_ATTEMPT}` + + `#:~:text=Change Report (${formatChannel(channel)})` + ); +} diff --git a/packages/discord-types/scripts/changeReporter/logging/webhooks.mts b/packages/discord-types/scripts/changeReporter/logging/webhooks.mts new file mode 100644 index 000000000..71abe2bc2 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/logging/webhooks.mts @@ -0,0 +1,145 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import console from "node:console"; + +import type { CR } from "../types.mts"; +import { codeBlock, formatChannel, getSummaryURL } from "./utils.mjs"; + +export async function postError(error: Error, webhookURL?: string, channel?: string) { + if (!webhookURL) return; + + const res = await fetch(webhookURL, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + username: "Change Reporter", + embeds: [{ + title: `Change Report (${formatChannel(channel)})`, + description: "### Fatal error:\n" + codeBlock(error.stack), + url: getSummaryURL(channel), + color: 0xF23F42 + }] + }) + }); + + if (!res.ok) + console.error(`Failed to exectute webhook (status '${res.status} ${res.statusText}').`); +} + +export async function postReport(report: CR.ChangeReport, webhookURL: string, channel?: string) { + const { deps, src } = report; + + let areChanges = false; + let description = ""; + + if (deps.length > 0) { + let warnedFileCount = 0; + let erroredFileCount = 0; + let passedCount = 0; + let warnedCount = 0; + let failedCount = 0; + let erroredCount = 0; + for (const report of deps) { + if (report.fileWarns.length > 0) + warnedFileCount++; + if (report.fileError !== undefined) + erroredFileCount++; + passedCount += report.passed.length; + warnedCount += report.warned.length; + failedCount += report.failed.length; + erroredCount += report.errored.length; + } + + const fileToLogCount = warnedFileCount + erroredFileCount; + const toLogCount = warnedCount + failedCount + erroredCount; + const count = passedCount + toLogCount; + if (fileToLogCount + count > 0) { + description += "### Dependencies:\n"; + + if (fileToLogCount > 0) { + areChanges = true; + description += `${deps.length} file${deps.length === 1 ? "" : "s"}:\n` + + `* ${warnedFileCount} file${warnedFileCount === 1 ? " has" : "s have"} file-level warnings.\n` + + `* ${erroredFileCount} file${erroredFileCount === 1 ? " has" : "s have"} a file-level error.\n`; + } else + description += "No file-level errors or warnings.\n"; + + if (toLogCount > 0) { + areChanges = true; + description += `${count} watched dependenc${count === 1 ? "y" : "ies"}:\n` + + `* ${passedCount} passed without warnings.\n` + + `* ${warnedCount} passed with warnings.\n` + + `* ${failedCount} failed.\n` + + `* ${erroredCount} errored.\n`; + } else + description += "All watched dependencies passed without warnings.\n"; + } + } + + if (src.length > 0) { + let warnedFileCount = 0; + let erroredFileCount = 0; + let unchangedCount = 0; + let warnedCount = 0; + let changedCount = 0; + let erroredCount = 0; + for (const report of src) { + if (report.fileWarns.length > 0) + warnedFileCount++; + if (report.fileError !== undefined) + erroredFileCount++; + unchangedCount += report.unchanged.length; + warnedCount += report.warned.length; + changedCount += report.changed.length; + erroredCount += report.errored.length; + } + + const fileToLogCount = warnedFileCount + erroredFileCount; + const toLogCount = warnedCount + changedCount + erroredCount; + const count = unchangedCount + toLogCount; + if (fileToLogCount + count > 0) { + description += "### Declarations:\n"; + + if (fileToLogCount > 0) { + areChanges = true; + description += `${src.length} file${src.length === 1 ? "" : "s"}:\n` + + `* ${warnedFileCount} file${warnedFileCount === 1 ? " has" : "s have"} file-level warnings.\n` + + `* ${erroredFileCount} file${erroredFileCount === 1 ? " has" : "s have"} a file-level error.\n`; + } else + description += "No file-level errors or warnings.\n"; + + if (toLogCount > 0) { + areChanges = true; + description += `${count} watched declaration${count === 1 ? "" : "s"}:\n` + + `* ${unchangedCount} ${unchangedCount === 1 ? "is" : "are"} unchanged without warnings.\n` + + `* ${warnedCount} ${warnedCount === 1 ? "is" : "are"} unchanged with warnings.\n` + + `* ${changedCount} ha${changedCount === 1 ? "s" : "ve"} changes.\n` + + `* ${erroredCount} errored.\n`; + } else + description += "All watched declarations are unchanged without warnings.\n"; + } + } + + description ||= "### There are 0 watched dependencies and declarations.\n"; + + const res = await fetch(webhookURL, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + username: "Change Reporter", + embeds: [{ + title: `Change Report (${formatChannel(channel)})`, + description, + url: getSummaryURL(channel), + color: areChanges ? 0xF0B132 : 0x23A559 + }] + }) + }); + + if (!res.ok) + console.error(`Failed to exectute webhook (status '${res.status} ${res.statusText}').`); +} diff --git a/packages/discord-types/scripts/changeReporter/reports/getChangeReport.mts b/packages/discord-types/scripts/changeReporter/reports/getChangeReport.mts new file mode 100644 index 000000000..703ae7d37 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/reports/getChangeReport.mts @@ -0,0 +1,32 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { join } from "node:path"; + +import type { Page } from "puppeteer-core"; + +import type { CR } from "../types.mts"; +import { getDependenciesReport } from "./getDependenciesReport.mjs"; +import { getSrcFileReport } from "./getSrcFileReport.mjs"; + +export async function getChangeReport(page: Page, config: CR.ReporterConfig): Promise { + const { rootDir, deps, src } = config; + + const depsReports: Promise[] = []; + if (deps) + for (const filePath in deps) + depsReports.push(getDependenciesReport(page, join(rootDir, filePath), deps[filePath]!)); + + const srcReports: Promise[] = []; + if (src) + for (const filePath in src) + srcReports.push(getSrcFileReport(page, join(rootDir, filePath), src[filePath]!)); + + return { + deps: await Promise.all(depsReports), + src: await Promise.all(srcReports) + }; +} diff --git a/packages/discord-types/scripts/changeReporter/reports/getClassReport.mts b/packages/discord-types/scripts/changeReporter/reports/getClassReport.mts new file mode 100644 index 000000000..068dfa9a6 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/reports/getClassReport.mts @@ -0,0 +1,289 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { AST_NODE_TYPES, type TSESTree } from "@typescript-eslint/typescript-estree"; +import type { Page } from "puppeteer-core"; + +import type { autoFindClass, autoFindStore } from "../finds/classes.mts"; +import type { CR } from "../types.mts"; +import { funcToString, getErrorStack, getSanitizedConfig, pageAsyncFunction, pageFunction } from "./utils.mjs"; + +export async function getClassReport( + page: Page, + declaration: TSESTree.ClassDeclarationWithName, + rawConfig: CR.DeclarationConfig +) { + const { name } = declaration.id; + const report: CR.ClassReport = { + type: "class", + identifier: name, + changes: undefined, + error: undefined, + warns: [] + }; + + const config = getSanitizedConfig(rawConfig, report); + const source = getClassMembers(declaration.body.body, config, report); + + const { find } = config; + if (find) { + try { + const changes = await page.evaluate<[CR.ClassMembers], CR.FindFunction<[CR.ClassMembers], CR.ClassChanges>>( + pageAsyncFunction("s", `const c = await ${funcToString(find)}.call(Vencord, s);` + + "if (Array.isArray(c)) { if (c.length > 0 && c.every(isValidClass)) return getClassChanges(s, c); }" + + "else if (isValidClass(c)) return getClassChanges(s, [c]);"), + source + ); + if (changes) { + checkClassIgnores(changes, config, report); + report.changes = changes; + return report; + } + report.warns.push(`Find for class '${name}' failed; attempting automatic class find.`); + } catch (error) { + report.warns.push(`Find for class '${name}' errored; attempting automatic class find:\n` + getErrorStack(error)); + } + } + + // Fast path for stores + if (/Store$/.test(name) && !declaration.abstract) { + try { + const changes = await page.evaluate, typeof autoFindStore>( + pageFunction("s", "n", "return autoFindStore(s, n);"), + source, + name + ); + if (changes) { + checkClassIgnores(changes, config, report); + report.changes = changes; + return report; + } + report.warns.push(`Automatic store find for store '${name}' failed; attempting automatic class find.`); + } catch (error) { + report.warns.push(`Automatic store find for store '${name}' errored; attempting automatic class find:\n` + getErrorStack(error)); + } + } + + try { + const changes = await page.evaluate, typeof autoFindClass>( + pageFunction("s", "return autoFindClass(s);"), + source + ); + if (changes) { + if ( + // Ignore classes that do not have any members in common + // or classes that only have a constructor in common + changes.unchangedCount > 1 + || changes.unchangedCount > 0 + && (changes.additions.constructorDefinition + || changes.removals.constructorDefinition) + ) { + checkClassIgnores(changes, config, report); + report.changes = changes; + } else + report.error = `Automatic class find for class '${name}' failed. The target class may have too many changes.`; + } else + report.error = `Automatic class find for class '${name}' failed.`; + } catch (error) { + report.error = `Automatic class find for class '${name}' errored:\n` + getErrorStack(error); + } + return report; +} + +function getClassMembers( + members: readonly TSESTree.ClassElement[], + config: CR.ClassConfig, + report: CR.ClassReport +): CR.ClassMembers { + let constructorDefinition = false; + // Ignore duplicate members from overload signatures and config ignores + const staticMethodsAndFields = new Set(); + const staticGetters = new Set(); + const staticSetters = new Set(); + const methods = new Set(); + const getters = new Set(); + const setters = new Set(); + const fields = new Set(); + + const { includeOptional } = config; + for (const [index, member] of members.entries()) { + switch (member.type) { + // Exclude abstract methods + case AST_NODE_TYPES.MethodDefinition: { + if (member.optional && !includeOptional) continue; + + const name = getClassMemberName(member, index, report); + if (name === undefined) continue; + + switch (member.kind) { + case "constructor": + // Ignore constructor definitions without parameters + if (member.value.params.length > 0) + constructorDefinition = true; + break; + case "method": + if (member.static) + staticMethodsAndFields.add(name); + else + methods.add(name); + break; + case "get": + if (member.static) + staticGetters.add(name); + else + getters.add(name); + break; + case "set": + if (member.static) + staticSetters.add(name); + else + setters.add(name); + break; + } + + break; + } + // Exclude abstract properties + case AST_NODE_TYPES.PropertyDefinition: { + if (member.optional && !includeOptional) continue; + + const name = getClassMemberName(member, index, report); + if (name === undefined) continue; + + if (member.static) + staticMethodsAndFields.add(name); + else + fields.add(name); + + break; + } + } + } + + const { ignoredAdditions, ignoredRemovals } = config; + + if (ignoredAdditions) { + if (ignoredAdditions.constructorDefinition) + constructorDefinition = true; + applyClassIgnoredAdditions(staticMethodsAndFields, ignoredAdditions.staticMethodsAndFields); + applyClassIgnoredAdditions(staticGetters, ignoredAdditions.staticGetters); + applyClassIgnoredAdditions(staticSetters, ignoredAdditions.staticSetters); + applyClassIgnoredAdditions(methods, ignoredAdditions.methods); + applyClassIgnoredAdditions(getters, ignoredAdditions.getters); + applyClassIgnoredAdditions(setters, ignoredAdditions.setters); + applyClassIgnoredAdditions(fields, ignoredAdditions.fields); + } + + if (ignoredRemovals) { + if (ignoredRemovals.constructorDefinition) + constructorDefinition = false; + applyClassIgnoredRemovals(staticMethodsAndFields, ignoredRemovals.staticMethodsAndFields); + applyClassIgnoredRemovals(staticGetters, ignoredRemovals.staticGetters); + applyClassIgnoredRemovals(staticSetters, ignoredRemovals.staticSetters); + applyClassIgnoredRemovals(methods, ignoredRemovals.methods); + applyClassIgnoredRemovals(getters, ignoredRemovals.getters); + applyClassIgnoredRemovals(setters, ignoredRemovals.setters); + applyClassIgnoredRemovals(fields, ignoredRemovals.fields); + } + + return { + constructorDefinition: constructorDefinition, + staticMethodsAndFields: [...staticMethodsAndFields], + staticGetters: [...staticGetters], + staticSetters: [...staticSetters], + methods: [...methods], + getters: [...getters], + setters: [...setters], + fields: [...fields] + }; +} + +function getClassMemberName( + member: TSESTree.MethodDefinition | TSESTree.PropertyDefinition, + index: number, + report: CR.ClassReport +) { + const { key } = member; + switch (key.type) { + case AST_NODE_TYPES.Identifier: { + const { name } = key; + if (!member.computed) + return name; + report.warns.push(`Computed key '[${name}]' of member at index '${index}' of class '${report.identifier}' is unsupported; ignoring member.`); + return; + } + case AST_NODE_TYPES.Literal: + return String(key.value); + case AST_NODE_TYPES.MemberExpression: { + const { object, property } = key; + if ( + object.type === AST_NODE_TYPES.Identifier + && property.type === AST_NODE_TYPES.Identifier + ) return `Symbol(${object.name}.${property.name})`; + break; + } + } + report.warns.push(`Computed key of member at index '${index}' of class '${report.identifier}' is unsupported; ignoring member.`); +} + +/** Adds ignored additions so as to not affect `changedCount`. */ +function applyClassIgnoredAdditions(members: Set, ignored?: readonly string[]) { + if (ignored) + for (const key of ignored) + members.add(key); +} + +/** Removes ignored removals so as to not affect `changedCount`. */ +function applyClassIgnoredRemovals(members: Set, ignored?: readonly string[] | boolean) { + if (Array.isArray(ignored)) { + for (const key of ignored) + members.delete(key); + } else if (ignored) + members.clear(); +} + +function checkClassIgnores( + changes: CR.ClassChanges, + config: CR.ClassConfig, + report: CR.ClassReport +) { + const { additions, removals } = changes; + const { ignoredAdditions, ignoredRemovals } = config; + + if (ignoredAdditions) { + const { constructorDefinition, ...rest } = ignoredAdditions; + + if (constructorDefinition && removals.constructorDefinition) + report.warns.push(`Ignored addition 'constructorDefinition' in config for class '${report.identifier}' had no effect.`); + + for (const key in rest) { + const memberCategory = key as keyof typeof rest; + const removedKeys = new Set(removals[memberCategory]); + for (const ignoredKey in rest[memberCategory]) + if (removedKeys.has(ignoredKey)) + report.warns.push(`Ignored addition '${ignoredKey}' of '${memberCategory}' in config for class '${report.identifier}' had no effect.`); + } + } + + if (ignoredRemovals) { + const { constructorDefinition, ...rest } = ignoredRemovals; + + if (constructorDefinition && additions.constructorDefinition) + report.warns.push(`Ignored removal 'constructorDefinition' in config for class '${report.identifier}' had no effect.`); + + for (const key in rest) { + const memberCategory = key as keyof typeof rest; + const ignoredKeys = rest[memberCategory]; + if (Array.isArray(ignoredKeys)) { + const addedKeys = new Set(additions[memberCategory]); + for (const ignoredKey in ignoredKeys) + if (addedKeys.has(ignoredKey)) + report.warns.push(`Ignored removal '${ignoredKey}' of '${memberCategory}' in config for class '${report.identifier}' had no effect.`); + } else if (ignoredKeys && additions[memberCategory].length > 0) + report.warns.push(`Ignored removal for members of category '${memberCategory}' in config for class '${report.identifier}' had no effect.`); + } + } +} diff --git a/packages/discord-types/scripts/changeReporter/reports/getDependenciesReport.mts b/packages/discord-types/scripts/changeReporter/reports/getDependenciesReport.mts new file mode 100644 index 000000000..6380d742f --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/reports/getDependenciesReport.mts @@ -0,0 +1,112 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { readFile } from "node:fs/promises"; +import { basename } from "node:path"; + +import type { Page } from "puppeteer-core"; +import { satisfies, subset, valid, validRange } from "semver"; +import type { JsonObject, JsonValue } from "type-fest"; + +import type { CR } from "../types.mts"; +import { funcToString, getErrorStack, pageFunction } from "./utils.mjs"; + +export async function getDependenciesReport(page: Page, filePath: string, config: CR.DependenciesConfig) { + const fileName = basename(filePath); + const fileReport: CR.DependenciesReport = { + filePath, + fileName, + fileWarns: [], + passed: [], + warned: [], + failed: [], + errored: [] + }; + + let dependencies: JsonValue | undefined; + try { + dependencies = JSON.parse(await readFile(filePath, "utf-8"))?.dependencies; + } catch (error) { + fileReport.fileError = `Failed to read and parse file '${fileName}':\n` + error; + return fileReport; + } + + if ( + typeof dependencies !== "object" + || dependencies === null + || Array.isArray(dependencies) + ) { + fileReport.fileError = `File '${fileName}' does not have a valid dependencies object.`; + return fileReport; + } + + for (const key in config) { + const dependencyConfig = config[key]!; + + const report: CR.DependencyReport = { + name: key, + packageVersionRange: undefined, + discordVersion: undefined, + expectedVersionRange: undefined, + error: undefined, + warns: [] + }; + + // https://github.com/microsoft/TypeScript/issues/53395 + const packageVersionRange = (dependencies as JsonObject)[key]; + if (typeof packageVersionRange !== "string") { + report.error = `File '${fileName}' does not have a dependency with name '${key}'.`; + fileReport.errored.push(report); + continue; + } + report.packageVersionRange = packageVersionRange; + + if (!validRange(packageVersionRange)) { + report.error = `Version range '${packageVersionRange}' for dependency '${key}' in file '${fileName}' is invalid.`; + fileReport.errored.push(report); + continue; + } + + let discordVersion: unknown; + try { + discordVersion = await page.evaluate<[], CR.FindFunction<[]>>( + pageFunction(`return ${funcToString(dependencyConfig.find)}.call(Vencord);`) + ); + } catch (error) { + report.error = `Find for version of dependency '${key}' errored:\n` + getErrorStack(error); + fileReport.errored.push(report); + continue; + } + + if (typeof discordVersion !== "string") { + report.error = `Find for version of dependency '${key}' failed.`; + fileReport.errored.push(report); + continue; + } + report.discordVersion = discordVersion; + + if (!valid(discordVersion)) { + report.error = `Find for version of dependency '${key}' returned an invalid SemVer version ('${discordVersion}').`; + fileReport.errored.push(report); + continue; + } + + const { overrides } = dependencyConfig; + const expectedVersionRange = overrides?.find(([range]) => satisfies(discordVersion, range))?.[1] + ?? discordVersion; + report.expectedVersionRange = expectedVersionRange; + + if (subset(packageVersionRange, expectedVersionRange)) { + if (report.warns.length > 0) + fileReport.warned.push(report); + else + fileReport.passed.push(report); + } else + fileReport.failed.push(report); + } + + return fileReport; +} diff --git a/packages/discord-types/scripts/changeReporter/reports/getEnumReport.mts b/packages/discord-types/scripts/changeReporter/reports/getEnumReport.mts new file mode 100644 index 000000000..b717dd0a5 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/reports/getEnumReport.mts @@ -0,0 +1,171 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { AST_NODE_TYPES, type TSESTree } from "@typescript-eslint/typescript-estree"; +import type { Page } from "puppeteer-core"; + +import type { autoFindEnum } from "../finds/enums.mts"; +import { formatValue } from "../logging/utils.mjs"; +import type { CR } from "../types.mts"; +import { funcToString, getErrorStack, getSanitizedConfig, pageAsyncFunction, pageFunction } from "./utils.mjs"; + +export async function getEnumReport( + page: Page, + declaration: TSESTree.TSEnumDeclaration, + rawConfig: CR.DeclarationConfig +) { + const { name } = declaration.id; + const report: CR.EnumReport = { + type: "enum", + identifier: name, + changes: undefined, + error: undefined, + warns: [] + }; + + const config = getSanitizedConfig(rawConfig, report); + const source = getEnumMembers(declaration.body.members, config, report); + + const { find } = config; + if (find) { + try { + const changes = await page.evaluate<[CR.EnumSource], CR.FindFunction<[CR.EnumSource], CR.EnumChanges>>( + pageAsyncFunction("s", `const o = await ${funcToString(find)}.call(Vencord, s);` + + "if (isValidEnum(o)) return getEnumChanges(s, o);"), + source + ); + if (changes) { + checkEnumIgnores(changes, config, report); + report.changes = changes; + return report; + } + report.warns.push(`Find for enum '${name}' failed; attempting automatic enum find.`); + } catch (error) { + report.warns.push(`Find for enum '${name}' errored; attempting automatic enum find:\n` + getErrorStack(error)); + } + } + + try { + const changes = await page.evaluate, typeof autoFindEnum>( + pageFunction("s", "return autoFindEnum(s);"), + source + ); + if (changes) { + // Ignore enums that do not have any members in common + if (changes.unchangedCount > 0) { + checkEnumIgnores(changes, config, report); + report.changes = changes; + } else + report.error = `Automatic enum find for enum '${name}' failed. The target enum may have too many changes.`; + } else + report.error = `Automatic enum find for enum '${name}' failed.`; + } catch (error) { + report.error = `Automatic enum find for enum '${name}' errored:\n` + getErrorStack(error); + } + return report; +} + +function getEnumMembers( + members: readonly TSESTree.TSEnumMember[], + config: CR.EnumConfig, + report: CR.EnumReport +) { + const source: CR.EnumSource = {}; + + for (const [index, member] of members.entries()) { + if (member.computed) { + report.warns.push(`Key of member at index '${index}' of enum '${report.identifier}' is computed. Computed enum member keys are unsupported; ignoring member.`); + continue; + } + const { id } = member; + const key = id.type === AST_NODE_TYPES.Literal ? id.value : id.name; + + const { initializer } = member; + if (!initializer) { + report.warns.push(`Member '${key}' of enum '${report.identifier}' has no initializer. Enum members without initializers are unsupported; ignoring member.`); + continue; + } + + const { type } = initializer; + switch (type) { + case AST_NODE_TYPES.Literal: { + const { value } = initializer; + if (typeof value === "string" || typeof value === "number") + source[key] = value; + else + report.warns.push(`Literal initializer type '${typeof value}' of member '${key}' of enum '${report.identifier}' is unsupported; ignoring member.`); + break; + } + case AST_NODE_TYPES.BinaryExpression: { + const { operator } = initializer; + if (operator !== "<<") { + report.warns.push(`BinaryExpression initializer operator '${operator}' of member '${key}' of enum '${report.identifier}' is unsupported; ignoring member.`); + continue; + } + + const { left, right } = initializer; + if ( + left.type !== AST_NODE_TYPES.Literal + || typeof left.value !== "number" + || right.type !== AST_NODE_TYPES.Literal + || typeof right.value !== "number" + ) { + report.warns.push(`BinaryExpression initializer of member '${key}' of enum '${report.identifier}' is unsupported; ignoring member.`); + continue; + } + + source[key] = left.value << right.value; + + break; + } + default: + report.warns.push(`Initializer type '${type}' of member '${key}' of enum '${report.identifier}' is unsupported; ignoring member.`); + break; + } + } + + const { keyMapper } = config; + if (keyMapper) + for (const key in source) { + const value = source[key]!; + delete source[key]; + source[keyMapper(key)] = value; + } + + const { ignoredAdditions, ignoredRemovals } = config; + + // Add ignored additions so as to not affect similarity score + if (ignoredAdditions) + for (const [key, value] of ignoredAdditions) + source[key] = value; + + // Remove ignored removals so as to not affect similarity score + if (ignoredRemovals) + for (const [key, value] of ignoredRemovals) + if (value === undefined || source[key] === value) + delete source[key]; + + return source; +} + +function checkEnumIgnores( + changes: CR.EnumChanges, + config: CR.EnumConfig, + report: CR.EnumReport +) { + const { additions, removals } = changes; + const { ignoredAdditions, ignoredRemovals } = config; + + if (ignoredAdditions) + for (const [key, value] of ignoredAdditions) + if (removals[key] === value) + report.warns.push(`Ignored addition '${key} = ${formatValue(value)}' in config for enum '${report.identifier}' had no effect.`); + + if (ignoredRemovals) + for (const [key, value] of ignoredRemovals) + if (value === undefined ? key in additions : additions[key] === value) + report.warns.push(`Ignored removal '${key}${value === undefined ? "" : " = " + formatValue(value)}' in config for enum '${report.identifier}' had no effect.`); +} diff --git a/packages/discord-types/scripts/changeReporter/reports/getSrcFileReport.mts b/packages/discord-types/scripts/changeReporter/reports/getSrcFileReport.mts new file mode 100644 index 000000000..33145d682 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/reports/getSrcFileReport.mts @@ -0,0 +1,105 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { readFile } from "node:fs/promises"; +import { basename } from "node:path"; + +import { AST_NODE_TYPES, parse, type TSESTree } from "@typescript-eslint/typescript-estree"; +import type { Page } from "puppeteer-core"; + +import type { CR } from "../types.mts"; +import { getClassReport } from "./getClassReport.mjs"; +import { getEnumReport } from "./getEnumReport.mjs"; + +export async function getSrcFileReport(page: Page, filePath: string, config: CR.SrcFileConfig) { + const fileName = basename(filePath); + const fileReport: CR.SrcFileReport = { + filePath, + fileName, + fileWarns: [], + unchanged: [], + warned: [], + changed: [], + errored: [] + }; + + let ast: TSESTree.Program; + try { + ast = parse(await readFile(filePath, "utf-8")); + } catch (error) { + fileReport.fileError = `Failed to read and parse '${fileName}':\n` + error; + return fileReport; + } + + const unfoundDeclarations = new Set(Object.keys(config)); + const reports: Promise[] = []; + for (const node of ast.body) { + if (unfoundDeclarations.size <= 0) break; + + const declaration = node.type === AST_NODE_TYPES.ExportNamedDeclaration + ? node.declaration + : node; + if (!declaration) continue; + + switch (declaration.type) { + case AST_NODE_TYPES.ClassDeclaration: { + const { id } = declaration; + if (!id) continue; + + const { name } = id; + const declarationConfig = config[name]; + if (!declarationConfig) continue; + + unfoundDeclarations.delete(name); + reports.push(getClassReport( + page, + // @ts-expect-error: Control flow narrowing bug + declaration, + declarationConfig + )); + break; + } + case AST_NODE_TYPES.TSEnumDeclaration: { + const { name } = declaration.id; + const declarationConfig = config[name]; + if (!declarationConfig) continue; + + unfoundDeclarations.delete(name); + reports.push(getEnumReport( + page, + declaration, + declarationConfig + )); + break; + } + } + } + + for (const report of await Promise.all(reports)) { + if (report.error !== undefined) { + fileReport.errored.push(report); + } else { + const { changes } = report; + if (changes!.changedCount > 0) + fileReport.changed.push(report); + else if (report.warns.length > 0) + fileReport.warned.push(report); + else + fileReport.unchanged.push(report); + } + } + + for (const identifier of unfoundDeclarations) + fileReport.errored.push({ + type: config[identifier]!.type, + identifier, + changes: undefined, + error: `File '${fileName}' does not have a declaration with identifier '${identifier}'.`, + warns: [] + }); + + return fileReport; +} diff --git a/packages/discord-types/scripts/changeReporter/reports/utils.mts b/packages/discord-types/scripts/changeReporter/reports/utils.mts new file mode 100644 index 000000000..a47198406 --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/reports/utils.mts @@ -0,0 +1,53 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { CR } from "../types.mts"; + +/** Ensures config's type matches the type of the declaration found by the parser. */ +export function getSanitizedConfig(config: CR.DeclarationConfig, report: CR.ClassReport): CR.ClassConfig; +export function getSanitizedConfig(config: CR.DeclarationConfig, report: CR.EnumReport): CR.EnumConfig; +export function getSanitizedConfig(config: CR.DeclarationConfig, report: CR.DeclarationReport) { + const { type } = config; + const expectedType = report.type; + if (type === expectedType) + return config; + report.warns.push(`Expected config type for '${report.identifier}' to be '${expectedType}', but got '${type}'; config values will be ignored.`); + return { type: expectedType }; +} + +export function pageFunction(...args: [string, ...string[]]): any { + const body = args.pop()!; + return new Function(...args, `"use strict";${body}`); +} + +// https://github.com/microsoft/TypeScript/issues/36177 +const AsyncFunction: any = async function () {}.constructor; + +export function pageAsyncFunction(...args: [string, ...string[]]): any { + const body = args.pop()!; + return new AsyncFunction(...args, `"use strict";${body}`); +} + +// Based on ECMA-262 +const functionDeclarationOrArrowFunctionDefinitionRE = /^(?:async(?:[\t\v\f\uFEFF\p{Zs}]|\/\*.*\*\/)+)?(?:function[(*/\t\n\v\f\r\uFEFF\p{Zs}]|(?:\(|(?:[\p{IDS}$_]|\\u(?:[0-9A-Fa-f]{4}|\{[0-9A-Fa-f]{5}\}))(?:[\p{IDC}$]|\\u(?:[0-9A-Fa-f]{4}|\{[0-9A-Fa-f]{5}\}))+(?:[\t\n\v\f\r\uFEFF\p{Zs}]|\/\*.*\*\/)*=))/u; + +/** + * Makes the result of `func.toString()` a callable expression when evaled. + * Does not support getters, setters, static methods, private methods/getters/setters, + * or method definitions with symbol keys. + */ +export function funcToString(func: (...args: never) => unknown) { + const funcString = func.toString(); + if (functionDeclarationOrArrowFunctionDefinitionRE.test(funcString)) + return `(${funcString})`; + return `({${funcString}})[${JSON.stringify(func.name)}]`; +} + +export function getErrorStack(error: unknown) { + return typeof error === "object" && error !== null && "stack" in error + ? error.stack + : error; +} diff --git a/packages/discord-types/scripts/changeReporter/types.mts b/packages/discord-types/scripts/changeReporter/types.mts new file mode 100644 index 000000000..9c7c1088c --- /dev/null +++ b/packages/discord-types/scripts/changeReporter/types.mts @@ -0,0 +1,227 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +// eslint-disable-next-line import/no-relative-packages +import type * as Vencord from "../../../../src/Vencord.ts"; + +export namespace CR { + export interface ChangeReport { + deps: DependenciesReport[]; + src: SrcFileReport[]; + } + + export type FileReport = DependenciesReport | SrcFileReport; + + interface FileReportBase { + filePath: string; + fileName: string; + /** Error that caused the report to be returned early. */ + fileError?: string | undefined; + /** Contains warnings not specific to any dependency or declaration. */ + fileWarns: string[]; + } + + export interface DependenciesReport extends FileReportBase { + /** Contains reports that passed with no warns and no error. */ + passed: DependencyReport[]; + /** Contains reports that passed with warns and no error. */ + warned: DependencyReport[]; + /** Contains reports that failed with no error and maybe warns. */ + failed: DependencyReport[]; + /** Contains reports that have an error. */ + errored: DependencyReport[]; + } + + export interface DependencyReport { + /** The name of the dependency. */ + name: string; + /** The version of the dependency in `package.json`. */ + packageVersionRange: Errored extends true ? string | undefined : string; + /** The version of the dependency bundled with Discord. */ + discordVersion: Errored extends true ? string | undefined : string; + /** + * The matched version range from the `overrides` property of {@link DependencyConfig} + * or, if none matched, the version of the dependency bundled with Discord. + */ + expectedVersionRange: Errored extends true ? string | undefined : string; + /** Error that caused the report to return early. */ + error: Errored extends true ? string : undefined; + warns: string[]; + } + + export interface SrcFileReport extends FileReportBase { + /** Contains reports that have no changes, no warns, and no error. */ + unchanged: DeclarationReport[]; + /** Contains reports that have warns, no changes, and no error. */ + warned: DeclarationReport[]; + /** Contains reports that have changes, maybe warns, and no error. */ + changed: DeclarationReport[]; + /** Contains reports that have an error. */ + errored: DeclarationReport[]; + } + + export type DeclarationReport + = ClassReport | EnumReport; + + interface DeclarationReportBase { + type: string; + /** The declaration's identifier. */ + identifier: string; + changes: Errored extends true ? undefined : object; + /** Error that caused the report to return early. */ + error: Errored extends true ? string : undefined; + warns: string[]; + } + + export interface ClassReport extends DeclarationReportBase { + type: "class"; + identifier: string; + changes: Errored extends true ? undefined : ClassChanges; + } + + export interface EnumReport extends DeclarationReportBase { + type: "enum"; + identifier: string; + changes: Errored extends true ? undefined : EnumChanges; + } + + export interface ReporterConfig { + /** The directory file paths are relative to. */ + rootDir: string; + deps?: { [filePath: string]: DependenciesConfig; } | undefined; + src?: { [filePath: string]: SrcFileConfig; } | undefined; + } + + export interface DependenciesConfig { + [dependencyName: string]: DependencyConfig; + } + + export interface DependencyConfig { + /** + * @returns The version of the dependency bundled with Discord or undefined if the version could not be found. + */ + find: FindFunction<[], string>; + /** + * Specifies the version range to expect in `package.json` given the version bundled with Discord. + */ + overrides?: [discordVersionRange: string, packageVersionRange: string][] | undefined; + } + + export interface SrcFileConfig { + [identifier: string]: DeclarationConfig; + } + + export type DeclarationConfig = ClassConfig | EnumConfig; + + interface DeclarationConfigBase { + type: string; + find?: FindFunction | undefined; + } + + export interface ClassConfig extends DeclarationConfigBase { + type: "class"; + /** + * An automatic find will be performed if omitted. + * If multiple classes are returned, their members will be merged. + * @param source The source class. + * @returns The class or undefined if it could not be found. + */ + // https://github.com/microsoft/TypeScript/issues/20007 + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + find?: FindFunction<[source: ClassMembers], Function[] | Function> | undefined; + /** Whether to include optional class members. */ + includeOptional?: boolean | undefined; + /** Members expected to be added. */ + ignoredAdditions?: { [Key in keyof ClassMembers]?: ClassMembers[Key] | undefined; } | undefined; + /** + * Members expected to be removed. + * If a category is `true`, all members in that category will be expected to be removed. + */ + ignoredRemovals?: { [Key in keyof ClassMembers]?: ClassMembers[Key] | boolean | undefined; } | undefined; + } + + export interface EnumConfig extends DeclarationConfigBase { + type: "enum"; + /** + * An automatic find will be performed if omitted. + * @param source The source enum. + * @returns The enum or undefined if it could not be found. + */ + find?: FindFunction<[source: EnumSource], EnumMembers> | undefined; + /** + * Mapper function to modifiy the source enum's keys. + * Ignored additions and removals will not be modified by this function. + */ + keyMapper?: ((key: string) => string) | undefined; + /** Members expected to be added. */ + ignoredAdditions?: [key: string, value: string | number][] | undefined; + /** Members expected to be removed. */ + ignoredRemovals?: [key: string, value?: string | number | undefined][] | undefined; + } + + export type FindFunction + = (this: typeof Vencord, ...args: Args) => + Promise | Return | undefined; + + export type DeclarationChanges = ClassChanges | EnumChanges; + + interface DeclarationChangesBase { + additions: object; + removals: object; + /** The number of added/removed members. */ + unchangedCount: number; + /** The number of added/removed members. */ + changedCount: number; + } + + export interface ClassChanges extends DeclarationChangesBase { + additions: ClassMembers; + removals: ClassMembers; + } + + export interface ClassMembers { + /** Whether the class has a constructor definition with parameters. */ + constructorDefinition: boolean; + staticMethodsAndFields: string[]; + staticGetters: string[]; + staticSetters: string[]; + methods: string[]; + getters: string[]; + setters: string[]; + fields: string[]; + } + + export interface Class { + /** Constructor function */ + new (...args: never): unknown; + /** Static members */ + [key: PropertyKey]: unknown; + /** Instance methods and accessors */ + readonly prototype: Record; + } + + export interface EnumChanges extends DeclarationChangesBase { + additions: EnumMembers; + removals: EnumMembers; + } + + export type EnumMembers = Record; + + export type EnumSource = Record | Record; + + /** Excludes heterogeneous enums. */ + export type Enum = NumericEnum | StringEnum; + + /** Numeric enums have reverse mapping. */ + export type NumericEnum + = { readonly [key: string]: number; } + & { readonly [value: number]: string; }; + + /** String enums do not have reverse mapping. */ + export interface StringEnum { + readonly [key: string]: string; + } +} diff --git a/packages/discord-types/scripts/utils.mts b/packages/discord-types/scripts/utils.mts new file mode 100644 index 000000000..7b2a437b9 --- /dev/null +++ b/packages/discord-types/scripts/utils.mts @@ -0,0 +1,51 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +type EnvConfig = Record; + +type ValidEnv = NodeJS.ProcessEnv & { + [Key in keyof Config as false extends Config[Key] + ? never + : Key + ]: Config[Key] extends string[] + ? Config[Key][number] + : string; +} & Partial>; + +export function assertEnvValidity( + env: NodeJS.ProcessEnv, + config: Config +): asserts env is ValidEnv { + const errors: string[] = []; + + for (const key in config) { + const varValue = env[key]; + const varConfig = config[key]!; + + if (varValue === undefined) { + if (varConfig) + errors.push(`TypeError: A value must be provided for required environment variable '${key}'.`); + } else if (Array.isArray(varConfig)) { + if (!varConfig.includes(varValue)) + errors.push(`RangeError: The value provided for environment variable '${key}' must be one of ${formatChoices(varConfig)}.`); + } else if (typeof varConfig === "object" && !varConfig.test(varValue)) + errors.push(`RangeError: The value provided for environment variable '${key}' must match ${varConfig}.`); + } + + if (errors.length > 0) { + for (const error of errors) + console.error(error); + process.exit(1); + } +} + +function formatChoices(choices: string[]) { + const quotedChoices = choices.map(c => `'${c}'`); + if (choices.length < 3) + return quotedChoices.join(" or "); + const lastChoice = quotedChoices.pop()!; + return quotedChoices.join(", ") + ", or " + lastChoice; +} diff --git a/packages/discord-types/src/flux/ActionHandlersGraph.ts b/packages/discord-types/src/flux/ActionHandlersGraph.ts new file mode 100644 index 000000000..c85ae8eb3 --- /dev/null +++ b/packages/discord-types/src/flux/ActionHandlersGraph.ts @@ -0,0 +1,70 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { DepGraph } from "dependency-graph"; + +import type { IsAny, Nullish, UnionToIntersection } from "../internal"; +import type { Action, ActionHandler, ActionType, ExtractAction } from "./actions"; +import type { DispatchBand } from "./Dispatcher"; + +export declare class ActionHandlersGraph { + _addToBand(dispatchToken: string, dispatchBand: DispatchBand): void; + _bandToken(dispatchBand: DispatchBand): string; + _computeOrderedActionHandlers( + actionType: T + ): OrderedActionHandlers>[]; + _computeOrderedCallbackTokens(): string[]; + _invalidateCaches(): void; + _validateDependencies(fromDispatchToken: string, toDispatchToken: string): void; + addDependencies(fromDispatchToken: string, toDispatchTokens: readonly string[]): void; + createToken(): string; + getOrderedActionHandlers(partialAction: { + type: T; + }): OrderedActionHandlers>; + register( + storeName: string, + actionHandlers: ActionHandlerMap, + storeDidChange: ActionHandler, + dispatchBand: DispatchBand, + dispatchToken?: string /* = this.createToken() */ + ): string; + + _dependencyGraph: DepGraph; + _lastID: number; + _orderedActionHandlers: { + [T in ActionType]?: OrderedActionHandlers> | Nullish; + }; + _orderedCallbackTokens: string[] | Nullish; +} + +export interface ActionHandlersGraphNode { + actionHandler: Partial; + band: DispatchBand; + /** Store name */ + name: string; + storeDidChange: ActionHandler; +} + +export type ActionHandlerMap + // Workaround to avoid ts(2589) + = UnionToIntersection< + A extends unknown + ? unknown extends ( + IsAny]> + & IsAny]> + & IsAny]> + ) + ? Record void> + : { [T in A["type"]]: (action: A & { type: T; }) => void; } + : never + >; + +export type OrderedActionHandlers = { + actionHandler: ActionHandler; + /** Store name */ + name: string; + storeDidChange: ActionHandler; +}[]; diff --git a/packages/discord-types/src/flux/ActionLog.ts b/packages/discord-types/src/flux/ActionLog.ts new file mode 100644 index 000000000..91fd39d02 --- /dev/null +++ b/packages/discord-types/src/flux/ActionLog.ts @@ -0,0 +1,30 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Action } from "./actions"; + +export declare class ActionLog { + constructor(actionType: A["type"]); + + get name(): A["type"]; + toJSON(): Pick, "action" | "createdAt" | "traces"> & { + created_at: ActionLog["createdAt"]; + }; + + action: A; + createdAt: Date; + error: Error | undefined; + id: number; + startTime: number; + totalTime: number; + traces: ActionLogTrace[]; +} + +export interface ActionLogTrace { + /** Store name */ + name: string; + time: number; +} diff --git a/packages/discord-types/src/flux/ActionLogger.ts b/packages/discord-types/src/flux/ActionLogger.ts new file mode 100644 index 000000000..d673f716b --- /dev/null +++ b/packages/discord-types/src/flux/ActionLogger.ts @@ -0,0 +1,30 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { EventEmitter } from "events"; + +import type { ActionLog } from "./ActionLog"; +import type { Action, ActionType } from "./actions"; + +export declare class ActionLogger extends EventEmitter { + constructor(options?: { persist?: boolean | undefined; }); + + getLastActionMetrics(title: string, limit?: number /* = 20 */): ActionMetric[]; + getSlowestActions( + actionType?: T | null, + limit?: number /* = 20 */ + ): ActionMetric[]; + log( + action: A, + callback: (func: (storeName: string, func: () => T) => T) => void + ): ActionLog; + + logs: ActionLog[]; + persist: boolean; +} + +export type ActionMetric + = [storeName: string, actionType: T, totalTime: number]; diff --git a/packages/discord-types/src/flux/BatchedStoreListener.ts b/packages/discord-types/src/flux/BatchedStoreListener.ts new file mode 100644 index 000000000..77d98498f --- /dev/null +++ b/packages/discord-types/src/flux/BatchedStoreListener.ts @@ -0,0 +1,20 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Stringable } from "../internal"; +import type { Store } from "./Store"; + +export declare class BatchedStoreListener { + constructor(stores: Store[], changeCallback: () => void); + + attach(debugName?: Stringable): void; + detach(): void; + + changeCallback: () => void; + handleStoreChange: () => void; + stores: Store[]; + storeVersionHandled: number | undefined; +} diff --git a/packages/discord-types/src/flux/ChangeListeners.ts b/packages/discord-types/src/flux/ChangeListeners.ts new file mode 100644 index 000000000..2fa49054b --- /dev/null +++ b/packages/discord-types/src/flux/ChangeListeners.ts @@ -0,0 +1,27 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export declare class ChangeListeners { + has(listener: ChangeListener): boolean; + hasAny(): boolean; + invokeAll(): void; + + add: (listener: ChangeListener) => void; + /** + * @param listener The change listener to add. It will be removed when it returns false. + */ + addConditional: ( + listener: ChangeListener, + immediatelyCall?: boolean /* = true */ + ) => void; + listeners: Set; + remove: (listener: ChangeListener) => void; +} + +export type ChangeListener + = true extends Conditional + ? () => unknown + : () => void; diff --git a/packages/discord-types/src/flux/Dispatcher.ts b/packages/discord-types/src/flux/Dispatcher.ts new file mode 100644 index 000000000..5a21f7666 --- /dev/null +++ b/packages/discord-types/src/flux/Dispatcher.ts @@ -0,0 +1,87 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../internal"; +import type { ActionHandlerMap, ActionHandlersGraph } from "./ActionHandlersGraph"; +import type { ActionLogger } from "./ActionLogger"; +import type { Action, ActionHandler, ActionType, ExtractAction } from "./actions"; + +export declare class Dispatcher { + constructor( + defaultBand?: DispatchBand /* = DispatchBand.EARLY */, + actionLogger?: ActionLogger | null, + sentryUtils?: SentryUtils | null + ); + + _dispatch( + action: Action, + func: (storeName: string, func: () => T) => T + ): boolean | undefined; + _dispatchWithDevtools(action: Action): void; + _dispatchWithLogging(action: Action): void; + addDependencies(fromDispatchToken: string, toDispatchTokens: readonly string[]): void; + addInterceptor(interceptor: ActionHandler): void; + createToken(): string; + dispatch(action: Action): Promise; + flushWaitQueue(): void; + isDispatching(): boolean; + register( + storeName: string, + actionHandlers: ActionHandlerMap, + storeDidChange: ActionHandler, + dispatchBand?: DispatchBand | null, /* = this._defaultBand */ + dispatchToken?: string /* = this._actionHandlers.createToken() */ + ): string; + subscribe( + actionType: T, + listener: ActionHandler>): void; + unsubscribe( + actionType: T, + listener: ActionHandler> + ): void; + wait(callback: () => void): void; + + _actionHandlers: ActionHandlersGraph; + _currentDispatchActionType: ActionType | Nullish; + _defaultBand: DispatchBand; + _interceptors: ((action: Action) => boolean)[]; + _processingWaitQueue: boolean; + _sentryUtils: SentryUtils | Nullish; + _subscriptions: { + [T in ActionType]?: Set>> | Nullish; + }; + _waitQueue: (() => void)[]; + actionLogger: ActionLogger; + functionCache: Partial; +} + +// Enum keys made screaming snake case for consistency. +export enum DispatchBand { + EARLY = 0, + DATABASE = 1, + DEFAULT = 2, +} + +export interface SentryUtils { + addBreadcrumb: (breadcrumb: { + category?: string | undefined; + data?: Record | undefined; + event_id?: string | undefined; + level?: SeverityLevel | undefined; + message?: string | undefined; + timestamp?: number | undefined; + type?: string | undefined; + }) => void; +} + +export enum SeverityLevel { + DEBUG = "debug", + ERROR = "error", + FATAL = "fatal", + INFO = "info", + LOG = "log", + WARNING = "warning", +} diff --git a/packages/discord-types/src/flux/Emitter.ts b/packages/discord-types/src/flux/Emitter.ts new file mode 100644 index 000000000..4fbffb24f --- /dev/null +++ b/packages/discord-types/src/flux/Emitter.ts @@ -0,0 +1,30 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "./Store"; + +export declare class Emitter { + batched(callback: () => T): T; + destroy(): void; + emit(): void; + emitNonReactOnce(syncWiths: Set<() => unknown>, changedStores: Set): void; + emitReactOnce(): void; + getChangeSentinel(): number; + getIsPaused(): boolean; + injectBatchEmitChanges(batchEmitChanges: () => unknown): void; + markChanged(store: Store): void; + /** If timeout is omitted, Emitter will pause until resume is called. */ + pause(timeout?: number): void; + resume(shouldEmit?: boolean /* = true */): void; + + changedStores: Set; + changeSentinel: number; + isBatchEmitting: boolean; + isDispatching: boolean; + isPaused: boolean; + pauseTimer: number | null; + reactChangedStores: Set; +} diff --git a/packages/discord-types/src/flux/PersistedStore.ts b/packages/discord-types/src/flux/PersistedStore.ts new file mode 100644 index 000000000..bedb6e247 --- /dev/null +++ b/packages/discord-types/src/flux/PersistedStore.ts @@ -0,0 +1,108 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { GenericConstructor, Nullish } from "../internal"; +import type { ActionHandlerMap } from "./ActionHandlersGraph"; +import type { Dispatcher } from "./Dispatcher"; +import type { Store } from "./Store"; + +export declare abstract class PersistedStore< + Constructor extends GenericConstructor = GenericConstructor, + State = unknown +> extends Store { + constructor(dispatcher: Dispatcher, actionHandlers: Partial); + + static _clearAllPromise: Promise | Nullish; + static _writePromises: Map>; + static _writeResolvers: Map void, callbackId: number]>; + static allPersistKeys: Set; + static clearAll(options: PersistedStoreClearOptions): Promise; + static clearPersistQueue(options: PersistedStoreClearOptions): void; + static disableWrite: boolean; + static disableWrites: boolean; + static getAllStates(): Promise<{ [persistKey: string]: unknown; }>; + static initializeAll(stateMap: { [persistKey: string]: unknown; } & Pick): void; + /** + * If {@link clearAll} has been called for the specified persist key, state in the returned object will be undefined. + */ + static migrateAndReadStoreState< + States extends readonly [unknown, ...unknown[]] | readonly [...unknown[], unknown] = [unknown] + >( + persistKey: string, + ...migrations: [] extends PersistedStoreMigrations + ? [migrations?: PersistedStoreMigrations | null] + : [migrations: PersistedStoreMigrations] + ): { requiresPersist: true; state: Tail; } | { requiresPersist: false; state: undefined; }; + static migrations: ((oldState: never) => unknown)[] | undefined; + /** + * Not present on {@link PersistedStore}'s constructor. + * All subclasses are required to define their own. + */ + static persistKey: string; + static shouldClear(options: PersistedStoreClearOptions, persistKey: string): boolean; + static throttleDelay: number; + static userAgnosticPersistKeys: Set; + + asyncPersist(): Promise; + clear(): void; + getClass(): Constructor; + abstract getState(): State; + abstract initialize(state: State): void; + initializeFromState(state: State): void; + persist(): void; + + _version: number; + callback: (callback: () => void) => void; + throttledCallback: { + (callback: () => void): () => void; + cancel: () => void; + flush: () => () => void; + }; +} + +export interface PersistedStoreClearOptions { + /** Array of persist keys */ + omit?: readonly string[] | Nullish; + type: "all" | "user-data-only"; +} + +export type PersistedStoreMigrations< + States extends readonly [unknown, ...unknown[]] | readonly [...unknown[], unknown] +> + = States extends readonly [...infer OldStates, infer NewState] + ? OldStates extends [...infer OlderStates, infer OldState] + ? [...PersistedStoreMigrations<[...OlderStates, OldState]>, (oldState: OldState) => NewState] + : OldStates extends [] + ? [] + : OldStates extends (infer T)[] + ? [] | [...((oldState: T) => T)[], (oldState: T) => NewState] + : never + : PersistedStoreMigrationsTrailingRest; + +type PersistedStoreMigrationsTrailingRest + = States extends readonly [infer OldState, ...infer NewStates] + ? NewStates extends [infer NewState, ...infer NewerStates] + ? [(oldState: OldState) => NewState, ...PersistedStoreMigrationsTrailingRest<[NewState, ...NewerStates]>] + : NewStates extends [] + ? [] + : NewStates extends (infer T)[] + ? [] | [(oldState: OldState) => T, ...((oldState: T) => T)[]] + : never + : never; + +type Tail + = T extends readonly [...unknown[], infer U] + ? U + : TailTrailingRest; + +type TailTrailingRest + = T extends readonly [infer U, ...infer V] + ? V extends [unknown, ...unknown[]] + ? TailTrailingRest + : V extends (infer W)[] + ? U | W + : never + : never; diff --git a/packages/discord-types/src/flux/SnapshotStore.ts b/packages/discord-types/src/flux/SnapshotStore.ts new file mode 100644 index 000000000..dbe15808a --- /dev/null +++ b/packages/discord-types/src/flux/SnapshotStore.ts @@ -0,0 +1,39 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { GenericConstructor } from "../internal"; +import type { ActionHandlerMap } from "./ActionHandlersGraph"; +import type { Store } from "./Store"; + +export interface SnapshotStoreSnapshot { + data: SnapshotData; + version: number; +} + +export declare abstract class SnapshotStore< + Constructor extends GenericConstructor = GenericConstructor, + SnapshotData = unknown +> extends Store { + constructor( + actionHandlers: Partial + & Partial> + ); + + static allStores: SnapshotStore[]; + static clearAll(): void; + /** + * Not present on {@link SnapshotStore}'s constructor. + * All subclasses are required to define their own. + */ + static displayName: string; + + clear(): void; + getClass(): Constructor; + get persistKey(): string; + readSnapshot(version: number): SnapshotData | null; + save(): void; + abstract takeSnapshot(): SnapshotStoreSnapshot; +} diff --git a/packages/discord-types/src/flux/Store.ts b/packages/discord-types/src/flux/Store.ts new file mode 100644 index 000000000..a147b56c8 --- /dev/null +++ b/packages/discord-types/src/flux/Store.ts @@ -0,0 +1,65 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../internal"; +import type { ActionHandlerMap } from "./ActionHandlersGraph"; +import type { Action } from "./actions"; +import type { ChangeListeners } from "./ChangeListeners"; +import type { DispatchBand, Dispatcher } from "./Dispatcher"; + +export declare abstract class Store { + constructor( + dispatcher: Dispatcher, + actionHandlers?: Partial | null, + dispatchBand?: DispatchBand | null /* = dispatcher._defaultBand */ + ); + + static destroy(): void; + /** Undefined on {@link Store}'s constructor. */ + static displayName: string | undefined; + static getAll(): Store[]; + static initialize(): void; + static initialized: Promise; + + emitChange(): void; + getDispatchToken(): string; + getName(): string; + initialize(...args: never[]): void; + initializeIfNeeded(): void; + mustEmitChanges( + mustEmitChanges?: ((action: Action) => boolean) | null /* = () => true */ + ): void; + registerActionHandlers( + actionHandlers: Partial, + dispatchBand?: DispatchBand | null /* = this._dispatcher._defaultBand */ + ): void; + syncWith( + stores: readonly Store[], + func: () => unknown, + timeout?: number | null + ): void; + waitFor(...stores: Store[]): void; + + __getLocalVars: undefined; + _changeCallbacks: ChangeListeners; + _dispatcher: Dispatcher; + _dispatchToken: string; + _isInitialized: boolean; + _mustEmitChanges: ((action: Action) => boolean) | Nullish; + _reactChangeCallbacks: ChangeListeners; + _syncWiths: { + func: () => unknown; + store: Store; + }[]; + addChangeListener: ChangeListeners["add"]; + /** + * @param listener The change listener to add. It will be removed when it returns false. + */ + addConditionalChangeListener: ChangeListeners["addConditional"]; + addReactChangeListener: ChangeListeners["add"]; + removeChangeListener: ChangeListeners["remove"]; + removeReactChangeListener: ChangeListeners["remove"]; +} diff --git a/packages/discord-types/src/flux/UserAgnosticStore.ts b/packages/discord-types/src/flux/UserAgnosticStore.ts new file mode 100644 index 000000000..521c47871 --- /dev/null +++ b/packages/discord-types/src/flux/UserAgnosticStore.ts @@ -0,0 +1,15 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { GenericConstructor } from "../internal"; +import type { PersistedStore } from "./PersistedStore"; + +export declare abstract class UserAgnosticStore< + Constructor extends GenericConstructor = GenericConstructor, + State = unknown +> extends PersistedStore { + abstract getUserAgnosticState(): State; +} diff --git a/packages/discord-types/src/flux/actions.ts b/packages/discord-types/src/flux/actions.ts new file mode 100644 index 000000000..cd7d68d1d --- /dev/null +++ b/packages/discord-types/src/flux/actions.ts @@ -0,0 +1,145 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { IsAny, OmitIndexSignature } from "../internal"; + +export type ActionHandler + = A extends unknown + ? unknown extends ( + IsAny]> + & IsAny]> + & IsAny]> + ) + ? (action: any) => Return + : (action: A) => Return + : never; + +export type Action + // Workaround to avoid ts(2589) + = { type: Exclude; } & Record + // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents + | ValidActionOverrides[keyof ValidActionOverrides]; + +type ValidActionOverrides = { + // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents + [Key in keyof OmitIndexSignature & string as ActionOverride[Key]["type"] extends Key + ? Key extends ActionOverride[Key]["type"] + ? Key + : never + : never + ]: ActionOverride[Key]; +}; + +/** + * Augment this interface to override actions of {@link Action} and add action types to {@link ActionType}. + * Actions whose type does not match their key will be omitted. + * @see https://typescriptlang.org/docs/handbook/declaration-merging#module-augmentation + */ +export interface ActionOverride extends Record {} + +export type ExcludeAction + = A extends unknown + // Workaround to avoid ts(2589) + ? Exclude extends never + ? never + : A & { type: Exclude; } + : never; + +export type ExtractAction + = A extends unknown + // Workaround to avoid ts(2589) + ? A["type"] & T extends never + ? never + : A & { type: T; } + : never; + +/* +async function generateActionType() { + "use strict"; + + const { wreq } = Vencord.Webpack; + + // Load all chunks + await Promise.all(Array.from( + wreq.u.toString().matchAll(/(?<=[{,])\d+(?=:")/g), + async ([id]) => + !(await (await fetch(wreq.p + wreq.u(id))).text()).includes("importScripts(") + && wreq.e(id) + )); + + // Import all modules + await Promise.all(Object.keys(wreq.m).map(async id => { + try { await wreq(id); } catch {} + })); + + const actionTypes = new Set(); + + const { FluxDispatcher } = Vencord.Webpack.Common; + for (const actionType in FluxDispatcher._subscriptions) + actionTypes.add(actionType); + for (const actionType in FluxDispatcher._actionHandlers._orderedActionHandlers) + actionTypes.add(actionType); + const { nodes } = FluxDispatcher._actionHandlers._dependencyGraph; + for (const dispatchToken in nodes) + for (const actionType in nodes[dispatchToken].actionHandler) + actionTypes.add(actionType); + console.log("Action type count: " + actionTypes.size); + + const sortedActionTypes = [...actionTypes].sort((a, b) => { + const x = a.toLowerCase(); + const y = b.toLowerCase(); + return x < y ? -1 : x > y ? 1 : 0; + }); + return `"${sortedActionTypes.join('" | "')}"`; +} +*/ + +/* +function mergeActionTypes(oldActionType, newActionType) { + "use strict"; + + const actionTypeRE = /(?<=")[^"|]+(?=")/g; + + const oldActionTypes = new Set(oldActionType.match(actionTypeRE)); + console.log("Old action type count: " + oldActionTypes.size); + const newActionTypes = new Set(newActionType.match(actionTypeRE)); + console.log("New action type count: " + newActionTypes.size); + + console.log("Unique old action type count: " + oldActionTypes.difference(newActionTypes).size); + console.log("Unique new action type count: " + newActionTypes.difference(oldActionTypes).size); + + const mergedActionTypes = oldActionTypes.union(newActionTypes); + console.log("Merged action type count: " + mergedActionTypes.size); + + const sortedActionTypes = [...mergedActionTypes].sort((a, b) => { + const x = a.toLowerCase(); + const y = b.toLowerCase(); + return x < y ? -1 : x > y ? 1 : 0; + }); + return `"${sortedActionTypes.join('" | "')}"`; +} +*/ + +export type ActionType = DefaultActionType + // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents, @typescript-eslint/no-redundant-type-constituents + | keyof ValidActionTypeOverrides | keyof ValidActionOverrides; + +type ValidActionTypeOverrides = { + // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents + [Key in keyof OmitIndexSignature & string as ActionTypeOverride[Key] extends never + ? Key + : never + ]: ActionOverride[Key]; +}; + +/** + * Augment this interface to add action types to {@link ActionType}. + * Properties whose type is not never will be omitted. + * @see https://typescriptlang.org/docs/handbook/declaration-merging#module-augmentation + */ +export interface ActionTypeOverride extends Record {} + +type DefaultActionType = "ACCESSIBILITY_COLORBLIND_TOGGLE" | "ACCESSIBILITY_DARK_SIDEBAR_TOGGLE" | "ACCESSIBILITY_DESATURATE_ROLES_TOGGLE" | "ACCESSIBILITY_FORCED_COLORS_MODAL_SEEN" | "ACCESSIBILITY_KEYBOARD_MODE_DISABLE" | "ACCESSIBILITY_KEYBOARD_MODE_ENABLE" | "ACCESSIBILITY_LOW_CONTRAST_TOGGLE" | "ACCESSIBILITY_RESET_TO_DEFAULT" | "ACCESSIBILITY_SET_ALWAYS_SHOW_LINK_DECORATIONS" | "ACCESSIBILITY_SET_CONTRAST" | "ACCESSIBILITY_SET_FONT_SIZE" | "ACCESSIBILITY_SET_HIDE_TAGS" | "ACCESSIBILITY_SET_MESSAGE_GROUP_SPACING" | "ACCESSIBILITY_SET_PREFERS_REDUCED_MOTION" | "ACCESSIBILITY_SET_ROLE_STYLE" | "ACCESSIBILITY_SET_SATURATION" | "ACCESSIBILITY_SET_SYNC_FORCED_COLORS" | "ACCESSIBILITY_SET_ZOOM" | "ACCESSIBILITY_SUBMIT_BUTTON_TOGGLE" | "ACCESSIBILITY_SYNC_PROFILE_THEME_WITH_USER_THEME_TOGGLE" | "ACCESSIBILITY_SYSTEM_COLOR_PREFERENCES_CHANGED" | "ACCESSIBILITY_SYSTEM_PREFERS_CONTRAST_CHANGED" | "ACCESSIBILITY_SYSTEM_PREFERS_CROSSFADES_CHANGED" | "ACCESSIBILITY_SYSTEM_PREFERS_REDUCED_MOTION_CHANGED" | "ACK_APPROVED_GUILD_JOIN_REQUEST" | "ACKNOWLEDGE_CHANNEL_SAFETY_WARNING_TOOLTIP" | "ACTIVE_BOGO_PROMOTION_FETCH" | "ACTIVE_BOGO_PROMOTION_FETCH_FAIL" | "ACTIVE_BOGO_PROMOTION_FETCH_SUCCESS" | "ACTIVE_CHANNELS_FETCH_FAILURE" | "ACTIVE_CHANNELS_FETCH_START" | "ACTIVE_CHANNELS_FETCH_SUCCESS" | "ACTIVE_OUTBOUND_PROMOTIONS_FETCH" | "ACTIVE_OUTBOUND_PROMOTIONS_FETCH_FAIL" | "ACTIVE_OUTBOUND_PROMOTIONS_FETCH_SUCCESS" | "ACTIVITY_INVITE_EDUCATION_DISMISS" | "ACTIVITY_INVITE_MODAL_CLOSE" | "ACTIVITY_INVITE_MODAL_OPEN" | "ACTIVITY_INVITE_MODAL_QUERY" | "ACTIVITY_INVITE_MODAL_SEND" | "ACTIVITY_JOIN" | "ACTIVITY_JOIN_FAILED" | "ACTIVITY_JOIN_LOADING" | "ACTIVITY_LAUNCH_FAIL" | "ACTIVITY_LAYOUT_MODE_UPDATE" | "ACTIVITY_METADATA_UPDATE" | "ACTIVITY_PLAY" | "ACTIVITY_SCREEN_ORIENTATION_UPDATE" | "ACTIVITY_START" | "ACTIVITY_SYNC" | "ACTIVITY_SYNC_STOP" | "ACTIVITY_UPDATE_FAIL" | "ACTIVITY_UPDATE_START" | "ACTIVITY_UPDATE_SUCCESS" | "ADD_STICKER_PREVIEW" | "ADMIN_ONBOARDING_GUIDE_HIDE" | "ADYEN_CASH_APP_PAY_SUBMIT_SUCCESS" | "ADYEN_CREATE_CASH_APP_PAY_COMPONENT_SUCCESS" | "ADYEN_CREATE_CLIENT_SUCCESS" | "ADYEN_TEARDOWN_CLIENT" | "AFK" | "AGE_GATE_FAILURE_MODAL_OPEN" | "AGE_GATE_LOGOUT_UNDERAGE_NEW_USER" | "AGE_GATE_MODAL_CLOSE" | "AGE_GATE_MODAL_OPEN" | "AGE_GATE_PREVENT_UNDERAGE_REGISTRATION" | "AGE_GATE_SUCCESS_MODAL_OPEN" | "ANALYTICS_LOG_CLEAR" | "APP_ICON_EDITOR_CLOSE" | "APP_ICON_EDITOR_OPEN" | "APP_ICON_EDITOR_RESET" | "APP_ICON_TRACK_IMPRESSION" | "APP_ICON_UPDATED" | "APP_LAUNCHER_DISMISS" | "APP_LAUNCHER_SET_ACTIVE_COMMAND" | "APP_LAUNCHER_SHOW" | "APP_RECOMMENDATIONS_FETCH_RECOMMENDATIONS" | "APP_RECOMMENDATIONS_FETCH_RECOMMENDATIONS_FAILURE" | "APP_RECOMMENDATIONS_FETCH_RECOMMENDATIONS_SUCCESS" | "APP_STATE_UPDATE" | "APP_VIEW_SET_HOME_LINK" | "APPLICATION_ACTIVITY_STATISTICS_FETCH_FAIL" | "APPLICATION_ACTIVITY_STATISTICS_FETCH_START" | "APPLICATION_ACTIVITY_STATISTICS_FETCH_SUCCESS" | "APPLICATION_ASSETS_FETCH" | "APPLICATION_ASSETS_FETCH_SUCCESS" | "APPLICATION_ASSETS_UPDATE" | "APPLICATION_BRANCHES_FETCH_FAIL" | "APPLICATION_BRANCHES_FETCH_SUCCESS" | "APPLICATION_BUILD_FETCH_START" | "APPLICATION_BUILD_FETCH_SUCCESS" | "APPLICATION_BUILD_NOT_FOUND" | "APPLICATION_BUILD_SIZE_FETCH_FAIL" | "APPLICATION_BUILD_SIZE_FETCH_START" | "APPLICATION_BUILD_SIZE_FETCH_SUCCESS" | "APPLICATION_COMMAND_AUTOCOMPLETE_REQUEST" | "APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE" | "APPLICATION_COMMAND_EXECUTE_BAD_VERSION" | "APPLICATION_COMMAND_INDEX_FETCH_FAILURE" | "APPLICATION_COMMAND_INDEX_FETCH_REQUEST" | "APPLICATION_COMMAND_INDEX_FETCH_SUCCESS" | "APPLICATION_COMMAND_SET_ACTIVE_COMMAND" | "APPLICATION_COMMAND_SET_PREFERRED_COMMAND" | "APPLICATION_COMMAND_UPDATE_CHANNEL_STATE" | "APPLICATION_COMMAND_UPDATE_OPTIONS" | "APPLICATION_COMMAND_USED" | "APPLICATION_DIRECTORY_FETCH_APPLICATION" | "APPLICATION_DIRECTORY_FETCH_APPLICATION_FAILURE" | "APPLICATION_DIRECTORY_FETCH_APPLICATION_SUCCESS" | "APPLICATION_DIRECTORY_FETCH_CATEGORIES_SUCCESS" | "APPLICATION_DIRECTORY_FETCH_COLLECTIONS" | "APPLICATION_DIRECTORY_FETCH_COLLECTIONS_FAILURE" | "APPLICATION_DIRECTORY_FETCH_COLLECTIONS_SUCCESS" | "APPLICATION_DIRECTORY_FETCH_SEARCH" | "APPLICATION_DIRECTORY_FETCH_SEARCH_FAILURE" | "APPLICATION_DIRECTORY_FETCH_SEARCH_SUCCESS" | "APPLICATION_DIRECTORY_FETCH_SIMILAR_APPLICATIONS" | "APPLICATION_DIRECTORY_FETCH_SIMILAR_APPLICATIONS_FAILURE" | "APPLICATION_DIRECTORY_FETCH_SIMILAR_APPLICATIONS_SUCCESS" | "APPLICATION_FETCH" | "APPLICATION_FETCH_FAIL" | "APPLICATION_FETCH_SUCCESS" | "APPLICATION_STORE_ACCEPT_EULA" | "APPLICATION_STORE_ACCEPT_STORE_TERMS" | "APPLICATION_STORE_CLEAR_DATA" | "APPLICATION_STORE_DIRECTORY_LAYOUT_FETCH_FAILED" | "APPLICATION_STORE_DIRECTORY_LAYOUT_FETCH_SUCCESS" | "APPLICATION_STORE_DIRECTORY_LAYOUT_FETCHING" | "APPLICATION_STORE_LOCATION_CHANGE" | "APPLICATION_STORE_MATURE_AGREE" | "APPLICATION_STORE_RESET_NAVIGATION" | "APPLICATION_SUBSCRIPTIONS_CHANNEL_NOTICE_DISMISSED" | "APPLICATION_SUBSCRIPTIONS_FETCH_ENTITLEMENTS" | "APPLICATION_SUBSCRIPTIONS_FETCH_ENTITLEMENTS_FAILURE" | "APPLICATION_SUBSCRIPTIONS_FETCH_ENTITLEMENTS_SUCCESS" | "APPLICATION_SUBSCRIPTIONS_FETCH_LISTING_FOR_PLAN_SUCCESS" | "APPLICATION_SUBSCRIPTIONS_FETCH_LISTINGS" | "APPLICATION_SUBSCRIPTIONS_FETCH_LISTINGS_FAILURE" | "APPLICATION_SUBSCRIPTIONS_FETCH_LISTINGS_SUCCESS" | "APPLICATION_UPDATE" | "APPLICATIONS_FETCH" | "APPLICATIONS_FETCH_FAIL" | "APPLICATIONS_FETCH_SUCCESS" | "APPLICATIONS_SHELF_FETCH_FAIL" | "APPLICATIONS_SHELF_FETCH_START" | "APPLICATIONS_SHELF_FETCH_SUCCESS" | "APPLIED_BOOSTS_COOLDOWN_FETCH_SUCCESS" | "APPLIED_GUILD_BOOST_COUNT_UPDATE" | "AUDIO_INPUT_DETECTED" | "AUDIO_RESET" | "AUDIO_SET_ATTENUATION" | "AUDIO_SET_AUTOMATIC_GAIN_CONTROL" | "AUDIO_SET_DEBUG_LOGGING" | "AUDIO_SET_DISPLAY_SILENCE_WARNING" | "AUDIO_SET_ECHO_CANCELLATION" | "AUDIO_SET_INPUT_DEVICE" | "AUDIO_SET_INPUT_VOLUME" | "AUDIO_SET_LOCAL_PAN" | "AUDIO_SET_LOCAL_VIDEO_DISABLED" | "AUDIO_SET_LOCAL_VOLUME" | "AUDIO_SET_LOOPBACK" | "AUDIO_SET_MODE" | "AUDIO_SET_NOISE_CANCELLATION" | "AUDIO_SET_NOISE_SUPPRESSION" | "AUDIO_SET_OUTPUT_DEVICE" | "AUDIO_SET_OUTPUT_VOLUME" | "AUDIO_SET_QOS" | "AUDIO_SET_SELF_MUTE" | "AUDIO_SET_SIDECHAIN_COMPRESSION" | "AUDIO_SET_SIDECHAIN_COMPRESSION_STRENGTH" | "AUDIO_SET_SUBSYSTEM" | "AUDIO_SET_TEMPORARY_SELF_MUTE" | "AUDIO_TOGGLE_LOCAL_MUTE" | "AUDIO_TOGGLE_LOCAL_SOUNDBOARD_MUTE" | "AUDIO_TOGGLE_SELF_DEAF" | "AUDIO_TOGGLE_SELF_MUTE" | "AUDIO_VOLUME_CHANGE" | "AUDIT_LOG_FETCH_FAIL" | "AUDIT_LOG_FETCH_NEXT_PAGE_FAIL" | "AUDIT_LOG_FETCH_NEXT_PAGE_START" | "AUDIT_LOG_FETCH_NEXT_PAGE_SUCCESS" | "AUDIT_LOG_FETCH_START" | "AUDIT_LOG_FETCH_SUCCESS" | "AUDIT_LOG_FILTER_BY_ACTION" | "AUDIT_LOG_FILTER_BY_TARGET" | "AUDIT_LOG_FILTER_BY_USER" | "AUTH_INVITE_UPDATE" | "AUTH_SESSION_CHANGE" | "AUTHENTICATOR_CREATE" | "AUTHENTICATOR_DELETE" | "AUTHENTICATOR_UPDATE" | "AUTO_MODERATION_MENTION_RAID_DETECTION" | "AUTO_MODERATION_MENTION_RAID_NOTICE_DISMISS" | "BACKGROUND_SYNC" | "BACKGROUND_SYNC_CHANNEL_MESSAGES" | "BASIC_GUILD_FETCH" | "BASIC_GUILD_FETCH_FAILURE" | "BASIC_GUILD_FETCH_SUCCESS" | "BILLING_CREATE_REFERRAL_PREVIEW_FAIL" | "BILLING_CREATE_REFERRAL_PREVIEW_START" | "BILLING_CREATE_REFERRAL_PREVIEW_SUCCESS" | "BILLING_CREATE_REFERRAL_SUCCESS" | "BILLING_GET_REFERRAL_INCENTIVE_STATUS_FAIL" | "BILLING_GET_REFERRAL_INCENTIVE_STATUS_START" | "BILLING_GET_REFERRAL_INCENTIVE_STATUS_SUCCESS" | "BILLING_IP_COUNTRY_CODE_FAILURE" | "BILLING_IP_COUNTRY_CODE_FETCH_START" | "BILLING_LOCALIZED_PRICING_PROMO_FAILURE" | "BILLING_MOST_RECENT_SUBSCRIPTION_FETCH_SUCCESS" | "BILLING_NITRO_AFFINITY_FETCH_SUCCEEDED" | "BILLING_NITRO_AFFINITY_FETCHED" | "BILLING_PAYMENT_FETCH_SUCCESS" | "BILLING_PAYMENT_SOURCE_CREATE_FAIL" | "BILLING_PAYMENT_SOURCE_CREATE_START" | "BILLING_PAYMENT_SOURCE_CREATE_SUCCESS" | "BILLING_PAYMENT_SOURCE_FETCH_SUCCESS" | "BILLING_PAYMENT_SOURCE_REMOVE_CLEAR_ERROR" | "BILLING_PAYMENT_SOURCE_REMOVE_FAIL" | "BILLING_PAYMENT_SOURCE_REMOVE_START" | "BILLING_PAYMENT_SOURCE_REMOVE_SUCCESS" | "BILLING_PAYMENT_SOURCE_UPDATE_CLEAR_ERROR" | "BILLING_PAYMENT_SOURCE_UPDATE_FAIL" | "BILLING_PAYMENT_SOURCE_UPDATE_START" | "BILLING_PAYMENT_SOURCE_UPDATE_SUCCESS" | "BILLING_PAYMENT_SOURCES_FETCH_FAIL" | "BILLING_PAYMENT_SOURCES_FETCH_START" | "BILLING_PAYMENT_SOURCES_FETCH_SUCCESS" | "BILLING_PAYMENTS_FETCH_SUCCESS" | "BILLING_PERKS_RELEVANCE_FETCH_FAIL" | "BILLING_PERKS_RELEVANCE_FETCH_START" | "BILLING_PERKS_RELEVANCE_FETCH_SUCCESS" | "BILLING_POPUP_BRIDGE_CALLBACK" | "BILLING_POPUP_BRIDGE_STATE_UPDATE" | "BILLING_PREVIOUS_PREMIUM_SUBSCRIPTION_FETCH_SUCCESS" | "BILLING_PURCHASE_TOKEN_AUTH_CLEAR_STATE" | "BILLING_REFERRAL_RESOLVE_FAIL" | "BILLING_REFERRAL_RESOLVE_SUCCESS" | "BILLING_REFERRAL_TRIAL_OFFER_UPDATE" | "BILLING_REFERRALS_REMAINING_FETCH_FAIL" | "BILLING_REFERRALS_REMAINING_FETCH_START" | "BILLING_REFERRALS_REMAINING_FETCH_SUCCESS" | "BILLING_SET_IP_COUNTRY_CODE" | "BILLING_SET_LOCALIZED_PRICING_PROMO" | "BILLING_SUBSCRIPTION_CANCEL_FAIL" | "BILLING_SUBSCRIPTION_CANCEL_START" | "BILLING_SUBSCRIPTION_CANCEL_SUCCESS" | "BILLING_SUBSCRIPTION_FETCH_FAIL" | "BILLING_SUBSCRIPTION_FETCH_START" | "BILLING_SUBSCRIPTION_FETCH_SUCCESS" | "BILLING_SUBSCRIPTION_RESET" | "BILLING_SUBSCRIPTION_UPDATE_FAIL" | "BILLING_SUBSCRIPTION_UPDATE_START" | "BILLING_SUBSCRIPTION_UPDATE_SUCCESS" | "BILLING_USER_OFFER_ACKNOWLEDGED_SUCCESS" | "BILLING_USER_OFFER_FETCH_FAIL" | "BILLING_USER_OFFER_FETCH_START" | "BILLING_USER_OFFER_FETCH_SUCCESS" | "BILLING_USER_TRIAL_OFFER_ACKNOWLEDGED_SUCCESS" | "BILLING_USER_TRIAL_OFFER_FETCH_SUCCESS" | "BLOCKED_DOMAIN_LIST_FETCHED" | "BOOSTED_GUILD_GRACE_PERIOD_NOTICE_DISMISS" | "BRAINTREE_CREATE_CLIENT_SUCCESS" | "BRAINTREE_CREATE_PAYPAL_CLIENT_SUCCESS" | "BRAINTREE_CREATE_VENMO_CLIENT_SUCCESS" | "BRAINTREE_TEARDOWN_PAYPAL_CLIENT" | "BRAINTREE_TEARDOWN_VENMO_CLIENT" | "BRAINTREE_TOKENIZE_PAYPAL_FAIL" | "BRAINTREE_TOKENIZE_PAYPAL_START" | "BRAINTREE_TOKENIZE_PAYPAL_SUCCESS" | "BRAINTREE_TOKENIZE_VENMO_FAIL" | "BRAINTREE_TOKENIZE_VENMO_START" | "BRAINTREE_TOKENIZE_VENMO_SUCCESS" | "BROWSER_HANDOFF_BEGIN" | "BROWSER_HANDOFF_FROM_APP" | "BROWSER_HANDOFF_SET_USER" | "BROWSER_HANDOFF_UNAVAILABLE" | "BUILD_OVERRIDE_RESOLVED" | "BULK_ACK" | "BULK_CLEAR_RECENTS" | "BURST_REACTION_ANIMATION_ADD" | "BURST_REACTION_EFFECT_CLEAR" | "BURST_REACTION_EFFECT_PLAY" | "BURST_REACTION_PICKER_ANIMATION_ADD" | "BURST_REACTION_PICKER_ANIMATION_CLEAR" | "CACHE_LOADED" | "CACHE_LOADED_LAZY" | "CACHE_LOADED_LAZY_NO_CACHE" | "CACHED_EMOJIS_LOADED" | "CACHED_STICKERS_LOADED" | "CALL_CHAT_TOASTS_SET_ENABLED" | "CALL_CONNECT" | "CALL_CONNECT_MULTIPLE" | "CALL_CREATE" | "CALL_DELETE" | "CALL_ENQUEUE_RING" | "CALL_UPDATE" | "CAMPAIGN_CONTEXT_FETCH" | "CAMPAIGN_CONTEXT_FETCH_FAILURE" | "CAMPAIGN_CONTEXT_FETCH_SUCCESS" | "CANDIDATE_GAMES_CHANGE" | "CASH_APP_PAY_AWARENESS_UPSELL_CTA_CLICKED" | "CASH_APP_PAY_AWARENESS_UPSELL_DISMISSED" | "CATEGORY_COLLAPSE" | "CATEGORY_COLLAPSE_ALL" | "CATEGORY_EXPAND" | "CATEGORY_EXPAND_ALL" | "CERTIFIED_DEVICES_SET" | "CHANGE_LOG_FETCH_FAILED" | "CHANGE_LOG_FETCH_SUCCESS" | "CHANGE_LOG_LOCK" | "CHANGE_LOG_MARK_SEEN" | "CHANGE_LOG_SET_CONFIG" | "CHANGE_LOG_SET_OVERRIDE" | "CHANGE_LOG_UNLOCK" | "CHANNEL_ACK" | "CHANNEL_CALL_POPOUT_WINDOW_OPEN" | "CHANNEL_COLLAPSE" | "CHANNEL_CREATE" | "CHANNEL_DELETE" | "CHANNEL_FOLLOWER_CREATED" | "CHANNEL_FOLLOWER_STATS_FETCH_FAILURE" | "CHANNEL_FOLLOWER_STATS_FETCH_SUCCESS" | "CHANNEL_FOLLOWING_PUBLISH_BUMP_DISMISSED" | "CHANNEL_FOLLOWING_PUBLISH_BUMP_HIDE_PERMANENTLY" | "CHANNEL_LOCAL_ACK" | "CHANNEL_MUTE_EXPIRED" | "CHANNEL_PINS_ACK" | "CHANNEL_PINS_UPDATE" | "CHANNEL_PRELOAD" | "CHANNEL_RECIPIENT_ADD" | "CHANNEL_RECIPIENT_REMOVE" | "CHANNEL_RTC_ACTIVE_CHANNELS" | "CHANNEL_RTC_SELECT_PARTICIPANT" | "CHANNEL_RTC_UPDATE_CHAT_OPEN" | "CHANNEL_RTC_UPDATE_LAYOUT" | "CHANNEL_RTC_UPDATE_PARTICIPANTS_OPEN" | "CHANNEL_RTC_UPDATE_STAGE_STREAM_SIZE" | "CHANNEL_RTC_UPDATE_STAGE_VIDEO_LIMIT_BOOST_UPSELL_DISMISSED" | "CHANNEL_RTC_UPDATE_VOICE_PARTICIPANTS_HIDDEN" | "CHANNEL_SAFETY_WARNING_FEEDBACK" | "CHANNEL_SELECT" | "CHANNEL_SETTINGS_CLOSE" | "CHANNEL_SETTINGS_INIT" | "CHANNEL_SETTINGS_LOADED_INVITES" | "CHANNEL_SETTINGS_OPEN" | "CHANNEL_SETTINGS_OVERWRITE_SELECT" | "CHANNEL_SETTINGS_PERMISSIONS_INIT" | "CHANNEL_SETTINGS_PERMISSIONS_SAVE_SUCCESS" | "CHANNEL_SETTINGS_PERMISSIONS_SELECT_PERMISSION" | "CHANNEL_SETTINGS_PERMISSIONS_SET_ADVANCED_MODE" | "CHANNEL_SETTINGS_PERMISSIONS_SUBMITTING" | "CHANNEL_SETTINGS_PERMISSIONS_UPDATE_PERMISSION" | "CHANNEL_SETTINGS_SET_SECTION" | "CHANNEL_SETTINGS_SUBMIT" | "CHANNEL_SETTINGS_SUBMIT_FAILURE" | "CHANNEL_SETTINGS_SUBMIT_SUCCESS" | "CHANNEL_SETTINGS_UPDATE" | "CHANNEL_STATUSES" | "CHANNEL_TOGGLE_MEMBERS_SECTION" | "CHANNEL_TOGGLE_SUMMARIES_SECTION" | "CHANNEL_UPDATES" | "CHECK_LAUNCHABLE_GAME" | "CHECKING_FOR_UPDATES" | "CHECKOUT_RECOVERY_STATUS_FETCH" | "CHECKOUT_RECOVERY_STATUS_FETCH_FAILURE" | "CHECKOUT_RECOVERY_STATUS_FETCH_SUCCESS" | "CLAN_SETTINGS_FETCH_START" | "CLAN_SETTINGS_FETCH_SUCCESS" | "CLAN_SETTINGS_SUBMIT" | "CLAN_SETTINGS_SUBMIT_ERROR" | "CLAN_SETTINGS_SUBMIT_SUCCESS" | "CLAN_SETTINGS_UPDATE" | "CLAN_SETUP_ERROR" | "CLAN_SETUP_RESET" | "CLAN_SETUP_SUBMIT" | "CLAN_SETUP_SUCCESS" | "CLAN_SETUP_UPDATE" | "CLEAR_AUTHENTICATION_ERRORS" | "CLEAR_CACHES" | "CLEAR_CHANNEL_SAFETY_WARNINGS" | "CLEAR_CONVERSATION_SUMMARIES" | "CLEAR_GRAVITY_READ_STATES" | "CLEAR_HANG_STATUS" | "CLEAR_INTERACTION_MODAL_STATE" | "CLEAR_LAST_SESSION_VOICE_CHANNEL_ID" | "CLEAR_MENTIONS" | "CLEAR_MESSAGES" | "CLEAR_OLDEST_UNREAD_MESSAGE" | "CLEAR_PENDING_CHANNEL_AND_ROLE_UPDATES" | "CLEAR_REMOTE_DISCONNECT_VOICE_CHANNEL_ID" | "CLEAR_STICKER_PREVIEW" | "CLIENT_THEMES_EDITOR_CLOSE" | "CLIENT_THEMES_EDITOR_OPEN" | "CLIPS_CLASSIFY_HARDWARE" | "CLIPS_CLEAR_CLIPS_SESSION" | "CLIPS_CLEAR_NEW_CLIP_IDS" | "CLIPS_DELETE_CLIP" | "CLIPS_DISMISS_EDUCATION" | "CLIPS_INIT" | "CLIPS_INIT_FAILURE" | "CLIPS_LOAD_DIRECTORY_SUCCESS" | "CLIPS_RESTART" | "CLIPS_SAVE_ANIMATION_END" | "CLIPS_SAVE_CLIP" | "CLIPS_SAVE_CLIP_ERROR" | "CLIPS_SAVE_CLIP_PLACEHOLDER" | "CLIPS_SAVE_CLIP_PLACEHOLDER_ERROR" | "CLIPS_SAVE_CLIP_START" | "CLIPS_SETTINGS_UPDATE" | "CLIPS_SHOW_CALL_WARNING" | "CLIPS_UPDATE_METADATA" | "CLOSE_SUSPENDED_USER" | "COLLECTIBLES_CATEGORIES_FETCH" | "COLLECTIBLES_CATEGORIES_FETCH_FAILURE" | "COLLECTIBLES_CATEGORIES_FETCH_SUCCESS" | "COLLECTIBLES_CATEGORY_ITEMS_VIEWED" | "COLLECTIBLES_CLAIM" | "COLLECTIBLES_CLAIM_FAILURE" | "COLLECTIBLES_CLAIM_SUCCESS" | "COLLECTIBLES_MARKETING_FETCH" | "COLLECTIBLES_MARKETING_FETCH_SUCCESS" | "COLLECTIBLES_PRODUCT_DETAILS_OPEN" | "COLLECTIBLES_PRODUCT_FETCH" | "COLLECTIBLES_PRODUCT_FETCH_FAILURE" | "COLLECTIBLES_PRODUCT_FETCH_SUCCESS" | "COLLECTIBLES_PURCHASES_FETCH" | "COLLECTIBLES_PURCHASES_FETCH_FAILURE" | "COLLECTIBLES_PURCHASES_FETCH_SUCCESS" | "COLLECTIBLES_SHOP_CLOSE" | "COLLECTIBLES_SHOP_OPEN" | "COMMANDS_MIGRATION_NOTICE_DISMISSED" | "COMMANDS_MIGRATION_OVERVIEW_TOOLTIP_DISMISSED" | "COMMANDS_MIGRATION_TOGGLE_TOOLTIP_DISMISSED" | "COMMANDS_MIGRATION_UPDATE_SUCCESS" | "COMPLETE_NEW_MEMBER_ACTION" | "COMPLETE_SIGN_UP" | "CONNECTED_DEVICE_IGNORE" | "CONNECTED_DEVICE_NEVER_SHOW_MODAL" | "CONNECTED_DEVICE_SET" | "CONNECTION_CLOSED" | "CONNECTION_OPEN" | "CONNECTION_OPEN_SUPPLEMENTAL" | "CONNECTION_RESUMED" | "CONNECTIONS_GRID_MODAL_HIDE" | "CONNECTIONS_GRID_MODAL_SHOW" | "CONSOLE_COMMAND_UPDATE" | "CONTENT_INVENTORY_CLEAR_DELETE_HISTORY_ERROR" | "CONTENT_INVENTORY_CLEAR_FEED" | "CONTENT_INVENTORY_DEBUG_CLEAR_IMPRESSIONS" | "CONTENT_INVENTORY_DEBUG_LOG_IMPRESSIONS" | "CONTENT_INVENTORY_DEBUG_TOGGLE_FAST_IMPRESSION_CAPPING" | "CONTENT_INVENTORY_DEBUG_TOGGLE_IMPRESSION_CAPPING" | "CONTENT_INVENTORY_DELETE_OUTBOX_ENTRY_FAILURE" | "CONTENT_INVENTORY_DELETE_OUTBOX_ENTRY_START" | "CONTENT_INVENTORY_DELETE_OUTBOX_ENTRY_SUCCESS" | "CONTENT_INVENTORY_FETCH_OUTBOX_FAILURE" | "CONTENT_INVENTORY_FETCH_OUTBOX_START" | "CONTENT_INVENTORY_FETCH_OUTBOX_SUCCESS" | "CONTENT_INVENTORY_INBOX_STALE" | "CONTENT_INVENTORY_MANUAL_REFRESH" | "CONTENT_INVENTORY_SET_FEED" | "CONTENT_INVENTORY_SET_FEED_STATE" | "CONTENT_INVENTORY_SET_FILTERS" | "CONTENT_INVENTORY_TOGGLE_FEED_HIDDEN" | "CONTENT_INVENTORY_TRACK_ITEM_IMPRESSIONS" | "CONTEXT_MENU_CLOSE" | "CONTEXT_MENU_OPEN" | "CONVERSATION_SUMMARY_UPDATE" | "CREATE_PENDING_REPLY" | "CREATE_REFERRALS_SUCCESS" | "CREATE_SHALLOW_PENDING_REPLY" | "CREATOR_MONETIZATION_NAG_ACTIVATE_ELIGIBLITY_FETCH_SUCCESS" | "CREATOR_MONETIZATION_PRICE_TIERS_FETCH" | "CREATOR_MONETIZATION_PRICE_TIERS_FETCH_FAILURE" | "CREATOR_MONETIZATION_PRICE_TIERS_FETCH_SUCCESS" | "CURRENT_BUILD_OVERRIDE_RESOLVED" | "CURRENT_USER_UPDATE" | "DCF_DAILY_CAP_OVERRIDE" | "DCF_HANDLE_DC_DISMISSED" | "DCF_HANDLE_DC_SHOWN" | "DCF_RESET" | "DECAY_READ_STATES" | "DELETE_INVALID_HANG_STATUSES" | "DELETE_PENDING_REPLY" | "DELETE_SUMMARY" | "DELETED_ENTITY_IDS" | "DETECTABLE_GAME_SUPPLEMENTAL_FETCH" | "DETECTABLE_GAME_SUPPLEMENTAL_FETCH_FAILURE" | "DETECTABLE_GAME_SUPPLEMENTAL_FETCH_SUCCESS" | "DETECTED_OFF_PLATFORM_PREMIUM_PERKS_DISMISS" | "DEV_TOOLS_DESIGN_TOGGLE_SET" | "DEV_TOOLS_DESIGN_TOGGLE_WEB_SET" | "DEV_TOOLS_DEV_SETTING_SET" | "DEV_TOOLS_SETTINGS_UPDATE" | "DEVELOPER_ACTIVITY_SHELF_FETCH_FAIL" | "DEVELOPER_ACTIVITY_SHELF_FETCH_START" | "DEVELOPER_ACTIVITY_SHELF_FETCH_SUCCESS" | "DEVELOPER_ACTIVITY_SHELF_MARK_ACTIVITY_USED" | "DEVELOPER_ACTIVITY_SHELF_SET_ACTIVITY_URL_OVERRIDE" | "DEVELOPER_ACTIVITY_SHELF_TOGGLE_USE_ACTIVITY_URL_OVERRIDE" | "DEVELOPER_ACTIVITY_SHELF_UPDATE_FILTER" | "DEVELOPER_OPTIONS_UPDATE_SETTINGS" | "DEVELOPER_TEST_MODE_AUTHORIZATION_FAIL" | "DEVELOPER_TEST_MODE_AUTHORIZATION_START" | "DEVELOPER_TEST_MODE_AUTHORIZATION_SUCCESS" | "DEVELOPER_TEST_MODE_RESET" | "DEVELOPER_TEST_MODE_RESET_ERROR" | "DISABLE_AUTOMATIC_ACK" | "DISCOVER_CHECKLIST_FETCH_FAILURE" | "DISCOVER_CHECKLIST_FETCH_START" | "DISCOVER_CHECKLIST_FETCH_SUCCESS" | "DISCOVER_GUILDS_FETCH_FAILURE" | "DISCOVER_GUILDS_FETCH_START" | "DISCOVER_GUILDS_FETCH_SUCCESS" | "DISMISS_CHANNEL_SAFETY_WARNINGS" | "DISMISS_FAVORITE_SUGGESTION" | "DISMISS_MEDIA_POST_SHARE_PROMPT" | "DISMISS_SIGN_UP" | "DISPATCH_APPLICATION_ADD_TO_INSTALLATIONS" | "DISPATCH_APPLICATION_CANCEL" | "DISPATCH_APPLICATION_ERROR" | "DISPATCH_APPLICATION_INSTALL" | "DISPATCH_APPLICATION_INSTALL_SCRIPTS_PROGRESS_UPDATE" | "DISPATCH_APPLICATION_LAUNCH_SETUP_COMPLETE" | "DISPATCH_APPLICATION_LAUNCH_SETUP_START" | "DISPATCH_APPLICATION_MOVE_UP" | "DISPATCH_APPLICATION_REMOVE_FINISHED" | "DISPATCH_APPLICATION_REPAIR" | "DISPATCH_APPLICATION_STATE_UPDATE" | "DISPATCH_APPLICATION_UNINSTALL" | "DISPATCH_APPLICATION_UPDATE" | "DISPLAYED_INVITE_SHOW" | "DOMAIN_MIGRATION_FAILURE" | "DOMAIN_MIGRATION_SKIP" | "DOMAIN_MIGRATION_START" | "DRAFT_CHANGE" | "DRAFT_CLEAR" | "DRAFT_SAVE" | "DRAWER_CLOSE" | "DRAWER_OPEN" | "DRAWER_SELECT_TAB" | "DROPS_ELIGIBILITY_FETCH_SUCCESS" | "DROPS_ENROLLED_USER_FETCH_SUCCESS" | "DROPS_FETCH_PROGRESS_FAILURE" | "DROPS_FETCH_PROGRESS_SUCCESS" | "DROPS_HEARTBEAT_FAILURE" | "DROPS_HEARTBEAT_SUCCESS" | "DROPS_PLATFORM_AVAILABILITY_SUCCESS" | "DROPS_UNENROLL_USER" | "DROPS_USER_STATUS_FETCH_FAILURE" | "DROPS_USER_STATUS_FETCH_SUCCESS" | "EMAIL_SETTINGS_FETCH_SUCCESS" | "EMAIL_SETTINGS_UPDATE" | "EMAIL_SETTINGS_UPDATE_SUCCESS" | "EMBEDDED_ACTIVITY_CLOSE" | "EMBEDDED_ACTIVITY_DEFERRED_OPEN" | "EMBEDDED_ACTIVITY_DISMISS_NEW_INDICATOR" | "EMBEDDED_ACTIVITY_FETCH_SHELF" | "EMBEDDED_ACTIVITY_FETCH_SHELF_FAIL" | "EMBEDDED_ACTIVITY_FETCH_SHELF_SUCCESS" | "EMBEDDED_ACTIVITY_LAUNCH_FAIL" | "EMBEDDED_ACTIVITY_LAUNCH_START" | "EMBEDDED_ACTIVITY_LAUNCH_SUCCESS" | "EMBEDDED_ACTIVITY_OPEN" | "EMBEDDED_ACTIVITY_SET_CONFIG" | "EMBEDDED_ACTIVITY_SET_FOCUSED_LAYOUT" | "EMBEDDED_ACTIVITY_SET_ORIENTATION_LOCK_STATE" | "EMBEDDED_ACTIVITY_SET_PANEL_MODE" | "EMBEDDED_ACTIVITY_UPDATE" | "EMBEDDED_ACTIVITY_UPDATE_V2" | "EMOJI_AUTOSUGGESTION_UPDATE" | "EMOJI_CAPTIONS_FETCH" | "EMOJI_CAPTIONS_FETCH_ERROR" | "EMOJI_CAPTIONS_FETCH_SUCCESS" | "EMOJI_DELETE" | "EMOJI_FETCH_FAILURE" | "EMOJI_FETCH_SUCCESS" | "EMOJI_TRACK_USAGE" | "EMOJI_UPLOAD_START" | "EMOJI_UPLOAD_STOP" | "ENABLE_AUTOMATIC_ACK" | "ENABLE_GUILD_SIGN_UP" | "ENABLE_USER_SIGN_UP" | "ENTITLEMENT_CREATE" | "ENTITLEMENT_DELETE" | "ENTITLEMENT_FETCH_APPLICATION_FAIL" | "ENTITLEMENT_FETCH_APPLICATION_START" | "ENTITLEMENT_FETCH_APPLICATION_SUCCESS" | "ENTITLEMENT_UPDATE" | "ENTITLEMENTS_FETCH_FOR_USER_FAIL" | "ENTITLEMENTS_FETCH_FOR_USER_START" | "ENTITLEMENTS_FETCH_FOR_USER_SUCCESS" | "ENTITLEMENTS_GIFTABLE_FETCH_SUCCESS" | "EULA_FETCH_SUCCESS" | "EVENT_DIRECTORY_FETCH_FAILURE" | "EVENT_DIRECTORY_FETCH_START" | "EVENT_DIRECTORY_FETCH_SUCCESS" | "EXPERIMENT_OVERRIDE_BUCKET" | "EXPERIMENTS_FETCH" | "EXPERIMENTS_FETCH_FAILURE" | "EXPERIMENTS_FETCH_SUCCESS" | "FAMILY_CENTER_FETCH_START" | "FAMILY_CENTER_HANDLE_TAB_SELECT" | "FAMILY_CENTER_INITIAL_LOAD" | "FAMILY_CENTER_LINK_CODE_FETCH_SUCCESS" | "FAMILY_CENTER_LINKED_USERS_FETCH_SUCCESS" | "FAMILY_CENTER_REQUEST_LINK_REMOVE_SUCCESS" | "FAMILY_CENTER_REQUEST_LINK_SUCCESS" | "FAMILY_CENTER_REQUEST_LINK_UPDATE_SUCCESS" | "FAMILY_CENTER_TEEN_ACTIVITY_FETCH_SUCCESS" | "FAMILY_CENTER_TEEN_ACTIVITY_MORE_FETCH_SUCCESS" | "FEEDBACK_OVERRIDE_CLEAR" | "FEEDBACK_OVERRIDE_SET" | "FETCH_AUTH_SESSIONS_SUCCESS" | "FETCH_CLAN_DISCOVERY_PROFILE_LIST_SUCCESS" | "FETCH_CLAN_DISCOVERY_SEARCH_RESULT_FAILURE" | "FETCH_CLAN_DISCOVERY_SEARCH_RESULT_SUCCESS" | "FETCH_GUILD_EVENT" | "FETCH_GUILD_EVENTS_FOR_GUILD" | "FETCH_GUILD_MEMBER_SUPPLEMENTAL_SUCCESS" | "FETCH_INTEGRATION_APPLICATION_IDS_FOR_MY_GUILDS" | "FETCH_INTEGRATION_APPLICATION_IDS_FOR_MY_GUILDS_FAILURE" | "FETCH_INTEGRATION_APPLICATION_IDS_FOR_MY_GUILDS_SUCCESS" | "FETCH_PRIVATE_CHANNEL_INTEGRATIONS_FAIL" | "FETCH_PRIVATE_CHANNEL_INTEGRATIONS_START" | "FETCH_PRIVATE_CHANNEL_INTEGRATIONS_SUCCESS" | "FETCH_STATIC_CLAN_LIST_FAILURE" | "FETCH_STATIC_CLAN_LIST_START" | "FETCH_STATIC_CLAN_LIST_SUCCESS" | "FINGERPRINT" | "FORCE_INVISIBLE" | "FORGOT_PASSWORD_REQUEST" | "FORGOT_PASSWORD_SENT" | "FORUM_SEARCH_CLEAR" | "FORUM_SEARCH_FAILURE" | "FORUM_SEARCH_QUERY_UPDATED" | "FORUM_SEARCH_START" | "FORUM_SEARCH_SUCCESS" | "FORUM_UNREADS" | "FRIEND_INVITE_CREATE_FAILURE" | "FRIEND_INVITE_CREATE_REQUEST" | "FRIEND_INVITE_CREATE_SUCCESS" | "FRIEND_INVITE_REVOKE_REQUEST" | "FRIEND_INVITE_REVOKE_SUCCESS" | "FRIEND_INVITES_FETCH_REQUEST" | "FRIEND_INVITES_FETCH_RESPONSE" | "FRIEND_SUGGESTION_CREATE" | "FRIEND_SUGGESTION_DELETE" | "FRIENDS_SET_INITIAL_SECTION" | "FRIENDS_SET_SECTION" | "GAME_CLOUD_SYNC_COMPLETE" | "GAME_CLOUD_SYNC_CONFLICT" | "GAME_CLOUD_SYNC_ERROR" | "GAME_CLOUD_SYNC_START" | "GAME_CLOUD_SYNC_UPDATE" | "GAME_CONSOLE_FETCH_DEVICES_FAIL" | "GAME_CONSOLE_FETCH_DEVICES_START" | "GAME_CONSOLE_FETCH_DEVICES_SUCCESS" | "GAME_CONSOLE_SELECT_DEVICE" | "GAME_DETECTION_DEBUGGING_START" | "GAME_DETECTION_DEBUGGING_STOP" | "GAME_DETECTION_DEBUGGING_TICK" | "GAME_DETECTION_WATCH_CANDIDATE_GAMES_START" | "GAME_ICON_UPDATE" | "GAME_INVITE_CLEAR_UNSEEN" | "GAME_INVITE_CREATE" | "GAME_INVITE_DELETE" | "GAME_INVITE_DELETE_MANY" | "GAME_INVITE_UPDATE_STATUS" | "GAME_LAUNCH_FAIL" | "GAME_LAUNCH_START" | "GAME_LAUNCH_SUCCESS" | "GAME_LAUNCHABLE_UPDATE" | "GAME_PROFILE_GET_SIMILAR_GAMES_SUCCESS" | "GAME_PROFILE_OPEN" | "GAMES_DATABASE_FETCH" | "GAMES_DATABASE_FETCH_FAIL" | "GAMES_DATABASE_UPDATE" | "GENERIC_PUSH_NOTIFICATION_SENT" | "GIF_PICKER_INITIALIZE" | "GIF_PICKER_QUERY" | "GIF_PICKER_QUERY_FAILURE" | "GIF_PICKER_QUERY_SUCCESS" | "GIF_PICKER_SUGGESTIONS_SUCCESS" | "GIF_PICKER_TRENDING_FETCH_SUCCESS" | "GIF_PICKER_TRENDING_SEARCH_TERMS_SUCCESS" | "GIFT_CODE_CREATE" | "GIFT_CODE_CREATE_SUCCESS" | "GIFT_CODE_REDEEM" | "GIFT_CODE_REDEEM_FAILURE" | "GIFT_CODE_REDEEM_SUCCESS" | "GIFT_CODE_RESOLVE" | "GIFT_CODE_RESOLVE_FAILURE" | "GIFT_CODE_RESOLVE_SUCCESS" | "GIFT_CODE_REVOKE_SUCCESS" | "GIFT_CODE_UPDATE" | "GIFT_CODES_FETCH" | "GIFT_CODES_FETCH_FAILURE" | "GIFT_CODES_FETCH_SUCCESS" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_BULK_CLEAR" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_COUNT_CLEAR" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_COUNT_FAILURE" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_COUNT_START" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_COUNT_SUCCESS" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_FAILURE" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_INITIALIZED" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_LAYOUT_RESET" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_START" | "GLOBAL_DISCOVERY_SERVERS_SEARCH_SUCCESS" | "GRAVITY_ACK_ITEMS" | "GRAVITY_CUSTOM_SCORES_UPDATED" | "GRAVITY_FEEDBACK_GIVEN" | "GRAVITY_TAB_OPENED" | "GUILD_ACK" | "GUILD_ANALYTICS_ENGAGEMENT_OVERVIEW_FETCH_FAILURE" | "GUILD_ANALYTICS_ENGAGEMENT_OVERVIEW_FETCH_SUCCESS" | "GUILD_ANALYTICS_GROWTH_ACTIVATION_OVERVIEW_FETCH_FAILURE" | "GUILD_ANALYTICS_GROWTH_ACTIVATION_OVERVIEW_FETCH_SUCCESS" | "GUILD_ANALYTICS_GROWTH_ACTIVATION_RETENTION_FETCH_FAILURE" | "GUILD_ANALYTICS_GROWTH_ACTIVATION_RETENTION_FETCH_SUCCESS" | "GUILD_ANALYTICS_MEMBER_INSIGHTS_FETCH_SUCCESS" | "GUILD_APPLICATION_COMMAND_INDEX_UPDATE" | "GUILD_APPLICATIONS_FETCH_SUCCESS" | "GUILD_APPLIED_BOOSTS_FETCH_SUCCESS" | "GUILD_APPLY_BOOST_FAIL" | "GUILD_APPLY_BOOST_START" | "GUILD_APPLY_BOOST_SUCCESS" | "GUILD_BAN_ADD" | "GUILD_BAN_REMOVE" | "GUILD_BOOST_SLOT_CREATE" | "GUILD_BOOST_SLOT_UPDATE" | "GUILD_BOOST_SLOT_UPDATE_SUCCESS" | "GUILD_BOOST_SLOTS_FETCH_SUCCESS" | "GUILD_CREATE" | "GUILD_DELETE" | "GUILD_DIRECTORY_ADMIN_ENTRIES_FETCH_SUCCESS" | "GUILD_DIRECTORY_CACHED_SEARCH" | "GUILD_DIRECTORY_CATEGORY_SELECT" | "GUILD_DIRECTORY_COUNTS_FETCH_SUCCESS" | "GUILD_DIRECTORY_ENTRY_CREATE" | "GUILD_DIRECTORY_ENTRY_DELETE" | "GUILD_DIRECTORY_ENTRY_UPDATE" | "GUILD_DIRECTORY_FETCH_FAILURE" | "GUILD_DIRECTORY_FETCH_START" | "GUILD_DIRECTORY_FETCH_SUCCESS" | "GUILD_DIRECTORY_SEARCH_CLEAR" | "GUILD_DIRECTORY_SEARCH_FAILURE" | "GUILD_DIRECTORY_SEARCH_START" | "GUILD_DIRECTORY_SEARCH_SUCCESS" | "GUILD_DISCOVERY_CATEGORY_ADD" | "GUILD_DISCOVERY_CATEGORY_DELETE" | "GUILD_DISCOVERY_CATEGORY_FETCH_SUCCESS" | "GUILD_DISCOVERY_CATEGORY_UPDATE_FAIL" | "GUILD_DISCOVERY_CLEAR_SEARCH" | "GUILD_DISCOVERY_CLEAR_SEEN_GUILDS" | "GUILD_DISCOVERY_FETCH_FAILURE" | "GUILD_DISCOVERY_FETCH_START" | "GUILD_DISCOVERY_FETCH_SUCCESS" | "GUILD_DISCOVERY_GUILD_SEEN" | "GUILD_DISCOVERY_METADATA_FETCH_FAIL" | "GUILD_DISCOVERY_POPULAR_FETCH_FAILURE" | "GUILD_DISCOVERY_POPULAR_FETCH_START" | "GUILD_DISCOVERY_POPULAR_FETCH_SUCCESS" | "GUILD_DISCOVERY_SEARCH_COUNTS_FAIL" | "GUILD_DISCOVERY_SEARCH_FETCH_FAILURE" | "GUILD_DISCOVERY_SEARCH_FETCH_START" | "GUILD_DISCOVERY_SEARCH_FETCH_SUCCESS" | "GUILD_DISCOVERY_SEARCH_INIT" | "GUILD_DISCOVERY_SEARCH_UPDATE_COUNTS" | "GUILD_DISCOVERY_SELECT_CATEGORY" | "GUILD_DISCOVERY_SLUG_FETCH_FAIL" | "GUILD_DISCOVERY_SLUG_FETCH_SUCCESS" | "GUILD_EMOJIS_UPDATE" | "GUILD_FEATURE_ACK" | "GUILD_FOLDER_COLLAPSE" | "GUILD_FOLDER_CREATE_LOCAL" | "GUILD_FOLDER_DELETE_LOCAL" | "GUILD_FOLDER_EDIT_LOCAL" | "GUILD_GEO_RESTRICTED" | "GUILD_HOME_SETTINGS_FETCH_FAIL" | "GUILD_HOME_SETTINGS_FETCH_START" | "GUILD_HOME_SETTINGS_FETCH_SUCCESS" | "GUILD_HOME_SETTINGS_TOGGLE_ENABLED" | "GUILD_HOME_SETTINGS_UPDATE_FAIL" | "GUILD_HOME_SETTINGS_UPDATE_START" | "GUILD_HOME_SETTINGS_UPDATE_SUCCESS" | "GUILD_IDENTITY_SETTINGS_CLEAR_ERRORS" | "GUILD_IDENTITY_SETTINGS_INIT" | "GUILD_IDENTITY_SETTINGS_RESET_ALL_PENDING" | "GUILD_IDENTITY_SETTINGS_RESET_AND_CLOSE_FORM" | "GUILD_IDENTITY_SETTINGS_RESET_PENDING_MEMBER_CHANGES" | "GUILD_IDENTITY_SETTINGS_RESET_PENDING_PROFILE_CHANGES" | "GUILD_IDENTITY_SETTINGS_SET_GUILD" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_AVATAR" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_AVATAR_DECORATION" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_BANNER" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_BIO" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_NICKNAME" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_PROFILE_EFFECT_ID" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_PRONOUNS" | "GUILD_IDENTITY_SETTINGS_SET_PENDING_THEME_COLORS" | "GUILD_IDENTITY_SETTINGS_SUBMIT" | "GUILD_IDENTITY_SETTINGS_SUBMIT_FAILURE" | "GUILD_IDENTITY_SETTINGS_SUBMIT_SUCCESS" | "GUILD_INTEGRATIONS_UPDATE" | "GUILD_JOIN" | "GUILD_JOIN_REQUEST_BY_ID_FETCH_SUCCESS" | "GUILD_JOIN_REQUEST_CREATE" | "GUILD_JOIN_REQUEST_DELETE" | "GUILD_JOIN_REQUEST_UPDATE" | "GUILD_JOIN_REQUESTS_BULK_ACTION" | "GUILD_JOIN_REQUESTS_FETCH_FAILURE" | "GUILD_JOIN_REQUESTS_FETCH_START" | "GUILD_JOIN_REQUESTS_FETCH_SUCCESS" | "GUILD_JOIN_REQUESTS_SET_APPLICATION_TAB" | "GUILD_JOIN_REQUESTS_SET_SELECTED" | "GUILD_JOIN_REQUESTS_SET_SORT_ORDER" | "GUILD_MEMBER_ADD" | "GUILD_MEMBER_LIST_UPDATE" | "GUILD_MEMBER_PROFILE_UPDATE" | "GUILD_MEMBER_REMOVE" | "GUILD_MEMBER_UPDATE" | "GUILD_MEMBER_UPDATE_LOCAL" | "GUILD_MEMBERS_CHUNK_BATCH" | "GUILD_MEMBERS_REQUEST" | "GUILD_MOVE_BY_ID" | "GUILD_MUTE_EXPIRED" | "GUILD_NEW_MEMBER_ACTION_UPDATE_SUCCESS" | "GUILD_NEW_MEMBER_ACTIONS_DELETE_SUCCESS" | "GUILD_NEW_MEMBER_ACTIONS_FETCH_FAIL" | "GUILD_NEW_MEMBER_ACTIONS_FETCH_START" | "GUILD_NEW_MEMBER_ACTIONS_FETCH_SUCCESS" | "GUILD_NSFW_AGREE" | "GUILD_ONBOARDING_COMPLETE" | "GUILD_ONBOARDING_PROMPTS_FETCH_FAILURE" | "GUILD_ONBOARDING_PROMPTS_FETCH_START" | "GUILD_ONBOARDING_PROMPTS_FETCH_SUCCESS" | "GUILD_ONBOARDING_PROMPTS_LOCAL_UPDATE" | "GUILD_ONBOARDING_SELECT_OPTION" | "GUILD_ONBOARDING_SET_STEP" | "GUILD_ONBOARDING_START" | "GUILD_ONBOARDING_UPDATE_RESPONSES_SUCCESS" | "GUILD_POPOUT_FETCH_FAILURE" | "GUILD_POPOUT_FETCH_START" | "GUILD_POPOUT_FETCH_SUCCESS" | "GUILD_PRODUCT_CREATE" | "GUILD_PRODUCT_DELETE" | "GUILD_PRODUCT_FETCH" | "GUILD_PRODUCT_FETCH_FAILURE" | "GUILD_PRODUCT_FETCH_SUCCESS" | "GUILD_PRODUCT_UPDATE" | "GUILD_PRODUCTS_FETCH" | "GUILD_PRODUCTS_FETCH_FAILURE" | "GUILD_PRODUCTS_FETCH_SUCCESS" | "GUILD_PROGRESS_COMPLETED_SEEN" | "GUILD_PROGRESS_DISMISS" | "GUILD_PROGRESS_INITIALIZE" | "GUILD_PROMPT_VIEWED" | "GUILD_RECOMMENDATION_FETCH" | "GUILD_RECOMMENDATION_FETCH_FAILURE" | "GUILD_RECOMMENDATION_FETCH_SUCCESS" | "GUILD_RESOURCE_CHANNEL_UPDATE_SUCCESS" | "GUILD_ROLE_CONNECTION_ELIGIBILITY_FETCH_SUCCESS" | "GUILD_ROLE_CONNECTIONS_CONFIGURATIONS_FETCH_SUCCESS" | "GUILD_ROLE_CONNECTIONS_MODAL_SHOW" | "GUILD_ROLE_CREATE" | "GUILD_ROLE_DELETE" | "GUILD_ROLE_MEMBER_ADD" | "GUILD_ROLE_MEMBER_BULK_ADD" | "GUILD_ROLE_MEMBER_COUNT_FETCH_SUCCESS" | "GUILD_ROLE_MEMBER_COUNT_UPDATE" | "GUILD_ROLE_MEMBER_REMOVE" | "GUILD_ROLE_SUBSCRIPTIONS_CREATE_LISTING" | "GUILD_ROLE_SUBSCRIPTIONS_DELETE_GROUP_LISTING" | "GUILD_ROLE_SUBSCRIPTIONS_DELETE_LISTING" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_LISTING_FOR_PLAN" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_LISTING_FOR_PLAN_SUCCESS" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_LISTINGS" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_LISTINGS_FAILURE" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_LISTINGS_SUCCESS" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_RESTRICTIONS" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_RESTRICTIONS_ABORTED" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_RESTRICTIONS_FAILURE" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_RESTRICTIONS_SUCCESS" | "GUILD_ROLE_SUBSCRIPTIONS_FETCH_TEMPLATES" | "GUILD_ROLE_SUBSCRIPTIONS_STASH_TEMPLATE_CHANNELS" | "GUILD_ROLE_SUBSCRIPTIONS_UPDATE_GROUP_LISTING" | "GUILD_ROLE_SUBSCRIPTIONS_UPDATE_LISTING" | "GUILD_ROLE_SUBSCRIPTIONS_UPDATE_SUBSCRIPTION_TRIAL" | "GUILD_ROLE_SUBSCRIPTIONS_UPDATE_SUBSCRIPTIONS_SETTINGS" | "GUILD_ROLE_UPDATE" | "GUILD_SCHEDULED_EVENT_CREATE" | "GUILD_SCHEDULED_EVENT_DELETE" | "GUILD_SCHEDULED_EVENT_EXCEPTION_CREATE" | "GUILD_SCHEDULED_EVENT_EXCEPTION_DELETE" | "GUILD_SCHEDULED_EVENT_EXCEPTION_UPDATE" | "GUILD_SCHEDULED_EVENT_EXCEPTIONS_DELETE" | "GUILD_SCHEDULED_EVENT_RSVPS_FETCH_SUCESS" | "GUILD_SCHEDULED_EVENT_UPDATE" | "GUILD_SCHEDULED_EVENT_USER_ADD" | "GUILD_SCHEDULED_EVENT_USER_COUNTS_FETCH_SUCCESS" | "GUILD_SCHEDULED_EVENT_USER_REMOVE" | "GUILD_SCHEDULED_EVENT_USERS_FETCH_SUCCESS" | "GUILD_SEARCH_RECENT_MEMBERS" | "GUILD_SETTINGS_CANCEL_CHANGES" | "GUILD_SETTINGS_CLOSE" | "GUILD_SETTINGS_DEFAULT_CHANNELS_RESET" | "GUILD_SETTINGS_DEFAULT_CHANNELS_SAVE_FAILED" | "GUILD_SETTINGS_DEFAULT_CHANNELS_SAVE_SUCCESS" | "GUILD_SETTINGS_DEFAULT_CHANNELS_SUBMIT" | "GUILD_SETTINGS_DEFAULT_CHANNELS_TOGGLE" | "GUILD_SETTINGS_INIT" | "GUILD_SETTINGS_LOADED_BANS" | "GUILD_SETTINGS_LOADED_BANS_BATCH" | "GUILD_SETTINGS_LOADED_INTEGRATIONS" | "GUILD_SETTINGS_LOADED_INVITES" | "GUILD_SETTINGS_ONBOARDING_ADD_NEW_MEMBER_ACTION" | "GUILD_SETTINGS_ONBOARDING_ADD_RESOURCE_CHANNEL" | "GUILD_SETTINGS_ONBOARDING_DELETE_NEW_MEMBER_ACTION" | "GUILD_SETTINGS_ONBOARDING_DELETE_RESOURCE_CHANNEL" | "GUILD_SETTINGS_ONBOARDING_DISMISS_RESOURCE_CHANNEL_SUGGESTION" | "GUILD_SETTINGS_ONBOARDING_EDUCATION_UPSELL_DISMISSED" | "GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESET" | "GUILD_SETTINGS_ONBOARDING_PROMPTS_EDIT" | "GUILD_SETTINGS_ONBOARDING_PROMPTS_ERRORS" | "GUILD_SETTINGS_ONBOARDING_PROMPTS_RESET" | "GUILD_SETTINGS_ONBOARDING_PROMPTS_SAVE_FAILED" | "GUILD_SETTINGS_ONBOARDING_PROMPTS_SAVE_SUCCESS" | "GUILD_SETTINGS_ONBOARDING_PROMPTS_SUBMIT" | "GUILD_SETTINGS_ONBOARDING_REORDER_NEW_MEMBER_ACTION" | "GUILD_SETTINGS_ONBOARDING_REORDER_RESOURCE_CHANNEL" | "GUILD_SETTINGS_ONBOARDING_SET_MODE" | "GUILD_SETTINGS_ONBOARDING_STEP" | "GUILD_SETTINGS_ONBOARDING_UPDATE_NEW_MEMBER_ACTION" | "GUILD_SETTINGS_ONBOARDING_UPDATE_RESOURCE_CHANNEL" | "GUILD_SETTINGS_ONBOARDING_UPDATE_WELCOME_MESSAGE" | "GUILD_SETTINGS_OPEN" | "GUILD_SETTINGS_ROLE_SELECT" | "GUILD_SETTINGS_ROLES_CLEAR_PERMISSIONS" | "GUILD_SETTINGS_ROLES_INIT" | "GUILD_SETTINGS_ROLES_SAVE_FAIL" | "GUILD_SETTINGS_ROLES_SAVE_SUCCESS" | "GUILD_SETTINGS_ROLES_SORT_UPDATE" | "GUILD_SETTINGS_ROLES_SUBMITTING" | "GUILD_SETTINGS_ROLES_UPDATE_COLOR" | "GUILD_SETTINGS_ROLES_UPDATE_DESCRIPTION" | "GUILD_SETTINGS_ROLES_UPDATE_NAME" | "GUILD_SETTINGS_ROLES_UPDATE_PERMISSION_SET" | "GUILD_SETTINGS_ROLES_UPDATE_PERMISSIONS" | "GUILD_SETTINGS_ROLES_UPDATE_ROLE_CONNECTION_CONFIGURATIONS" | "GUILD_SETTINGS_ROLES_UPDATE_ROLE_ICON" | "GUILD_SETTINGS_ROLES_UPDATE_SETTINGS" | "GUILD_SETTINGS_SAFETY_PAGE" | "GUILD_SETTINGS_SAFETY_SET_SUBSECTION" | "GUILD_SETTINGS_SAVE_ROUTE_STACK" | "GUILD_SETTINGS_SET_MFA_SUCCESS" | "GUILD_SETTINGS_SET_SEARCH_QUERY" | "GUILD_SETTINGS_SET_SECTION" | "GUILD_SETTINGS_SET_VANITY_URL" | "GUILD_SETTINGS_SET_WIDGET" | "GUILD_SETTINGS_SUBMIT" | "GUILD_SETTINGS_SUBMIT_FAILURE" | "GUILD_SETTINGS_SUBMIT_SUCCESS" | "GUILD_SETTINGS_UPDATE" | "GUILD_SETTINGS_VANITY_URL_CLOSE" | "GUILD_SETTINGS_VANITY_URL_ERROR" | "GUILD_SETTINGS_VANITY_URL_RESET" | "GUILD_SETTINGS_VANITY_URL_SET" | "GUILD_SOUNDBOARD_FETCH" | "GUILD_SOUNDBOARD_SOUND_CREATE" | "GUILD_SOUNDBOARD_SOUND_DELETE" | "GUILD_SOUNDBOARD_SOUND_PLAY_END" | "GUILD_SOUNDBOARD_SOUND_PLAY_LOCALLY" | "GUILD_SOUNDBOARD_SOUND_PLAY_START" | "GUILD_SOUNDBOARD_SOUND_UPDATE" | "GUILD_SOUNDBOARD_SOUNDS_UPDATE" | "GUILD_STICKERS_CREATE_SUCCESS" | "GUILD_STICKERS_FETCH_SUCCESS" | "GUILD_STICKERS_UPDATE" | "GUILD_STOP_LURKING" | "GUILD_STOP_LURKING_FAILURE" | "GUILD_SUBSCRIPTIONS" | "GUILD_SUBSCRIPTIONS_ADD_MEMBER_UPDATES" | "GUILD_SUBSCRIPTIONS_CHANNEL" | "GUILD_SUBSCRIPTIONS_FLUSH" | "GUILD_SUBSCRIPTIONS_MEMBERS_ADD" | "GUILD_SUBSCRIPTIONS_MEMBERS_REMOVE" | "GUILD_SUBSCRIPTIONS_REMOVE_MEMBER_UPDATES" | "GUILD_TEMPLATE_ACCEPT" | "GUILD_TEMPLATE_ACCEPT_FAILURE" | "GUILD_TEMPLATE_ACCEPT_SUCCESS" | "GUILD_TEMPLATE_CREATE_SUCCESS" | "GUILD_TEMPLATE_DELETE_SUCCESS" | "GUILD_TEMPLATE_DIRTY_TOOLTIP_HIDE" | "GUILD_TEMPLATE_DIRTY_TOOLTIP_REFRESH" | "GUILD_TEMPLATE_LOAD_FOR_GUILD_SUCCESS" | "GUILD_TEMPLATE_MODAL_HIDE" | "GUILD_TEMPLATE_MODAL_SHOW" | "GUILD_TEMPLATE_PROMOTION_TOOLTIP_HIDE" | "GUILD_TEMPLATE_RESOLVE" | "GUILD_TEMPLATE_RESOLVE_FAILURE" | "GUILD_TEMPLATE_RESOLVE_SUCCESS" | "GUILD_TEMPLATE_SYNC_SUCCESS" | "GUILD_TOGGLE_COLLAPSE_MUTED" | "GUILD_TOP_READ_CHANNELS_FETCH_SUCCESS" | "GUILD_UNAPPLY_BOOST_FAIL" | "GUILD_UNAPPLY_BOOST_START" | "GUILD_UNAPPLY_BOOST_SUCCESS" | "GUILD_UNAVAILABLE" | "GUILD_UPDATE" | "GUILD_UPDATE_DISCOVERY_METADATA" | "GUILD_UPDATE_DISCOVERY_METADATA_FAIL" | "GUILD_UPDATE_DISCOVERY_METADATA_FROM_SERVER" | "GUILD_VERIFICATION_CHECK" | "HABITUAL_DND_CLEAR" | "HD_STREAMING_VIEWER_UPDATE_LAST_TRIGGERED" | "HIDE_ACTION_SHEET" | "HIDE_ACTION_SHEET_QUICK_SWITCHER" | "HIDE_KEYBOARD_SHORTCUTS" | "HIGH_FIVE_COMPLETE" | "HIGH_FIVE_COMPLETE_CLEAR" | "HIGH_FIVE_QUEUE" | "HIGH_FIVE_REMOVE" | "HIGH_FIVE_SET_ENABLED" | "HOTSPOT_HIDE" | "HOTSPOT_OVERRIDE_CLEAR" | "HOTSPOT_OVERRIDE_SET" | "HUB_VERIFY_EMAIL_FAILURE" | "HUB_VERIFY_EMAIL_SUCCESS" | "HYPESQUAD_ONLINE_MEMBERSHIP_JOIN_SUCCESS" | "HYPESQUAD_ONLINE_MEMBERSHIP_LEAVE_SUCCESS" | "I18N_LOAD_ERROR" | "I18N_LOAD_START" | "I18N_LOAD_SUCCESS" | "IDLE" | "IMPERSONATE_STOP" | "IMPERSONATE_UPDATE" | "INBOX_OPEN" | "INCOMING_CALL_MOVE" | "INITIALIZE_MEMBER_SAFETY_STORE" | "INSTALLATION_LOCATION_ADD" | "INSTALLATION_LOCATION_FETCH_METADATA" | "INSTALLATION_LOCATION_REMOVE" | "INSTALLATION_LOCATION_UPDATE" | "INSTANT_INVITE_CLEAR" | "INSTANT_INVITE_CREATE" | "INSTANT_INVITE_CREATE_FAILURE" | "INSTANT_INVITE_CREATE_SUCCESS" | "INSTANT_INVITE_REVOKE_SUCCESS" | "INTEGRATION_CREATE" | "INTEGRATION_DELETE" | "INTEGRATION_PERMISSION_SETTINGS_APPLICATION_PERMISSIONS_FETCH_FAILURE" | "INTEGRATION_PERMISSION_SETTINGS_CLEAR" | "INTEGRATION_PERMISSION_SETTINGS_COMMAND_UPDATE" | "INTEGRATION_PERMISSION_SETTINGS_COMMANDS_FETCH_FAILURE" | "INTEGRATION_PERMISSION_SETTINGS_COMMANDS_FETCH_SUCCESS" | "INTEGRATION_PERMISSION_SETTINGS_EDIT" | "INTEGRATION_PERMISSION_SETTINGS_INIT" | "INTEGRATION_PERMISSION_SETTINGS_RESET" | "INTEGRATION_QUERY" | "INTEGRATION_QUERY_FAILURE" | "INTEGRATION_QUERY_SUCCESS" | "INTEGRATION_SETTINGS_INIT" | "INTEGRATION_SETTINGS_SAVE_FAILURE" | "INTEGRATION_SETTINGS_SAVE_SUCCESS" | "INTEGRATION_SETTINGS_SET_SECTION" | "INTEGRATION_SETTINGS_START_EDITING_COMMAND" | "INTEGRATION_SETTINGS_START_EDITING_INTEGRATION" | "INTEGRATION_SETTINGS_START_EDITING_WEBHOOK" | "INTEGRATION_SETTINGS_STOP_EDITING_COMMAND" | "INTEGRATION_SETTINGS_STOP_EDITING_INTEGRATION" | "INTEGRATION_SETTINGS_STOP_EDITING_WEBHOOK" | "INTEGRATION_SETTINGS_SUBMITTING" | "INTEGRATION_SETTINGS_UPDATE_INTEGRATION" | "INTEGRATION_SETTINGS_UPDATE_WEBHOOK" | "INTERACTION_CREATE" | "INTERACTION_FAILURE" | "INTERACTION_IFRAME_MODAL_CLOSE" | "INTERACTION_IFRAME_MODAL_CREATE" | "INTERACTION_IFRAME_MODAL_KEY_CREATE" | "INTERACTION_MODAL_CREATE" | "INTERACTION_QUEUE" | "INTERACTION_SUCCESS" | "INVITE_ACCEPT" | "INVITE_ACCEPT_FAILURE" | "INVITE_ACCEPT_SUCCESS" | "INVITE_APP_NOT_OPENED" | "INVITE_APP_OPENED" | "INVITE_APP_OPENING" | "INVITE_MODAL_CLOSE" | "INVITE_MODAL_ERROR" | "INVITE_MODAL_OPEN" | "INVITE_RESOLVE" | "INVITE_RESOLVE_FAILURE" | "INVITE_RESOLVE_SUCCESS" | "INVITE_SUGGESTIONS_SEARCH" | "KEYBINDS_ADD_KEYBIND" | "KEYBINDS_DELETE_KEYBIND" | "KEYBINDS_ENABLE_ALL_KEYBINDS" | "KEYBINDS_REGISTER_GLOBAL_KEYBIND_ACTIONS" | "KEYBINDS_SET_KEYBIND" | "KEYBOARD_NAVIGATION_EXPLAINER_MODAL_SEEN" | "LAB_FEATURE_TOGGLE" | "LAYER_POP" | "LAYER_POP_ALL" | "LAYER_PUSH" | "LAYOUT_CREATE" | "LAYOUT_CREATE_WIDGETS" | "LAYOUT_DELETE_ALL_WIDGETS" | "LAYOUT_DELETE_WIDGET" | "LAYOUT_SET_PINNED" | "LAYOUT_SET_TOP_WIDGET" | "LAYOUT_UPDATE_WIDGET" | "LIBRARY_APPLICATION_ACTIVE_BRANCH_UPDATE" | "LIBRARY_APPLICATION_ACTIVE_LAUNCH_OPTION_UPDATE" | "LIBRARY_APPLICATION_FILTER_UPDATE" | "LIBRARY_APPLICATION_FLAGS_UPDATE_START" | "LIBRARY_APPLICATION_FLAGS_UPDATE_SUCCESS" | "LIBRARY_APPLICATION_UPDATE" | "LIBRARY_APPLICATIONS_TEST_MODE_ENABLED" | "LIBRARY_FETCH_SUCCESS" | "LIBRARY_TABLE_ACTIVE_ROW_ID_UPDATE" | "LIBRARY_TABLE_SORT_UPDATE" | "LIVE_CHANNEL_NOTICE_HIDE" | "LOAD_ARCHIVED_THREADS" | "LOAD_ARCHIVED_THREADS_FAIL" | "LOAD_ARCHIVED_THREADS_SUCCESS" | "LOAD_CHANNELS" | "LOAD_DATA_HARVEST_TYPE_FAILURE" | "LOAD_DATA_HARVEST_TYPE_START" | "LOAD_FORUM_POSTS" | "LOAD_FRIEND_SUGGESTIONS_FAILURE" | "LOAD_FRIEND_SUGGESTIONS_SUCCESS" | "LOAD_GRAVITY_CUSTOM_SCORES" | "LOAD_GRAVITY_DEHYDRATED" | "LOAD_GRAVITY_HYDRATED" | "LOAD_GUILD_AFFINITIES_SUCCESS" | "LOAD_INVITE_SUGGESTIONS" | "LOAD_MESSAGE_INTERACTION_DATA_SUCCESS" | "LOAD_MESSAGE_REQUESTS_SUPPLEMENTAL_DATA_ERROR" | "LOAD_MESSAGE_REQUESTS_SUPPLEMENTAL_DATA_SUCCESS" | "LOAD_MESSAGES" | "LOAD_MESSAGES_AROUND_SUCCESS" | "LOAD_MESSAGES_FAILURE" | "LOAD_MESSAGES_SUCCESS" | "LOAD_MESSAGES_SUCCESS_CACHED" | "LOAD_NOTIFICATION_CENTER_ITEMS" | "LOAD_NOTIFICATION_CENTER_ITEMS_FAILURE" | "LOAD_NOTIFICATION_CENTER_ITEMS_SUCCESS" | "LOAD_PINNED_MESSAGES" | "LOAD_PINNED_MESSAGES_FAILURE" | "LOAD_PINNED_MESSAGES_SUCCESS" | "LOAD_RECENT_MENTIONS" | "LOAD_RECENT_MENTIONS_FAILURE" | "LOAD_RECENT_MENTIONS_SUCCESS" | "LOAD_REGIONS" | "LOAD_RELATIONSHIPS_FAILURE" | "LOAD_RELATIONSHIPS_SUCCESS" | "LOAD_THREADS_SUCCESS" | "LOAD_USER_AFFINITIES" | "LOAD_USER_AFFINITIES_FAILURE" | "LOAD_USER_AFFINITIES_SUCCESS" | "LOAD_USER_AFFINITIES_V2" | "LOAD_USER_AFFINITIES_V2_FAILURE" | "LOAD_USER_AFFINITIES_V2_SUCCESS" | "LOCAL_ACTIVITY_UPDATE" | "LOCAL_MESSAGE_CREATE" | "LOCAL_MESSAGES_LOADED" | "LOGIN" | "LOGIN_ACCOUNT_DISABLED" | "LOGIN_ACCOUNT_SCHEDULED_FOR_DELETION" | "LOGIN_ATTEMPTED" | "LOGIN_FAILURE" | "LOGIN_MFA" | "LOGIN_MFA_FAILURE" | "LOGIN_MFA_SMS" | "LOGIN_MFA_SMS_FAILURE" | "LOGIN_MFA_SMS_REQUEST_SUCCESS" | "LOGIN_MFA_STEP" | "LOGIN_PASSWORD_RECOVERY_PHONE_VERIFICATION" | "LOGIN_PHONE_IP_AUTHORIZATION_REQUIRED" | "LOGIN_RESET" | "LOGIN_STATUS_RESET" | "LOGIN_SUCCESS" | "LOGIN_SUSPENDED_USER" | "LOGOUT" | "LOGOUT_AUTH_SESSIONS_SUCCESS" | "MASKED_LINK_ADD_TRUSTED_DOMAIN" | "MASKED_LINK_ADD_TRUSTED_PROTOCOL" | "MAX_MEMBER_COUNT_NOTICE_DISMISS" | "MEDIA_ENGINE_APPLY_MEDIA_FILTER_SETTINGS" | "MEDIA_ENGINE_APPLY_MEDIA_FILTER_SETTINGS_ERROR" | "MEDIA_ENGINE_APPLY_MEDIA_FILTER_SETTINGS_START" | "MEDIA_ENGINE_DEVICES" | "MEDIA_ENGINE_INTERACTION_REQUIRED" | "MEDIA_ENGINE_NOISE_CANCELLATION_ERROR_RESET" | "MEDIA_ENGINE_PERMISSION" | "MEDIA_ENGINE_SET_AEC_DUMP" | "MEDIA_ENGINE_SET_AUDIO_ENABLED" | "MEDIA_ENGINE_SET_ENABLE_HARDWARE_MUTE_NOTICE" | "MEDIA_ENGINE_SET_EXPERIMENTAL_ENCODERS" | "MEDIA_ENGINE_SET_EXPERIMENTAL_SOUNDSHARE" | "MEDIA_ENGINE_SET_GO_LIVE_SOURCE" | "MEDIA_ENGINE_SET_HARDWARE_ENCODING" | "MEDIA_ENGINE_SET_OPEN_H264" | "MEDIA_ENGINE_SET_VIDEO_DEVICE" | "MEDIA_ENGINE_SET_VIDEO_ENABLED" | "MEDIA_ENGINE_SET_VIDEO_HOOK" | "MEDIA_ENGINE_SOUNDSHARE_FAILED" | "MEDIA_ENGINE_SOUNDSHARE_TRANSMITTING" | "MEDIA_ENGINE_VIDEO_SOURCE_QUALITY_CHANGED" | "MEDIA_ENGINE_VIDEO_STATE_CHANGED" | "MEDIA_POST_EMBED_FETCH" | "MEDIA_POST_EMBED_FETCH_FAILURE" | "MEDIA_POST_EMBED_FETCH_SUCCESS" | "MEMBER_SAFETY_GUILD_MEMBER_SEARCH_SUCCESS" | "MEMBER_SAFETY_GUILD_MEMBER_UPDATE_BATCH" | "MEMBER_SAFETY_NEW_MEMBER_TIMESTAMP_REFRESH" | "MEMBER_SAFETY_PAGINATION_TOKEN_UPDATE" | "MEMBER_SAFETY_PAGINATION_UPDATE" | "MEMBER_SAFETY_SEARCH_STATE_UPDATE" | "MEMBER_VERIFICATION_FORM_FETCH_FAIL" | "MEMBER_VERIFICATION_FORM_UPDATE" | "MENTION_MODAL_CLOSE" | "MENTION_MODAL_OPEN" | "MESSAGE_ACK" | "MESSAGE_ACKED" | "MESSAGE_CREATE" | "MESSAGE_DELETE" | "MESSAGE_DELETE_BULK" | "MESSAGE_EDIT_FAILED_AUTOMOD" | "MESSAGE_END_EDIT" | "MESSAGE_EXPLICIT_CONTENT_FP_CREATE" | "MESSAGE_EXPLICIT_CONTENT_FP_SUBMIT" | "MESSAGE_EXPLICIT_CONTENT_SCAN_TIMEOUT" | "MESSAGE_LENGTH_UPSELL" | "MESSAGE_NOTIFICATION_SHOWN" | "MESSAGE_PREVIEWS_LOADED" | "MESSAGE_PREVIEWS_LOCALLY_LOADED" | "MESSAGE_REACTION_ADD" | "MESSAGE_REACTION_ADD_MANY" | "MESSAGE_REACTION_ADD_USERS" | "MESSAGE_REACTION_REMOVE" | "MESSAGE_REACTION_REMOVE_ALL" | "MESSAGE_REACTION_REMOVE_EMOJI" | "MESSAGE_REQUEST_ACCEPT_OPTIMISTIC" | "MESSAGE_REQUEST_ACK" | "MESSAGE_REQUEST_CLEAR_ACK" | "MESSAGE_REVEAL" | "MESSAGE_SEND_FAILED" | "MESSAGE_SEND_FAILED_AUTOMOD" | "MESSAGE_START_EDIT" | "MESSAGE_UPDATE" | "MESSAGE_UPDATE_EDIT" | "MFA_CLEAR_BACKUP_CODES" | "MFA_DISABLE_SUCCESS" | "MFA_ENABLE_EMAIL_TOKEN" | "MFA_ENABLE_SUCCESS" | "MFA_SEEN_BACKUP_CODE_PROMPT" | "MFA_SEND_VERIFICATION_KEY" | "MFA_SMS_TOGGLE" | "MFA_SMS_TOGGLE_COMPLETE" | "MFA_VIEW_BACKUP_CODES" | "MFA_WEBAUTHN_CREDENTIALS_LOADED" | "MOBILE_NATIVE_UPDATE_CHECK_FINISHED" | "MOBILE_WEB_SIDEBAR_CLOSE" | "MOBILE_WEB_SIDEBAR_OPEN" | "MOD_VIEW_SEARCH_FINISH" | "MODAL_POP" | "MODAL_PUSH" | "MULTI_ACCOUNT_INVALIDATE_PUSH_SYNC_TOKENS" | "MULTI_ACCOUNT_MOBILE_EXPERIMENT_UPDATE" | "MULTI_ACCOUNT_MOVE_ACCOUNT" | "MULTI_ACCOUNT_REMOVE_ACCOUNT" | "MULTI_ACCOUNT_UPDATE_PUSH_SYNC_TOKEN" | "MULTI_ACCOUNT_VALIDATE_TOKEN_FAILURE" | "MULTI_ACCOUNT_VALIDATE_TOKEN_REQUEST" | "MULTI_ACCOUNT_VALIDATE_TOKEN_SUCCESS" | "MUTUAL_FRIENDS_FETCH_FAILURE" | "MUTUAL_FRIENDS_FETCH_START" | "MUTUAL_FRIENDS_FETCH_SUCCESS" | "NATIVE_APP_MODAL_OPEN_FAILED" | "NATIVE_APP_MODAL_OPENED" | "NATIVE_APP_MODAL_OPENING" | "NATIVE_SCREEN_SHARE_PICKER_CANCEL" | "NATIVE_SCREEN_SHARE_PICKER_ERROR" | "NATIVE_SCREEN_SHARE_PICKER_PRESENT" | "NATIVE_SCREEN_SHARE_PICKER_RELEASE" | "NATIVE_SCREEN_SHARE_PICKER_UPDATE" | "NEW_PAYMENT_SOURCE_ADDRESS_INFO_UPDATE" | "NEW_PAYMENT_SOURCE_CARD_INFO_UPDATE" | "NEW_PAYMENT_SOURCE_CLEAR_ERROR" | "NEW_PAYMENT_SOURCE_STRIPE_PAYMENT_REQUEST_UPDATE" | "NEWLY_ADDED_EMOJI_SEEN_ACKNOWLEDGED" | "NEWLY_ADDED_EMOJI_SEEN_PENDING" | "NEWLY_ADDED_EMOJI_SEEN_UPDATED" | "NOTICE_DISABLE" | "NOTICE_DISMISS" | "NOTICE_SHOW" | "NOTIFICATION_CENTER_CLEAR_GUILD_MENTIONS" | "NOTIFICATION_CENTER_ITEM_COMPLETED" | "NOTIFICATION_CENTER_ITEM_CREATE" | "NOTIFICATION_CENTER_ITEM_DELETE" | "NOTIFICATION_CENTER_ITEM_DELETE_FAILURE" | "NOTIFICATION_CENTER_ITEMS_ACK" | "NOTIFICATION_CENTER_ITEMS_ACK_FAILURE" | "NOTIFICATION_CENTER_ITEMS_LOCAL_ACK" | "NOTIFICATION_CENTER_REFRESH" | "NOTIFICATION_CENTER_SET_ACTIVE" | "NOTIFICATION_CENTER_SET_TAB" | "NOTIFICATION_CENTER_TAB_FOCUSED" | "NOTIFICATION_CLICK" | "NOTIFICATION_CREATE" | "NOTIFICATION_SETTINGS_UPDATE" | "NOTIFICATIONS_SET_DESKTOP_TYPE" | "NOTIFICATIONS_SET_DISABLE_UNREAD_BADGE" | "NOTIFICATIONS_SET_DISABLED_SOUNDS" | "NOTIFICATIONS_SET_NOTIFY_MESSAGES_IN_SELECTED_CHANNEL" | "NOTIFICATIONS_SET_PERMISSION_STATE" | "NOTIFICATIONS_SET_TASKBAR_FLASH" | "NOTIFICATIONS_SET_TTS_TYPE" | "NOTIFICATIONS_TOGGLE_ALL_DISABLED" | "NOW_PLAYING_MOUNTED" | "NOW_PLAYING_UNMOUNTED" | "NUF_COMPLETE" | "NUF_NEW_USER" | "OAUTH2_TOKEN_REVOKE" | "ONLINE_GUILD_MEMBER_COUNT_UPDATE" | "OUTBOUND_PROMOTION_NOTICE_DISMISS" | "OUTBOUND_PROMOTIONS_SEEN" | "OVERLAY_ACTIVATE_REGION" | "OVERLAY_CALL_PRIVATE_CHANNEL" | "OVERLAY_CRASHED" | "OVERLAY_DEACTIVATE_ALL_REGIONS" | "OVERLAY_DISABLE_EXTERNAL_LINK_ALERT" | "OVERLAY_FOCUSED" | "OVERLAY_INCOMPATIBLE_APP" | "OVERLAY_INITIALIZE" | "OVERLAY_JOIN_GAME" | "OVERLAY_MESSAGE_EVENT_ACTION" | "OVERLAY_NOTIFICATION_EVENT" | "OVERLAY_NOTIFY_READY_TO_SHOW" | "OVERLAY_READY" | "OVERLAY_SELECT_CALL" | "OVERLAY_SELECT_CHANNEL" | "OVERLAY_SET_ASSOCIATED_GAME" | "OVERLAY_SET_AVATAR_SIZE_MODE" | "OVERLAY_SET_CLICK_ZONES" | "OVERLAY_SET_DISPLAY_NAME_MODE" | "OVERLAY_SET_DISPLAY_USER_MODE" | "OVERLAY_SET_ENABLED" | "OVERLAY_SET_INPUT_LOCKED" | "OVERLAY_SET_NOT_IDLE" | "OVERLAY_SET_NOTIFICATION_POSITION_MODE" | "OVERLAY_SET_PREVIEW_IN_GAME_MODE" | "OVERLAY_SET_SHOW_KEYBIND_INDICATORS" | "OVERLAY_SET_TEXT_CHAT_NOTIFICATION_MODE" | "OVERLAY_SET_TEXT_WIDGET_OPACITY" | "OVERLAY_SET_UI_LOCKED" | "OVERLAY_SOUNDBOARD_SOUNDS_FETCH_REQUEST" | "OVERLAY_START_SESSION" | "OVERLAY_SUCCESSFULLY_SHOWN" | "OVERLAY_WIDGET_CHANGED" | "OWNED_APPLICATION_BRANCHES_FETCH_SUCCESS" | "PASSIVE_UPDATE_V2" | "PASSWORD_UPDATED" | "PASSWORDLESS_FAILURE" | "PASSWORDLESS_START" | "PAYMENT_AUTHENTICATION_CLEAR_ERROR" | "PAYMENT_AUTHENTICATION_ERROR" | "PAYMENT_UPDATE" | "PERMISSION_CLEAR_ELEVATED_PROCESS" | "PERMISSION_CLEAR_PTT_ADMIN_WARNING" | "PERMISSION_CLEAR_SUPPRESS_WARNING" | "PERMISSION_CLEAR_VAD_WARNING" | "PERMISSION_CONTINUE_NONELEVATED_PROCESS" | "PERMISSION_REQUEST_ELEVATED_PROCESS" | "PERMIUM_PERKS_DEMO_FRAME_ANIMATION_PLAYED" | "PHONE_SET_COUNTRY_CODE" | "PICTURE_IN_PICTURE_CLOSE" | "PICTURE_IN_PICTURE_HIDE" | "PICTURE_IN_PICTURE_MOVE" | "PICTURE_IN_PICTURE_OPEN" | "PICTURE_IN_PICTURE_RESIZE" | "PICTURE_IN_PICTURE_SHOW" | "PICTURE_IN_PICTURE_UPDATE_RECT" | "PICTURE_IN_PICTURE_UPDATE_SELECTED_WINDOW" | "POGGERMODE_ACHIEVEMENT_UNLOCK" | "POGGERMODE_SETTINGS_UPDATE" | "POGGERMODE_TEMPORARILY_DISABLED" | "POGGERMODE_UPDATE_COMBO" | "POGGERMODE_UPDATE_MESSAGE_COMBO" | "POMELO_ATTEMPT_FAILURE" | "POMELO_ATTEMPT_SUCCESS" | "POMELO_REGISTRATION_SUGGESTIONS_SUCCESS" | "POMELO_SUGGESTIONS_FETCH" | "POMELO_SUGGESTIONS_RESET" | "POMELO_SUGGESTIONS_SUCCESS" | "POPOUT_WINDOW_ADD_STYLESHEET" | "POPOUT_WINDOW_CLOSE" | "POPOUT_WINDOW_OPEN" | "POPOUT_WINDOW_SET_ALWAYS_ON_TOP" | "POST_CONNECTION_OPEN" | "PREMIUM_MARKETING_DATA_READY" | "PREMIUM_MARKETING_PREVIEW" | "PREMIUM_PAYMENT_ERROR_CLEAR" | "PREMIUM_PAYMENT_MODAL_CLOSE" | "PREMIUM_PAYMENT_MODAL_OPEN" | "PREMIUM_PAYMENT_SUBSCRIBE_FAIL" | "PREMIUM_PAYMENT_SUBSCRIBE_START" | "PREMIUM_PAYMENT_SUBSCRIBE_SUCCESS" | "PREMIUM_PAYMENT_UPDATE_FAIL" | "PREMIUM_PAYMENT_UPDATE_SUCCESS" | "PREMIUM_PERKS_DEMO_ACTIVATE_FAILURE" | "PREMIUM_PERKS_DEMO_ACTIVATE_SUCCESS" | "PREMIUM_PERKS_DEMO_COMPLETE" | "PREMIUM_PERKS_DEMO_ENABLED" | "PREMIUM_PERKS_DEMO_OPT_IN_POPOUT_DISMISSED" | "PREMIUM_PERKS_DEMO_OPT_IN_POPOUT_SHOULD_SHOW" | "PREMIUM_PERKS_DEMO_OVERRIDE" | "PREMIUM_PERKS_DEMO_POPOUT_DISMISSED" | "PREMIUM_PERKS_DEMO_UI_RESET" | "PREMIUM_PERKS_DEMOS_FETCH_FAILURE" | "PREMIUM_PERKS_DEMOS_FETCH_SUCCESS" | "PREMIUM_REQUIRED_MODAL_CLOSE" | "PREMIUM_REQUIRED_MODAL_OPEN" | "PRESENCE_UPDATES" | "PRESENCES_REPLACE" | "PRIVATE_CHANNEL_INTEGRATION_CREATE" | "PRIVATE_CHANNEL_INTEGRATION_DELETE" | "PRIVATE_CHANNEL_INTEGRATION_UPDATE" | "PRIVATE_CHANNEL_RECIPIENTS_ADD_USER" | "PRIVATE_CHANNEL_RECIPIENTS_INVITE_CLOSE" | "PRIVATE_CHANNEL_RECIPIENTS_INVITE_OPEN" | "PRIVATE_CHANNEL_RECIPIENTS_INVITE_QUERY" | "PRIVATE_CHANNEL_RECIPIENTS_INVITE_SELECT" | "PRIVATE_CHANNEL_RECIPIENTS_REMOVE_USER" | "PROFILE_CUSTOMIZATION_OPEN_PREVIEW_MODAL" | "PROFILE_EFFECTS_SET_TRY_IT_OUT" | "PROFILE_PANEL_TOGGLE_SECTION" | "PROXY_BLOCKED_REQUEST" | "PUBLIC_UPSELL_NOTICE_DISMISS" | "PURCHASED_ITEMS_FESTIVITY_FETCH_WOW_MOMENT_MEDIA_SUCCESS" | "PURCHASED_ITEMS_FESTIVITY_IS_FETCHING_WOW_MOMENT_MEDIA" | "PURCHASED_ITEMS_FESTIVITY_SET_CAN_PLAY_WOW_MOMENT" | "PUSH_NOTIFICATION_CLICK" | "QUESTS_CLAIM_REWARD_BEGIN" | "QUESTS_CLAIM_REWARD_FAILURE" | "QUESTS_CLAIM_REWARD_SUCCESS" | "QUESTS_DELIVERY_OVERRIDE" | "QUESTS_DISMISS_CONTENT_BEGIN" | "QUESTS_DISMISS_CONTENT_FAILURE" | "QUESTS_DISMISS_CONTENT_SUCCESS" | "QUESTS_DISMISS_PROGRESS_TRACKING_FAILURE_NOTICE" | "QUESTS_ENROLL_BEGIN" | "QUESTS_ENROLL_FAILURE" | "QUESTS_ENROLL_SUCCESS" | "QUESTS_FETCH_CLAIMED_QUESTS_BEGIN" | "QUESTS_FETCH_CLAIMED_QUESTS_FAILURE" | "QUESTS_FETCH_CLAIMED_QUESTS_SUCCESS" | "QUESTS_FETCH_CURRENT_QUESTS_BEGIN" | "QUESTS_FETCH_CURRENT_QUESTS_FAILURE" | "QUESTS_FETCH_CURRENT_QUESTS_SUCCESS" | "QUESTS_FETCH_REWARD_CODE_BEGIN" | "QUESTS_FETCH_REWARD_CODE_FAILURE" | "QUESTS_FETCH_REWARD_CODE_SUCCESS" | "QUESTS_PREVIEW_UPDATE_SUCCESS" | "QUESTS_SELECT_TASK_PLATFORM" | "QUESTS_SEND_HEARTBEAT_FAILURE" | "QUESTS_SEND_HEARTBEAT_SUCCESS" | "QUESTS_USER_STATUS_UPDATE" | "QUEUE_INTERACTION_COMPONENT_STATE" | "QUICKSWITCHER_HIDE" | "QUICKSWITCHER_SEARCH" | "QUICKSWITCHER_SELECT" | "QUICKSWITCHER_SHOW" | "QUICKSWITCHER_SWITCH_TO" | "REACTION_MESSAGE_FETCHED" | "RECEIVE_CHANNEL_AFFINITIES" | "RECEIVE_CHANNEL_SUMMARIES" | "RECEIVE_CHANNEL_SUMMARIES_BULK" | "RECEIVE_CHANNEL_SUMMARY" | "RECENT_MENTION_DELETE" | "RECOMPUTE_READ_STATES" | "REFERRALS_FETCH_ELIGIBLE_USER_FAIL" | "REFERRALS_FETCH_ELIGIBLE_USER_START" | "REFERRALS_FETCH_ELIGIBLE_USER_SUCCESS" | "REGISTER" | "REGISTER_FAILURE" | "REGISTER_SAVE_FORM" | "REGISTER_SUCCESS" | "RELATIONSHIP_ADD" | "RELATIONSHIP_PENDING_INCOMING_REMOVED" | "RELATIONSHIP_REMOVE" | "RELATIONSHIP_UPDATE" | "RELOAD_GRAVITY" | "REMOTE_COMMAND" | "REMOTE_SESSION_CONNECT" | "REMOTE_SESSION_DISCONNECT" | "REMOVE_AUTOMOD_MESSAGE_NOTICE" | "REQUEST_CHANNEL_AFFINITIES" | "REQUEST_CHANNEL_SUMMARIES" | "REQUEST_CHANNEL_SUMMARIES_BULK" | "REQUEST_CHANNEL_SUMMARY" | "REQUEST_FORUM_UNREADS" | "REQUEST_SOUNDBOARD_SOUNDS" | "RESET_NOTIFICATION_CENTER" | "RESET_PAYMENT_ID" | "RESET_PREVIEW_CLIENT_THEME" | "RESET_SOCKET" | "RESORT_THREADS" | "RPC_APP_AUTHENTICATED" | "RPC_APP_CONNECTED" | "RPC_APP_DISCONNECTED" | "RPC_NOTIFICATION_CREATE" | "RPC_SERVER_READY" | "RTC_CONNECTION_CLIENT_CONNECT" | "RTC_CONNECTION_CLIENT_DISCONNECT" | "RTC_CONNECTION_FLAGS" | "RTC_CONNECTION_LOSS_RATE" | "RTC_CONNECTION_PING" | "RTC_CONNECTION_PLATFORM" | "RTC_CONNECTION_ROSTER_MAP_UPDATE" | "RTC_CONNECTION_SECURE_FRAMES_UPDATE" | "RTC_CONNECTION_STATE" | "RTC_CONNECTION_UPDATE_ID" | "RTC_CONNECTION_USER_CREATE" | "RTC_CONNECTION_VIDEO" | "RTC_DEBUG_MODAL_CLOSE" | "RTC_DEBUG_MODAL_OPEN" | "RTC_DEBUG_MODAL_OPEN_REPLAY" | "RTC_DEBUG_MODAL_OPEN_REPLAY_AT_PATH" | "RTC_DEBUG_MODAL_SET_SECTION" | "RTC_DEBUG_MODAL_UPDATE" | "RTC_DEBUG_MODAL_UPDATE_VIDEO_OUTPUT" | "RTC_DEBUG_POPOUT_WINDOW_OPEN" | "RTC_DEBUG_SET_RECORDING_FLAG" | "RTC_DEBUG_SET_SIMULCAST_OVERRIDE" | "RTC_LATENCY_TEST_COMPLETE" | "RUNNING_GAME_ADD_OVERRIDE" | "RUNNING_GAME_DELETE_ENTRY" | "RUNNING_GAME_EDIT_NAME" | "RUNNING_GAME_TOGGLE_DETECTION" | "RUNNING_GAME_TOGGLE_OVERLAY" | "RUNNING_GAMES_CHANGE" | "RUNNING_STREAMER_TOOLS_CHANGE" | "SAFETY_HUB_APPEAL_CLOSE" | "SAFETY_HUB_APPEAL_OPEN" | "SAFETY_HUB_APPEAL_SIGNAL_CUSTOM_INPUT_CHANGE" | "SAFETY_HUB_APPEAL_SIGNAL_SELECT" | "SAFETY_HUB_FETCH_CLASSIFICATION_FAILURE" | "SAFETY_HUB_FETCH_CLASSIFICATION_START" | "SAFETY_HUB_FETCH_CLASSIFICATION_SUCCESS" | "SAFETY_HUB_FETCH_FAILURE" | "SAFETY_HUB_FETCH_START" | "SAFETY_HUB_FETCH_SUCCESS" | "SAFETY_HUB_REQUEST_REVIEW_FAILURE" | "SAFETY_HUB_REQUEST_REVIEW_START" | "SAFETY_HUB_REQUEST_REVIEW_SUCCESS" | "SAVE_LAST_NON_VOICE_ROUTE" | "SAVE_LAST_ROUTE" | "SAVED_MESSAGE_CREATE" | "SAVED_MESSAGE_DELETE" | "SAVED_MESSAGES_UPDATE" | "SEARCH_ADD_HISTORY" | "SEARCH_AUTOCOMPLETE_QUERY_UPDATE" | "SEARCH_CLEAR_HISTORY" | "SEARCH_EDITOR_STATE_CHANGE" | "SEARCH_EDITOR_STATE_CLEAR" | "SEARCH_ENSURE_SEARCH_STATE" | "SEARCH_FINISH" | "SEARCH_INDEXING" | "SEARCH_MODAL_CLOSE" | "SEARCH_MODAL_OPEN" | "SEARCH_REMOVE_HISTORY" | "SEARCH_SCREEN_OPEN" | "SEARCH_SET_SHOW_BLOCKED_RESULTS" | "SEARCH_START" | "SECURE_FRAMES_SETTINGS_UPDATE" | "SECURE_FRAMES_TRANSIENT_KEY_CREATE" | "SECURE_FRAMES_TRANSIENT_KEY_DELETE" | "SECURE_FRAMES_UPLOADED_KEY_VERSION_ADD" | "SECURE_FRAMES_UPLOADED_KEY_VERSION_CLEAR" | "SECURE_FRAMES_USER_VERIFIED_KEYS_DELETE" | "SECURE_FRAMES_VERIFIED_KEY_CREATE" | "SECURE_FRAMES_VERIFIED_KEY_DELETE" | "SELECT_HOME_RESOURCE_CHANNEL" | "SELECT_NEW_MEMBER_ACTION_CHANNEL" | "SELECTIVELY_SYNCED_USER_SETTINGS_UPDATE" | "SELF_PRESENCE_STORE_UPDATE" | "SESSIONS_REPLACE" | "SET_CHANNEL_BITRATE" | "SET_CHANNEL_VIDEO_QUALITY_MODE" | "SET_CONSENT_REQUIRED" | "SET_CREATED_AT_OVERRIDE" | "SET_GRAVITY_FILTERS" | "SET_GRAVITY_SELECTED_CHANNEL" | "SET_GRAVITY_SELECTED_SUMMARY" | "SET_GUILD_FOLDER_EXPANDED" | "SET_HIGHLIGHTED_SUMMARY" | "SET_INTERACTION_COMPONENT_STATE" | "SET_LOCATION_METADATA" | "SET_LOGIN_CREDENTIALS" | "SET_NATIVE_PERMISSION" | "SET_PENDING_REPLY_SHOULD_MENTION" | "SET_PREMIUM_TYPE_OVERRIDE" | "SET_RECENT_MENTIONS_FILTER" | "SET_RECENT_MENTIONS_STALE" | "SET_RECENTLY_ACTIVE_COLLAPSED" | "SET_SELECTED_SUMMARY" | "SET_SOUNDPACK" | "SET_STREAM_APP_INTENT" | "SET_SUMMARY_FEEDBACK" | "SET_TRACK_TRIGGERS" | "SET_TTS_SPEECH_RATE" | "SET_VAD_PERMISSION" | "SHARED_CANVAS_CLEAR_DRAWABLES" | "SHARED_CANVAS_DRAW_LINE_POINT" | "SHARED_CANVAS_SET_DRAW_MODE" | "SHARED_CANVAS_UPDATE_EMOJI_HOSE" | "SHARED_CANVAS_UPDATE_LINE_POINTS" | "SHOW_ACTION_SHEET" | "SHOW_ACTION_SHEET_QUICK_SWITCHER" | "SHOW_KEYBOARD_SHORTCUTS" | "SIDEBAR_CLOSE" | "SIDEBAR_CLOSE_GUILD" | "SIDEBAR_CREATE_THREAD" | "SIDEBAR_VIEW_CHANNEL" | "SIDEBAR_VIEW_GUILD" | "SKU_FETCH_FAIL" | "SKU_FETCH_START" | "SKU_FETCH_SUCCESS" | "SKU_PURCHASE_AWAIT_CONFIRMATION" | "SKU_PURCHASE_CLEAR_ERROR" | "SKU_PURCHASE_FAIL" | "SKU_PURCHASE_MODAL_CLOSE" | "SKU_PURCHASE_MODAL_OPEN" | "SKU_PURCHASE_PREVIEW_FETCH" | "SKU_PURCHASE_PREVIEW_FETCH_FAILURE" | "SKU_PURCHASE_PREVIEW_FETCH_SUCCESS" | "SKU_PURCHASE_SHOW_CONFIRMATION_STEP" | "SKU_PURCHASE_START" | "SKU_PURCHASE_SUCCESS" | "SKU_PURCHASE_UPDATE_IS_GIFT" | "SKUS_FETCH_SUCCESS" | "SLOWMODE_RESET_COOLDOWN" | "SLOWMODE_SET_COOLDOWN" | "SOUNDBOARD_FETCH_DEFAULT_SOUNDS" | "SOUNDBOARD_FETCH_DEFAULT_SOUNDS_SUCCESS" | "SOUNDBOARD_MUTE_JOIN_SOUND" | "SOUNDBOARD_SET_OVERLAY_ENABLED" | "SOUNDBOARD_SOUNDS_RECEIVED" | "SPEAK_MESSAGE" | "SPEAK_TEXT" | "SPEAKING" | "SPEAKING_MESSAGE" | "SPELLCHECK_LEARN_WORD" | "SPELLCHECK_TOGGLE" | "SPELLCHECK_UNLEARN_WORD" | "SPOTIFY_ACCOUNT_ACCESS_TOKEN" | "SPOTIFY_ACCOUNT_ACCESS_TOKEN_REVOKE" | "SPOTIFY_NEW_TRACK" | "SPOTIFY_PLAYER_PAUSE" | "SPOTIFY_PLAYER_PLAY" | "SPOTIFY_PLAYER_STATE" | "SPOTIFY_PROFILE_UPDATE" | "SPOTIFY_SET_ACTIVE_DEVICE" | "SPOTIFY_SET_DEVICES" | "SPOTIFY_SET_PROTOCOL_REGISTERED" | "STAGE_INSTANCE_CREATE" | "STAGE_INSTANCE_DELETE" | "STAGE_INSTANCE_UPDATE" | "STAGE_MUSIC_MUTE" | "STAGE_MUSIC_PLAY" | "START_SESSION" | "STATUS_PAGE_INCIDENT" | "STATUS_PAGE_SCHEDULED_MAINTENANCE" | "STATUS_PAGE_SCHEDULED_MAINTENANCE_ACK" | "STICKER_FETCH_SUCCESS" | "STICKER_PACK_FETCH_SUCCESS" | "STICKER_PACKS_FETCH_START" | "STICKER_PACKS_FETCH_SUCCESS" | "STICKER_TRACK_USAGE" | "STOP_SPEAKING" | "STORE_LISTING_FETCH_SUCCESS" | "STORE_LISTINGS_FETCH_FAIL" | "STORE_LISTINGS_FETCH_START" | "STORE_LISTINGS_FETCH_SUCCESS" | "STREAM_CLOSE" | "STREAM_CREATE" | "STREAM_DELETE" | "STREAM_LAYOUT_UPDATE" | "STREAM_PREVIEW_FETCH_FAIL" | "STREAM_PREVIEW_FETCH_START" | "STREAM_PREVIEW_FETCH_SUCCESS" | "STREAM_SERVER_UPDATE" | "STREAM_SET_PAUSED" | "STREAM_START" | "STREAM_STATS_UPDATE" | "STREAM_STOP" | "STREAM_TIMED_OUT" | "STREAM_UPDATE" | "STREAM_UPDATE_SELF_HIDDEN" | "STREAM_UPDATE_SETTINGS" | "STREAM_WATCH" | "STREAMER_MODE_UPDATE" | "STREAMING_UPDATE" | "STRIPE_TOKEN_FAILURE" | "SUBSCRIPTION_PLANS_FETCH" | "SUBSCRIPTION_PLANS_FETCH_FAILURE" | "SUBSCRIPTION_PLANS_FETCH_SUCCESS" | "SUBSCRIPTION_PLANS_RESET" | "SURVEY_FETCHED" | "SURVEY_HIDE" | "SURVEY_OVERRIDE" | "SURVEY_SEEN" | "SYSTEM_THEME_CHANGE" | "THERMAL_STATE_CHANGE" | "THREAD_CREATE" | "THREAD_CREATE_LOCAL" | "THREAD_DELETE" | "THREAD_LIST_SYNC" | "THREAD_MEMBER_LIST_UPDATE" | "THREAD_MEMBER_LOCAL_UPDATE" | "THREAD_MEMBER_UPDATE" | "THREAD_MEMBERS_UPDATE" | "THREAD_SETTINGS_DRAFT_CHANGE" | "THREAD_UPDATE" | "TOGGLE_GUILD_EXPANDED_STATE" | "TOGGLE_GUILD_FOLDER_EXPAND" | "TOGGLE_OVERLAY_CANVAS" | "TOGGLE_TOPICS_BAR" | "TOP_EMOJIS_FETCH" | "TOP_EMOJIS_FETCH_SUCCESS" | "TRACK" | "TRACK_TRIGGER" | "TRUNCATE_MENTIONS" | "TRUNCATE_MESSAGES" | "TRY_ACK" | "TUTORIAL_INDICATOR_DISMISS" | "TUTORIAL_INDICATOR_HIDE" | "TUTORIAL_INDICATOR_SHOW" | "TUTORIAL_INDICATOR_SUPPRESS_ALL" | "TYPING_START" | "TYPING_START_LOCAL" | "TYPING_STOP" | "TYPING_STOP_LOCAL" | "UNREAD_SETTING_NOTICE_CHANNEL_VISIT" | "UNREAD_SETTING_NOTICE_RENDERED" | "UNSYNCED_USER_SETTINGS_UPDATE" | "UNVERIFIED_GAME_UPDATE" | "UPCOMING_GUILD_EVENT_NOTICE_HIDE" | "UPCOMING_GUILD_EVENT_NOTICE_SEEN" | "UPDATE_AVAILABLE" | "UPDATE_BACKGROUND_GRADIENT_PRESET" | "UPDATE_CHANNEL_DIMENSIONS" | "UPDATE_CHANNEL_LIST_DIMENSIONS" | "UPDATE_CHANNEL_LIST_SUBTITLES" | "UPDATE_CLIENT_PREMIUM_TYPE" | "UPDATE_CONSENTS" | "UPDATE_DATA_HARVEST_TYPE" | "UPDATE_DOWNLOADED" | "UPDATE_ERROR" | "UPDATE_GUILD_LIST_DIMENSIONS" | "UPDATE_HANG_STATUS" | "UPDATE_HANG_STATUS_CUSTOM" | "UPDATE_MANUALLY" | "UPDATE_MOBILE_PENDING_THEME_INDEX" | "UPDATE_NOT_AVAILABLE" | "UPDATE_TOKEN" | "UPDATE_VISIBLE_MESSAGES" | "UPLOAD_ATTACHMENT_ADD_FILES" | "UPLOAD_ATTACHMENT_CLEAR_ALL_FILES" | "UPLOAD_ATTACHMENT_POP_FILE" | "UPLOAD_ATTACHMENT_REMOVE_FILE" | "UPLOAD_ATTACHMENT_REMOVE_FILES" | "UPLOAD_ATTACHMENT_SET_FILE" | "UPLOAD_ATTACHMENT_SET_UPLOADS" | "UPLOAD_ATTACHMENT_UPDATE_FILE" | "UPLOAD_CANCEL_REQUEST" | "UPLOAD_COMPLETE" | "UPLOAD_COMPRESSION_PROGRESS" | "UPLOAD_FAIL" | "UPLOAD_FILE_UPDATE" | "UPLOAD_ITEM_CANCEL_REQUEST" | "UPLOAD_PROGRESS" | "UPLOAD_RESTORE_FAILED_UPLOAD" | "UPLOAD_START" | "USER_ACHIEVEMENT_UPDATE" | "USER_ACTIVITY_STATISTICS_FETCH_SUCCESS" | "USER_APPLICATION_REMOVE" | "USER_APPLICATION_UPDATE" | "USER_APPLIED_BOOSTS_FETCH_START" | "USER_APPLIED_BOOSTS_FETCH_SUCCESS" | "USER_AUTHORIZED_APPS_REQUEST" | "USER_AUTHORIZED_APPS_UPDATE" | "USER_CONNECTION_UPDATE" | "USER_CONNECTIONS_INTEGRATION_JOINING" | "USER_CONNECTIONS_INTEGRATION_JOINING_ERROR" | "USER_CONNECTIONS_UPDATE" | "USER_GUILD_JOIN_REQUEST_COACHMARK_CLEAR" | "USER_GUILD_JOIN_REQUEST_COACHMARK_SHOW" | "USER_GUILD_JOIN_REQUEST_COOLDOWN_FETCH" | "USER_GUILD_JOIN_REQUEST_UPDATE" | "USER_GUILD_SETTINGS_CHANNEL_UPDATE" | "USER_GUILD_SETTINGS_CHANNEL_UPDATE_BULK" | "USER_GUILD_SETTINGS_FULL_UPDATE" | "USER_GUILD_SETTINGS_GUILD_AND_CHANNELS_UPDATE" | "USER_GUILD_SETTINGS_GUILD_UPDATE" | "USER_GUILD_SETTINGS_REMOVE_PENDING_CHANNEL_UPDATES" | "USER_JOIN_REQUEST_GUILDS_FETCH" | "USER_NON_CHANNEL_ACK" | "USER_NOTE_LOAD_START" | "USER_NOTE_LOADED" | "USER_NOTE_UPDATE" | "USER_PAYMENT_BROWSER_CHECKOUT_DONE" | "USER_PAYMENT_BROWSER_CHECKOUT_STARTED" | "USER_PAYMENT_CLIENT_ADD" | "USER_PROFILE_EFFECTS_FETCH" | "USER_PROFILE_EFFECTS_FETCH_FAILURE" | "USER_PROFILE_EFFECTS_FETCH_SUCCESS" | "USER_PROFILE_FETCH_FAILURE" | "USER_PROFILE_FETCH_START" | "USER_PROFILE_FETCH_SUCCESS" | "USER_PROFILE_MODAL_CLOSE" | "USER_PROFILE_MODAL_OPEN" | "USER_PROFILE_UPDATE_FAILURE" | "USER_PROFILE_UPDATE_START" | "USER_PROFILE_UPDATE_SUCCESS" | "USER_REQUIRED_ACTION_UPDATE" | "USER_SETTINGS_ACCOUNT_CLOSE" | "USER_SETTINGS_ACCOUNT_INIT" | "USER_SETTINGS_ACCOUNT_RESET_AND_CLOSE_FORM" | "USER_SETTINGS_ACCOUNT_SET_PENDING_ACCENT_COLOR" | "USER_SETTINGS_ACCOUNT_SET_PENDING_AVATAR" | "USER_SETTINGS_ACCOUNT_SET_PENDING_AVATAR_DECORATION" | "USER_SETTINGS_ACCOUNT_SET_PENDING_BANNER" | "USER_SETTINGS_ACCOUNT_SET_PENDING_BIO" | "USER_SETTINGS_ACCOUNT_SET_PENDING_GLOBAL_NAME" | "USER_SETTINGS_ACCOUNT_SET_PENDING_PROFILE_EFFECT_ID" | "USER_SETTINGS_ACCOUNT_SET_PENDING_PRONOUNS" | "USER_SETTINGS_ACCOUNT_SET_PENDING_THEME_COLORS" | "USER_SETTINGS_ACCOUNT_SET_SINGLE_TRY_IT_OUT_COLLECTIBLES_ITEM" | "USER_SETTINGS_ACCOUNT_SET_TRY_IT_OUT_AVATAR" | "USER_SETTINGS_ACCOUNT_SET_TRY_IT_OUT_AVATAR_DECORATION" | "USER_SETTINGS_ACCOUNT_SET_TRY_IT_OUT_BANNER" | "USER_SETTINGS_ACCOUNT_SET_TRY_IT_OUT_PROFILE_EFFECT_ID" | "USER_SETTINGS_ACCOUNT_SET_TRY_IT_OUT_THEME_COLORS" | "USER_SETTINGS_ACCOUNT_SUBMIT" | "USER_SETTINGS_ACCOUNT_SUBMIT_FAILURE" | "USER_SETTINGS_ACCOUNT_SUBMIT_SUCCESS" | "USER_SETTINGS_CLEAR_ERRORS" | "USER_SETTINGS_LOCALE_OVERRIDE" | "USER_SETTINGS_MODAL_CLEAR_SCROLL_POSITION" | "USER_SETTINGS_MODAL_CLEAR_SUBSECTION" | "USER_SETTINGS_MODAL_CLOSE" | "USER_SETTINGS_MODAL_INIT" | "USER_SETTINGS_MODAL_OPEN" | "USER_SETTINGS_MODAL_RESET" | "USER_SETTINGS_MODAL_SET_SECTION" | "USER_SETTINGS_MODAL_SUBMIT" | "USER_SETTINGS_MODAL_SUBMIT_COMPLETE" | "USER_SETTINGS_MODAL_SUBMIT_FAILURE" | "USER_SETTINGS_MODAL_UPDATE_ACCOUNT" | "USER_SETTINGS_OVERRIDE_APPLY" | "USER_SETTINGS_OVERRIDE_CLEAR" | "USER_SETTINGS_PROTO_ENQUEUE_UPDATE" | "USER_SETTINGS_PROTO_LOAD_IF_NECESSARY" | "USER_SETTINGS_PROTO_UPDATE" | "USER_SETTINGS_PROTO_UPDATE_EDIT_INFO" | "USER_SETTINGS_RESET_ALL_PENDING" | "USER_SETTINGS_RESET_ALL_TRY_IT_OUT" | "USER_SETTINGS_RESET_PENDING_ACCOUNT_CHANGES" | "USER_SETTINGS_RESET_PENDING_AVATAR_DECORATION" | "USER_SETTINGS_RESET_PENDING_PROFILE_CHANGES" | "USER_SOUNDBOARD_SET_VOLUME" | "USER_TENURE_REWARD_STATUS_DELETE" | "USER_TENURE_REWARD_STATUS_RESET" | "USER_TENURE_REWARD_SYNC_START" | "USER_TENURE_REWARD_SYNC_SUCCESS" | "USER_UPDATE" | "VERIFY_FAILURE" | "VERIFY_SUCCESS" | "VIDEO_FILTER_ASSET_DELETE_SUCCESS" | "VIDEO_FILTER_ASSET_UPLOAD_SUCCESS" | "VIDEO_FILTER_ASSETS_FETCH_SUCCESS" | "VIDEO_SAVE_LAST_USED_BACKGROUND_OPTION" | "VIEW_HISTORY_MARK_VIEW" | "VOICE_CATEGORY_COLLAPSE" | "VOICE_CATEGORY_EXPAND" | "VOICE_CHANNEL_EFFECT_CLEAR" | "VOICE_CHANNEL_EFFECT_RECENT_EMOJI" | "VOICE_CHANNEL_EFFECT_SEND" | "VOICE_CHANNEL_EFFECT_SENT_LOCAL" | "VOICE_CHANNEL_EFFECT_TOGGLE_ANIMATION_TYPE" | "VOICE_CHANNEL_EFFECT_UPDATE_TIME_STAMP" | "VOICE_CHANNEL_SELECT" | "VOICE_CHANNEL_STATUS_UPDATE" | "VOICE_SERVER_UPDATE" | "VOICE_STATE_UPDATES" | "WAIT_FOR_REMOTE_SESSION" | "WEBHOOK_CREATE" | "WEBHOOK_DELETE" | "WEBHOOK_UPDATE" | "WEBHOOKS_FETCHING" | "WEBHOOKS_UPDATE" | "WELCOME_SCREEN_FETCH_FAIL" | "WELCOME_SCREEN_FETCH_START" | "WELCOME_SCREEN_FETCH_SUCCESS" | "WELCOME_SCREEN_SETTINGS_CLEAR" | "WELCOME_SCREEN_SETTINGS_RESET" | "WELCOME_SCREEN_SETTINGS_UPDATE" | "WELCOME_SCREEN_SUBMIT" | "WELCOME_SCREEN_SUBMIT_FAILURE" | "WELCOME_SCREEN_SUBMIT_SUCCESS" | "WELCOME_SCREEN_UPDATE" | "WELCOME_SCREEN_VIEW" | "WINDOW_FOCUS" | "WINDOW_FULLSCREEN_CHANGE" | "WINDOW_HIDDEN" | "WINDOW_INIT" | "WINDOW_RESIZED" | "WINDOW_UNLOAD" | "WINDOW_VISIBILITY_CHANGE" | "WRITE_CACHES"; diff --git a/packages/discord-types/src/flux/index.ts b/packages/discord-types/src/flux/index.ts new file mode 100644 index 000000000..c767f71bb --- /dev/null +++ b/packages/discord-types/src/flux/index.ts @@ -0,0 +1,51 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { ComponentClass, ElementType, ForwardRefExoticComponent } from "react"; + +import type { Subtract } from "../internal"; +import type { Emitter } from "./Emitter"; +import type { PersistedStore } from "./PersistedStore"; +import type { Store } from "./Store"; +import type { UserAgnosticStore } from "./UserAgnosticStore"; + +export * from "./ActionHandlersGraph"; +export * from "./ActionLog"; +export * from "./ActionLogger"; +export * from "./actions"; +export * from "./BatchedStoreListener"; +export * from "./ChangeListeners"; +export * from "./Dispatcher"; +export * from "./Emitter"; +export * from "./PersistedStore"; +export * from "./SnapshotStore"; +export * from "./Store"; +export * from "./UserAgnosticStore"; +export * from "./utils"; + +export interface Flux { + get initialized(): typeof Store["initialized"]; + + connectStores: < + Props extends {}, + State extends {}, + ForwardRef extends boolean | undefined = undefined + >( + stores: Store[], + getStateFromStores: (props: Props) => State, + options?: { + forwardRef?: ForwardRef /* = false */; + } | null + ) =>

(type: ElementType

) => ForwardRef extends true + ? ForwardRefExoticComponent & Props> + : ComponentClass & Props>; + DeviceSettingsStore: typeof UserAgnosticStore; + Emitter: Emitter; + initialize: typeof Store["initialize"]; + OfflineCacheStore: typeof UserAgnosticStore; + PersistedStore: typeof PersistedStore; + Store: typeof Store; +} diff --git a/packages/discord-types/src/flux/utils.ts b/packages/discord-types/src/flux/utils.ts new file mode 100644 index 000000000..5e6928459 --- /dev/null +++ b/packages/discord-types/src/flux/utils.ts @@ -0,0 +1,79 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../internal"; +import type { Store } from "./Store"; + +// For createFetchStore +export type FetchStoreFactory< + StoreConstraint extends Store = Store, + StateConstraint = unknown, + DependenciesConstraint extends readonly unknown[] = readonly unknown[], + IsLoadingConstraint extends boolean = boolean +> = < + S extends StoreConstraint, + State extends StateConstraint, + Dependencies extends DependenciesConstraint, + IsLoading extends IsLoadingConstraint +>( + store: S, + options: { + dangerousAbortOnCleanup?: boolean | undefined /* = false */; + get: (...dependencies: Dependencies) => State; + getIsLoading: (...dependencies: Dependencies) => IsLoading; + load: (signal: AbortSignal, ...dependencies: Dependencies) => Promise; + useStateHook: StoreStateHook<[S], State, Dependencies>; + } +) => (...dependencies: Dependencies) => { + data: State; + error: unknown; + isLoading: IsLoading; +}; + +// For useStateFromStores +export type StoreStateHook< + Stores extends readonly Store[] = readonly Store[], + StateConstraint = unknown, + Dependencies extends readonly unknown[] | Nullish = readonly unknown[] | Nullish +> = ( + stores: Stores, + getStateFromStores: () => State, + ...args: [ + ...undefined extends Dependencies + ? [dependencies?: Dependencies] + : [dependencies: Dependencies], + areStatesEqual?: ((prevState: State, nextState: State) => boolean) | undefined + ] +) => State; + +// For useStateFromStoresObject +export type StoreObjectStateHook< + Stores extends readonly Store[] = readonly Store[], + StateConstraint extends {} = {}, + Dependencies extends readonly unknown[] | Nullish = readonly unknown[] | Nullish +> = ( + stores: Stores, + getStateFromStores: () => State, + ...dependencies: undefined extends Dependencies + ? [dependencies?: Dependencies] + : [dependencies: Dependencies] +) => State; + +// For useStateFromStoresArray +export type StoreArrayStateHook< + Stores extends readonly Store[] = readonly Store[], + StateConstraint extends readonly unknown[] = readonly unknown[], + Dependencies extends readonly unknown[] | Nullish = readonly unknown[] | Nullish +> = ( + stores: Stores, + getStateFromStores: () => State, + ...dependencies: undefined extends Dependencies + ? [dependencies?: Dependencies] + : [dependencies: Dependencies] +) => State; + +// For statesWillNeverBeEqual +export type UnequatableStateComparator = () => false; diff --git a/packages/discord-types/src/general/Activity.ts b/packages/discord-types/src/general/Activity.ts new file mode 100644 index 000000000..aa688b6c2 --- /dev/null +++ b/packages/discord-types/src/general/Activity.ts @@ -0,0 +1,95 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** @todo May have more properties. */ +export interface Activity { + application_id?: string | number; + assets?: ActivityAssets; + buttons?: string[]; + created_at: number; + details?: string; + emoji?: ActivityEmoji; + flags?: ActivityFlags; + id: string; + metadata?: Record; + name: string; + party?: ActivityParty; + platform?: ActivityGamePlatform; + session_id?: string; + state?: string; + supported_platforms?: ActivityPlatform[]; + sync_id?: string; + timestamps?: ActivityTimestamps; + type: ActivityType; + url?: string; +} + +export interface ActivityAssets { + large_image?: string; + large_text?: string; + small_image?: string; + small_text?: string; +} + +export type ActivityEmoji = ActivityUnicodeEmoji | ActivityGuildEmoji; + +export interface ActivityUnicodeEmoji { + name: string; +} + +export interface ActivityGuildEmoji { + animated: boolean; + id: string; + name: string; +} + +export enum ActivityFlags { + INSTANCE = 1 << 0, + JOIN = 1 << 1, + SYNC = 1 << 4, + PLAY = 1 << 5, + PARTY_PRIVACY_FRIENDS = 1 << 6, + PARTY_PRIVACY_VOICE_CHANNEL = 1 << 7, + EMBEDDED = 1 << 8, +} + +export interface ActivityParty { + id?: string; + size?: [minimumSize: number, maximumSize: number]; +} + +// Original name: ActivityGamePlatforms +export enum ActivityGamePlatform { + ANDROID = "android", + DESKTOP = "desktop", + EMBEDDED = "embedded", + IOS = "ios", + PS4 = "ps4", + PS5 = "ps5", + SAMSUNG = "samsung", + XBOX = "xbox", +} + +export enum ActivityPlatform { + DESKTOP = "desktop", + MOBILE = "mobile", +} + +export interface ActivityTimestamps { + end?: number; + start?: number; +} + +// Original name: ActivityTypes +export enum ActivityType { + PLAYING = 0, + STREAMING = 1, + LISTENING = 2, + WATCHING = 3, + CUSTOM_STATUS = 4, + COMPETING = 5, + HANG_STATUS = 6, +} diff --git a/packages/discord-types/src/general/ApplicationCommand.ts b/packages/discord-types/src/general/ApplicationCommand.ts new file mode 100644 index 000000000..c207b6cd8 --- /dev/null +++ b/packages/discord-types/src/general/ApplicationCommand.ts @@ -0,0 +1,140 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { ApplicationIntegrationType } from "./ApplicationRecord"; +import type { ChannelType } from "./channels/ChannelRecord"; + +export type ApplicationCommand = { + application_id: string; + contexts?: InteractionContextType[] | null; + /** Permissions serialized as a string. */ + default_member_permissions: string | null; + default_permission?: boolean | null; + description: CommandType extends ApplicationCommandType.CHAT ? string : ""; + description_localizations?: { [locale: string]: string; } | null; + dm_permission?: boolean; + guild_id?: string; + id: string; + integration_types?: ApplicationIntegrationType[]; + name: string; + name_localizations?: { [locale: string]: string; } | null; + nsfw?: boolean; + type?: ApplicationCommandType; + version: string; +} & (CommandType extends ApplicationCommandType.CHAT ? { options?: ApplicationCommandOption[]; } : {}); + +export enum InteractionContextType { + GUILD = 0, + BOT_DM = 1, + PRIVATE_CHANNEL = 2, +} + +export enum ApplicationCommandType { + CHAT = 1, + USER = 2, + MESSAGE = 3, + PRIMARY_ENTRY_POINT = 4, +} + +export type ApplicationCommandOption = ApplicationCommandSubcommandOption | ApplicationCommandSubcommandGroupOption | ApplicationCommandNonSubOption; + +export interface ApplicationCommandOptionBase extends Pick { + type: ApplicationCommandOptionType; +} + +export interface ApplicationCommandSubcommandOption extends ApplicationCommandOptionBase { + options?: ApplicationCommandNonSubOption[]; + type: ApplicationCommandOptionType.SUB_COMMAND; +} + +export interface ApplicationCommandSubcommandGroupOption extends ApplicationCommandOptionBase { + options?: ApplicationCommandOption[]; + type: ApplicationCommandOptionType.SUB_COMMAND; +} + +export type ApplicationCommandNonSubOption = ApplicationCommandChoicesOption | ApplicationCommandBooleanOption | ApplicationCommandUserOption | ApplicationCommandChannelOption | ApplicationCommandRoleOption | ApplicationCommandMentionableOption | ApplicationCommandAttachmentOption; + +export interface ApplicationCommandNonSubOptionBase extends ApplicationCommandOptionBase { + required?: boolean; +} + +type ApplicationCommandChoiceOptionType = ApplicationCommandOptionType.STRING | ApplicationCommandOptionType.INTEGER | ApplicationCommandOptionType.NUMBER; + +export type ApplicationCommandChoicesOption = ApplicationCommandStringOption | ApplicationCommandNumericOption; + +export type ApplicationCommandChoicesOptionBase = ApplicationCommandNonSubOptionBase + & { type: ApplicationCommandChoiceOptionType; } + & ({ autocomplete?: false; choice: ApplicationCommandOptionChoice[]; } + | { autocomplete?: boolean; }); + +export interface ApplicationCommandOptionChoice< + OptionType extends ApplicationCommandChoiceOptionType = ApplicationCommandChoiceOptionType +> extends Pick { + value: OptionType extends ApplicationCommandOptionType.STRING ? string + : OptionType extends ApplicationCommandOptionType.INTEGER | ApplicationCommandOptionType.NUMBER ? number + : never; +} + +export type ApplicationCommandStringOption = ApplicationCommandChoicesOptionBase & { + max_length?: number; + min_length?: number; + type: ApplicationCommandOptionType.STRING; +}; + +export type ApplicationCommandNumericOption = ApplicationCommandIntegerOption | ApplicationCommandNumberOption; + +export type ApplicationCommandNumericOptionBase = ApplicationCommandChoicesOptionBase & { + max_value?: number; + min_value?: number; + type: ApplicationCommandOptionType.INTEGER | ApplicationCommandOptionType.NUMBER; +}; + +export type ApplicationCommandIntegerOption = ApplicationCommandNumericOptionBase & { + type: ApplicationCommandOptionType.INTEGER; +}; + +export type ApplicationCommandNumberOption = ApplicationCommandNumericOptionBase & { + type: ApplicationCommandOptionType.NUMBER; +}; + +export interface ApplicationCommandBooleanOption extends ApplicationCommandNonSubOptionBase { + type: ApplicationCommandOptionType.BOOLEAN; +} + +export interface ApplicationCommandUserOption extends ApplicationCommandNonSubOptionBase { + type: ApplicationCommandOptionType.USER; +} + +export interface ApplicationCommandChannelOption extends ApplicationCommandNonSubOptionBase { + channel_types?: ChannelType[]; + type: ApplicationCommandOptionType.CHANNEL; +} + +export interface ApplicationCommandRoleOption extends ApplicationCommandNonSubOptionBase { + type: ApplicationCommandOptionType.ROLE; +} + +export interface ApplicationCommandMentionableOption extends ApplicationCommandNonSubOptionBase { + type: ApplicationCommandOptionType.MENTIONABLE; +} + +export interface ApplicationCommandAttachmentOption extends ApplicationCommandNonSubOptionBase { + type: ApplicationCommandOptionType.ATTACHMENT; +} + +export enum ApplicationCommandOptionType { + SUB_COMMAND = 1, + SUB_COMMAND_GROUP = 2, + STRING = 3, + INTEGER = 4, + BOOLEAN = 5, + USER = 6, + CHANNEL = 7, + ROLE = 8, + MENTIONABLE = 9, + NUMBER = 10, + ATTACHMENT = 11, +} diff --git a/packages/discord-types/src/general/ApplicationRecord.ts b/packages/discord-types/src/general/ApplicationRecord.ts new file mode 100644 index 000000000..ac34e63e2 --- /dev/null +++ b/packages/discord-types/src/general/ApplicationRecord.ts @@ -0,0 +1,217 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish, Optional, PartialOnUndefined, SnakeCasedProperties } from "../internal"; +import type { CompanyRecord } from "./CompanyRecord"; +import type { IconSource } from "./misc"; +import type { RecordBase } from "./Record"; +import type { UserRecord } from "./UserRecord"; + +export type ApplicationRecordOwnProperties = Pick; + +export type ApplicationProperties = Optional>, Nullish, "id" | "integrationTypesConfig" | "maxParticipants" | "name" | "primarySkuId" | "privacyPolicyUrl" | "roleConnectionsVerificationUrl" | "storefront_available" | "storeListingSkuId" | "team" | "termsOfServiceUrl" | "type", true> + & SnakeCasedProperties>> + & { executables: Readonly; }; + +export declare class ApplicationRecord< + OwnProperties extends ApplicationRecordOwnProperties = ApplicationRecordOwnProperties +> extends RecordBase { + constructor(applicationProperties: ApplicationProperties); + + /** @todo */ + static createFromServer(applicationFromServer: Record): ApplicationRecord; + static supportsOutOfProcessOverlay(overlayMethods?: ApplicationOverlayMethodFlags | null): boolean; + + get destinationSkuId(): string | undefined; + getCoverImageURL(imageSize?: number): string | null; + getIconSource(iconSize?: number, iconFormat?: string | null): IconSource | null; + getIconURL(iconSize?: number, iconFormat?: string | null): string | null; + getMaxParticipants(): number; + getSplashURL(splashSize?: number, splashFormat?: string | null): string | null; + supportsIntegrationTypes(...integrationTypes: ApplicationIntegrationType[]): boolean; + get supportsOutOfProcessOverlay(): boolean; + + aliases: string[]; + bot: UserRecord | null; + coverImage: string | null; + customInstallUrl: string | undefined; + description: string | null; + developers: CompanyRecord[]; + embeddedActivityConfig: EmbeddedActivityConfig | undefined; + eulaId: string | null; + executables: ApplicationExecutable[]; + flags: ApplicationFlags; + /** @todo This is not a GuildRecord; it is a guild object from the API. */ + guild: Record | null; + guildId: string | null; + hashes: string[]; + hook: boolean; + icon: string | null; + id: string; + installParams: ApplicationInstallParams | undefined; + integrationTypesConfig: Partial> | null; + isMonetized: boolean; + isVerified: boolean; + maxParticipants: number | undefined; + name: string; + overlay: boolean; + overlayCompatibilityHook: boolean; + overlayMethods: ApplicationOverlayMethodFlags; + overlayWarn: boolean; + primarySkuId: string | undefined; + privacyPolicyUrl: string | undefined; + publishers: CompanyRecord[]; + roleConnectionsVerificationUrl: string | undefined; + slug: string | null; + splash: string | null; + storefront_available: boolean | undefined; + storeListingSkuId: string | undefined; + tags: string[]; + /** @todo This is a team object from the API. */ + team: Record | null; + termsOfServiceUrl: string | undefined; + thirdPartySkus: string[]; + type: ApplicationType | null; +} + +/** @todo Some properties may not actually be optional or unlikely may also be null. */ +export interface EmbeddedActivityConfig { + application_id: string; + client_platform_config: Partial>; + default_orientation_lock_state?: OrientationLockState; + displays_advertisements?: boolean; + has_csp_exception?: boolean; + requires_age_gate?: boolean; + shelf_rank?: number; + supported_platforms?: EmbeddedActivitySupportedPlatform[]; + tablet_default_orientation_lock_state?: OrientationLockState; +} + +// Original name: EmbeddedActivitySupportedPlatforms +export enum EmbeddedActivitySupportedPlatform { + ANDROID = "android", + IOS = "ios", + WEB = "web", +} + +/** @todo Some properties may not actually be optional or unlikely may also be null. */ +export interface EmbeddedActivityClientPlatformConfig { + label_type?: EmbeddedActivityLabelType; + label_until?: string | null; + release_phase: string; +} + +// Original name: EmbeddedActivityLabelTypes +export enum EmbeddedActivityLabelType { + NONE = 0, + NEW = 1, + UPDATED = 2, +} + +export enum OrientationLockState { + UNLOCKED = 1, + PORTRAIT = 2, + LANDSCAPE = 3, +} + +export interface ApplicationExecutable { + arguments?: string[]; + isLauncher?: boolean; + name: string; + os: string; +} + +export interface ApplicationInstallParams { + /** Permissions serialized as a string. */ + permissions: string; + scopes: OAuth2Scope[]; +} + +// Original name: OAuth2Scopes +export enum OAuth2Scope { + ACCOUNT_GLOBAL_NAME_UPDATE = "account.global_name.update", + ACTIVITIES_READ = "activities.read", + ACTIVITIES_WRITE = "activities.write", + APPLICATIONS_BUILDS_READ = "applications.builds.read", + APPLICATIONS_BUILDS_UPLOAD = "applications.builds.upload", + APPLICATIONS_COMMANDS = "applications.commands", + APPLICATIONS_COMMANDS_PERMISSIONS_UPDATE = "applications.commands.permissions.update", + APPLICATIONS_COMMANDS_UPDATE = "applications.commands.update", + APPLICATIONS_ENTITLEMENTS = "applications.entitlements", + APPLICATIONS_STORE_UPDATE = "applications.store.update", + BOT = "bot", + CONNECTIONS = "connections", + DM_CHANNELS_MESSAGES_READ = "dm_channels.messages.read", + DM_CHANNELS_MESSAGES_WRITE = "dm_channels.messages.write", + DM_CHANNELS_READ = "dm_channels.read", + EMAIL = "email", + GATEWAY_CONNECT = "gateway.connect", + GDM_JOIN = "gdm.join", + GUILDS = "guilds", + GUILDS_CHANNELS_READ = "guilds.channels.read", + GUILDS_JOIN = "guilds.join", + GUILDS_MEMBERS_READ = "guilds.members.read", + IDENTIFY = "identify", + MESSAGES_READ = "messages.read", + OPENID = "openid", + PAYMENT_SOURCES_COUNTRY_CODE = "payment_sources.country_code", + PRESENCES_READ = "presences.read", + PRESENCES_WRITE = "presences.write", + RELATIONSHIPS_READ = "relationships.read", + RELATIONSHIPS_WRITE = "relationships.write", + ROLE_CONNECTIONS_WRITE = "role_connections.write", + RPC = "rpc", + RPC_ACTIVITIES_WRITE = "rpc.activities.write", + RPC_NOTIFICATIONS_READ = "rpc.notifications.read", + RPC_SCREENSHARE_READ = "rpc.screenshare.read", + RPC_SCREENSHARE_WRITE = "rpc.screenshare.write", + RPC_VIDEO_READ = "rpc.video.read", + RPC_VIDEO_WRITE = "rpc.video.write", + RPC_VOICE_READ = "rpc.voice.read", + RPC_VOICE_WRITE = "rpc.voice.write", + SDK_SOCIAL_LAYER = "sdk.social_layer", + VOICE = "voice", + WEBHOOK_INCOMING = "webhook.incoming", +} + +export enum ApplicationIntegrationType { + GUILD_INSTALL = 0, + USER_INSTALL = 1, +} + +export interface ApplicationIntegrationTypeConfig { + oauth2InstallParams: ApplicationInstallParams | undefined; +} + +export enum ApplicationFlags { + EMBEDDED_RELEASED = 1 << 1, + EMBEDDED_IAP = 1 << 3, + APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE = 1 << 6, + GATEWAY_PRESENCE = 1 << 12, + GATEWAY_PRESENCE_LIMITED = 1 << 13, + GATEWAY_GUILD_MEMBERS = 1 << 14, + GATEWAY_GUILD_MEMBERS_LIMITED = 1 << 15, + EMBEDDED = 1 << 17, + GATEWAY_MESSAGE_CONTENT = 1 << 18, + GATEWAY_MESSAGE_CONTENT_LIMITED = 1 << 19, + EMBEDDED_FIRST_PARTY = 1 << 20, + APPLICATION_COMMAND_BADGE = 1 << 23, + SOCIAL_LAYER_INTEGRATION = 1 << 27, + PROMOTED = 1 << 29, + PARTNER = 1 << 30, +} + +export enum ApplicationOverlayMethodFlags { + DEFAULT = 0, + OUT_OF_PROCESS = 1 << 0, +} + +// Original name: ApplicationTypes +export enum ApplicationType { + GAME = 1, + TICKETED_EVENTS = 3, + GUILD_ROLE_SUBSCRIPTIONS = 4, +} diff --git a/packages/discord-types/src/general/Clan.ts b/packages/discord-types/src/general/Clan.ts new file mode 100644 index 000000000..74a8aa708 --- /dev/null +++ b/packages/discord-types/src/general/Clan.ts @@ -0,0 +1,75 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export interface Clan { + badge: { + badgeKind: ClanBadgeKind; + primaryColor: string; + secondaryColor: string; + }; + banner: ClanBannerKind; + bannerHash: string | null; + branding: { + primaryColor: string; + secondaryColor: string; + }; + description: string | null; + games: string[]; + icon: string | null; + id: string; + memberCount: number; + name: string; + playstyle: ClanPlaystyle; + tag: string; + traits: string[]; + wildcardDescriptors: string[]; +} + +export enum ClanBadgeKind { + SWORD = 0, + WATER_DROP = 1, + SKULL = 2, + TOADSTOOL = 3, + MOON = 4, + LIGHTNING = 5, + LEAF = 6, + HEART = 7, + FIRE = 8, + COMPASS = 9, + CROSSHAIRS = 10, + FLOWER = 11, + FORCE = 12, + GEM = 13, + LAVA = 14, + PSYCHIC = 15, + SMOKE = 16, + SNOW = 17, + SOUND = 18, + SUN = 19, + WIND = 20, +} + +export enum ClanBannerKind { + NIGHT_SKY = 0, + CASTLE = 1, + WORLD_MAP = 2, + SEA_FOAM = 3, + WARP_TUNNEL = 4, + HOUSE = 5, + HEIGHTMAP = 6, + MESH = 7, + SPATTER = 8, +} + +// Original name: ClanPlaystyles +export enum ClanPlaystyle { + NONE = 0, + SOCIAL = 1, + CASUAL = 2, + COMPETITIVE = 3, + CREATIVE = 4, + VERY_HARDCORE = 5, +} diff --git a/packages/discord-types/src/general/CompanyRecord.ts b/packages/discord-types/src/general/CompanyRecord.ts new file mode 100644 index 000000000..09c7174d3 --- /dev/null +++ b/packages/discord-types/src/general/CompanyRecord.ts @@ -0,0 +1,20 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { RecordBase } from "./Record"; + +export type CompanyRecordOwnProperties = Pick; + +export declare class CompanyRecord< + OwnProperties extends CompanyRecordOwnProperties = CompanyRecordOwnProperties +> extends RecordBase { + constructor(companyProperties: CompanyRecordOwnProperties); + + static createFromServer(companyFromServer: CompanyRecordOwnProperties): CompanyRecord; + + id: string; + name: string; +} diff --git a/packages/discord-types/src/general/DisplayProfile.ts b/packages/discord-types/src/general/DisplayProfile.ts new file mode 100644 index 000000000..02e2917eb --- /dev/null +++ b/packages/discord-types/src/general/DisplayProfile.ts @@ -0,0 +1,68 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish, OptionalTuple } from "../internal"; +import type { GuildMemberProfile } from "./GuildMemberProfile"; +import type { ProfileBadge, ProfileThemeColors, UserProfile } from "./UserProfile"; + +export declare class DisplayProfile< + FetchFailed extends boolean = boolean, + Guild extends boolean = boolean +> { + constructor( + userProfile: UserProfile, + ...guildMemberProfile: Guild extends true + ? [guildMemberProfile: GuildMemberProfile] + : [guildMemberProfile?: null] + ); + + get application(): UserProfile["application"]; + get canEditThemes(): boolean; + get canUsePremiumProfileCustomization(): boolean; + getBadges(): ProfileBadge[]; + getBannerURL(options: { + canAnimate?: boolean /* = false */; + size: number; + }): string | undefined; + getLegacyUsername(): UserProfile["legacyUsername"]; + getPreviewBanner( + pendingBanner?: string | null, + canAnimate?: boolean, + size?: number /* = 480 */ + ): string | Nullish; + getPreviewBio(pendingBio?: string | null): Guild | false extends infer GuildValue + ? GuildValue extends true + ? { isUsingGuildValue: true; value: string; } + : { isUsingGuildValue: false; value: string | undefined; } + : never; + getPreviewThemeColors( + pendingThemeColors?: OptionalTuple | null + ): UserProfile["themeColors"]; + hasFullProfile(): boolean; + hasPremiumCustomization(): boolean; + hasThemeColors(): boolean; + isUsingGuildMemberBanner(): Guild | false; + isUsingGuildMemberBio(): Guild | false; + isUsingGuildMemberPronouns(): Guild | false; + get premiumGuildSince(): UserProfile["premiumGuildSince"]; + get premiumSince(): UserProfile["premiumSince"]; + get premiumType(): UserProfile["premiumType"]; + get primaryColor(): UserProfile["accentColor"]; + + _guildMemberProfile: Guild extends true ? GuildMemberProfile : Nullish; + _userProfile: UserProfile; + accentColor: UserProfile["accentColor"]; + banner: UserProfile["banner"]; + bio: UserProfile["bio"]; + guildId: Guild extends true ? string : undefined; + /** @todo Does not seem to be implemented. */ + popoutAnimationParticleType: UserProfile["popoutAnimationParticleType"]; + profileEffectExpiresAt: UserProfile["profileEffectExpiresAt"]; + profileEffectId: UserProfile["profileEffectId"]; + pronouns: UserProfile["pronouns"]; + themeColors: UserProfile["themeColors"]; + userId: UserProfile["userId"]; +} diff --git a/packages/discord-types/src/general/Draft.ts b/packages/discord-types/src/general/Draft.ts new file mode 100644 index 000000000..a1c6d98cb --- /dev/null +++ b/packages/discord-types/src/general/Draft.ts @@ -0,0 +1,45 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** @todo It seems that the other DraftTypes are either not handled by DraftStore or not yet implemented. */ +export type Draft + = Type extends DraftType.CHANNEL_MESSAGE | DraftType.FIRST_THREAD_MESSAGE ? DraftMessage + : Type extends DraftType.THREAD_SETTINGS ? DraftThreadSettings + : never; + +// Enum keys made screaming snake case for consistency. +export enum DraftType { + CHANNEL_MESSAGE = 0, + THREAD_SETTINGS = 1, + FIRST_THREAD_MESSAGE = 2, + APPLICATION_LAUNCHER_COMMAND = 3, + POLL = 4, + SLASH_COMMAND = 5, +} + +export interface DraftBase { + timestamp: number; +} + +export interface DraftMessage extends DraftBase { + draft: string; +} + +export type DraftThreadSettings = DraftForumThreadSettings | DraftNonForumThreadSettings; + +export interface DraftThreadSettingsBase extends DraftBase { + name?: string; + parentChannelId: string; +} + +export interface DraftForumThreadSettings extends DraftThreadSettingsBase { + appliedTags?: Set; +} + +export interface DraftNonForumThreadSettings extends DraftThreadSettingsBase { + isPrivate?: boolean; + parentMessageId?: string | undefined; +} diff --git a/packages/discord-types/src/general/Frecency.ts b/packages/discord-types/src/general/Frecency.ts new file mode 100644 index 000000000..0a25b3d9e --- /dev/null +++ b/packages/discord-types/src/general/Frecency.ts @@ -0,0 +1,70 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../internal"; + +export declare class Frecency { + constructor(options: { + afterCompute: Frecency["afterCompute"]; + computeBonus: Frecency["computeBonus"]; + computeFrecency?: Frecency["computeFrecency"] | undefined /* = frecencyAlgorithms.original */; + computeWeight: Frecency["computeWeight"]; + lookupKey: Frecency["lookupKey"]; + maxSamples?: number | undefined /* = 10 */; + numFrequentlyItems?: number | undefined /* = 32 */; + }); + + compute(): void; + get frequently(): Value[]; + set frequently(values: Value[]); + getEntry(key?: Key | null): FrecencyUsageHistoryEntry | Nullish; + getFrecency(key?: Key | null): number | null; + getScore(key?: Key | null): number | null; + isDirty(): boolean; + markDirty(): void; + overwriteHistory( + usageHistory?: Omit | null, + track?: readonly { + key?: Key | Nullish; + timestamp?: number | Nullish; + }[] | null + ): void; + replaceEntryComputeFunctions( + computeWeight: Frecency["computeWeight"], + computeFrecency: Frecency["computeFrecency"], + calculateMaxTotalUse: Frecency["calculateMaxTotalUse"] + ): void; + track(key?: Key | null, timestamp?: number | null): void; + + _frequently: Value[]; + afterCompute: ( + usageHistory: Frecency["usageHistory"], + frequently: Frecency["frequently"] + ) => void; + calculateMaxTotalUse: boolean; + computeBonus: (key: Key) => number; + computeFrecency: ( + totalUses: number, + score: number, + usageStats: { + maxTotalUse: number | undefined; + numOfRecentUses: number; + } + ) => number; + computeWeight: (daysSinceUsage: number) => number; + dirty: boolean; + lookupKey: (key: Key) => Value; + maxSamples: number; + numFrequentlyItems: number; + usageHistory: Partial>; +} + +export interface FrecencyUsageHistoryEntry { + frecency: number; + recentUses: number[]; + score: number; + totalUses: number; +} diff --git a/packages/discord-types/src/general/GuildMember.ts b/packages/discord-types/src/general/GuildMember.ts new file mode 100644 index 000000000..d4ddbc447 --- /dev/null +++ b/packages/discord-types/src/general/GuildMember.ts @@ -0,0 +1,43 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../internal"; +import type { AvatarDecorationData } from "./UserRecord"; + +export interface GuildMember { + avatar: string | null; + avatarDecoration: AvatarDecorationData | undefined; + colorRoleId: string | undefined; + colorString: string | undefined; + communicationDisabledUntil: string | null; + flags: GuildMemberFlags; + fullProfileLoadedTimestamp: number | undefined; + guildId: string; + highestRoleId: string | undefined; + hoistRoleId: string | undefined; + iconRoleId: string | undefined; + isPending: boolean; + joinedAt: string; + nick: string | null; + premiumSince: string | null; + roles: string[]; + unusualDMActivityUntil: string | Nullish; + userId: string; +} + +export enum GuildMemberFlags { + DID_REJOIN = 1 << 0, + COMPLETED_ONBOARDING = 1 << 1, + BYPASSES_VERIFICATION = 1 << 2, + STARTED_ONBOARDING = 1 << 3, + IS_GUEST = 1 << 4, + STARTED_HOME_ACTIONS = 1 << 5, + COMPLETED_HOME_ACTIONS = 1 << 6, + AUTOMOD_QUARANTINED_USERNAME_OR_GUILD_NICKNAME = 1 << 7, + AUTOMOD_QUARANTINED_BIO = 1 << 8, + DM_SETTINGS_UPSELL_ACKNOWLEDGED = 1 << 9, + AUTOMOD_QUARANTINED_CLAN_TAG = 1 << 10, +} diff --git a/packages/discord-types/src/general/GuildMemberProfile.ts b/packages/discord-types/src/general/GuildMemberProfile.ts new file mode 100644 index 000000000..3b7c57fba --- /dev/null +++ b/packages/discord-types/src/general/GuildMemberProfile.ts @@ -0,0 +1,23 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../internal"; +import type { ProfileBadge, ProfileThemeColors } from "./UserProfile"; + +export interface GuildMemberProfile { + accentColor: number | Nullish; + badges: ProfileBadge[]; + banner: string | Nullish; + bio: string | undefined; + guildId: string; + /** @todo Does not seem to be implemented. */ + popoutAnimationParticleType: any /* | Nullish */; + profileEffectExpiresAt: number | Nullish; + profileEffectId: string | undefined; + pronouns: string; + themeColors: ProfileThemeColors | Nullish; + userId: string; +} diff --git a/packages/discord-types/src/general/GuildRecord.ts b/packages/discord-types/src/general/GuildRecord.ts new file mode 100644 index 000000000..3399bf8cb --- /dev/null +++ b/packages/discord-types/src/general/GuildRecord.ts @@ -0,0 +1,221 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish, Optional } from "../internal"; +import type { Clan } from "./Clan"; +import type { IconSource } from "./misc"; +import type { RecordBase } from "./Record"; +import type { UserRecord } from "./UserRecord"; + +export type GuildRecordOwnProperties = Pick; + +export type GuildProperties = Optional, Nullish, "afkTimeout" | "hubType" | "id" | "systemChannelFlags", true> & { + features?: Iterable | ArrayLike | Nullish; + joinedAt: Date | string | number; +}; + +export declare class GuildRecord< + OwnProperties extends GuildRecordOwnProperties = GuildRecordOwnProperties +> extends RecordBase { + constructor(guildProperties: GuildProperties); + + get acronym(): string; + canHaveRaidActivityAlerts(): boolean; + getApplicationId(): string | null; + getEveryoneRoleId(): string; + getIconSource(iconSize?: number, canAnimate?: boolean /* = false */): IconSource; + getIconURL(iconSize?: number, canAnimate?: boolean /* = false */): string; + getMaxEmojiSlots(): number; + getMaxRoleSubscriptionEmojiSlots(): number; + getMaxSoundboardSlots(): number; + getSafetyAlertsChannelId(): string | null; + hasCommunityInfoSubheader(): boolean; + hasFeature(guildFeature: GuildFeature): boolean; + hasVerificationGate(): boolean; + isCommunity(): boolean; + isLurker(): boolean; + isNew(): boolean; + isOwner(userOrUserId?: UserRecord | string | null): boolean; + isOwnerWithRequiredMfaLevel(userOrUserId?: UserRecord | string | null): boolean; + updateJoinedAt(joinedAt: Date | string): this; + + afkChannelId: string | null; + afkTimeout: number; + application_id: string | null; + banner: string | null; + clan: Clan | null; + defaultMessageNotifications: UserNotificationSetting; + description: string | null; + discoverySplash: string | null; + explicitContentFilter: GuildExplicitContentFilterType; + features: Set; + homeHeader: string | null; + hubType: GuildHubType | null; + icon: string | null; + id: string; + joinedAt: Date; + latestOnboardingQuestionId: string | null; + maxMembers: number; + maxStageVideoChannelUsers: number; + maxVideoChannelUsers: number; + mfaLevel: MFALevel; + name: string; + nsfwLevel: GuildNSFWContentLevel; + ownerId: string | null; + preferredLocale: string; + premiumProgressBarEnabled: boolean; + premiumSubscriberCount: number; + premiumTier: BoostedGuildTier; + publicUpdatesChannelId: string | null; + rulesChannelId: string | null; + safetyAlertsChannelId: string | null; + splash: string | null; + systemChannelFlags: SystemChannelFlags; + systemChannelId: string | null; + vanityURLCode: string | null; + verificationLevel: VerificationLevel; +} + +// Original name: UserNotificationSettings +export enum UserNotificationSetting { + ALL_MESSAGES = 0, + ONLY_MENTIONS = 1, + NO_MESSAGES = 2, + NULL = 3, +} + +// Original name: GuildExplicitContentFilterTypes +export enum GuildExplicitContentFilterType { + DISABLED = 0, + MEMBERS_WITHOUT_ROLES = 1, + ALL_MEMBERS = 2, +} + +// Original name: GuildFeatures +export enum GuildFeature { + ACTIVITY_FEED_DISABLED_BY_USER = "ACTIVITY_FEED_DISABLED_BY_USER", + ACTIVITY_FEED_ENABLED_BY_USER = "ACTIVITY_FEED_ENABLED_BY_USER", + ANIMATED_BANNER = "ANIMATED_BANNER", + ANIMATED_ICON = "ANIMATED_ICON", + AUTO_MODERATION = "AUTO_MODERATION", + AUTOMOD_TRIGGER_USER_PROFILE = "AUTOMOD_TRIGGER_USER_PROFILE", + BANNER = "BANNER", + BURST_REACTIONS = "BURST_REACTIONS", + CHANNEL_ICON_EMOJIS_GENERATED = "CHANNEL_ICON_EMOJIS_GENERATED", + CLAN = "CLAN", + CLAN_DISCOVERY_DISABLED = "CLAN_DISCOVERY_DISABLED", + CLAN_PILOT_GENSHIN = "CLAN_PILOT_GENSHIN", + CLAN_PILOT_VALORANT = "CLAN_PILOT_VALORANT", + CLYDE_DISABLED = "CLYDE_DISABLED", + CLYDE_ENABLED = "CLYDE_ENABLED", + COMMERCE = "COMMERCE", + COMMUNITY = "COMMUNITY", + CREATOR_MONETIZABLE = "CREATOR_MONETIZABLE", + CREATOR_MONETIZABLE_DISABLED = "CREATOR_MONETIZABLE_DISABLED", + CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING = "CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING", + CREATOR_MONETIZABLE_PROVISIONAL = "CREATOR_MONETIZABLE_PROVISIONAL", + CREATOR_MONETIZABLE_RESTRICTED = "CREATOR_MONETIZABLE_RESTRICTED", + CREATOR_MONETIZABLE_WHITEGLOVE = "CREATOR_MONETIZABLE_WHITEGLOVE", + CREATOR_STORE_PAGE = "CREATOR_STORE_PAGE", + DISCOVERABLE = "DISCOVERABLE", + ENABLED_DISCOVERABLE_BEFORE = "ENABLED_DISCOVERABLE_BEFORE", + ENABLED_MODERATION_EXPERIENCE_FOR_NON_COMMUNITY = "ENABLED_MODERATION_EXPERIENCE_FOR_NON_COMMUNITY", + EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT = "EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT", + FEATURABLE = "FEATURABLE", + GENSHIN_L30 = "GENSHIN_L30", + GUILD_HOME_DEPRECATION_OVERRIDE = "GUILD_HOME_DEPRECATION_OVERRIDE", + GUILD_HOME_OVERRIDE = "GUILD_HOME_OVERRIDE", + GUILD_HOME_TEST = "GUILD_HOME_TEST", + GUILD_ONBOARDING = "GUILD_ONBOARDING", + GUILD_ONBOARDING_EVER_ENABLED = "GUILD_ONBOARDING_EVER_ENABLED", + GUILD_ONBOARDING_HAS_PROMPTS = "GUILD_ONBOARDING_HAS_PROMPTS", + GUILD_PRODUCTS_ALLOW_ARCHIVED_FILE = "GUILD_PRODUCTS_ALLOW_ARCHIVED_FILE", + GUILD_SERVER_GUIDE = "GUILD_SERVER_GUIDE", + GUILD_WEB_PAGE_VANITY_URL = "GUILD_WEB_PAGE_VANITY_URL", + HAS_DIRECTORY_ENTRY = "HAS_DIRECTORY_ENTRY", + HUB = "HUB", + INTERNAL_EMPLOYEE_ONLY = "INTERNAL_EMPLOYEE_ONLY", + INVITE_SPLASH = "INVITE_SPLASH", + INVITES_DISABLED = "INVITES_DISABLED", + LINKED_TO_HUB = "LINKED_TO_HUB", + MEMBER_VERIFICATION_GATE_ENABLED = "MEMBER_VERIFICATION_GATE_ENABLED", + MEMBER_VERIFICATION_MANUAL_APPROVAL = "MEMBER_VERIFICATION_MANUAL_APPROVAL", + MORE_EMOJI = "MORE_EMOJI", + MORE_SOUNDBOARD = "MORE_SOUNDBOARD", + MORE_STICKERS = "MORE_STICKERS", + NEW_THREAD_PERMISSIONS = "NEW_THREAD_PERMISSIONS", + NEWS = "NEWS", + NON_COMMUNITY_RAID_ALERTS = "NON_COMMUNITY_RAID_ALERTS", + PARTNERED = "PARTNERED", + PREVIEW_ENABLED = "PREVIEW_ENABLED", + PRODUCTS_AVAILABLE_FOR_PURCHASE = "PRODUCTS_AVAILABLE_FOR_PURCHASE", + RAID_ALERTS_DISABLED = "RAID_ALERTS_DISABLED", + RAPIDASH_TEST = "RAPIDASH_TEST", + ROLE_ICONS = "ROLE_ICONS", + ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE = "ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE", + ROLE_SUBSCRIPTIONS_ENABLED = "ROLE_SUBSCRIPTIONS_ENABLED", + SHARD = "SHARD", + SOUNDBOARD = "SOUNDBOARD", + SUMMARIES_ENABLED_BY_USER = "SUMMARIES_ENABLED_BY_USER", + SUMMARIES_ENABLED_GA = "SUMMARIES_ENABLED_GA", + SUMMARIES_OPT_OUT_EXPERIENCE = "SUMMARIES_OPT_OUT_EXPERIENCE", + TEXT_IN_STAGE_ENABLED = "TEXT_IN_STAGE_ENABLED", + TEXT_IN_VOICE_ENABLED = "TEXT_IN_VOICE_ENABLED", + THREADS_ENABLED = "THREADS_ENABLED", + THREADS_ENABLED_TESTING = "THREADS_ENABLED_TESTING", + VALORANT_L30 = "VALORANT_L30", + VANITY_URL = "VANITY_URL", + VERIFIED = "VERIFIED", + VIP_REGIONS = "VIP_REGIONS", + WELCOME_SCREEN_ENABLED = "WELCOME_SCREEN_ENABLED", +} + +// Original name: GuildHubTypes +export enum GuildHubType { + DEFAULT = 0, + HIGH_SCHOOL = 1, + COLLEGE = 2, +} + +// Original name: MFALevels +export enum MFALevel { + NONE = 0, + ELEVATED = 1, +} + +export enum GuildNSFWContentLevel { + DEFAULT = 0, + EXPLICIT = 1, + SAFE = 2, + AGE_RESTRICTED = 3, +} + +// Original name: BoostedGuildTiers +export enum BoostedGuildTier { + NONE = 0, + TIER_1 = 1, + TIER_2 = 2, + TIER_3 = 3, +} + +export enum SystemChannelFlags { + SUPPRESS_JOIN_NOTIFICATIONS = 1 << 0, + SUPPRESS_PREMIUM_SUBSCRIPTIONS = 1 << 1, + SUPPRESS_GUILD_REMINDER_NOTIFICATIONS = 1 << 2, + SUPPRESS_JOIN_NOTIFICATION_REPLIES = 1 << 3, + SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATIONS = 1 << 4, + SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATION_REPLIES = 1 << 5, + SUPPRESS_CHANNEL_PROMPT_DEADCHAT = 1 << 7, +} + +// Original name: VerificationLevels +export enum VerificationLevel { + NONE = 0, + LOW = 1, + MEDIUM = 2, + HIGH = 3, + VERY_HIGH = 4, +} diff --git a/packages/discord-types/src/general/Permissions.ts b/packages/discord-types/src/general/Permissions.ts new file mode 100644 index 000000000..af48f258b --- /dev/null +++ b/packages/discord-types/src/general/Permissions.ts @@ -0,0 +1,78 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/* +// bigint enums are not yet possible: https://github.com/microsoft/TypeScript/issues/37783 +export enum Permissions { + CREATE_INSTANT_INVITE = 1n << 0n, + KICK_MEMBERS = 1n << 1n, + BAN_MEMBERS = 1n << 2n, + ADMINISTRATOR = 1n << 3n, + MANAGE_CHANNELS = 1n << 4n, + MANAGE_GUILD = 1n << 5n, + ADD_REACTIONS = 1n << 6n, + VIEW_AUDIT_LOG = 1n << 7n, + PRIORITY_SPEAKER = 1n << 8n, + STREAM = 1n << 9n, + VIEW_CHANNEL = 1n << 10n, + SEND_MESSAGES = 1n << 11n, + SEND_TTS_MESSAGES = 1n << 12n, + MANAGE_MESSAGES = 1n << 13n, + EMBED_LINKS = 1n << 14n, + ATTACH_FILES = 1n << 15n, + READ_MESSAGE_HISTORY = 1n << 16n, + MENTION_EVERYONE = 1n << 17n, + USE_EXTERNAL_EMOJIS = 1n << 18n, + VIEW_GUILD_ANALYTICS = 1n << 19n, + CONNECT = 1n << 20n, + SPEAK = 1n << 21n, + MUTE_MEMBERS = 1n << 22n, + DEAFEN_MEMBERS = 1n << 23n, + MOVE_MEMBERS = 1n << 24n, + USE_VAD = 1n << 25n, + CHANGE_NICKNAME = 1n << 26n, + MANAGE_NICKNAMES = 1n << 27n, + MANAGE_ROLES = 1n << 28n, + MANAGE_WEBHOOKS = 1n << 29n, + MANAGE_GUILD_EXPRESSIONS = 1n << 30n, + USE_APPLICATION_COMMANDS = 1n << 31n, + REQUEST_TO_SPEAK = 1n << 32n, + MANAGE_EVENTS = 1n << 33n, + MANAGE_THREADS = 1n << 34n, + CREATE_PUBLIC_THREADS = 1n << 35n, + CREATE_PRIVATE_THREADS = 1n << 36n, + USE_EXTERNAL_STICKERS = 1n << 37n, + SEND_MESSAGES_IN_THREADS = 1n << 38n, + USE_EMBEDDED_ACTIVITIES = 1n << 39n, + MODERATE_MEMBERS = 1n << 40n, + VIEW_CREATOR_MONETIZATION_ANALYTICS = 1n << 41n, + USE_SOUNDBOARD = 1n << 42n, + CREATE_GUILD_EXPRESSIONS = 1n << 43n, + CREATE_EVENTS = 1n << 44n, + USE_EXTERNAL_SOUNDS = 1n << 45n, + SEND_VOICE_MESSAGES = 1n << 46n, + USE_CLYDE_AI = 1n << 47n, + SET_VOICE_CHANNEL_STATUS = 1n << 48n, + SEND_POLLS = 1n << 49n, + USE_EXTERNAL_APPS = 1n << 50n, +} +*/ + +export interface PermissionOverwriteMap { + [roleIdOrUserId: string]: PermissionOverwrite; +} + +export interface PermissionOverwrite { + allow: /* Permissions */ bigint; + deny: /* Permissions */ bigint; + id: string; + type: PermissionOverwriteType; +} + +export enum PermissionOverwriteType { + ROLE = 0, + MEMBER = 1, +} diff --git a/packages/discord-types/src/general/ReadState.ts b/packages/discord-types/src/general/ReadState.ts new file mode 100644 index 000000000..896080d33 --- /dev/null +++ b/packages/discord-types/src/general/ReadState.ts @@ -0,0 +1,224 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish, Optional } from "../internal"; +import type { BasicPermissionsObject } from "../stores/PermissionStore"; +import type { GuildChannelRecord } from "./channels/ChannelRecord"; + +export declare class ReadState { + constructor(channelId: string, type?: Type & ChannelIdReadStateType); + constructor(userId: string, type: Type & UserIdReadStateType); + constructor(guildId: string, type: Type & GuildIdReadStateType); + + static _guildReadStateSentinels: { [guildId: string]: { unreadsSentinel: number; }; }; + static _mentionChannels: Set; + static _readStates: { [T in ChannelIdReadStateType]?: { [channelId: string]: ReadState; }; } + & { [T in UserIdReadStateType]?: { [userId: string]: ReadState; }; } + & { [T in GuildIdReadStateType]?: { [guildId: string]: ReadState; }; }; + static clear(channelId: string, type?: ChannelIdReadStateType): boolean; + static clear(userId: string, type: UserIdReadStateType): boolean; + static clear(guildId: string, type: GuildIdReadStateType): boolean; + static clearAll(): void; + /** + * @param callback The iteratee. Iteration will terminate early if it returns false. + */ + static forEach(callback: (value: ReadState) => unknown): void; + static get(channelId: string, type?: ChannelIdReadStateType): ReadState; + static get(userId: string, type: T): ReadState; + static get(guildId: string, type: T): ReadState; + static getGuildSentinels(guildId: string): typeof ReadState["_guildReadStateSentinels"]; + static getIfExists(channelId: string, type?: ChannelIdReadStateType): ReadState | undefined; + static getIfExists(userId: string, type: T): ReadState | undefined; + static getIfExists(guildId: string, type: T): ReadState | undefined; + static getMentionChannelIds(): string[]; + static getValue( + channelId: string, + type: ChannelIdReadStateType | undefined, + getter: (readState: ReadState | undefined) => GetterReturn, + defaultValue?: DefaultValue + ): GetterReturn | DefaultValue; + static getValue( + userId: string, + type: T, + getter: (readState: ReadState | undefined) => GetterReturn, + defaultValue?: DefaultValue + ): GetterReturn | DefaultValue; + static getValue( + guildId: string, + type: T, + getter: (readState: ReadState | undefined) => GetterReturn, + defaultValue?: DefaultValue + ): GetterReturn | DefaultValue; + static resetGuildSentinels(): void; + + _ack(location: string, trackAnalytics: boolean): void; + _nonChannelAck(): void; + _shouldAck( + force?: boolean, + local?: boolean, + isExplicitUserAction?: boolean + ): boolean; + ack(options: { + force?: boolean | undefined /* = false */; + immediate?: boolean | undefined /* = false */; + isExplicitUserAction?: boolean | undefined /* = false */; + local?: boolean | undefined /* = false */; + location?: { section: string; } /* = { section: AnalyticsSections.CHANNEL } */; + messageId?: string | Nullish /* = this.lastMessageId */; + trackAnalytics?: boolean | undefined /* = true */; + }): boolean; + get ackMessageId(): ReadState["_ackMessageId"]; + set ackMessageId(messageId: ReadState["_ackMessageId"]); + ackPins(isoTimestamp?: string | null): boolean; + canBeUnread(): boolean; + canHaveMentions(): boolean; + canTrackUnreads(): boolean; + clearOutgoingAck(): void; + delete(remote?: boolean): void; + deserializeForOverlay(serlizedReadState: Optional, Nullish, "_isJoinedThread" | "estimated" | "_isActiveThread" | "isManualAck" | "_isThread" | "loadedMessages" | "oldestUnreadMessageIdStale" | "type"> & { + _isActiveJoinedThread?: boolean | Nullish; + _unreadCount?: number | Nullish; + }): void; + getAckTimestamp(): number; + getGuildChannelUnreadState( + guildChannel: BasicPermissionsObject | GuildChannelRecord, + isOptInEnabled: boolean, + guildChannelOverrides: { [channelId: string]: GuildChannelOverride; }, + isChannelMuted: boolean, + isReadStateTypeUnread?: boolean + ): { + mentionCount: number; + unread: boolean; + }; + getMentionCount(): number; + guessAckMessageId(): string | null; + get guildId(): GuildIdFromReadStateType; + handleGuildEventRemoval(guildId: string, guildEventId: string): void; + hasMentions(): boolean; + hasRecentlyVisitedAndRead(): boolean; + hasUnread(): boolean; + hasUnreadOrMentions(): boolean; + incrementGuildUnreadsSentinel(): void; + isForumPostUnread(): boolean; + isPrivate(): boolean; + get lastMessageId(): ReadState["_lastMessageId"]; + set lastMessageId(messageId: ReadState["_lastMessageId"] | Nullish); + get lastMessageTimestamp(): ReadState["_lastMessageTimestamp"]; + get mentionCount(): ReadState["_mentionCount"]; + set mentionCount(count: ReadState["_mentionCount"]); + get oldestUnreadMessageId(): ReadState["_oldestUnreadMessageId"]; + set oldestUnreadMessageId(messageId: ReadState["_oldestUnreadMessageId"]); + get oldestUnreadTimestamp(): number; + rebuildChannelState( + ackMessageId?: string | null, + resetMentionCount?: boolean /* = false */, + newMentionCount?: number | null + ): void; + recalculateFlags(): ReadStateFlags | undefined; + recordLastViewedTime(): void; + serialize(forCache: ForCache): SerializedReadState; + shouldDeleteReadState(expirationTimestamp: string): boolean; + syncThreadSettings(): boolean; + takeSnapshot(): ReadStateSnapshot; + get unreadCount(): number; + set unreadCount(count: number); + + _ackMessageId: string | null; + _ackMessageTimestamp: number; + _guildId: GuildIdFromReadStateType | null; + _isActiveThread: boolean; + _isJoinedThread: boolean; + _isResourceChannel: boolean; + _isThread: boolean; + _lastMessageId: string | null; + _lastMessageTimestamp: number; + _mentionCount: number; + _oldestUnreadMessageId: string | null; + _persisted: boolean; + _unreadCount: number; + ackedWhileCached: undefined; + ackMessageIdAtChannelSelect: string | null; + ackPinTimestamp: number; + /** + * Not always a channel ID. + * @see {@link ReadState} + */ + channelId: string; + estimated: boolean; + flags: ReadStateFlags | undefined; + isManualAck: boolean; + lastPinTimestamp: number; + lastViewed: number | undefined; + loadedMessages: boolean; + oldestUnreadMessageIdStale: boolean; + outgoingAck: string | null; + outgoingAckTimer: number | null; + snapshot: ReadStateSnapshot | undefined; + type: Type; +} + +export type SerializedReadState + = ForCache extends true + ? SerializedForCache + : Serialized; + +type SerializedForCache = Pick, "_ackMessageId" | "_ackMessageTimestamp" | "_guildId" | "_isActiveThread" | "_isJoinedThread" | "_isThread" | "_lastMessageId" | "_lastMessageTimestamp" | "_mentionCount" | "_persisted" | "ackPinTimestamp" | "channelId" | "flags" | "lastPinTimestamp" | "lastViewed" | "type">; + +type Serialized = SerializedForCache & Pick, "_oldestUnreadMessageId" | "estimated" | "isManualAck" | "loadedMessages" | "oldestUnreadMessageIdStale">; + +export interface GuildChannelOverride { + channel_id: string; + collapsed: boolean; + flags?: ChannelNotificationSettingsFlags; + message_notifications: number; + mute_config: GuildChannelOverrideMuteConfig | null; + muted: boolean; +} + +export enum ChannelNotificationSettingsFlags { + UNREADS_ONLY_MENTIONS = 1 << 9, + UNREADS_ALL_MESSAGES = 1 << 10, + FAVORITED = 1 << 11, + OPT_IN_ENABLED = 1 << 12, + NEW_FORUM_THREADS_OFF = 1 << 13, + NEW_FORUM_THREADS_ON = 1 << 14, +} + +export interface GuildChannelOverrideMuteConfig { + end_time: string | null; + selected_time_window: number | null; +} + +export interface ReadStateSnapshot { + guildMentionCount: number; + guildUnread: boolean; + mentionCount: number; + takenAt: number; + unread: boolean; +} + +export enum ReadStateFlags { + IS_GUILD_CHANNEL = 1 << 0, + IS_THREAD = 1 << 1, +} + +export type ChannelIdReadStateType = ReadStateType.CHANNEL; + +export type UserIdReadStateType = ReadStateType.NOTIFICATION_CENTER | ReadStateType.MESSAGE_REQUESTS; + +export type GuildIdReadStateType = ReadStateType.GUILD_EVENT | ReadStateType.GUILD_HOME | ReadStateType.GUILD_ONBOARDING_QUESTION; + +// Original name: ReadStateTypes +export enum ReadStateType { + CHANNEL = 0, + GUILD_EVENT = 1, + NOTIFICATION_CENTER = 2, + GUILD_HOME = 3, + GUILD_ONBOARDING_QUESTION = 4, + MESSAGE_REQUESTS = 5, +} + +type GuildIdFromReadStateType = Type extends UserIdReadStateType ? null : string; diff --git a/packages/discord-types/src/general/Record.ts b/packages/discord-types/src/general/Record.ts new file mode 100644 index 000000000..d0937174b --- /dev/null +++ b/packages/discord-types/src/general/Record.ts @@ -0,0 +1,28 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { StringProperties } from "../internal"; + +// Original name: Record +// Renamed to avoid name conflicts with TypeScripts's Record utility type. +export declare abstract class RecordBase< + OwnProperties extends Record = Record +> { + constructor(properties: OwnProperties); + + merge(collection: Partial> & Pick): this; + set(key: Key, value: OwnProperties[Key]): this; + toJS(): OwnProperties; + update( + key: Key, + updater: (value: OwnProperties[Key]) => OwnProperties[Key] + ): this; + update( + key: Key, + notSetValue: OwnProperties[Key], + updater: (value: OwnProperties[Key]) => OwnProperties[Key] + ): this; +} diff --git a/packages/discord-types/src/general/Role.ts b/packages/discord-types/src/general/Role.ts new file mode 100644 index 000000000..b8dd6849c --- /dev/null +++ b/packages/discord-types/src/general/Role.ts @@ -0,0 +1,35 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export interface Role { + color: number; + colorString: string | null; + flags: RoleFlags; + hoist: boolean; + icon: string | null; + id: string; + managed: boolean; + mentionable: boolean; + name: string; + originalPosition: number; + permissions: /* Permissions */ bigint; + position: number; + tags: RoleTags; + unicodeEmoji: string | null; +} + +export enum RoleFlags { + IN_PROMPT = 1, +} + +export interface RoleTags { + available_for_purchase?: null; + bot_id?: string; + guild_connections?: null; + integration_id?: string; + premium_subscriber?: null; + subscription_listing_id?: string; +} diff --git a/packages/discord-types/src/general/UserProfile.ts b/packages/discord-types/src/general/UserProfile.ts new file mode 100644 index 000000000..2f16884de --- /dev/null +++ b/packages/discord-types/src/general/UserProfile.ts @@ -0,0 +1,107 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../internal"; +import type { ApplicationInstallParams, ApplicationIntegrationType, ApplicationRecordOwnProperties } from "./ApplicationRecord"; +import type { PremiumType } from "./UserRecord"; + +export type UserProfile = FetchFailed extends true + ? UserProfileFetchFailed + : UserProfileFetchSucceeded; + +export interface UserProfileBase { + accentColor: number | Nullish; + application: ProfileApplicationData | null; + applicationRoleConnections: ProfileApplicationRoleConnectionData[]; + badges?: ProfileBadge[]; + banner: string | Nullish; + bio: string; + connectedAccounts: ProfileConnectedAccountData[]; + lastFetched: number; + legacyUsername: string | Nullish; + /** @todo Does not seem to be implemented. */ + popoutAnimationParticleType?: any /* | Nullish */; + premiumGuildSince: Date | null; + premiumSince: Date | null; + premiumType?: PremiumType | Nullish; + profileEffectExpiresAt?: number | Nullish; + profileEffectId?: string | undefined; + profileFetchFailed: boolean; + pronouns: string; + themeColors?: ProfileThemeColors | Nullish; + userId: string; +} + +export interface UserProfileFetchSucceeded extends Required { + profileFetchFailed: false; +} + +export interface UserProfileFetchFailed extends UserProfileBase { + profileFetchFailed: true; +} + +export interface ProfileApplicationData extends Pick { + integrationTypesConfig: Partial>; + popularApplicationCommandIds: string[] | undefined; +} + +export interface ProfileApplicationRoleConnectionData { + metadata: Record; + platform_name: string | null; + platform_username: string | null; +} + +export interface ProfileBadge { + description: string; + icon: string; + id: string; + link?: string; +} + +export interface ProfileConnectedAccountData { + id: string; + metadata?: Record; + name: string; + type: PlatformType; + verified: boolean; +} + +// Original name: PlatformTypes +export enum PlatformType { + AMAZON_MUSIC = "amazon-music", + BATTLENET = "battlenet", + BUNGIE = "bungie", + CONTACTS = "contacts", + CRUNCHYROLL = "crunchyroll", + DOMAIN = "domain", + EBAY = "ebay", + EPIC_GAMES = "epicgames", + FACEBOOK = "facebook", + GITHUB = "github", + INSTAGRAM = "instagram", + LEAGUE_OF_LEGENDS = "leagueoflegends", + PAYPAL = "paypal", + PLAYSTATION = "playstation", + PLAYSTATION_STAGING = "playstation-stg", + REDDIT = "reddit", + RIOT_GAMES = "riotgames", + ROBLOX = "roblox", + SAMSUNG = "samsung", + SKYPE = "skype", + SOUNDCLOUD = "soundcloud", + SPOTIFY = "spotify", + STEAM = "steam", + TIKTOK = "tiktok", + TWITCH = "twitch", + TWITTER = "twitter", + TWITTER_LEGACY = "twitter_legacy", + XBOX = "xbox", + YOUTUBE = "youtube", +} + +export type ProfileThemeColors = [primaryColor: number, accentColor: number]; diff --git a/packages/discord-types/src/general/UserRecord.ts b/packages/discord-types/src/general/UserRecord.ts new file mode 100644 index 000000000..ed1d5b27d --- /dev/null +++ b/packages/discord-types/src/general/UserRecord.ts @@ -0,0 +1,140 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish, Optional, SnakeCasedProperties } from "../internal"; +import type { IconSource } from "./misc"; +import type { RecordBase } from "./Record"; + +export type UserRecordOwnProperties = Pick; + +export type UserProperties = Optional, Nullish, "id", true> + & SnakeCasedProperties, Nullish>> + & Partial> + & Partial> + & { clan?: SnakeCasedProperties | UserClanData | Nullish; }; + +export declare class UserRecord< + OwnProperties extends UserRecordOwnProperties = UserRecordOwnProperties +> extends RecordBase { + constructor(userProperties: UserProperties); + + addGuildAvatarHash(guildId: string, avatarHash: string): this; + get avatarDecoration(): AvatarDecorationData | null; + set avatarDecoration(avatarDecorationData: { + asset: string; + sku_id?: string; + skuId?: string; + } | null); + get createdAt(): Date; + getAvatarSource( + guildId?: string | null, + canAnimate?: boolean /* = false */, + avatarSize?: number /* = 128 */ + ): IconSource; + getAvatarURL( + guildId?: string | null, + avatarSize?: number /* = 128 */, + canAnimate?: boolean /* = false */ + ): string; + hasAvatarForGuild(guildId?: string | null): boolean; + hasFreePremium(): boolean; + hasHadPremium(): boolean; + hasHadSKU(skuId: string): boolean; + hasPremiumUsageFlag(flag: number): boolean; + hasPurchasedFlag(flag: number): boolean; + hasUrgentMessages(): boolean; + hasVerifiedEmailOrPhone(): boolean; + isClaimed(): boolean; + isClyde(): boolean; + isLocalBot(): boolean; + isNonUserBot(): boolean; + isPhoneVerified(): boolean; + isPomelo(): boolean; + isProvisional(): boolean; + isSystemUser(): boolean; + isVerifiedBot(): boolean; + removeGuildAvatarHash(guildId: string): this; + get tag(): string; + + avatar: string | null; + avatarDecorationData: AvatarDecorationData | null; + banner: string | Nullish; + bot: boolean; + clan: UserClanData | null; + desktop: boolean; + discriminator: string; + email: string | null; + flags: UserFlags; + globalName: string | Nullish; + guildMemberAvatars: { [guildId: string]: string; }; + hasAnyStaffLevel: () => boolean; + hasBouncedEmail: boolean; + hasFlag: (flag: number) => boolean; + id: string; + isStaff: () => boolean; + isStaffPersonal: () => boolean; + mfaEnabled: boolean; + mobile: boolean; + nsfwAllowed: boolean; + personalConnectionId: string | null; + phone: string | null; + premiumType: PremiumType | Nullish; + premiumUsageFlags: number; + publicFlags: UserFlags; + purchasedFlags: number; + system: boolean; + username: string; + verified: boolean; +} + +export interface AvatarDecorationData { + asset: string; + skuId: string; +} + +// Original name: PremiumTypes +export enum PremiumType { + /** Nitro Classic */ + TIER_1 = 1, + /** Nitro Standard */ + TIER_2 = 2, + /** Nitro Basic */ + TIER_0 = 3, +} + +export interface UserClanData { + badge: string | null; + identityEnabled: boolean | null; + identityGuildId: string | null; + tag: string | null; +} + +export enum UserFlags { + STAFF = 1 << 0, + PARTNER = 1 << 1, + HYPESQUAD = 1 << 2, + BUG_HUNTER_LEVEL_1 = 1 << 3, + MFA_SMS = 1 << 4, + PREMIUM_PROMO_DISMISSED = 1 << 5, + HYPESQUAD_ONLINE_HOUSE_1 = 1 << 6, + HYPESQUAD_ONLINE_HOUSE_2 = 1 << 7, + HYPESQUAD_ONLINE_HOUSE_3 = 1 << 8, + PREMIUM_EARLY_SUPPORTER = 1 << 9, + TEAM_PSEUDO_USER = 1 << 10, + HAS_UNREAD_URGENT_MESSAGES = 1 << 13, + BUG_HUNTER_LEVEL_2 = 1 << 14, + VERIFIED_BOT = 1 << 16, + VERIFIED_DEVELOPER = 1 << 17, + CERTIFIED_MODERATOR = 1 << 18, + BOT_HTTP_INTERACTIONS = 1 << 19, + SPAMMER = 1 << 20, + DISABLE_PREMIUM = 1 << 21, + ACTIVE_DEVELOPER = 1 << 22, + PROVISIONAL_ACCOUNT = 1 << 23, + QUARANTINED = 0x10_00_00_00_00_00, + COLLABORATOR = 0x4_00_00_00_00_00_00, + RESTRICTED_COLLABORATOR = 0x8_00_00_00_00_00_00 +} diff --git a/packages/discord-types/src/general/channels/ChannelRecord.ts b/packages/discord-types/src/general/channels/ChannelRecord.ts new file mode 100644 index 000000000..892d0ba7a --- /dev/null +++ b/packages/discord-types/src/general/channels/ChannelRecord.ts @@ -0,0 +1,267 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish, Optional, SnakeCasedProperties } from "../../internal"; +import type { PermissionOverwriteMap } from "../Permissions"; +import type { AvatarDecorationData, UserClanData, UserFlags } from "../UserRecord"; +import type { ForumChannelRecord } from "./ForumChannelRecord"; +import type { GuildCategoryChannelRecord, GuildDirectoryChannelRecord, GuildTextualChannelRecord } from "./GuildTextualChannelRecord"; +import type { GuildStageVoiceChannelRecord, GuildVocalChannelRecord, GuildVoiceChannelRecord } from "./GuildVocalChannelRecord"; +import type { DMChannelRecord, GroupDMChannelRecord, PrivateChannelRecord } from "./PrivateChannelRecord"; +import type { ThreadChannelRecord } from "./ThreadChannelRecord"; + +export type ChannelRecord = GuildChannelRecord | PrivateChannelRecord | ThreadChannelRecord; + +export type GuildChannelRecord = GuildTextualChannelRecord | GuildVocalChannelRecord | ForumChannelRecord; + +export type GuildSelectableChannelRecord = Exclude; + +type ChannelRecordOwnPropertyKeys = "application_id" | "appliedTags" | "availableTags" | "bitrate_" | "blockedUserWarningDismissed" | "defaultAutoArchiveDuration" | "defaultForumLayout" | "defaultReactionEmoji" | "defaultSortOrder" | "defaultThreadRateLimitPerUser" | "flags_" | "guild_id" | "icon" | "iconEmoji" | "id" | "isMessageRequest" | "isMessageRequestTimestamp" | "isSpam" | "lastMessageId" | "lastPinTimestamp" | "linkedLobby" | "member" | "memberCount" | "memberIdsPreview" | "memberListId" | "messageCount" | "name" | "nicks" | "nsfw_" | "originChannelId" | "ownerId" | "parentChannelThreadType" | "parent_id" | "permissionOverwrites_" | "position_" | "rateLimitPerUser_" | "rawRecipients" | "recipients" | "rtcRegion" | "safetyWarnings" | "template" | "themeColor" | "threadMetadata" | "topic_" | "totalMessageSent" | "type" | "userLimit_" | "version" | "videoQualityMode"; + +export type ChannelRecordOwnProperties = Pick; + +export declare abstract class ChannelRecordBase extends ChannelRecordProperties { + get accessPermissions(): /* Permissions */ bigint; + get bitrate(): number; + computeLurkerPermissionsAllowList(): /* Permissions */ bigint | undefined; + get flags(): ChannelFlags; + getApplicationId(): this["application_id"]; + getDefaultLayout(): ForumLayout; + getDefaultSortOrder(): ThreadSortOrder; + getGuildId(): this["guild_id"]; + hasFlag(flag: ChannelFlags): boolean; + isActiveThread(): boolean; + isAnnouncementThread(): this is ThreadChannelRecord; + isArchivedLockedThread(): boolean; + isArchivedThread(): boolean; + isBroadcastChannel(): boolean; + isCategory(): this is GuildCategoryChannelRecord; + isDirectory(): this is GuildDirectoryChannelRecord; + isDM(): this is DMChannelRecord; + isForumChannel(): this is ForumChannelRecord; + isForumLikeChannel(): this is ForumChannelRecord; + isForumPost(): boolean; + isGroupDM(): this is GroupDMChannelRecord; + isGuildStageVoice(): this is GuildStageVoiceChannelRecord; + isGuildVocal(): this is GuildVocalChannelRecord; + isGuildVocalOrThread(): this is GuildVocalChannelRecord | ThreadChannelRecord; + isGuildVoice(): this is GuildVoiceChannelRecord; + isListenModeCapable(): this is GuildStageVoiceChannelRecord; + isLockedThread(): boolean; + isManaged(): boolean; + isMediaChannel(): this is ForumChannelRecord; + isMediaPost(): boolean; + /** This method is functionally the same as {@link isGroupDM}. */ + isMultiUserDM(): this is GroupDMChannelRecord; + isNSFW(): boolean; + isOwner(userId: string): boolean; + isPrivate(): this is PrivateChannelRecord; + isRoleSubscriptionTemplatePreviewChannel(): boolean; + isScheduledForDeletion(): boolean; + isSystemDM(): boolean; + isThread(): this is ThreadChannelRecord; + isVocal(): this is PrivateChannelRecord | GuildVocalChannelRecord | ThreadChannelRecord; + isVocalThread(): this is ThreadChannelRecord; + merge(collection: Partial>): this; + get nsfw(): boolean; + get permissionOverwrites(): PermissionOverwriteMap; + get position(): number; + get rateLimitPerUser(): number; + set(key: Key, value: ChannelRecordOwnProperties[Key]): this; + toJS(): ChannelRecordOwnProperties; + get topic(): string; + get userLimit(): number; +} + +export type ChannelProperties = Optional, "guild_id" | "id" | "name" | "type">, Nullish, "id", true>; + +export declare abstract class ChannelRecordProperties { + constructor(channelProperties: ChannelProperties); + + application_id?: string | undefined; + appliedTags?: string[] | undefined; + availableTags?: ForumTag[] | undefined; + bitrate_?: number | undefined; + blockedUserWarningDismissed?: boolean | undefined; + defaultAutoArchiveDuration?: number | undefined; + defaultForumLayout?: ForumLayout | undefined; + defaultReactionEmoji?: ForumDefaultReactionEmoji | undefined; + defaultSortOrder?: ThreadSortOrder | Nullish; + defaultThreadRateLimitPerUser?: number | undefined; + flags_: ChannelFlags | undefined; + guild_id: string | null; + icon?: string | Nullish; + iconEmoji?: { + id: string | null; + name: string; + } | undefined; + id: string; + isMessageRequest?: boolean | undefined; + isMessageRequestTimestamp?: string | Nullish; + isSpam?: boolean | undefined; + lastMessageId: string | Nullish; + lastPinTimestamp: string | Nullish; + /** @todo May have more properties. */ + linkedLobby?: { application_id?: string | null; } & Record | Nullish; + member?: ThreadMember | undefined; + memberCount?: number | undefined; + memberIdsPreview?: string[] | undefined; + memberListId?: string | Nullish; + messageCount?: number | undefined; + name: string; + nicks?: { [userId: string]: string; } | undefined; + nsfw_?: boolean | undefined; + originChannelId?: string | Nullish; + ownerId?: string | undefined; + parent_id?: string | Nullish; + parentChannelThreadType?: ChannelType.GUILD_TEXT | ChannelType.GUILD_ANNOUNCEMENT | ChannelType.GUILD_FORUM | ChannelType.GUILD_MEDIA | undefined; + permissionOverwrites_?: PermissionOverwriteMap | undefined; + position_?: number | undefined; + rateLimitPerUser_?: number | undefined; + rawRecipients?: ChannelRecipient[] | undefined; + recipients?: string[] | undefined; + rtcRegion?: string | Nullish; + safetyWarnings?: SafetyWarning[] | undefined; + template?: string | undefined; + themeColor?: number | Nullish; + threadMetadata?: ThreadMetadata | undefined; + topic_?: string | Nullish; + totalMessageSent?: number | undefined; + type: ChannelType; + userLimit_?: number | undefined; + version?: number | undefined; + videoQualityMode?: VideoQualityMode | undefined; + /** @todo This seems to have been removed. */ + voiceBackgroundDisplay?: { type: VoiceCallBackgroundType.EMPTY; } + | { resourceId: string; type: VoiceCallBackgroundType.GRADIENT; } + | Nullish; +} + +export interface ForumTag { + emojiId: string | null; + emojiName: string | null; + id: string; + moderated: boolean; + name: string; +} + +export enum ForumLayout { + DEFAULT = 0, + LIST = 1, + GRID = 2, +} + +export interface ForumDefaultReactionEmoji { + emojiId: string | null; + emojiName: string | null; +} + +export enum ThreadSortOrder { + LATEST_ACTIVITY = 0, + CREATION_DATE = 1, +} + +export enum ChannelFlags { + GUILD_FEED_REMOVED = 1 << 0, + PINNED = 1 << 1, + ACTIVE_CHANNELS_REMOVED = 1 << 2, + REQUIRE_TAG = 1 << 4, + IS_SPAM = 1 << 5, + IS_GUILD_RESOURCE_CHANNEL = 1 << 7, + CLYDE_AI = 1 << 8, + IS_SCHEDULED_FOR_DELETION = 1 << 9, + IS_MEDIA_CHANNEL = 1 << 10, + SUMMARIES_DISABLED = 1 << 11, + IS_ROLE_SUBSCRIPTION_TEMPLATE_PREVIEW_CHANNEL = 1 << 13, + IS_BROADCASTING = 1 << 14, + HIDE_MEDIA_DOWNLOAD_OPTIONS = 1 << 15, + IS_JOIN_REQUEST_INTERVIEW_CHANNEL = 1 << 16, +} + +export interface ThreadMember { + flags: ThreadMemberFlags; + joinTimestamp: string; + muteConfig: { + end_time: string | null; + selected_time_window: number; + } | null; + muted: boolean; +} + +export enum ThreadMemberFlags { + HAS_INTERACTED = 1 << 0, + ALL_MESSAGES = 1 << 1, + ONLY_MENTIONS = 1 << 2, + NO_MESSAGES = 1 << 3, +} + +/** @todo This may just be a user object from the API. */ +export interface ChannelRecipient { + avatar: string | null; + avatar_decoration_data: SnakeCasedProperties | null; + bot?: boolean; + clan: SnakeCasedProperties | null; + discriminator: string; + display_name?: string | null; + global_name: string | null; + id: string; + public_flags: UserFlags; + username: string; +} + +export interface SafetyWarning { + /** @todo May not be null or optional. */ + dismiss_timestamp?: string | null; + type: SafetyWarningType; +} + +// Original name: SafetyWarningTypes +export enum SafetyWarningType { + STRANGER_DANGER = 1, + INAPPROPRIATE_CONVERSATION_TIER_1 = 2, + INAPPROPRIATE_CONVERSATION_TIER_2 = 3, +} + +export interface ThreadMetadata { + archived: boolean; + archiveTimestamp: string; + autoArchiveDuration: number; + createTimestamp: string | Nullish; + invitable: boolean; + locked: boolean; +} + +// Original name: ChannelTypes +export enum ChannelType { + GUILD_TEXT = 0, + DM = 1, + GUILD_VOICE = 2, + GROUP_DM = 3, + GUILD_CATEGORY = 4, + GUILD_ANNOUNCEMENT = 5, + GUILD_STORE = 6, + ANNOUNCEMENT_THREAD = 10, + PUBLIC_THREAD = 11, + PRIVATE_THREAD = 12, + GUILD_STAGE_VOICE = 13, + GUILD_DIRECTORY = 14, + GUILD_FORUM = 15, + GUILD_MEDIA = 16, + LOBBY = 17, + UNKNOWN = 10_000, +} + +export enum VideoQualityMode { + AUTO = 1, + FULL = 2, +} + +// Original name: VoiceCallBackgroundTypes +/** @todo This seems to have been removed. */ +export enum VoiceCallBackgroundType { + EMPTY = 0, + GRADIENT = 1, +} diff --git a/packages/discord-types/src/general/channels/ForumChannelRecord.ts b/packages/discord-types/src/general/channels/ForumChannelRecord.ts new file mode 100644 index 000000000..a28788045 --- /dev/null +++ b/packages/discord-types/src/general/channels/ForumChannelRecord.ts @@ -0,0 +1,71 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Defined, Nullish, OmitOptional, Optional, PartialOnUndefined } from "../../internal"; +import type { ChannelRecordBase, ChannelRecordOwnProperties, ChannelType } from "./ChannelRecord"; + +export type ForumChannelProperties = Optional>>, Nullish, "availableTags" | "guild_id" | "name" | "permissionOverwrites_">; + +type ForumChannelType = ChannelType.GUILD_FORUM | ChannelType.GUILD_MEDIA; + +export declare class ForumChannelRecord extends ChannelRecordBase { + constructor(channelProperties: ForumChannelProperties); + + static fromServer( + /** @todo */ + channelFromServer: { type: Type; } & Record, + guildId?: string | null + ): ForumChannelRecord; + + application_id?: undefined; + appliedTags?: undefined; + availableTags: Defined; + bitrate_?: undefined; + blockedUserWarningDismissed?: undefined; + defaultAutoArchiveDuration: ChannelRecordBase["defaultAutoArchiveDuration"]; + defaultForumLayout: ChannelRecordBase["defaultForumLayout"]; + defaultReactionEmoji: ChannelRecordBase["defaultReactionEmoji"]; + defaultSortOrder: ChannelRecordBase["defaultSortOrder"]; + defaultThreadRateLimitPerUser: ChannelRecordBase["defaultThreadRateLimitPerUser"]; + flags_: Defined; + icon?: undefined; + iconEmoji: ChannelRecordBase["iconEmoji"]; + isMessageRequest?: undefined; + isMessageRequestTimestamp?: undefined; + isSpam?: undefined; + lastMessageId: ChannelRecordBase["lastMessageId"]; + lastPinTimestamp: ChannelRecordBase["lastPinTimestamp"]; + linkedLobby?: undefined; + member?: undefined; + memberCount?: undefined; + memberIdsPreview?: undefined; + /** @todo May only be nullish. */ + memberListId: ChannelRecordBase["memberListId"]; + messageCount?: undefined; + nicks?: undefined; + nsfw_: Defined; + originChannelId?: undefined; + ownerId?: undefined; + parent_id: NonNullable; + parentChannelThreadType?: undefined; + permissionOverwrites_: Defined; + position_: Defined; + rateLimitPerUser_: Defined; + rawRecipients?: undefined; + recipients?: undefined; + rtcRegion?: undefined; + safetyWarnings?: undefined; + template: Defined; + themeColor: ChannelRecordBase["themeColor"]; + threadMetadata?: undefined; + topic_: ChannelRecordBase["topic_"]; + totalMessageSent?: undefined; + type: ChannelType; + userLimit_?: undefined; + version: ChannelRecordBase["version"]; + videoQualityMode?: undefined; + voiceBackgroundDisplay?: undefined; +} diff --git a/packages/discord-types/src/general/channels/GuildTextualChannelRecord.ts b/packages/discord-types/src/general/channels/GuildTextualChannelRecord.ts new file mode 100644 index 000000000..862c71b40 --- /dev/null +++ b/packages/discord-types/src/general/channels/GuildTextualChannelRecord.ts @@ -0,0 +1,128 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Defined, Nullish, OmitOptional, Optional, PartialOnUndefined } from "../../internal"; +import type { ChannelRecordBase, ChannelRecordOwnProperties, ChannelType } from "./ChannelRecord"; + +export type GuildTextualChannelRecord = GuildTextChannelRecord | GuildCategoryChannelRecord | GuildAnnouncementChannelRecord | GuildStoreChannelRecord | GuildDirectoryChannelRecord; + +export type GuildTextualChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_" | "type">; + +type GuildTextualChannelType = ChannelType.GUILD_TEXT | ChannelType.GUILD_CATEGORY | ChannelType.GUILD_ANNOUNCEMENT | ChannelType.GUILD_STORE | ChannelType.GUILD_DIRECTORY; + +export declare abstract class GuildTextualChannelRecordBase extends ChannelRecordBase { + constructor(channelProperties: GuildTextualChannelProperties); + + static fromServer( + /** @todo */ + channelFromServer: { type?: Type; } & Record, + guildId?: string | null + ): { + [ChannelType.GUILD_ANNOUNCEMENT]: GuildAnnouncementChannelRecord; + [ChannelType.GUILD_CATEGORY]: GuildCategoryChannelRecord; + [ChannelType.GUILD_DIRECTORY]: GuildDirectoryChannelRecord; + [ChannelType.GUILD_STORE]: GuildStoreChannelRecord; + [ChannelType.GUILD_TEXT]: GuildTextChannelRecord; + }[Type extends GuildTextualChannelType ? Type : ChannelType.GUILD_TEXT]; + + application_id: undefined; + appliedTags?: undefined; + availableTags?: undefined; + bitrate_?: undefined; + blockedUserWarningDismissed?: undefined; + defaultAutoArchiveDuration: ChannelRecordBase["defaultAutoArchiveDuration"]; + defaultForumLayout?: undefined; + defaultReactionEmoji?: undefined; + defaultSortOrder?: undefined; + defaultThreadRateLimitPerUser: ChannelRecordBase["defaultThreadRateLimitPerUser"]; + flags_: Defined; + icon?: undefined; + iconEmoji: ChannelRecordBase["iconEmoji"]; + isMessageRequest?: undefined; + isMessageRequestTimestamp?: undefined; + isSpam?: undefined; + lastMessageId: ChannelRecordBase["lastMessageId"]; + lastPinTimestamp: ChannelRecordBase["lastPinTimestamp"]; + /** @todo May only be nullish. */ + linkedLobby: ChannelRecordBase["linkedLobby"]; + member?: undefined; + memberCount?: undefined; + memberIdsPreview?: undefined; + /** @todo May only be nullish. */ + memberListId: ChannelRecordBase["memberListId"]; + messageCount?: undefined; + nicks?: undefined; + nsfw_: Defined; + originChannelId?: undefined; + ownerId?: undefined; + parent_id: ChannelRecordBase["parent_id"]; + parentChannelThreadType?: undefined; + permissionOverwrites_: Defined; + position_: Defined; + rateLimitPerUser_: Defined; + rawRecipients?: undefined; + recipients?: undefined; + rtcRegion?: undefined; + safetyWarnings?: undefined; + template?: undefined; + themeColor: ChannelRecordBase["themeColor"]; + threadMetadata?: undefined; + topic_: ChannelRecordBase["topic_"]; + totalMessageSent?: undefined; + type: GuildTextualChannelType; + userLimit_?: undefined; + version: ChannelRecordBase["version"]; + videoQualityMode?: undefined; + voiceBackgroundDisplay?: undefined; +} + +export type GuildTextChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_" | "type">; + +export declare class GuildTextChannelRecord extends GuildTextualChannelRecordBase { + constructor(channelProperties: GuildTextChannelProperties); + + type: ChannelType.GUILD_TEXT; +} + +export type GuildCategoryChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_">; + +export declare class GuildCategoryChannelRecord extends GuildTextualChannelRecordBase { + constructor(channelProperties: GuildCategoryChannelProperties); + + defaultAutoArchiveDuration: undefined; + defaultThreadRateLimitPerUser: undefined; + lastMessageId: undefined; + lastPinTimestamp: undefined; + memberListId: undefined; + parent_id: Nullish; + themeColor: undefined; + topic_: undefined; + type: ChannelType.GUILD_CATEGORY; +} + +export type GuildAnnouncementChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_">; + +export declare class GuildAnnouncementChannelRecord extends GuildTextualChannelRecordBase { + constructor(channelProperties: GuildAnnouncementChannelProperties); + + type: ChannelType.GUILD_ANNOUNCEMENT; +} + +export type GuildStoreChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_">; + +export declare class GuildStoreChannelRecord extends GuildTextualChannelRecordBase { + constructor(channelProperties: GuildStoreChannelProperties); + + type: ChannelType.GUILD_STORE; +} + +export type GuildDirectoryChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_">; + +export declare class GuildDirectoryChannelRecord extends GuildTextualChannelRecordBase { + constructor(channelProperties: GuildDirectoryChannelProperties); + + type: ChannelType.GUILD_DIRECTORY; +} diff --git a/packages/discord-types/src/general/channels/GuildVocalChannelRecord.ts b/packages/discord-types/src/general/channels/GuildVocalChannelRecord.ts new file mode 100644 index 000000000..50ee49508 --- /dev/null +++ b/packages/discord-types/src/general/channels/GuildVocalChannelRecord.ts @@ -0,0 +1,93 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Defined, Nullish, OmitOptional, Optional, PartialOnUndefined } from "../../internal"; +import type { ChannelRecordBase, ChannelRecordOwnProperties, ChannelType } from "./ChannelRecord"; + +export type GuildVocalChannelRecord = GuildVoiceChannelRecord | GuildStageVoiceChannelRecord; + +export type GuildVocalChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_">; + +type GuildVocalChannelType = ChannelType.GUILD_VOICE | ChannelType.GUILD_STAGE_VOICE; + +export declare abstract class GuildVocalChannelRecordBase extends ChannelRecordBase { + constructor(channelProperties: GuildVocalChannelProperties); + + static fromServer( + /** @todo */ + channelFromServer: { type?: Type; } & Record, + guildId?: string | null + ): { + [ChannelType.GUILD_STAGE_VOICE]: GuildStageVoiceChannelRecord; + [ChannelType.GUILD_VOICE]: GuildVoiceChannelRecord; + }[Type extends GuildVocalChannelType ? Type : ChannelType.GUILD_VOICE]; + + application_id: undefined; + appliedTags?: undefined; + availableTags?: undefined; + bitrate_: Defined; + blockedUserWarningDismissed?: undefined; + defaultAutoArchiveDuration?: undefined; + defaultForumLayout?: undefined; + defaultReactionEmoji?: undefined; + defaultSortOrder?: undefined; + defaultThreadRateLimitPerUser?: undefined; + flags_: Defined; + icon?: undefined; + iconEmoji: ChannelRecordBase["iconEmoji"]; + isMessageRequest?: undefined; + isMessageRequestTimestamp?: undefined; + isSpam?: undefined; + lastMessageId: ChannelRecordBase["lastMessageId"]; + lastPinTimestamp: undefined; + linkedLobby?: undefined; + member?: undefined; + memberCount?: undefined; + memberIdsPreview?: undefined; + /** @todo May only be nullish. */ + memberListId: ChannelRecordBase["memberListId"]; + messageCount?: undefined; + nicks?: undefined; + nsfw_: Defined; + /** @todo May only be nullish. */ + originChannelId: ChannelRecordBase["originChannelId"]; + ownerId?: undefined; + parent_id: ChannelRecordBase["parent_id"]; + parentChannelThreadType?: undefined; + permissionOverwrites_: Defined; + position_: Defined; + rateLimitPerUser_: Defined; + rawRecipients?: undefined; + recipients?: undefined; + rtcRegion: Defined; + safetyWarnings?: undefined; + template?: undefined; + themeColor: Nullish; + threadMetadata?: undefined; + topic_: Nullish; + totalMessageSent?: undefined; + type: GuildVocalChannelType; + userLimit_: Defined; + version: ChannelRecordBase["version"]; + videoQualityMode: ChannelRecordBase["videoQualityMode"]; + voiceBackgroundDisplay: Defined; +} + +export type GuildVoiceChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_">; + +export declare class GuildVoiceChannelRecord extends GuildVocalChannelRecordBase { + constructor(channelProperties: GuildVoiceChannelProperties); + + type: ChannelType.GUILD_VOICE; +} + +export type GuildStageVoiceChannelProperties = Optional>>, Nullish, "guild_id" | "name" | "permissionOverwrites_">; + +export declare class GuildStageVoiceChannelRecord extends GuildVocalChannelRecordBase { + constructor(channelProperties: GuildStageVoiceChannelProperties); + + type: ChannelType.GUILD_STAGE_VOICE; +} diff --git a/packages/discord-types/src/general/channels/PrivateChannelRecord.ts b/packages/discord-types/src/general/channels/PrivateChannelRecord.ts new file mode 100644 index 000000000..672d14f4b --- /dev/null +++ b/packages/discord-types/src/general/channels/PrivateChannelRecord.ts @@ -0,0 +1,106 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Defined, Nullish, OmitOptional, Optional, PartialOnUndefined } from "../../internal"; +import type { ChannelRecipient, ChannelRecordBase, ChannelRecordOwnProperties, ChannelType } from "./ChannelRecord"; + +export type PrivateChannelRecord = DMChannelRecord | GroupDMChannelRecord; + +export type PrivateChannelProperties = Omit>>, Nullish, "guild_id" | "name" | "safetyWarnings">, "rawRecipients" | "recipients"> + & { rawRecipients?: Readonly | Nullish; recipients?: Readonly | Nullish; }; + +type PrivateChannelType = ChannelType.DM | ChannelType.GROUP_DM; + +export declare abstract class PrivateChannelRecordBase extends ChannelRecordBase { + constructor(channelProperties: PrivateChannelProperties); + + static fromServer( + /** @todo */ + channelFromServer: { type?: Type; } & Record + ): { + [ChannelType.DM]: DMChannelRecord; + [ChannelType.GROUP_DM]: GroupDMChannelRecord; + }[Type extends PrivateChannelType ? Type : ChannelType.DM]; + static sortRecipients(recipients: ChannelRecipient[] | Nullish, channelId: string): string[]; + + addRecipient(recipientUserId: string, nickname: string | undefined, currentUserId: string): this; + getRecipientId(): string | undefined; + removeRecipient(recipientUserId: string): this; + + application_id: ChannelRecordBase["application_id"]; + appliedTags?: undefined; + availableTags?: undefined; + bitrate_?: undefined; + blockedUserWarningDismissed: ChannelRecordBase["blockedUserWarningDismissed"]; + defaultAutoArchiveDuration?: undefined; + defaultForumLayout?: undefined; + defaultReactionEmoji?: undefined; + defaultSortOrder?: undefined; + defaultThreadRateLimitPerUser?: undefined; + flags_: Defined; + guild_id: null; + icon: ChannelRecordBase["icon"]; + iconEmoji?: undefined; + isMessageRequest: ChannelRecordBase["isMessageRequest"]; + isMessageRequestTimestamp: ChannelRecordBase["isMessageRequestTimestamp"]; + isSpam: Defined; + lastMessageId: ChannelRecordBase["lastMessageId"]; + lastPinTimestamp: ChannelRecordBase["lastPinTimestamp"]; + linkedLobby?: undefined; + member?: undefined; + memberCount?: undefined; + memberIdsPreview?: undefined; + memberListId?: undefined; + messageCount?: undefined; + nicks: Defined; + nsfw_?: undefined; + originChannelId?: undefined; + ownerId: ChannelRecordBase["ownerId"]; + parent_id?: undefined; + parentChannelThreadType?: undefined; + permissionOverwrites_?: undefined; + position_?: undefined; + rateLimitPerUser_?: undefined; + rawRecipients: Defined; + recipients: Defined; + rtcRegion?: undefined; + safetyWarnings: ChannelRecordBase["safetyWarnings"]; + template?: undefined; + themeColor?: undefined; + threadMetadata?: undefined; + topic_?: undefined; + totalMessageSent?: undefined; + type: PrivateChannelType; + userLimit_?: undefined; + version?: undefined; + videoQualityMode?: undefined; + voiceBackgroundDisplay?: undefined; +} + +export type DMChannelProperties = Omit>>, Nullish, "guild_id" | "name" | "safetyWarnings">, "rawRecipients" | "recipients"> + & { rawRecipients?: Readonly | Nullish; recipients?: Readonly | Nullish; }; + +export declare class DMChannelRecord extends PrivateChannelRecordBase { + constructor(channelProperties: DMChannelProperties); + + application_id: undefined; + icon: undefined; + name: ""; + ownerId: undefined; + type: ChannelType.DM; +} + +export type GroupDMChannelProperties = Omit>>, Nullish, "guild_id" | "name" | "safetyWarnings">, "rawRecipients" | "recipients"> + & { rawRecipients?: Readonly | Nullish; recipients?: Readonly | Nullish; }; + +export declare class GroupDMChannelRecord extends PrivateChannelRecordBase { + constructor(channelProperties: GroupDMChannelProperties); + + isMessageRequest: undefined; + isMessageRequestTimestamp: undefined; + ownerId: PrivateChannelRecordBase["ownerId"]; + type: ChannelType.GROUP_DM; +} diff --git a/packages/discord-types/src/general/channels/ThreadChannelRecord.ts b/packages/discord-types/src/general/channels/ThreadChannelRecord.ts new file mode 100644 index 000000000..f1c5668f7 --- /dev/null +++ b/packages/discord-types/src/general/channels/ThreadChannelRecord.ts @@ -0,0 +1,70 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Defined, Nullish, OmitOptional, Optional, PartialOnUndefined } from "../../internal"; +import type { ChannelRecordBase, ChannelRecordOwnProperties, ChannelType } from "./ChannelRecord"; + +export type ThreadChannelProperties = Optional>>, Nullish, "appliedTags" | "guild_id" | "name">; + +type ThreadChannelType = ChannelType.ANNOUNCEMENT_THREAD | ChannelType.PUBLIC_THREAD | ChannelType.PRIVATE_THREAD; + +export declare class ThreadChannelRecord extends ChannelRecordBase { + constructor(channelProperties: ThreadChannelProperties); + + static fromServer( + /** @todo */ + channelFromServer: { type?: Type; } & Record, + guildId?: string | null + ): ThreadChannelRecord; + + application_id?: undefined; + appliedTags: Defined; + availableTags?: undefined; + bitrate_: undefined; + blockedUserWarningDismissed?: undefined; + defaultAutoArchiveDuration?: undefined; + defaultForumLayout?: undefined; + defaultReactionEmoji?: undefined; + defaultSortOrder?: undefined; + defaultThreadRateLimitPerUser?: undefined; + flags_: Defined; + icon?: undefined; + iconEmoji?: undefined; + isMessageRequest?: undefined; + isMessageRequestTimestamp?: undefined; + isSpam?: undefined; + lastMessageId: ChannelRecordBase["lastMessageId"]; + lastPinTimestamp: ChannelRecordBase["lastMessageId"]; + linkedLobby?: undefined; + member: ChannelRecordBase["member"]; + memberCount: Defined; + memberIdsPreview: Defined; + memberListId?: undefined; + messageCount: Defined; + nicks?: undefined; + nsfw_: Defined; + originChannelId?: undefined; + ownerId: Defined; + parent_id: NonNullable; + parentChannelThreadType: Defined; + permissionOverwrites_?: undefined; + position_?: undefined; + rateLimitPerUser_: Defined; + rawRecipients?: undefined; + recipients?: undefined; + rtcRegion: undefined; + safetyWarnings?: undefined; + template?: undefined; + themeColor?: undefined; + threadMetadata: ChannelRecordBase["threadMetadata"]; + topic_?: undefined; + totalMessageSent: ChannelRecordBase["rateLimitPerUser_"]; + type: ChannelType; + userLimit_: undefined; + version?: undefined; + videoQualityMode: undefined; + voiceBackgroundDisplay?: undefined; +} diff --git a/packages/discord-types/src/general/channels/UnknownChannelRecord.ts b/packages/discord-types/src/general/channels/UnknownChannelRecord.ts new file mode 100644 index 000000000..94850f63d --- /dev/null +++ b/packages/discord-types/src/general/channels/UnknownChannelRecord.ts @@ -0,0 +1,67 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Defined, Nullish, Optional } from "../../internal"; +import type { ChannelRecordBase, ChannelRecordOwnProperties, ChannelType } from "./ChannelRecord"; + +export type UnknownChannelProperties = Optional, Nullish, "guild_id" | "name">; + +export declare class UnknownChannelRecord extends ChannelRecordBase { + constructor(channelProperties: UnknownChannelProperties); + + static fromServer( + /** @todo */ + channelFromServer: { type?: ChannelType.UNKNOWN | Nullish; } & Record, + guildId?: string | null + ): UnknownChannelRecord; + + application_id: ChannelRecordBase["application_id"]; + appliedTags: ChannelRecordBase["appliedTags"]; + availableTags: ChannelRecordBase["availableTags"]; + bitrate_: ChannelRecordBase["bitrate_"]; + blockedUserWarningDismissed: ChannelRecordBase["blockedUserWarningDismissed"]; + defaultAutoArchiveDuration: ChannelRecordBase["defaultAutoArchiveDuration"]; + defaultForumLayout: ChannelRecordBase["defaultForumLayout"]; + defaultReactionEmoji: ChannelRecordBase["defaultReactionEmoji"]; + defaultSortOrder: ChannelRecordBase["defaultSortOrder"]; + defaultThreadRateLimitPerUser: ChannelRecordBase["defaultThreadRateLimitPerUser"]; + flags_: Defined; + icon: ChannelRecordBase["icon"]; + iconEmoji: ChannelRecordBase["iconEmoji"]; + isMessageRequest: ChannelRecordBase["isMessageRequest"]; + isMessageRequestTimestamp: ChannelRecordBase["isMessageRequestTimestamp"]; + isSpam: ChannelRecordBase["isSpam"]; + lastMessageId: ChannelRecordBase["lastMessageId"]; + lastPinTimestamp: ChannelRecordBase["lastPinTimestamp"]; + linkedLobby: ChannelRecordBase["linkedLobby"]; + member: ChannelRecordBase["member"]; + memberCount: ChannelRecordBase["memberCount"]; + memberIdsPreview: ChannelRecordBase["memberIdsPreview"]; + memberListId: ChannelRecordBase["memberListId"]; + messageCount: ChannelRecordBase["messageCount"]; + nicks: ChannelRecordBase["nicks"]; + nsfw_: ChannelRecordBase["nsfw_"]; + originChannelId: ChannelRecordBase["originChannelId"]; + ownerId: ChannelRecordBase["ownerId"]; + parent_id: ChannelRecordBase["parent_id"]; + parentChannelThreadType: undefined; + permissionOverwrites_: Defined; + position_: ChannelRecordBase["position_"]; + rateLimitPerUser_: ChannelRecordBase["rateLimitPerUser_"]; + rawRecipients: Defined; + recipients: Defined; + rtcRegion: ChannelRecordBase["rtcRegion"]; + safetyWarnings: ChannelRecordBase["safetyWarnings"]; + template: ChannelRecordBase["template"]; + themeColor: ChannelRecordBase["themeColor"]; + threadMetadata: ChannelRecordBase["threadMetadata"]; + topic_: ChannelRecordBase["topic_"]; + totalMessageSent: ChannelRecordBase["totalMessageSent"]; + type: ChannelType.UNKNOWN; + userLimit_: ChannelRecordBase["userLimit_"]; + version: ChannelRecordBase["version"]; + videoQualityMode: ChannelRecordBase["videoQualityMode"]; +} diff --git a/packages/discord-types/src/general/channels/index.ts b/packages/discord-types/src/general/channels/index.ts new file mode 100644 index 000000000..31078e0ee --- /dev/null +++ b/packages/discord-types/src/general/channels/index.ts @@ -0,0 +1,13 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export * from "./ChannelRecord"; +export * from "./ForumChannelRecord"; +export * from "./GuildTextualChannelRecord"; +export * from "./GuildVocalChannelRecord"; +export * from "./PrivateChannelRecord"; +export * from "./ThreadChannelRecord"; +export * from "./UnknownChannelRecord"; diff --git a/packages/discord-types/src/general/emojis/Emoji.ts b/packages/discord-types/src/general/emojis/Emoji.ts new file mode 100644 index 000000000..c3b8ceefa --- /dev/null +++ b/packages/discord-types/src/general/emojis/Emoji.ts @@ -0,0 +1,85 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../../internal"; + +export type Emoji = UnicodeEmoji | GuildEmoji; + +// Original name: Emoji +export declare class UnicodeEmoji { + constructor(emojiObject: UnicodeEmojiObject | UnicodeEmojiObjectDiversityChild); + + get allNamesString(): string; + get animated(): false; + get defaultDiversityChild(): UnicodeEmojiObjectDiversityChild | Nullish; + /** + * @param callback The iteratee. Iteration will terminate early if it returns false. + */ + forEachDiversity(callback: (value: string, index: number, array: string[]) => unknown): void; + /** + * @param callback The iteratee. Iteration will terminate early if it returns false. + */ + forEachName(callback: (value: string, index: number, array: string[]) => unknown): void; + get hasDiversity(): UnicodeEmojiObject["hasDiversity"]; + get hasDiversityParent(): UnicodeEmojiObjectDiversityChild["hasDiversityParent"]; + get hasMultiDiversity(): UnicodeEmojiObject["hasMultiDiversity"]; + get hasMultiDiversityParent(): UnicodeEmojiObjectDiversityChild["hasMultiDiversityParent"]; + get managed(): true; + get name(): string; + get names(): UnicodeEmojiObject["names"]; + get optionallyDiverseSequence(): string; + setSpriteSheetIndex(index: number): void; + get unicodeVersion(): number; + get url(): string; + + diversityChildren: { [diversity: string]: UnicodeEmojiObjectDiversityChild; }; + emojiObject: UnicodeEmojiObject; + guildId: undefined; + id: undefined; + index: number | undefined; + originalName: string | undefined; + surrogates: string; + type: EmojiType.UNICODE; + uniqueName: string; + useSpriteSheet: boolean | undefined; +} + +export interface UnicodeEmojiObject { + diversityChildren?: UnicodeEmojiObjectDiversityChild[]; + hasDiversity?: boolean; + hasMultiDiversity?: boolean; + names: [string, ...string[]]; + surrogates: string; + unicodeVersion?: number; +} + +export interface UnicodeEmojiObjectDiversityChild extends Pick { + diversity: [string] | [string, string]; + hasDiversityParent?: boolean; + hasMultiDiversityParent?: boolean; +} + +export interface GuildEmoji { + allNamesString: string; + animated: boolean; + available: boolean; + guildId: string; + id: string; + /** Only true for integrated emojis. */ + managed: boolean; + name: string; + originalName?: string; + /** False for emoticons. */ + require_colons: boolean; + roles: string[]; + type: EmojiType.GUILD; +} + +// Original name: EmojiTypes +export enum EmojiType { + UNICODE = 0, + GUILD = 1, +} diff --git a/packages/discord-types/src/general/emojis/EmojiDisambiguations.ts b/packages/discord-types/src/general/emojis/EmojiDisambiguations.ts new file mode 100644 index 000000000..d929e94d5 --- /dev/null +++ b/packages/discord-types/src/general/emojis/EmojiDisambiguations.ts @@ -0,0 +1,63 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { CollectionChain } from "lodash"; + +import type { Defined } from "../../internal"; +import type { Emoji, EmojiType, GuildEmoji, UnicodeEmoji } from "./Emoji"; + +export declare class EmojiDisambiguations { + constructor(guildId: string | null); + + static _lastInstance: EmojiDisambiguations | null; + static clear(guildId: string): void; + static get(guildId?: string | null): EmojiDisambiguations; + static reset(): void; + static resetFavorites(): void; + static resetFrequentlyUsed(): void; + static resetFrequentlyUsedReactionEmojis(): void; + + _buildDisambiguatedCustomEmoji(): void; + ensureDisambiguated(): void; + get favoriteEmojisWithoutFetchingLatest(): Emoji[]; + getById(emojiId: string): GuildEmoji | undefined; + getByName(emojiName: string): + (Type extends EmojiType.GUILD ? GuildEmoji : UnicodeEmoji) | undefined; + getCustomEmoji(): Defined; + getCustomEmoticonRegex(): RegExp | null; + getDisambiguatedEmoji(): Emoji[]; + getEmojiInPriorityOrderWithoutFetchingLatest(): Emoji[]; + getEmoticonByName(emoticonName: string): GuildEmoji | undefined; + getEscapedCustomEmoticonNames(): string; + getFrequentlyUsedEmojisWithoutFetchingLatest(): Emoji[]; + getFrequentlyUsedReactionEmojisWithoutFetchingLatest(): Emoji[]; + getGroupedCustomEmoji(): Defined; + getNewlyAddedEmojiForGuild(guildId: string): GuildEmoji[]; + getTopEmojiWithoutFetchingLatest(guildId: string): GuildEmoji[]; + nameMatchesChain(predicate: (value: string, index: number, array: string[]) => unknown): CollectionChain; + rebuildFavoriteEmojisWithoutFetchingLatest(): { + favoriteNamesAndIds: Set; + favorites: Emoji[]; + }; + + customEmojis: { [emojiName: string]: GuildEmoji; } | undefined; + disambiguatedEmoji: Emoji[] | null; + emojisById: { [emojiId: string]: GuildEmoji; } | undefined; + emojisByName: { [emojiName: string]: Emoji; } | undefined; + emoticonRegex: RegExp | null; + emoticonsByName: { [emoticonName: string]: GuildEmoji; } | undefined; + escapedEmoticonNames: string | null; + favoriteNamesAndIds: Set | null; + favorites: Emoji[] | null; + frequentlyUsed: Emoji[] | null; + frequentlyUsedReactionEmojis: Emoji[] | null; + groupedCustomEmojis: { [guildId: string]: GuildEmoji; } | undefined; + guildId: string | null; + isFavoriteEmojiWithoutFetchingLatest: (emoji?: Emoji | null) => boolean; + newlyAddedEmoji: { [guildId: string]: GuildEmoji; } | null; + topEmojis: GuildEmoji[] | null; + unicodeAliases: Record | undefined; +} diff --git a/packages/discord-types/src/general/emojis/GuildEmojis.ts b/packages/discord-types/src/general/emojis/GuildEmojis.ts new file mode 100644 index 000000000..a8c4e6f95 --- /dev/null +++ b/packages/discord-types/src/general/emojis/GuildEmojis.ts @@ -0,0 +1,35 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { GuildEmoji } from "./Emoji"; + +export declare class GuildEmojis { + constructor( + guildId: string, + userId: string, + emojis: GuildEmoji[], + canSeeServerSubIAP?: boolean /* = false */ + ); + + build(): void; + get emojis(): GuildEmoji[]; + get emoticons(): GuildEmoji[]; + getEmoji(emojiId: string): GuildEmoji | undefined; + getUsableEmoji(emojiId: string): GuildEmoji | null; + isUsable(emoji: GuildEmoji): boolean; + get rawEmojis(): GuildEmoji[]; + get usableEmojis(): GuildEmoji[]; + + _canSeeServerSubIAP: boolean; + _dirty: boolean; + _emojiMap: { [emojiId: string]: GuildEmoji; }; + _emojis: GuildEmoji[]; + _emoticons: GuildEmoji[]; + _totalUsable: number; + _usableEmojis: GuildEmoji[]; + _userId: string; + id: string; +} diff --git a/packages/discord-types/src/general/emojis/index.ts b/packages/discord-types/src/general/emojis/index.ts new file mode 100644 index 000000000..3683db1ce --- /dev/null +++ b/packages/discord-types/src/general/emojis/index.ts @@ -0,0 +1,9 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export * from "./Emoji"; +export * from "./EmojiDisambiguations"; +export * from "./GuildEmojis"; diff --git a/packages/discord-types/src/general/index.ts b/packages/discord-types/src/general/index.ts new file mode 100644 index 000000000..4142fadda --- /dev/null +++ b/packages/discord-types/src/general/index.ts @@ -0,0 +1,27 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export * from "./Activity"; +export * from "./ApplicationCommand"; +export * from "./ApplicationRecord"; +export * from "./channels"; +export * from "./Clan"; +export * from "./CompanyRecord"; +export * from "./DisplayProfile"; +export * from "./Draft"; +export * from "./emojis"; +export * from "./Frecency"; +export * from "./GuildMember"; +export * from "./GuildMemberProfile"; +export * from "./GuildRecord"; +export * from "./messages"; +export * from "./misc"; +export * from "./Permissions"; +export * from "./ReadState"; +export * from "./Record"; +export * from "./Role"; +export * from "./UserProfile"; +export * from "./UserRecord"; diff --git a/packages/discord-types/src/general/messages/ChannelMessages.ts b/packages/discord-types/src/general/messages/ChannelMessages.ts new file mode 100644 index 000000000..bd6e22a7e --- /dev/null +++ b/packages/discord-types/src/general/messages/ChannelMessages.ts @@ -0,0 +1,195 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish, Optional } from "../../internal"; +import type { MessageCache } from "./MessageCache"; +import type { MessageProperties, MessageRecord } from "./MessageRecord"; + +export type ChannelMessagesOwnProperties = Pick; + +export declare class ChannelMessages { + constructor(channelId: string); + + static _channelMessages: { [channelId: string]: ChannelMessages; }; + static clear(channelId: string): void; + static clearCache(channelId: string): void; + static commit(channelMessages: ChannelMessages): void; + /** + * @param callback The iteratee. Iteration will terminate early if it returns false. + */ + static forEach(callback: (value: ChannelMessages, index: number, array: ChannelMessages[]) => unknown): void; + static get(channelId: string): ChannelMessages | undefined; + static getOrCreate(channelId: string): ChannelMessages; + static hasPresent(channelId: string): boolean; + + _clearMessages(): void; + _merge( + messages: readonly MessageRecord[], + isBefore?: boolean /* = false */, + clearCache?: boolean /* = false */ + ): void; + /** @throws {Error} `messages` must be sorted in descending order by ID. */ + addCachedMessages(messages: readonly MessageRecord[], cached: boolean): ChannelMessages; + filter( + predicate: (value: MessageRecord, index: number, array: MessageRecord[]) => value is T, + thisArg?: unknown + ): T[]; + filter( + predicate: (value: MessageRecord, index: number, array: MessageRecord[]) => unknown, + thisArg?: unknown + ): MessageRecord[]; + findNewest( + predicate: (value: MessageRecord, index: number, array: MessageRecord[]) => value is T + ): T | undefined; + findNewest( + predicate: (value: MessageRecord, index: number, array: MessageRecord[]) => unknown + ): MessageRecord | undefined; + findOldest( + predicate: (value: MessageRecord, index: number, array: MessageRecord[]) => value is T + ): T | undefined; + findOldest( + predicate: (value: MessageRecord, index: number, array: MessageRecord[]) => unknown + ): MessageRecord | undefined; + first(): MessageRecord | undefined; + focusOnMessage(messageId: string): ChannelMessages; + forAll( + callback: (value: MessageRecord, index: number, array: MessageRecord[]) => void, + thisArg?: unknown + ): void; + forEach( + callback: (value: MessageRecord, index: number, array: MessageRecord[]) => + [BreakOnReturnFalse] extends [false | undefined] + // https://github.com/typescript-eslint/typescript-eslint/issues/8113 + // eslint-disable-next-line @typescript-eslint/no-invalid-void-type + ? void + : unknown, + thisArg?: unknown, + breakOnReturnFalse?: BreakOnReturnFalse + ): void; + get(messageId: string, searchCaches?: boolean /* = false */): MessageRecord | undefined; + getAfter(messageId: string): MessageRecord | null; + getByIndex(index: number): MessageRecord | undefined; + /** If count is -1, all results will be returned. */ + getManyAfter( + messageId: string, + count: number, + callback?: ((message: MessageRecord) => void) | null + ): MessageRecord[] | null; + /** If count is -1, all results will be returned. */ + getManyBefore( + messageId: string, + count: number, + callback?: ((message: MessageRecord) => void) | null + ): MessageRecord[] | null; + has(messageId: string, searchCaches?: boolean): boolean; + hasAfterCached(messageId: string): boolean; + hasBeforeCached(messageId: string): boolean; + hasPresent(): boolean; + indexOf(messageId: string): number; + jumpToMessage( + messageId: string | null, + jumpFlash?: boolean /* = true */, + jumpTargetOffset?: number | null, + jumpReturnTargetId?: string | null, + jumpType?: JumpType | null /* = JumpType.ANIMATED */ + ): ChannelMessages; + jumpToPresent(countFromPresent: number): ChannelMessages; + last(): MessageRecord | undefined; + get length(): number; + loadComplete(messageProperties: MessageProperties): ChannelMessages; + loadFromCache(isBefore: boolean, extractCount: number): ChannelMessages; + loadStart(jumpConfig?: { + messageId?: string | Nullish; + offset?: number | Nullish; + present?: boolean | Nullish; + returnMessageId?: string | Nullish; + } | null): ChannelMessages; + map( + callback: (value: MessageRecord, index: number, array: MessageRecord[]) => T, + thisArg?: unknown + ): T[]; + merge( + messages: readonly MessageRecord[], + isBefore?: boolean /* = false */, + clearCache?: boolean /* = false */ + ): ChannelMessages; + mergeDelta( + messages?: readonly MessageRecord[] /* = [] */, + messageProperties?: readonly MessageProperties[] /* = [] */, + excludedMessageIds?: readonly string[] /* = [] */ + ): ChannelMessages; + mutate( + mutaterOrObject?: ((channelMessages: ChannelMessages) => void) + | Optional>, + deep?: boolean /* = false */ + ): ChannelMessages; + receiveMessage( + messageProperties: MessageProperties, + truncateTop?: boolean /* = true */ + ): ChannelMessages | this; + receivePushNotification(messageProperties: MessageProperties): ChannelMessages | this; + receiveReactionInAppNotification(messageProperties: MessageProperties): ChannelMessages | this; + reduce( + callback: ( + previousValue: MessageRecord, + currentValue: MessageRecord, + currentIndex: number, + array: MessageRecord[] + ) => MessageRecord, + initialValue?: MessageRecord + ): MessageRecord; + reduce( + callback: ( + previousValue: MessageRecord, + currentValue: T, + currentIndex: number, + array: MessageRecord[] + ) => T, + initialValue: T + ): T; + remove(messageId: string): ChannelMessages; + removeMany(messageIds: readonly string[]): ChannelMessages | this; + replace(messageId: string, message: MessageRecord): ChannelMessages | this; + reset(messages: MessageRecord[]): ChannelMessages; + some( + predicate: (value: MessageRecord, index: number, array: MessageRecord[]) => unknown, + thisArg?: unknown + ): boolean; + toArray(): MessageRecord[]; + truncate(count: number, mutateDeep?: boolean /* = true */): ChannelMessages | this; + truncateBottom(count: number, mutateDeep?: boolean /* = true */): ChannelMessages | this; + truncateTop(count: number, mutateDeep?: boolean /* = true */): ChannelMessages | this; + update(messageId: string, updater: (message: MessageRecord) => MessageRecord): ChannelMessages | this; + + _after: MessageCache; + _array: MessageRecord[]; + _before: MessageCache; + _map: { [messageId: string]: MessageRecord; }; + cached: boolean; + channelId: string; + error: boolean; + focusTargetId: string | undefined; + hasFetched: boolean; + hasMoreAfter: boolean; + hasMoreBefore: boolean; + jumped: boolean; + jumpedToPresent: boolean; + jumpFlash: boolean; + jumpReturnTargetId: string | Nullish; + jumpSequenceId: number; + jumpTargetId: string | null; + jumpTargetOffset: number; + jumpType: JumpType; + loadingMore: boolean; + ready: boolean; + revealedMessageId: string | null; +} + +// Original name: JumpTypes +export enum JumpType { + ANIMATED = "ANIMATED", + INSTANT = "INSTANT", +} diff --git a/packages/discord-types/src/general/messages/InteractionRecord.ts b/packages/discord-types/src/general/messages/InteractionRecord.ts new file mode 100644 index 000000000..921005350 --- /dev/null +++ b/packages/discord-types/src/general/messages/InteractionRecord.ts @@ -0,0 +1,42 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Nullish } from "../../internal"; +import type { RecordBase } from "../Record"; +import type { UserRecord } from "../UserRecord"; + +export type InteractionRecordOwnProperties = Pick; + +export type InteractionProperties = Omit + & { name_localized?: string | Nullish; }; + +export declare class InteractionRecord< + OwnProperties extends InteractionRecordOwnProperties = InteractionRecordOwnProperties +> extends RecordBase { + constructor(interaction: InteractionProperties); + + static createFromServer( + interactionFromServer: Omit & { + /** @todo This is not a UserRecord; it is a user object from the API. */ + user: Record; + } + ): InteractionRecord; + + displayName: string; + id: string; + name: string; + type: InteractionType; + user: UserRecord; +} + +// Original name: InteractionTypes +export enum InteractionType { + PING = 1, // From the API documentation + APPLICATION_COMMAND = 2, + MESSAGE_COMPONENT = 3, + APPLICATION_COMMAND_AUTOCOMPLETE = 4, + MODAL_SUBMIT = 5, +} diff --git a/packages/discord-types/src/general/messages/MessageCache.ts b/packages/discord-types/src/general/messages/MessageCache.ts new file mode 100644 index 000000000..f6f75e986 --- /dev/null +++ b/packages/discord-types/src/general/messages/MessageCache.ts @@ -0,0 +1,35 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { MessageRecord } from "./MessageRecord"; + +export declare class MessageCache { + constructor(isCacheBefore: boolean); + + cache(messages: readonly MessageRecord[], wasAtEdge?: boolean /* = false */): void; + clear(): void; + clone(): MessageCache; + extract(count: number): MessageRecord[]; + extractAll(): MessageRecord[]; + forEach( + callback: (value: MessageRecord, index: number, array: MessageRecord[]) => void, + thisArg?: unknown + ): void; + get(messageId: string): MessageRecord | undefined; + has(messageId: string): boolean; + get length(): number; + remove(messageId: string): void; + removeMany(messageIds: readonly string[]): void; + replace(messageId: string, message: MessageRecord): void; + update(messageId: string, updater: (message: MessageRecord) => MessageRecord): void; + get wasAtEdge(): boolean; + set wasAtEdge(wasAtEdge: boolean); + + _isCacheBefore: boolean; + _map: { [messageId: string]: MessageRecord; }; + _messages: MessageRecord[]; + _wasAtEdge: boolean; +} diff --git a/packages/discord-types/src/general/messages/MessageRecord.ts b/packages/discord-types/src/general/messages/MessageRecord.ts new file mode 100644 index 000000000..aae575f76 --- /dev/null +++ b/packages/discord-types/src/general/messages/MessageRecord.ts @@ -0,0 +1,291 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Duration, Moment } from "moment"; +import type { ReactNode } from "react"; + +import type { Nullish, Optional, PartialOnUndefined, SnakeCasedProperties } from "../../internal"; +import type { ApplicationCommand, ApplicationCommandType } from "../ApplicationCommand"; +import type { ApplicationIntegrationType } from "../ApplicationRecord"; +import type { ChannelRecord, ChannelType } from "../channels/ChannelRecord"; +import type { UserRecord } from "../UserRecord"; +import type { InteractionRecord, InteractionType } from "./InteractionRecord"; +import type { MessageSnapshotRecord } from "./MessageSnapshotRecord"; +import type { MinimalMessageRecord, MinimalMessageRecordOwnProperties } from "./MinimalMessageRecord"; + +export type MessageRecordOwnProperties = MinimalMessageRecordOwnProperties & Pick; + +export type MessageProperties = Optional, Nullish, "author" | "channel_id" | "id" | "colorString" | "giftInfo" | "nick" | "roleSubscriptionData" | "purchaseNotification" | "poll", true> + & SnakeCasedProperties, Nullish>> + & { hit?: boolean | Nullish; }; + +export declare class MessageRecord< + OwnProperties extends MessageRecordOwnProperties = MessageRecordOwnProperties +> extends MinimalMessageRecord { + constructor(messageProperties: MessageProperties); + + addReaction( + emoji: MessageReactionEmoji, + me?: boolean /* = false */, + deafultBurstColors?: string[] /* = [] */, + type?: ReactionType /* = ReactionType.NORMAL */ + ): this; + addReactionBatch( + reactions: readonly { + emoji: MessageReactionEmoji; + users: readonly string[]; + }[], + meId: string + ): this; + canDeleteOwnMessage(userId: string): boolean; + getChannelId(): string; + getContentMessage(): MinimalMessageRecord | this | undefined; + getReaction(emoji: MessageReactionEmoji): MessageReaction | undefined; + isCommandType(): boolean; + isEdited(): boolean; + isFirstMessageInForumPost(channel: ChannelRecord): boolean; + isInteractionPlaceholder(): boolean; + isPoll(): boolean; + isSystemDM(): boolean; + isUIKitComponents(): boolean; + removeReaction( + emoji: MessageReactionEmoji, + me?: boolean /* = false */, + type?: ReactionType /* = ReactionType.NORMAL */ + ): this; + removeReactionsForEmoji(emoji: MessageReactionEmoji): this; + toJS(): OwnProperties & SnakeCasedProperties>; + userHasReactedWithEmoji(emoji: MessageReactionEmoji, burst?: boolean /* = false */): boolean; + + activity: MessageActivity | null; + activityInstance: { id: string; } | null; + /** @todo This is not an ApplicationRecord; it is an application object from the API. */ + application: Record | null; + applicationId: string | null; + author: UserRecord; + blocked: boolean; + bot: boolean; + call: MessageCall | null; + changelogId: string | null; + channel_id: string; + colorString: string | undefined; + customRenderedContent: MessageCustomRenderedContent | Nullish; + giftCodes: string[]; + giftInfo: MessageGiftInfo | undefined; + id: string; + interaction: InteractionRecord | null; + interactionData: MessageInteractionData | null; + interactionError: string | null; + interactionMetadata: MessageInteractionMetadata | null; + isSearchHit: boolean; + isUnsupported: boolean; + loggingName: string | null; + mentionChannels: ChannelMention[]; + mentioned: boolean; + mentionEveryone: boolean; + mentionRoles: string[]; + mentions: string[]; + /** Only non-null for MessageRecords with type MessageType.REPLY or MessageType.THREAD_STARTER_MESSAGE. */ + messageReference: MessageReference | null; + messageSnapshots: MessageSnapshotRecord[]; + nick: string | undefined; + nonce: string | number | null; + pinned: boolean; + poll: MessagePoll | undefined; + purchaseNotification: MessagePurchaseNotification | undefined; + reactions: MessageReaction[]; + referralTrialOfferId: string | null; + roleSubscriptionData: MessageRoleSubscriptionData | undefined; + state: MessageState; + tts: boolean; + webhookId: string | null; +} + +export interface MessageActivity { + party_id?: string; + type: ActivityActionType; +} + +// Original name: ActivityActionTypes +export enum ActivityActionType { + JOIN = 1, + SPECTATE = 2, + LISTEN = 3, + WATCH = 4, + JOIN_REQUEST = 5, +} + +export interface MessageCall { + duration: Duration | null; + endedTimestamp: Moment | null; + participants: string[]; +} + +export interface MessageCustomRenderedContent { + content: ReactNode; + hasSpoilerEmbeds: boolean; +} + +/** @todo Some properties may either not be nullable or not be optional. */ +export interface MessageGiftInfo { + emoji?: MessageReactionEmoji | null; + /** @todo May have more properties. */ + sound?: { id: string; } | null; +} + +export interface MessageInteractionData extends Pick, "id" | "name" | "options" | "type"> { + /** @todo May not be nullable or optional. */ + application_command?: ApplicationCommand | null; +} + +export interface MessageInteractionMetadata { + authorizing_integration_owners: Partial>; + id: string; + interacted_message_id?: string; + original_response_message_id?: string; + triggering_interaction_metadata?: MessageInteractionMetadata; + type: InteractionType; + /** @todo This is not a UserRecord; it is a user object from the API. */ + user: Record; +} + +export interface ChannelMention { + guild_id: string; + id: string; + name: string; + type: ChannelType; +} + +export interface MessageReference { + channel_id: string; + guild_id?: string; + message_id?: string; + type: MessageReferenceType; +} + +// Original name: MessageReferenceTypes +export enum MessageReferenceType { + DEFAULT = 0, + FORWARD = 1, +} + +export interface MessagePoll { + allow_multiselect: boolean; + answers: MessagePollAnswer[]; + expiry: Moment; + layout_type: PollLayoutType; + question: MessagePollMedia; + results?: MessagePollResults; +} + +export interface MessagePollAnswer { + answer_id: number; + poll_media: MessagePollMedia; +} + +// Original name: PollLayoutTypes +export enum PollLayoutType { + UNKNOWN = 0, + DEFAULT = 1, + IMAGE_ONLY_ANSWERS = 2, +} + +export interface MessagePollMedia { + emoji?: MessageReactionEmoji; + text?: string; +} + +export interface MessagePollResults { + answer_counts: MessagePollAnswerCount[]; + is_finalized: boolean; +} + +export interface MessagePollAnswerCount { + count: number; + id: number; + me_voted: boolean; +} + +/** @todo May have more properties. Some properties may either not be nullable or not be optional. */ +export interface MessagePurchaseNotification { + guild_product_purchase?: { + listing_id?: string | null; + product_name?: string | null; + } | null; + type: PurchaseNotificationType; +} + +export enum PurchaseNotificationType { + GUILD_PRODUCT = 0, +} + +export type MessageReaction = MessageNonVoteReaction | MessageVoteReaction; + +export interface MessageReactionBase { + burst_count: number; + count: number; + count_details: MessageReactionCountDetails; + emoji: MessageReactionEmoji; + me: boolean; + me_burst: boolean; +} + +export interface MessageNonVoteReaction extends MessageReactionBase { + burst_colors: string[]; + burst_me?: boolean; + count_details: MessageNonVoteReactionCountDetails; +} + +export interface MessageVoteReaction extends MessageReactionBase { + count_details: MessageVoteReactionCountDetails; + me_vote: boolean; +} + +export type MessageReactionEmoji = MessageReactionUnicodeEmoji | MessageReactionGuildEmoji; + +export interface MessageReactionUnicodeEmoji { + animated?: false; + id?: null; + name: string; +} + +export interface MessageReactionGuildEmoji { + animated?: boolean; + id: string; + name: string; +} + +export type MessageReactionCountDetails = MessageNonVoteReactionCountDetails | MessageVoteReactionCountDetails; + +export interface MessageNonVoteReactionCountDetails { + burst: number; + normal: number; +} + +export interface MessageVoteReactionCountDetails { + vote: number; +} + +// Original name: ReactionTypes +export enum ReactionType { + NORMAL = 0, + BURST = 1, + VOTE = 2, +} + +export interface MessageRoleSubscriptionData { + is_renewal: boolean; + role_subscription_listing_id: string; + tier_name: string; + total_months_subscribed: number; +} + +// Original name: MessageStates +export enum MessageState { + SEND_FAILED = "SEND_FAILED", + SENDING = "SENDING", + SENT = "SENT", +} diff --git a/packages/discord-types/src/general/messages/MessageSnapshotRecord.ts b/packages/discord-types/src/general/messages/MessageSnapshotRecord.ts new file mode 100644 index 000000000..995f3d3c2 --- /dev/null +++ b/packages/discord-types/src/general/messages/MessageSnapshotRecord.ts @@ -0,0 +1,22 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { RecordBase } from "../Record"; +import type { MinimalMessageProperties, MinimalMessageRecord } from "./MinimalMessageRecord"; + +export type MessageSnapshotRecordOwnProperties = Pick; + +export interface MessageSnapshotProperties { + message: MinimalMessageProperties; +} + +export declare class MessageSnapshotRecord< + OwnProperties extends MessageSnapshotRecordOwnProperties = MessageSnapshotRecordOwnProperties +> extends RecordBase { + constructor(messageSnapshotProperties: MessageSnapshotProperties); + + message: MinimalMessageRecord; +} diff --git a/packages/discord-types/src/general/messages/MinimalMessageRecord.ts b/packages/discord-types/src/general/messages/MinimalMessageRecord.ts new file mode 100644 index 000000000..28b8cd64b --- /dev/null +++ b/packages/discord-types/src/general/messages/MinimalMessageRecord.ts @@ -0,0 +1,542 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Moment } from "moment"; + +import type { Nullish, Optional, SnakeCasedProperties } from "../../internal"; +import type { ChannelType } from "../channels/ChannelRecord"; +import type { RecordBase } from "../Record"; + +export type MinimalMessageRecordOwnProperties = Pick; + +export type MinimalMessageProperties = Optional + & SnakeCasedProperties, Nullish>>; + +export declare class MinimalMessageRecord< + OwnProperties extends MinimalMessageRecordOwnProperties = MinimalMessageRecordOwnProperties +> extends RecordBase { + constructor(minimalMessageProperties: MinimalMessageProperties); + + hasFlag(flag: MessageFlags): boolean; + + attachments: MessageAttachment[]; + codedLinks: CodedLink[]; + components: MessageComponent[]; + content: string; + editedTimestamp: Date | null; + embeds: MessageEmbed[]; + flags: MessageFlags; + stickerItems: StickerItem[]; + stickers: Sticker[]; + timestamp: Date; + type: MessageType; +} + +export interface MessageAttachment { + content_scan_version?: number; + content_type?: string; + description?: string; + duration_secs?: number; + ephemeral?: boolean; + filename: string; + flags?: MessageAttachmentFlags; + height?: number | null; + id: string; + placeholder?: string; + placeholder_version?: number; + proxy_url: string; + size: number; + spoiler: boolean; + url: string; + waveform?: string; + width?: number | null; +} + +export enum MessageAttachmentFlags { + IS_CLIP = 1 << 0, + IS_THUMBNAIL = 1 << 1, + IS_REMIX = 1 << 2, + IS_SPOILER = 1 << 3, + CONTAINS_EXPLICIT_MEDIA = 1 << 4, +} + +export interface CodedLink { + code: string; + type: CodedLinkType; +} + +export enum CodedLinkType { + ACTIVITY_BOOKMARK = "ACTIVITY_BOOKMARK", + APP_DIRECTORY_PROFILE = "APP_DIRECTORY_PROFILE", + APP_DIRECTORY_STOREFRONT = "APP_DIRECTORY_STOREFRONT", + APP_DIRECTORY_STOREFRONT_SKU = "APP_DIRECTORY_STOREFRONT_SKU", + BUILD_OVERRIDE = "BUILD_OVERRIDE", + CHANNEL_LINK = "CHANNEL_LINK", + EMBEDDED_ACTIVITY_INVITE = "EMBEDDED_ACTIVITY_INVITE", + EVENT = "EVENT", + GUILD_PRODUCT = "GUILD_PRODUCT", + INVITE = "INVITE", + MANUAL_BUILD_OVERRIDE = "MANUAL_BUILD_OVERRIDE", + QUESTS_EMBED = "QUESTS_EMBED", + SERVER_SHOP = "SERVER_SHOP", + TEMPLATE = "TEMPLATE", +} + +export type MessageComponent = MessageActionRowComponent | MessageButtonComponent | MessageSelectComponent | MessageTextInputComponent | MessageTextComponent | MessageMediaGalleryComponent | MessageSeparatorComponent | MessageContentInventoryEntryComponent; + +export interface MessageComponentBase { + id: string; + type: MessageComponentType; +} + +export interface MessageActionRowComponent extends MessageComponentBase { + components: Exclude[]; + type: MessageComponentType.ACTION_ROW; +} + +export type MessageButtonComponent = MessageNonLinkButtonComponent | MessageLinkButtonComponent; + +export interface MessageButtonComponentBase extends MessageComponentBase { + customId: string | undefined; + disabled: boolean | undefined; + emoji: MessageComponentEmoji | undefined; + label: string | undefined; + style: MessageButtonComponentStyle; + type: MessageComponentType.BUTTON; + url: string | undefined; +} + +export interface MessageNonLinkButtonComponent extends MessageButtonComponentBase { + customId: string; + style: Exclude; + url: undefined; +} + +export interface MessageLinkButtonComponent extends MessageButtonComponentBase { + customId: undefined; + style: MessageButtonComponentStyle.LINK; + url: string; +} + +// Original name: ButtonStyle +export enum MessageButtonComponentStyle { + PRIMARY = 1, + SECONDARY = 2, + SUCCESS = 3, + DESTRUCTIVE = 4, + LINK = 5, + PREMIUM = 6, +} + +export type MessageSelectComponent = MessageStringSelectComponent | MessageSnowflakeSelectComponent; + +export interface MessageSelectComponentBase extends MessageComponentBase { + customId: string; + disabled: boolean | undefined; + maxValues: number | undefined; + minValues: number | undefined; + placeholder: string; + type: MessageComponentType.STRING_SELECT | MessageComponentType.USER_SELECT | MessageComponentType.ROLE_SELECT | MessageComponentType.MENTIONABLE_SELECT | MessageComponentType.CHANNEL_SELECT; +} + +export interface MessageStringSelectComponent extends MessageSelectComponentBase { + options: MessageSelectComponentMenuOption[]; + type: MessageComponentType.STRING_SELECT; +} + +export interface MessageSelectComponentMenuOption< + OptionType extends MessageSelectComponentOptionType = MessageSelectComponentOptionType +> { + default: boolean | undefined; + description: string | undefined; + emoji: MessageComponentEmoji | undefined; + label: string; + type: OptionType; + value: string; +} + +// Original name: SelectOptionType +export enum MessageSelectComponentOptionType { + STRING = 1, + USER = 2, + ROLE = 3, + CHANNEL = 4, + GUILD = 5, +} + +export type MessageSnowflakeSelectComponent = MessageUserSelectComponent | MessageRoleSelectComponent | MessageMentionableSelectComponent | MessageChannelSelectComponent; + +export interface MessageSnowflakeSelectComponentBase extends MessageSelectComponentBase { + defaultValues: MessageSelectComponentDefaultValue[]; + type: MessageComponentType.USER_SELECT | MessageComponentType.ROLE_SELECT | MessageComponentType.MENTIONABLE_SELECT | MessageComponentType.CHANNEL_SELECT; +} + +export interface MessageUserSelectComponent extends MessageSnowflakeSelectComponentBase { + defaultValues: MessageSelectComponentDefaultValue[]; + type: MessageComponentType.USER_SELECT; +} + +export interface MessageRoleSelectComponent extends MessageSnowflakeSelectComponentBase { + defaultValues: MessageSelectComponentDefaultValue[]; + type: MessageComponentType.ROLE_SELECT; +} + +export interface MessageMentionableSelectComponent extends MessageSnowflakeSelectComponentBase { + defaultValues: MessageSelectComponentDefaultValue[]; + type: MessageComponentType.MENTIONABLE_SELECT; +} + +export interface MessageChannelSelectComponent extends MessageSnowflakeSelectComponentBase { + channelTypes: ChannelType[] | undefined; + defaultValues: MessageSelectComponentDefaultValue[]; + type: MessageComponentType.CHANNEL_SELECT; +} + +export interface MessageSelectComponentDefaultValue< + DefaultValueType extends MessageSelectComponentDefaultValueType = MessageSelectComponentDefaultValueType +> { + id: string; + type: DefaultValueType; +} + +// Original name: SnowflakeSelectDefaultValueTypes +export enum MessageSelectComponentDefaultValueType { + CHANNEL = "channel", + ROLE = "role", + USER = "user", +} + +export interface MessageTextInputComponent extends MessageComponentBase { + customId: string; + disabled: boolean | undefined; + label: string; + maxLength: number | undefined; + minLength: number | undefined; + placeholder: string | undefined; + required: boolean; + style: MessageTextInputComponentStyle; + type: MessageComponentType.INPUT_TEXT; + value: string | undefined; +} + +// Original name: TextComponentStyle +export enum MessageTextInputComponentStyle { + SMALL = 1, + PARAGRAPH = 2, +} + +export interface MessageTextComponent extends MessageComponentBase { + /** @todo May not be undefined. */ + content: string | undefined; + type: MessageComponentType.TEXT; +} + +export interface MessageMediaGalleryComponent extends MessageComponentBase { + items: { + /** @todo May not be undefined. */ + description: string | undefined; + media: MessageMediaGalleryComponentItem; + /** @todo May not be undefined. */ + spoiler: boolean | undefined; + }[]; + type: MessageComponentType.MEDIA_GALLERY; +} +export interface MessageMediaGalleryComponentItem { + contentScanMetadata: { + contentScanFlags: ContentScanFlags; + /** @todo May not be undefined. */ + version: number | undefined; + } | undefined; + contentType: string; + height: number; + placeholder: string | undefined; + /** @todo May not be undefined. */ + placeholderVersion: number | undefined; + proxyUrl: string; + url: string; + width: number; +} + +export enum ContentScanFlags { + EXPLICIT = 1, +} + +export interface MessageSeparatorComponent extends MessageComponentBase { + divider: boolean; + spacing: SeparatorSpacingSize; + type: MessageComponentType.SEPARATOR; +} + +export enum SeparatorSpacingSize { + SMALL = 1, + LARGE = 2, +} + +export interface MessageContentInventoryEntryComponent extends MessageComponentBase { + /** @todo */ + contentInventoryEntry: Record; + type: MessageComponentType.CONTENT_INVENTORY_ENTRY; +} + +export type MessageComponentEmoji = MessageComponentUnicodeEmoji | MessageComponentGuildEmoji; + +export interface MessageComponentUnicodeEmoji { + animated: false | undefined; + id: undefined; + name: string; + src: undefined; +} + +export interface MessageComponentGuildEmoji { + animated: boolean | undefined; + id: string; + name: string; + src: string | undefined; +} + +// Original name: ComponentType +// Renamed to avoid name conflicts with ComponentType from React. +export enum MessageComponentType { + ACTION_ROW = 1, + BUTTON = 2, + STRING_SELECT = 3, + INPUT_TEXT = 4, + USER_SELECT = 5, + ROLE_SELECT = 6, + MENTIONABLE_SELECT = 7, + CHANNEL_SELECT = 8, + TEXT = 10, + MEDIA_GALLERY = 12, + SEPARATOR = 14, + CONTENT_INVENTORY_ENTRY = 16, +} + +export type MessageEmbed = { + author?: MessageEmbedAuthor; + color?: string; + /** @todo May not be undefined. */ + contentScanVersion: number | undefined; + fields: MessageEmbedField[]; + flags: MessageEmbedFlags | undefined; + footer?: MessageEmbedFooter; + id: string; + image?: MessageEmbedImage; + provider?: MessageEmbedProvider; + rawDescription: string | undefined; + rawTitle: string | undefined; + referenceId: string | undefined; + thumbnail?: MessageEmbedThumbnail; + timestamp?: Moment; + type: MessageEmbedType | undefined; + url: string | undefined; +} & ({} | { + provider: MessageEmbedProvider; + thumbnail: MessageEmbedThumbnail; + video: MessageEmbedVideo; +}); + +export interface MessageEmbedAuthor { + iconProxyURL: string | undefined; + iconURL: string | undefined; + name: string; + url: string | undefined; +} + +export interface MessageEmbedField { + inline: boolean | undefined; + rawName: string; + rawValue: string; +} + +export enum MessageEmbedFlags { + CONTAINS_EXPLICIT_MEDIA = 1 << 4, + IS_CONTENT_INVENTORY_ENTRY = 1 << 5, +} + +export interface MessageEmbedFooter { + iconProxyURL: string | undefined; + iconURL: string | undefined; + text: string; +} + +export interface MessageEmbedImage { + /** Always greater than 0. */ + height: number; + placeholder: string | undefined; + placeholderVersion: number | undefined; + proxyURL: string | undefined; + url: string; + /** Always greater than 0. */ + width: number; +} + +export interface MessageEmbedProvider { + name: string; + url: string | undefined; +} + +export type MessageEmbedThumbnail = { + /** Always greater than 0. */ + height: number; + url: string; + /** Always greater than 0. */ + width: number; +} & ({} | { + placeholder: string | undefined; + placeholderVersion: number | undefined; + proxyURL: string | undefined; +}); + +// Original name: MessageEmbedTypes +export enum MessageEmbedType { + APPLICATION_NEWS = "application_news", + ARTICLE = "article", + AUTO_MODERATION_MESSAGE = "auto_moderation_message", + AUTO_MODERATION_NOTIFICATION = "auto_moderation_notification", + GAMING_PROFILE = "gaming_profile", + GIFT = "gift", + GIFV = "gifv", + IMAGE = "image", + LINK = "link", + POLL_RESULT = "poll_result", + POST_PREVIEW = "post_preview", + RICH = "rich", + SAFETY_POLICY_NOTICE = "safety_policy_notice", + SAFETY_SYSTEM_NOTIFICATION = "safety_system_notification", + TEXT = "text", + TWEET = "tweet", + VIDEO = "video", + VOICE_CHANNEL = "voice_channel", +} + +export type MessageEmbedVideo = { + /** Always greater than 0. */ + height: number; + placeholder: string | undefined; + placeholderVersion: number | undefined; + /** Always greater than 0. */ + width: number; +} & ({ + proxyURL: string; + url: string | undefined; +} | { + proxyURL: string | undefined; + url: string; +}); + +export enum MessageFlags { + CROSSPOSTED = 1 << 0, + IS_CROSSPOST = 1 << 1, + SUPPRESS_EMBEDS = 1 << 2, + SOURCE_MESSAGE_DELETED = 1 << 3, + URGENT = 1 << 4, + HAS_THREAD = 1 << 5, + EPHEMERAL = 1 << 6, + LOADING = 1 << 7, + FAILED_TO_MENTION_SOME_ROLES_IN_THREAD = 1 << 8, + GUILD_FEED_HIDDEN = 1 << 9, + SHOULD_SHOW_LINK_NOT_DISCORD_WARNING = 1 << 10, + SUPPRESS_NOTIFICATIONS = 1 << 12, + IS_VOICE_MESSAGE = 1 << 13, + HAS_SNAPSHOT = 1 << 14, + IS_UIKIT_COMPONENTS = 1 << 15, +} + +export interface StickerItem { + format_type: StickerFormat; + id: string; + name: string; +} + +export enum StickerFormat { + PNG = 1, + APNG = 2, + LOTTIE = 3, + GIF = 4, +} + +export type Sticker = StandardSticker | GuildSticker; + +export interface StickerBase { + asset?: ""; + description: string | null; + format_type: StickerFormat; + id: string; + name: string; + tags: string; + type: MetaStickerType; +} + +export interface StandardSticker extends StickerBase { + pack_id: string; + sort_value: number; +} + +export interface GuildSticker extends StickerBase { + /** @todo May actually not be optional. */ + available?: boolean; + guild_id: string; + /** @todo This is not a UserRecord; it is a user object from the API. */ + user: Record; +} + +export enum MetaStickerType { + STANDARD = 1, + GUILD = 2, +} + +// Original name: MessageTypes +export enum MessageType { + DEFAULT = 0, + RECIPIENT_ADD = 1, + RECIPIENT_REMOVE = 2, + CALL = 3, + CHANNEL_NAME_CHANGE = 4, + CHANNEL_ICON_CHANGE = 5, + CHANNEL_PINNED_MESSAGE = 6, + USER_JOIN = 7, + GUILD_BOOST = 8, + GUILD_BOOST_TIER_1 = 9, + GUILD_BOOST_TIER_2 = 10, + GUILD_BOOST_TIER_3 = 11, + CHANNEL_FOLLOW_ADD = 12, + GUILD_STREAM = 13, + GUILD_DISCOVERY_DISQUALIFIED = 14, + GUILD_DISCOVERY_REQUALIFIED = 15, + GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING = 16, + GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING = 17, + THREAD_CREATED = 18, + REPLY = 19, + CHAT_INPUT_COMMAND = 20, + THREAD_STARTER_MESSAGE = 21, + GUILD_INVITE_REMINDER = 22, + CONTEXT_MENU_COMMAND = 23, + AUTO_MODERATION_ACTION = 24, + ROLE_SUBSCRIPTION_PURCHASE = 25, + INTERACTION_PREMIUM_UPSELL = 26, + STAGE_START = 27, + STAGE_END = 28, + STAGE_SPEAKER = 29, + STAGE_RAISE_HAND = 30, + STAGE_TOPIC = 31, + GUILD_APPLICATION_PREMIUM_SUBSCRIPTION = 32, + PRIVATE_CHANNEL_INTEGRATION_ADDED = 33, + PRIVATE_CHANNEL_INTEGRATION_REMOVED = 34, + PREMIUM_REFERRAL = 35, + GUILD_INCIDENT_ALERT_MODE_ENABLED = 36, + GUILD_INCIDENT_ALERT_MODE_DISABLED = 37, + GUILD_INCIDENT_REPORT_RAID = 38, + GUILD_INCIDENT_REPORT_FALSE_ALARM = 39, + GUILD_DEADCHAT_REVIVE_PROMPT = 40, + CUSTOM_GIFT = 41, + GUILD_GAMING_STATS_PROMPT = 42, + PURCHASE_NOTIFICATION = 44, + VOICE_HANGOUT_INVITE = 45, + POLL_RESULT = 46, + CHANGELOG = 47, + NITRO_NOTIFICATION = 48, + CHANNEL_LINKED_TO_LOBBY = 49, +} diff --git a/packages/discord-types/src/general/messages/index.ts b/packages/discord-types/src/general/messages/index.ts new file mode 100644 index 000000000..2764190d6 --- /dev/null +++ b/packages/discord-types/src/general/messages/index.ts @@ -0,0 +1,12 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export * from "./ChannelMessages"; +export * from "./InteractionRecord"; +export * from "./MessageCache"; +export * from "./MessageRecord"; +export * from "./MessageSnapshotRecord"; +export * from "./MinimalMessageRecord"; diff --git a/packages/discord-types/src/general/misc.ts b/packages/discord-types/src/general/misc.ts new file mode 100644 index 000000000..b42c28d64 --- /dev/null +++ b/packages/discord-types/src/general/misc.ts @@ -0,0 +1,9 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export interface IconSource { + uri: string; +} diff --git a/packages/discord-types/src/i18n/FormattedMessage.ts b/packages/discord-types/src/i18n/FormattedMessage.ts new file mode 100644 index 000000000..47b46e575 --- /dev/null +++ b/packages/discord-types/src/i18n/FormattedMessage.ts @@ -0,0 +1,127 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type MessageFormat from "intl-messageformat"; +import type { ReactElement, ReactNode } from "react"; +import type { State } from "simple-markdown"; + +import type { IsAny, IsDomainFinite, Stringable, StringProperties, UnionToIntersection } from "../internal"; + +export type FormattedMessageArgs = RecordArgs | TupleArgs | string | number; + +export declare class FormattedMessage< + Args extends FormattedMessageArgs = FormattedMessageArgs, + Markdown extends boolean | undefined = boolean | undefined +> { + /** + * @throws {SyntaxError} Argument `message` must be syntactically valid. + * @see {@link https://formatjs.io/docs/core-concepts/icu-syntax/} + * @throws {RangeError} Locale identifiers provided to argument `locales` must be structurally valid. + * @see {@link https://tc39.es/ecma402/#sec-isstructurallyvalidlanguagetag} + */ + constructor( + message: string, + locales?: string | readonly string[] /* = MessageFormat.defaultLocale */, + ...hasMarkdown: undefined extends Markdown + ? [hasMarkdown?: Markdown] + : [hasMarkdown: Markdown] + ); + + /** + * @throws {RangeError | TypeError} + * @see {@link format} + */ + astFormat(...args: FormatArgs): ASTNode; + /** + * @throws {RangeError} Values provided to arguments with type date or time must be valid time values. + * @throws {TypeError} Values provided to arguments with type plural, select, or selectordinal must match one of their matches. + */ + format(...args: FormatArgs): Markdown extends true + ? (string | ReactElement)[] + : string; + getContext(values: Values): [ + { [Key in keyof Values]: Values[Key] | (Key & keyof MessageValues extends never ? never : number); }, + Record]> + ]; + /** + * @throws {RangeError | TypeError} + * @see {@link format} + */ + plainFormat(...args: FormatArgs): string; + + hasMarkdown: Markdown; + intlMessage: MessageFormat; + message: string; +} + +type RecordArgs = Record; +type TupleArgs = readonly [stringableArgs: string | number, hookArgs: string | number]; + +type GenericValue = Stringable | HookValue; +type HookValue = (result: ReactNode, key: State["key"]) => ReactNode; + +type FormatArgs + = unknown extends IsAny + ? [values?: RecordArgs] + : [Args] extends [never] + ? [] + : keyof MessageValues extends never + ? [] + : unknown extends IsDomainFinite> + ? [values: MessageValues] + : [values: never]; + +type MessageValues = UnionToIntersection< + Args extends string | number + ? Record + : Args extends TupleArgs + ? Record & Record + : Required> +>; + +/** @todo Add types for every type of ASTNode. */ +export interface ASTNode extends Record { + type: Type; +} + +// Original name: AST_KEY +/** @todo There may be more undocumented types. */ +export enum ASTNodeType { + ATTACHMENT_LINK = "attachmentLink", + AUTOLINK = "autolink", + BLOCK_QUOTE = "blockQuote", + LINE_BREAK = "br", + CHANNEL = "channel", + CHANNEL_MENTION = "channelMention", + CODE_BLOCK = "codeBlock", + COMMAND_MENTION = "commandMention", + CUSTOM_EMOJI = "customEmoji", + ITALICS = "em", + EMOJI = "emoji", + ESCAPE = "escape", + GUILD = "guild", + HEADING = "heading", + HIGHLIGHT = "highlight", + HOOK = "hook", // Undocumented + IMAGE = "image", + INLINE_CODE = "inlineCode", + LINK = "link", + LIST = "list", + MENTION = "mention", + NEWLINE = "newline", + PARAGRAPH = "paragraph", + ROLE_MENTION = "roleMention", + STRIKETHROUGH = "s", + SOUNDBOARD = "soundboard", + SPOILER = "spoiler", + STATIC_ROUTE_LINK = "staticRouteLink", + STRONG = "strong", + SUBTEXT = "subtext", + TEXT = "text", + TIMESTAMP = "timestamp", + UNDERLINE = "u", + URL = "url", +} diff --git a/packages/discord-types/src/i18n/I18N.ts b/packages/discord-types/src/i18n/I18N.ts new file mode 100644 index 000000000..d9df86bab --- /dev/null +++ b/packages/discord-types/src/i18n/I18N.ts @@ -0,0 +1,89 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { EventEmitter } from "events"; + +import type { Nullish } from "../internal"; +import type { FormattedMessage } from "./FormattedMessage"; +import type { I18NMessages } from "./I18NMessages"; +import type { Provider, ProviderParsedMessagesGetter } from "./Provider"; +import type { UpdateRulesSetter } from "./utils"; + +export declare class I18N< + Messages extends Record = I18NMessages, + Async extends boolean = boolean +> extends EventEmitter { + constructor(options: { + getLanguages: () => I18NLanguage[]; + getMessages: I18NMessagesGetter; + initialLocale?: string | Nullish /* = this.getDefaultLocale() */; + }); + + /** + * @throws {Error} If argument `defaultMessages` is omitted, the messages for the given locale must be loaded. + */ + _applyMessagesForLocale( + messages: Record, + locale: string, + defaultMessages?: Record /* = this._findMessages() */ + ): void; + _fetchMessages(locale: string): ReturnType>; + /** + * @throws {Error} The messages for the given locale must be loaded. + */ + _findMessages(locale: string): Record; + _loadMessagesForLocale(locale: string): void; + getAvailableLocales(): I18NLocale[]; + getDefaultLocale(): string; + getLanguages(): I18NLanguage[]; + getLocale(): string; + getLocaleInfo(): I18NLanguage; + setLocale(locale: string): void; + setUpdateRules(...args: Parameters): void; + updateMessagesForExperiment( + locale: string, + updater: (messages: Record) => Record + ): void; + + _chosenLocale: string; + _getMessages: I18NMessagesGetter; + _getParsedMessages: ProviderParsedMessagesGetter; + _handleNewListener: (eventType: string | number) => void; + _languages: I18NLanguage[]; + _provider: Provider; + _requestedLocale: string | undefined; + initialLanguageLoad: Promise; + loadPromise: Promise; + /** + * Values will never be undefined. + * @see {@link https://github.com/microsoft/TypeScript/issues/47594} + */ + Messages: I18NMessages & Record; + resolveLanguageLoaded: () => void; +} + +export type I18NMessagesGetter< + MessagesKeys extends PropertyKey = PropertyKey, + Async extends boolean = boolean +> = (locale: string) => Async extends true + ? Promise> + : Record; + +export interface I18NLanguage { + code: string; + enabled: boolean; + enabledAPI?: boolean; + englishName: string; + name: string; + postgresLang: string; +} + +export interface I18NLocale { + localizedName: string; + name: string; + /** Locale identifier */ + value: string; +} diff --git a/packages/discord-types/src/i18n/I18NMessages.ts b/packages/discord-types/src/i18n/I18NMessages.ts new file mode 100644 index 000000000..4dcf9993d --- /dev/null +++ b/packages/discord-types/src/i18n/I18NMessages.ts @@ -0,0 +1,164 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { OmitIndexSignature } from "../internal"; +import type { FormattedMessage as FM } from "./FormattedMessage"; + +/* +function generateI18NMessages() { + "use strict"; + + const hookRule = (() => { + let key; + return Vencord.Webpack.find(m => { + for (const k in m) + if (typeof m[k]?.hook?.react === "function") { + key = k; + return true; + } + })[key].hook; + })(); + const origHookRuleParse = hookRule.parse; + let hookArgs; + hookRule.parse = (...args) => { + hookArgs.push(args[0][2]); + return origHookRuleParse.apply(hookRule, args); + }; + + const data = {}; + try { + const rawMessages = Vencord.Webpack.find(m => typeof m.DISCORD === "string"); + for (const key in rawMessages) { + const message = Vencord.Webpack.Common.i18n.Messages[key]; + const messageData = data[key] = {}; + + if (typeof message === "string") + continue; + + messageData.formattedMessage = true; + messageData.hasMarkdown = message.hasMarkdown; + + const values = {}; + const stringableArgs = []; + while (true) { + try { + hookArgs = []; + message.format(values); + break; + } catch (error) { + if (typeof error?.message === "string") { + if (/^A value must be provided for: \S+$/.test(error.message)) { + const arg = error.message.match(/\S+$/)[0]; + stringableArgs.push(arg); + // Use value 1 to avoid range and type errors + values[arg] = 1; + continue; + } + if (/^[$A-Z_a-z][$\w]*\.render is not a function$/.test(error.message)) + continue; + } + // Return if an unexpected error is encountered to prevent an infinite loop + console.error(` + Unexpected error caused by value provided to argument in {'${ + [stringableArgs.at(-1), ...new Set(hookArgs)].filter(Boolean).join("', '") + }'} of message '${key}':\n`, + error + ); + console.log(message); + return; + } finally { + for (const k of hookArgs) + values[k] = () => null; + } + } + messageData.stringableArgs = stringableArgs; + // FormattedMessages can use the same hook more than once + messageData.hookArgs = [...new Set(hookArgs)]; + } + } finally { + hookRule.parse = origHookRuleParse; + } + + function compareCaseInsensitive(a, b) { + const x = a.toLowerCase(); + const y = b.toLowerCase(); + return x < y ? -1 : x > y ? 1 : 0; + } + + const sortedData = Object.entries(data).sort(([a], [b]) => compareCaseInsensitive(a, b)); + + // https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar#prod-IdentifierName + const identifierNameRE = /^[\p{IDS}$_][\p{IDC}$]*$/u; + + const toSortedUnion = args => args.sort(compareCaseInsensitive).map(JSON.stringify).join(" | "); + + const formattedData = sortedData.map(([key, messageData]) => + `${identifierNameRE.test(key) ? key : JSON.stringify(key)}: ${ + messageData.formattedMessage + ? `FM<${ + messageData.stringableArgs.length > 0 + ? messageData.hookArgs.length > 0 + ? `[${toSortedUnion(messageData.stringableArgs)}, ${toSortedUnion(messageData.hookArgs)}]` + : toSortedUnion(messageData.stringableArgs) + : messageData.hookArgs.length > 0 + ? `[never, ${toSortedUnion(messageData.hookArgs)}]` + : "never" + }, ${messageData.hasMarkdown}>` + : "string" + };`); + console.log("Message count: " + formattedData.length); + + return `{ ${formattedData.join(" ")} }`; +} +*/ + +/* +function mergeI18NMessages(oldMessages, newMessages) { + "use strict"; + + const messageEntryRE = /(?<= )[^ ].*?: (?:FM<[^>]+>|string);/g; + const messageKeyRE = /(?:^[^"]|^[^"].*[^"]|(?<=^").*(?="))(?="?: (?:FM<[^>]+>|string);$)/; + + const oldMessageEntries = oldMessages.match(messageEntryRE); + console.log("Old message count: " + oldMessageEntries.length); + const newMessageEntries = newMessages.match(messageEntryRE); + console.log("New message count: " + newMessageEntries.length); + + const uniqueOldMessageEntries = oldMessageEntries.filter(oldEntry => { + const [oldKey] = oldEntry.match(messageKeyRE); + return !newMessageEntries.some(newEntry => oldKey === newEntry.match(messageKeyRE)[0]); + }); + console.log("Unique old message count: " + uniqueOldMessageEntries.length); + console.log("Unique new message count: " + (newMessageEntries.length - oldMessageEntries.length + uniqueOldMessageEntries.length)); + + const mergedMessageEntries = [...uniqueOldMessageEntries, ...newMessageEntries]; + console.log("Merged message count: " + mergedMessageEntries.length); + + const sortedMessageEntries = mergedMessageEntries.sort((a, b) => { + const x = a.match(messageKeyRE)[0].toLowerCase(); + const y = b.match(messageKeyRE)[0].toLowerCase(); + return x < y ? -1 : x > y ? 1 : 0; + }); + return `{ ${sortedMessageEntries.join(" ")} }`; +} +*/ + +export type I18NMessages = Omit & ValidOverrides; + +type ValidOverrides = { + [Key in keyof OmitIndexSignature as I18NMessagesOverride[Key] extends FM | string + ? Key + : never + ]: I18NMessagesOverride[Key]; +}; + +/** + * Augment this interface to override properties of {@link I18NMessages}. + * @see https://typescriptlang.org/docs/handbook/declaration-merging#module-augmentation + */ +export interface I18NMessagesOverride extends Record {} + +interface DefaultI18NMessages { _AUTH_EXPIRED_SUGGESTION: string; _AUTH_IP_AUTH_SUCCEEDED_SUGGESTION: string; _AUTH_VERFICATION_EXPIRED_SUGGESTION: string; _BROWSER_HANDOFF_SUCCESS_BODY: string; _CONNECTION_LOGIN_WITH: string; _LOGIN: string; _LOGIN_STAGE: string; _MFA_SMS_CONFIRM_REMOVE_BODY: string; _NUF_BODY_MOBILE: string; _OVERLAY_MOBILE_UNAUTHED: string; _RETURN_TO_LOGIN: string; _TWO_FA_LOGIN_FOOTER: string; _TWO_FA_LOGIN_LABEL: string; A11Y_ANDROID_DISMISS_CONTEXT_MENU_LABEL: string; A11Y_ANDROID_POPUP_WINDOW_ANNOUNCEMENT: string; A11Y_ANNOUNCEMENT_AVATAR_CHANGED: string; A11Y_ANNOUNCEMENT_AVATAR_NONE: string; A11Y_ANNOUNCEMENT_CHANNEL_CREATED: FM<"name", false>; A11Y_ANNOUNCEMENT_CHANNEL_CREATED_FAILED: string; A11Y_ANNOUNCEMENT_CHANNEL_SETTINGS_UPDATED: string; A11Y_ANNOUNCEMENT_CUSTOM_STATUS_CHANGED: string; A11Y_ANNOUNCEMENT_CUSTOM_STATUS_DELETED: string; A11Y_ANNOUNCEMENT_DM_CLOSED: string; A11Y_ANNOUNCEMENT_DM_CLOSED_FAILED: string; A11Y_ANNOUNCEMENT_FRIEND_ACCEPT_REQUEST: string; A11Y_ANNOUNCEMENT_FRIEND_CANCEL_REQUEST: string; A11Y_ANNOUNCEMENT_FRIEND_REMOVED: string; A11Y_ANNOUNCEMENT_GENERIC_FAIL: string; A11Y_ANNOUNCEMENT_MESSAGE_DELETED: string; A11Y_ANNOUNCEMENT_MESSAGE_EDITED: string; A11Y_ANNOUNCEMENT_MESSAGE_EDITED_AUTOMOD_BLOCKED: string; A11Y_ANNOUNCEMENT_MESSAGE_EDITED_FAILED: string; A11Y_ANNOUNCEMENT_STATUS_CHANGED: FM<"statusLabel", false>; A11Y_ANNOUNCEMENT_USER_ADDED_TO_GROUP_DM: string; A11Y_ANNOUNCEMENT_USER_ADDED_TO_GROUP_DM_FAILED: string; A11Y_ANNOUNCEMENT_USER_UNBLOCKED: string; A11Y_ANNOUNCEMENT_VOICE_CHANNEL_EFFECTS_DOUBLE: FM<"emojiNames" | "firstUsername" | "secondUsername", false>; A11Y_ANNOUNCEMENT_VOICE_CHANNEL_EFFECTS_MULTIPLE: FM<"count" | "emojiNames" | "firstUsername" | "secondUsername", false>; A11Y_ANNOUNCEMENT_VOICE_CHANNEL_EFFECTS_SINGLE: FM<"emojiNames" | "firstUsername", false>; A11Y_CHECKBOX_CHECKED: string; A11Y_CHECKBOX_UNCHECKED: string; A11Y_DISMISS_ALERT_MODAL: string; A11Y_IOS_DISMISS_CONTEXT_MENU_LABEL: string; A11Y_LOADING_FINISHED: string; A11Y_LOADING_STARTED: string; A11Y_MOBILE_HEADER_BUTTON_HINT: string; A11Y_NAVIGATE_TO_SETTINGS: string; A11Y_ROLE_CHECKBOX: string; A11Y_ROLE_IMAGE_BUTTON: string; A11Y_ROLE_RADIO_BUTTON: string; A11Y_ROLE_SWITCH: string; A11Y_ROLE_VIDEO_BUTTON: string; ABOUT: string; ABOUT_THIS_APP: string; ACCEPT: string; ACCEPT_DM_HEADER: string; ACCEPT_DM_SUBTEXT: string; ACCEPT_FRIEND_REQUEST: string; ACCEPT_INVITE_MODAL_BUTTON: string; ACCEPT_INVITE_MODAL_BUTTON_WITH_USERNAME: FM<[never, "usernameHook"], true>; ACCEPT_REQUEST_BUTTON_AFTER: string; ACCEPT_SPAM_DM_HEADER: string; ACCEPT_SPAM_DM_SUBTEXT: string; ACCEPT_SPAM_DM_SUBTEXT_MOBILE: string; ACCESSIBILITY: string; ACCESSIBILITY_DARK_SIDEBAR: string; ACCESSIBILITY_EXAMPLE_BUTTON_LABEL: string; ACCESSIBILITY_FONT_SCALE_CLASSIC_HINT: string; ACCESSIBILITY_FONT_SCALE_CLASSIC_LABEL: string; ACCESSIBILITY_FONT_SCALING_LABEL: string; ACCESSIBILITY_FONT_SCALING_USE_APP: string; ACCESSIBILITY_FONT_SCALING_USE_OS: string; ACCESSIBILITY_FORCED_COLORS_GOTO_SETTINGS: string; ACCESSIBILITY_FORCED_COLORS_MODAL_BODY: string; ACCESSIBILITY_FORCED_COLORS_MODAL_HEADER: string; ACCESSIBILITY_FORCED_COLORS_MODAL_LEARN_MORE: FM<"helpCenterLink", true>; ACCESSIBILITY_LOADING_TIP_1: string; ACCESSIBILITY_LOADING_TIP_10: FM<[never, "F6Hook" | "tabHook"], true>; ACCESSIBILITY_LOADING_TIP_2: string; ACCESSIBILITY_LOADING_TIP_3: string; ACCESSIBILITY_LOADING_TIP_4: string; ACCESSIBILITY_LOADING_TIP_5: string; ACCESSIBILITY_LOADING_TIP_6: FM<[never, "tabHook"], true>; ACCESSIBILITY_LOADING_TIP_7: string; ACCESSIBILITY_LOADING_TIP_8: string; ACCESSIBILITY_LOADING_TIP_9: string; ACCESSIBILITY_MESSAGE_GROUP_SPACING: string; ACCESSIBILITY_PREFERS_REDUCED_MOTION: string; ACCESSIBILITY_PREFERS_REDUCED_MOTION_AUTO: string; ACCESSIBILITY_PREFERS_REDUCED_MOTION_AUTO_MOBILE: string; ACCESSIBILITY_PREFERS_REDUCED_MOTION_DESCRIPTION: FM<"helpdeskArticle", true>; ACCESSIBILITY_PREFERS_REDUCED_MOTION_ENABLE: string; ACCESSIBILITY_REDUCED_MOTION_SETTINGS_OVERRIDE: FM; ACCESSIBILITY_SETTINGS_ALWAYS_SHOW_LINK_DECORATIONS_LABEL: string; ACCESSIBILITY_SETTINGS_ALWAYS_SHOW_LINK_DECORATIONS_NOTE: string; ACCESSIBILITY_SETTINGS_APPEARANCE_LINK: FM; ACCESSIBILITY_SETTINGS_CONTRAST: string; ACCESSIBILITY_SETTINGS_CONTRAST_MOBILE_DESCRIPTION: string; ACCESSIBILITY_SETTINGS_INCREASE_CONTRAST: string; ACCESSIBILITY_SETTINGS_PROFILE_COLORS_TITLE: string; ACCESSIBILITY_SETTINGS_PROFILE_THEMES_DESCRIPTION: string; ACCESSIBILITY_SETTINGS_PROFILE_THEMES_NOTE: FM; ACCESSIBILITY_SETTINGS_REDUCE_CONTRAST: string; ACCESSIBILITY_SETTINGS_REDUCE_SATURATION: string; ACCESSIBILITY_SETTINGS_ROLE_STYLE_DESCRIPTION: string; ACCESSIBILITY_SETTINGS_ROLE_STYLE_DOT_LABEL: string; ACCESSIBILITY_SETTINGS_ROLE_STYLE_HIDDEN_LABEL: string; ACCESSIBILITY_SETTINGS_ROLE_STYLE_LEARN_MORE: FM<"learnMoreLink", true>; ACCESSIBILITY_SETTINGS_ROLE_STYLE_TITLE: string; ACCESSIBILITY_SETTINGS_ROLE_STYLE_USERNAME_LABEL: string; ACCESSIBILITY_SETTINGS_SATURATION_CUSTOM_COLORS_DESCRIPTION: string; ACCESSIBILITY_SETTINGS_SATURATION_CUSTOM_COLORS_LABEL: string; ACCESSIBILITY_SETTINGS_SATURATION_DESCRIPTION: string; ACCESSIBILITY_SETTINGS_SATURATION_LINK_PREVIEW_MESSAGE: FM<"previewLink", false>; ACCESSIBILITY_SETTINGS_SATURATION_PREVIEW_MESSAGE: string; ACCESSIBILITY_SETTINGS_SATURATION_TITLE: string; ACCESSIBILITY_SETTINGS_SYNC_FORCED_COLORS_DESCRIPTION: FM<"learnMoreLink", true>; ACCESSIBILITY_SETTINGS_SYNC_FORCED_COLORS_DESCRIPTION_WITH_FEEDBACK: FM<"learnMoreLink" | "shareFeedbackLink", true>; ACCESSIBILITY_SETTINGS_SYNC_FORCED_COLORS_LABEL: string; ACCESSIBILITY_SETTINGS_TAGS_LABEL: string; ACCESSIBILITY_SETTINGS_TAGS_TITLE: string; ACCESSIBILITY_SETTINGS_TTS_RATE_FASTER: string; ACCESSIBILITY_SETTINGS_TTS_RATE_LABEL: string; ACCESSIBILITY_SETTINGS_TTS_RATE_PREVIEW: string; ACCESSIBILITY_SETTINGS_TTS_RATE_SLOWER: string; ACCESSIBILITY_SETTINGS_TTS_RATE_TEST: string; ACCESSIBILITY_ZOOM_LEVEL_LABEL: string; ACCESSIBILITY_ZOOM_LEVEL_VALUE_LABEL: FM<"value", false>; ACCOUNT: string; ACCOUNT_A11Y_LABEL: string; ACCOUNT_DISABLED_DESCRIPTION: string; ACCOUNT_DISABLED_TITLE: string; ACCOUNT_MANAGEMENT: string; ACCOUNT_SCHEDULED_FOR_DELETION_CANCEL: FM; ACCOUNT_SCHEDULED_FOR_DELETION_CANCEL_MOBILE: string; ACCOUNT_SCHEDULED_FOR_DELETION_DESCRIPTION: string; ACCOUNT_SCHEDULED_FOR_DELETION_TITLE: string; ACCOUNT_SETTINGS: string; ACCOUNT_SPEAKING_WHILE_MUTED: string; ACKNOWLEDGEMENTS: string; ACTION_MAY_TAKE_A_MOMENT: string; ACTION_NEEDED: string; ACTIONS: string; ACTIVATE_DEVICE_BODY: string; ACTIVATE_DEVICE_ERROR_BAD_CODE: string; ACTIVATE_DEVICE_ERROR_BODY: string; ACTIVATE_DEVICE_ERROR_RATE_LIMIT: string; ACTIVATE_DEVICE_ERROR_TITLE: string; ACTIVATE_DEVICE_ERROR_UNKNOWN: string; ACTIVATE_DEVICE_INPUT_PLACEHOLDER: FM<"number", false>; ACTIVATE_DEVICE_LINK_ERROR_TITLE: string; ACTIVATE_DEVICE_SUCCESS_TITLE: string; ACTIVATE_DEVICE_SUCCESS_TWO_WAY_BODY: string; ACTIVATE_DEVICE_TITLE: string; ACTIVE_CHANNELS_MANY_MESSAGES: string; ACTIVE_FORUM_POST_COUNT: FM<"count", false>; ACTIVE_NOW: string; ACTIVE_ON_MOBILE: string; ACTIVE_THREADS: string; ACTIVE_THREADS_POPOUT_HEADER: string; ACTIVE_THREADS_POPOUT_HEADER_FORUM: string; ACTIVE_THREADS_POPOUT_LINK: string; ACTIVE_THREADS_UPSELL_CONTENT: string; ACTIVE_THREADS_UPSELL_HEADER: string; ACTIVITIES_EARLY_USER_COACH_MARK_BODY: string; ACTIVITIES_EARLY_USER_COACH_MARK_HEADER: string; ACTIVITIES_EXPERIMENT_SUNSET_ANCHOR: string; ACTIVITIES_EXPERIMENT_SUNSET_BODY: string; ACTIVITIES_EXPERIMENT_SUNSET_HEADER: string; ACTIVITIES_GENERIC_LAUNCH_FAILURE_DIALOG_BODY: string; ACTIVITIES_SHARE_LOGS: string; ACTIVITY: string; ACTIVITY_CARD_GUILD_MEMBERS: FM<"count", false>; ACTIVITY_CARD_LIVE_STAGE_LISTENERS: FM<"listener_count" | "speaker_name", false>; ACTIVITY_CARD_LIVE_STAGE_LISTENERS_NO_SPEAKER: FM<"listener_count", false>; ACTIVITY_CARD_LIVE_STAGE_LISTENING: FM<"name", false>; ACTIVITY_CARD_LIVE_STAGE_LISTENING_MANY: FM<"count" | "name", false>; ACTIVITY_CARD_LIVE_STAGE_LISTENING_TWO: FM<"name1" | "name2", false>; ACTIVITY_CARD_LIVE_STAGE_MANY_FRIENDS: FM<"count" | "name", false>; ACTIVITY_CARD_LIVE_STAGE_MANY_PARTICIPANTS: FM<"count" | "name", false>; ACTIVITY_CARD_LIVE_STAGE_ON_STAGE: FM<"name", false>; ACTIVITY_CARD_LIVE_STAGE_ON_STAGE_MANY: FM<"count" | "name", false>; ACTIVITY_CARD_LIVE_STAGE_ON_STAGE_TWO: FM<"name1" | "name2", false>; ACTIVITY_CARD_LIVE_STAGE_SHARING: FM<"name", false>; ACTIVITY_CARD_LIVE_STAGE_SHARING_MANY: FM<"count" | "name", false>; ACTIVITY_CARD_LIVE_STAGE_SHARING_TWO: FM<"name1" | "name2", false>; ACTIVITY_CARD_LIVE_STAGE_SPEAKING: FM<"name", false>; ACTIVITY_CARD_LIVE_STAGE_WATCHING: FM<"name", false>; ACTIVITY_CARD_LIVE_STAGE_WATCHING_MANY: FM<"count" | "name", false>; ACTIVITY_CARD_LIVE_STAGE_WATCHING_TWO: FM<"name1" | "name2", false>; ACTIVITY_FEED_CARD_GDPR_BUTTON_YES: string; ACTIVITY_FEED_NONE_PLAYING_BODY: string; ACTIVITY_FEED_NONE_PLAYING_HEADER: string; ACTIVITY_FEED_NOW_PLAYING_ACTION_GO_TO_SERVER: string; ACTIVITY_FEED_NOW_PLAYING_ACTION_JOIN_CHANNEL: string; ACTIVITY_FEED_NOW_PLAYING_ACTION_LISTEN_ALONG: string; ACTIVITY_FEED_NOW_PLAYING_ACTION_PLAY_ON_SPOTIFY: string; ACTIVITY_FEED_NOW_PLAYING_HEADER_TWO_KNOWN: FM<"extras" | "user1" | "user2", true>; ACTIVITY_FEED_NOW_PLAYING_HEADER_TWO_KNOWN_ALT: FM<"extras" | "user1" | "user2", false>; ACTIVITY_FEED_NOW_PLAYING_HEADER_TWO_KNOWN_ONLY: FM<"user1" | "user2", true>; ACTIVITY_FEED_NOW_PLAYING_HEADER_TWO_KNOWN_ONLY_ALT: FM<"user1" | "user2", false>; ACTIVITY_FEED_NOW_PLAYING_IN_A_VOICE_CHANNEL: string; ACTIVITY_FEED_NOW_PLAYING_LISTENING: FM<"name", false>; ACTIVITY_FEED_NOW_PLAYING_MULTIPLE_GAMES: string; ACTIVITY_FEED_NOW_PLAYING_SPOTIFY: string; ACTIVITY_FEED_NOW_PLAYING_STAGE_CHANNEL: string; ACTIVITY_FEED_NOW_PLAYING_WATCHING: string; ACTIVITY_FEED_NOW_PLAYING_XBOX: string; ACTIVITY_FEED_NOW_STREAMING_TWITCH: string; ACTIVITY_FEED_OTHER_MEMBER_LIST_HEADER: string; ACTIVITY_FEED_POPOUT_APPLICATION_LAUNCHING: FM<"name", false>; ACTIVITY_FEED_POPOUT_APPLICATION_RUNNING: FM<"name", false>; ACTIVITY_FEED_SINGLE_MEMBER_LIST_HEADER: FM<"memberCount", false>; ACTIVITY_FEED_USER_PLAYING_FOR_DAYS: FM<"name" | "time", false>; ACTIVITY_FEED_USER_PLAYING_FOR_HOURS: FM<"name" | "time", false>; ACTIVITY_FEED_USER_PLAYING_FOR_MINUTES: FM<"name" | "time", false>; ACTIVITY_FEED_USER_PLAYING_JUST_STARTED: FM<"name", false>; ACTIVITY_HARDWARE_ACCELERATION_BETTER_BODY: FM<"applicationName", false>; ACTIVITY_HARDWARE_ACCELERATION_BETTER_TITLE: string; ACTIVITY_HARDWARE_ACCELERATION_NO_THANKS: string; ACTIVITY_HARDWARE_ACCELERATION_TURN_IT_ON: string; ACTIVITY_INVITE_MODAL_HEADER: FM<"name", false>; ACTIVITY_INVITE_MODAL_INVITE: string; ACTIVITY_INVITE_MODAL_SEARCH_PLACEHOLDER: string; ACTIVITY_INVITE_MODAL_SENT: string; ACTIVITY_INVITE_PRIVATE: string; ACTIVITY_PANEL_GO_LIVE: string; ACTIVITY_PANEL_GO_LIVE_STREAM_GAME: FM<"game", false>; ACTIVITY_PANEL_GO_LIVE_TOOLTIP_NO_PERMISSION_IN_GUILD: string; ACTIVITY_PANEL_GO_LIVE_TOOLTIP_NO_PERMISSION_IN_VOICE: string; ACTIVITY_PANEL_GO_LIVE_TOOLTIP_NOT_IN_GUILD: string; ACTIVITY_PARTY_PRIVACY: string; ACTIVITY_PARTY_PRIVACY_FRIENDS: string; ACTIVITY_PARTY_PRIVACY_FRIENDS_HELP: string; ACTIVITY_PARTY_PRIVACY_VOICE_CHANNEL: string; ACTIVITY_PARTY_PRIVACY_VOICE_CHANNEL_HELP: string; ACTIVITY_PRIVACY: string; ACTIVITY_REACTION_IMAGE_ALT_TEXT_BASE: FM<"activity" | "username", false>; ACTIVITY_REACTION_IMAGE_ALT_TEXT_LISTENING: FM<"activity" | "username", false>; ACTIVITY_REACTION_IMAGE_ALT_TEXT_PLAYING: FM<"activity" | "username", false>; ACTIVITY_REACTION_IMAGE_ALT_TEXT_SPOTIFY: FM<"artist" | "song" | "username", false>; ACTIVITY_REACTION_IMAGE_ALT_TEXT_STREAMING: FM<"activity" | "username", false>; ACTIVITY_REACTION_IMAGE_ALT_TEXT_TOP_ARTIST: FM<"artist" | "username", false>; ACTIVITY_REACTION_IMAGE_ALT_TEXT_WATCHING: FM<"activity" | "username", false>; ACTIVITY_REACTION_REPLY_TITLE: FM<"activity", false>; ACTIVITY_REPORT_ACTIVITY_BODY: string; ACTIVITY_REPORT_ACTIVITY_CONFUSING: string; ACTIVITY_REPORT_ACTIVITY_END_CONFUSING: string; ACTIVITY_REPORT_ACTIVITY_END_FAILED_LOAD: string; ACTIVITY_REPORT_ACTIVITY_END_LAGGING: string; ACTIVITY_REPORT_ACTIVITY_END_NOT_FUN: string; ACTIVITY_REPORT_ACTIVITY_FAILED_LOAD: string; ACTIVITY_REPORT_ACTIVITY_LAGGING: string; ACTIVITY_REPORT_ACTIVITY_NOT_FUN: string; ACTIVITY_REPORT_POST_ACTIVITY_HEADER: FM<"applicationName", false>; ACTIVITY_REPORT_POST_ACTIVITY_PROBLEM_TITLE: string; ACTIVITY_REPORTED_BODY: string; ACTIVITY_REPORTED_POSITIVE: string; ACTIVITY_RESTRICTION_DEFAULT: string; ACTIVITY_RESTRICTION_DEFAULT_NOTE: FM<"helpdeskArticle", true>; ACTIVITY_RESTRICTION_MODAL_DESC: string; ACTIVITY_SETTINGS: string; ACTIVITY_SHELF_ITEM_ACTIONS_MENU_LABEL: string; ACTIVITY_STATUS: string; ADD: string; ADD_A_COMMENT_OPTIONAL: string; ADD_A_FRIEND: string; ADD_A_MEMBER: string; ADD_A_ROLE: string; ADD_A_SERVER: string; ADD_A_SERVER_MOBILE: string; ADD_ATTACHMENT_FORUM_POST: string; ADD_BURST_REACTION: string; ADD_BY_ID_BODY: string; ADD_BY_ID_INPUT_ERROR: string; ADD_BY_ID_INPUT_HEADER: string; ADD_BY_ID_TITLE: string; ADD_BY_USERNAME: string; ADD_CHANNEL_OR_CATEGORY: string; ADD_CHANNEL_TO_OVERRIDE: string; ADD_EMAIL: string; ADD_EMAIL_BANNER_TITLE: string; ADD_EMAIL_DESCRIPTION: string; ADD_EMAIL_SHORT: string; ADD_FAVORITE: string; ADD_FRIEND: string; ADD_FRIEND_ADD_MANUALLY: string; ADD_FRIEND_BUTTON: string; ADD_FRIEND_BUTTON_AFTER: string; ADD_FRIEND_CONFIRMATION: FM<"name", true>; ADD_FRIEND_DESCRIPTION: string; ADD_FRIEND_ERROR_ALREADY_FRIENDS: string; ADD_FRIEND_ERROR_DISCORD_TAG_USERNAME: string; ADD_FRIEND_ERROR_INVALID_DISCORD_TAG: FM<"discordTag", true>; ADD_FRIEND_ERROR_INVALID_DISCORD_TAG_A11Y: FM<"discordTag", false>; ADD_FRIEND_ERROR_NUMBERS_ONLY: string; ADD_FRIEND_ERROR_OTHER: string; ADD_FRIEND_ERROR_TOO_MANY_FRIENDS: string; ADD_FRIEND_ERROR_USERNAME_ONLY: FM<"username", false>; ADD_FRIEND_EXPLORE_PUBLIC_SERVERS: string; ADD_FRIEND_FRIEND: string; ADD_FRIEND_INPUT_HINT: string; ADD_FRIEND_INVITE_LINK_SHARE_MESSAGE: FM<"link", false>; ADD_FRIEND_MAKE_FRIENDS: string; ADD_FRIEND_NEARBY_BODY: string; ADD_FRIEND_NEARBY_CONNECTION_ERROR: string; ADD_FRIEND_NEARBY_CONNECTION_ERROR_IOS: string; ADD_FRIEND_NEARBY_ENABLE: string; ADD_FRIEND_NEARBY_FOUND_BODY: string; ADD_FRIEND_NEARBY_FOUND_TITLE: string; ADD_FRIEND_NEARBY_GENERIC_ERROR: string; ADD_FRIEND_NEARBY_LEARN_MORE: FM<"helpdeskArticle", true>; ADD_FRIEND_NEARBY_STOPPED: string; ADD_FRIEND_NEARBY_TITLE: string; ADD_FRIEND_NICKNAME: string; ADD_FRIEND_OTHER_OPTIONS: string; ADD_FRIEND_PLACEHOLDER: string; ADD_FRIEND_STUDENT_HUB: string; ADD_FRIEND_SUCCESS: FM<"discordTag", true>; ADD_FRIENDS: string; ADD_KEYBIND: string; ADD_KEYBIND_WARNING: string; ADD_MORE_FRIENDS: string; ADD_NEW_CONNECTION: string; ADD_NOTE: string; ADD_OVERRIDE: string; ADD_REACTION: string; ADD_REACTION_NAMED: FM<"emojiName", false>; ADD_REACTIONS: string; ADD_REACTIONS_DESCRIPTION: string; ADD_ROLE_A11Y_LABEL: string; ADD_ROLE_PLACEHOLDER: string; ADD_TAG_FORUM_POST: string; ADD_TO_CALENDAR: string; ADD_TO_DICTIONARY: string; ADD_TO_GOOGLE_CALENDAR: string; ADD_TO_OUTLOOK: string; ADD_TO_YAHOO: string; ADDED: string; ADMINISTRATIVE: string; ADMINISTRATOR: string; ADMINISTRATOR_DESCRIPTION: string; ADVANCED_SETTINGS: string; ADVANCED_VOICE_ACTIVITY: string; AFFINITIES_MARKETING_HEADER_V2_1: FM<"username", false>; AFFINITIES_MARKETING_HEADER_V2_1_WITH_LINK: FM<"username", true>; AFFINITIES_MARKETING_HEADER_V2_2: FM<"otherUsername" | "username", false>; AFFINITIES_MARKETING_HEADER_V2_3: FM<"username", false>; AFK_SETTINGS: string; AGE_GATE_AGE_VERIFIED: string; AGE_GATE_AGE_VERIFIED_BODY: string; AGE_GATE_BODY: FM<"helpURL", true>; AGE_GATE_CONFIRM_BUTTON: string; AGE_GATE_CONFIRM_GO_BACK: string; AGE_GATE_CONFIRM_HEADER: FM<"age", false>; AGE_GATE_DATE_OF_BIRTH: string; AGE_GATE_DATE_OF_BIRTH_A11Y_HINT: string; AGE_GATE_DEEP_LINK_BODY: FM<"helpURL", true>; AGE_GATE_DOB_DAY: string; AGE_GATE_DOB_MONTH: string; AGE_GATE_DOB_YEAR: string; AGE_GATE_EXISTING_HEADER: string; AGE_GATE_FAILED_TO_UPDATE_BIRTHDAY: string; AGE_GATE_FAMILY_CENTER_BODY: string; AGE_GATE_FAMILY_CENTER_HEADER: string; AGE_GATE_GO_BACK: string; AGE_GATE_HEADER: string; AGE_GATE_INVALID_BIRTHDAY: string; AGE_GATE_NSFW_BODY: FM<"helpURL", true>; AGE_GATE_NSFW_DESCRIPTION: string; AGE_GATE_NSFW_UNDERAGE_BODY: FM<"helpURL", true>; AGE_GATE_NSFW_UNDERAGE_HEADER: string; AGE_GATE_SUBMIT: string; AGE_GATE_UNDERAGE_BACK_TO_LOGIN: string; AGE_GATE_UNDERAGE_BODY: FM<"helpURL" | "underageMessage", true>; AGE_GATE_UNDERAGE_BODY_DEFAULT_REG_MESSAGE: string; AGE_GATE_UNDERAGE_BODY_POST_REGISTER_MESSAGE: string; AGE_GATE_UNDERAGE_EXISTING_BODY_DELETION: FM; AGE_GATE_UNDERAGE_EXISTING_BODY_DELETION_WITH_DAYS: FM<"days", true>; AGE_GATE_UNDERAGE_EXISTING_HEADER: string; AGE_GATE_UNDERAGE_HEADER: string; AGE_GATE_VIEW_HELP_ARTICLE: string; AGE_GATE_YOUR_BIRTHDAY: string; AGGREGATE_PREMIUM_UPSELL_CTA: string; AGGREGATE_PREMIUM_UPSELL_HEADER_CUSTOM_PROFILES: string; AGGREGATE_PREMIUM_UPSELL_HEADER_EMOJI: string; AGGREGATE_PREMIUM_UPSELL_HEADER_HD_STREAMING: string; AGGREGATE_PREMIUM_UPSELL_HEADER_LARGER_FILE_UPLOAD: string; AGGREGATE_PREMIUM_UPSELL_LEARN_MORE_CTA: string; AGREE: string; AI_GENERATED_TOOLTIP: string; AKA: string; AKA_DISPLAY_NAME: FM<"displayName", false>; AKA_MORE_AVATARS_OVERFLOW: string; ALL_ACTIVE_THREADS: string; ALL_ALBUMS: string; ALL_CHANNELS: string; ALL_DONE: string; ALL_SERVERS: string; ALLOW: string; ALLOW_DIRECT_MESSAGES: string; ALLOW_DIRECT_MESSAGES_CAPTION: string; ALLOW_DIRECT_MESSAGES_HUB_CAPTION: string; ALLOW_HUB_DMS: string; ALLOW_MESSAGE_REQUESTS: string; ALLOW_MESSAGE_REQUESTS_CAPTION: string; ALLOW_SERVER_DMS: string; ALLOW_TTS_COMMAND: string; ALPHA: string; ALREADY_HAVE_ACCOUNT: string; AMOUNT: string; AND_MORE: string; ANDROID_DESIGNATE_OTHER_CHANNEL: string; ANDROID_WELCOME_MESSAGE_SUBTITLE_CHANNEL: FM<"channelName", false>; ANDROID_WELCOME_MESSAGE_TITLE_CHANNEL: FM<"channelName", false>; ANIMATE_EMOJI: string; ANIMATE_EMOJI_NOTE: string; ANIMATED_EMOJI: string; ANIMATED_EMOJI_DESCRIPTION_BULLETED: FM; ANIMATED_EMOJI_SIDEBAR_TITLE: string; ANNOUNCEMENT_EDIT_RATE_LIMIT: FM<"retryAfterMinutes", false>; ANNOUNCEMENT_GUILD_DESCRIPTION: string; ANNOUNCEMENT_GUILD_HERE_TO_HELP: string; ANNOUNCEMENT_GUILD_POPOUT_NAME: string; ANOTHER_PREMIUM_SUBSCRIPTION_LEGAL_DISCLAIMER_ANDROID: FM<"interval" | "paidURL" | "termsURL", true>; ANOTHER_PREMIUM_SUBSCRIPTION_LEGAL_DISCLAIMER_IOS: FM<"interval" | "paidURL" | "termsURL", true>; ANSWER: string; APP_DIRECTORY: string; APP_DIRECTORY_ACTIVITY_LABEL: string; APP_DIRECTORY_ALL_CATEGORY: string; APP_DIRECTORY_CATEGORY_BUTTON_A11Y_LABEL: FM<"categoryName", false>; APP_DIRECTORY_COACHMARK: string; APP_DIRECTORY_COACHMARK_HEADER: string; APP_DIRECTORY_CONFUSED_CLYDE_IMAGE_ALT: string; APP_DIRECTORY_CONNECTION_LABEL: string; APP_DIRECTORY_EMPTY_CATEGORY_SEARCH_HEADING: FM<"categoryName", false>; APP_DIRECTORY_EMPTY_CATEGORY_SEARCH_SUBHEADING: FM<[never, "viewAllHook"], true>; APP_DIRECTORY_EMPTY_SEARCH_HEADING: string; APP_DIRECTORY_EMPTY_SEARCH_SUBHEADING: string; APP_DIRECTORY_ERROR_BODY: string; APP_DIRECTORY_ERROR_HEADING: string; APP_DIRECTORY_FIXING_DABATOUILLE_IMAGE_ALT: string; APP_DIRECTORY_GALLERY_COLLECTION_VIEW_APP_CTA: string; APP_DIRECTORY_GUILD_COUNT: FM<"guildCount", false>; APP_DIRECTORY_GUILD_COUNT_PLUS_MUTUALS_TOOLTIP: FM<"appNames", false>; APP_DIRECTORY_GUILD_COUNT_WITH_MUTUALS: FM<"mutualGuildCount" | "nonMutualGuildCount", false>; APP_DIRECTORY_HERO_DABATOUILLE_IMAGE_ALT: string; APP_DIRECTORY_HERO_HEADING: string; APP_DIRECTORY_HOME_LEARN_MORE_BANNER_BODY: string; APP_DIRECTORY_HOME_LEARN_MORE_BANNER_CTA: string; APP_DIRECTORY_HOME_LEARN_MORE_BANNER_HEADING: string; APP_DIRECTORY_HOME_NEW_TO_APPS_BANNER_BODY: string; APP_DIRECTORY_HOME_NEW_TO_APPS_BANNER_CTA: string; APP_DIRECTORY_HOME_NEW_TO_APPS_BANNER_HEADING: string; APP_DIRECTORY_IPP_AUTOMATION: string; APP_DIRECTORY_IPP_CUSTOMIZATION: string; APP_DIRECTORY_IPP_FUN: string; APP_DIRECTORY_IPP_HEADER: string; APP_DIRECTORY_IPP_SECONDARY_HEADER: string; APP_DIRECTORY_JOIN_SERVER_LABEL: string; APP_DIRECTORY_LISTING_ADD_BUTTON: string; APP_DIRECTORY_LISTING_CARD_BUTTON_A11Y_LABEL: FM<"name", false>; APP_DIRECTORY_LISTING_VIEW_ALL_BUTTON: string; APP_DIRECTORY_MUSIC_BANNER_CONTENT: string; APP_DIRECTORY_MUSIC_BANNER_HEADER: string; APP_DIRECTORY_MUSIC_BANNER_TITLE: string; APP_DIRECTORY_MUSIC_CATEGORY: string; APP_DIRECTORY_MUSIC_FOOTER_CONTENT: string; APP_DIRECTORY_MUSIC_FOOTER_CTA: string; APP_DIRECTORY_MUSIC_FOOTER_HEADER: string; APP_DIRECTORY_MUTUAL_GUILD_COUNT: FM<"mutualGuildCount", false>; APP_DIRECTORY_PARTNER: string; APP_DIRECTORY_PROFILE_CATEGORIES_HEADING: string; APP_DIRECTORY_PROFILE_COMMANDS_HEADING: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_BASELINE: FM<"helpCenterUrl", true>; APP_DIRECTORY_PROFILE_DATA_ACCESS_GUILD_MEMBERS_BODY: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_GUILD_MEMBERS_HEADING: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_GUILD_PRESENCES_BODY: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_GUILD_PRESENCES_HEADING: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_HEADING: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_INTENTS_LIST_HEADING: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_MESSAGE_CONTENT_BODY: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_MESSAGE_CONTENT_HEADING: string; APP_DIRECTORY_PROFILE_DATA_ACCESS_PRIVACY_POLICY_V2: FM; APP_DIRECTORY_PROFILE_DESCRIPTION_HEADING: string; APP_DIRECTORY_PROFILE_EMBED_GUILD_COUNT: FM<"guildCount", false>; APP_DIRECTORY_PROFILE_EMBED_HEADER: string; APP_DIRECTORY_PROFILE_EMBED_INVALID_HEADER: string; APP_DIRECTORY_PROFILE_EMBED_INVALID_INFO_BODY: string; APP_DIRECTORY_PROFILE_EMBED_INVALID_INFO_TITLE: string; APP_DIRECTORY_PROFILE_EMBED_RESOLVING_HEADER: string; APP_DIRECTORY_PROFILE_EMPTY_HEADING: string; APP_DIRECTORY_PROFILE_IMAGE_CAROUSEL_ALT: FM<"index" | "name" | "totalImages", false>; APP_DIRECTORY_PROFILE_IMAGE_DEFAULT_ALT: string; APP_DIRECTORY_PROFILE_LANGUAGES_HEADING: string; APP_DIRECTORY_PROFILE_LINKS_HEADING: string; APP_DIRECTORY_PROFILE_PRIVACY_LINK: string; APP_DIRECTORY_PROFILE_RELATED_APPS_HEADING: string; APP_DIRECTORY_PROFILE_REQUIRED_PERMISSIONS_HEADING: string; APP_DIRECTORY_PROFILE_REQUIRED_PERMISSIONS_SUB_HEADING: string; APP_DIRECTORY_PROFILE_SERVER_HEADING: string; APP_DIRECTORY_PROFILE_SHARE_BUTTON: string; APP_DIRECTORY_PROFILE_SHOW_LESS: string; APP_DIRECTORY_PROFILE_SHOW_MORE: string; APP_DIRECTORY_PROFILE_TAB_GENERAL: string; APP_DIRECTORY_PROFILE_TAB_IMAGES: string; APP_DIRECTORY_PROFILE_TAB_PREMIUM: string; APP_DIRECTORY_PROFILE_TAB_PRIVACY: string; APP_DIRECTORY_PROFILE_TAB_STORE: string; APP_DIRECTORY_PROFILE_TERMS_LINK: string; APP_DIRECTORY_PROFILE_UTILITIES_A11Y_LABEL: string; APP_DIRECTORY_SEARCH_PLACEHOLDER: string; APP_DIRECTORY_SHORT_GUILD_COUNT: FM<"guildCount", false>; APP_DIRECTORY_SPOTIFY_DESCRIPTION: FM; APP_DIRECTORY_SPOTIFY_TITLE: string; APP_ICON_ANGRY: string; APP_ICON_BEANIE: string; APP_ICON_BLUSH: string; APP_ICON_BRAIN: string; APP_ICON_BRAND_DARK: string; APP_ICON_BRAND_INVERTED: string; APP_ICON_CAMO: string; APP_ICON_CHERRY_BLOSSOM: string; APP_ICON_CIRCUIT: string; APP_ICON_CLYDE_STEIN: string; APP_ICON_COACHMARK_BODY_NITRO: string; APP_ICON_COACHMARK_BODY_NON_NITRO: string; APP_ICON_COACHMARK_CTA: string; APP_ICON_COACHMARK_DISMISS: string; APP_ICON_COACHMARK_TITLE: string; APP_ICON_COLOR_WAVE: string; APP_ICON_CONTROLLER: string; APP_ICON_DEFAULT: string; APP_ICON_DRIP: string; APP_ICON_GALAXY: string; APP_ICON_GAMING: string; APP_ICON_HOLO_WAVES: string; APP_ICON_IN_RAINBOWS: string; APP_ICON_LIMITED_TIME: string; APP_ICON_LOGS_ERROR_MESSAGE_GENERIC: string; APP_ICON_MANGA: string; APP_ICON_MATTE_DARK: string; APP_ICON_MATTE_LIGHT: string; APP_ICON_MIDNIGHT_PRISM: string; APP_ICON_MISSING_NAME: string; APP_ICON_NEW_BADGE: string; APP_ICON_NEW_STYLES_BODY: string; APP_ICON_NEW_STYLES_CTA: string; APP_ICON_NEW_STYLES_HEADER: string; APP_ICON_PASTEL: string; APP_ICON_PIRATE: string; APP_ICON_PIRATE_1: string; APP_ICON_PIRATE_2: string; APP_ICON_PIRATE_3: string; APP_ICON_PIRATE_4: string; APP_ICON_PREVIEW_DESCRIPTION: string; APP_ICON_PREVIEW_DESCRIPTION_BETA: FM<[never, "betaHook"], true>; APP_ICON_PREVIEW_TITLE: string; APP_ICON_PRIDE: string; APP_ICON_SETTINGS_DESCRIPTION: string; APP_ICON_SETTINGS_TITLE: string; APP_ICON_SLIMY: string; APP_ICON_SUNSET: string; APP_ICON_UPSELL: string; APP_ICON_UPSELL_MODAL_BODY: string; APP_ICON_UPSELL_MODAL_TITLE: string; APP_ICON_Y2K: string; APP_ICON_ZOMBIE: string; APP_IMAGE_REC_MENU_ARIA_LABEL: string; APP_IMAGE_REC_MENU_CUSTOMIZE_LABEL: string; APP_IMAGE_REC_MENU_CUSTOMIZE_SUBTEXT: string; APP_IMAGE_REC_MENU_HEADER: string; APP_IMAGE_REC_MENU_SEND_LABEL: string; APP_IMAGE_REC_MENU_SEND_SUBTEXT: string; APP_INFORMATION: string; APP_LAUNCHER_ACTIVITY_ITEM_SELECTED_BUTTON_ARIA_LABEL: FM<"applicationName" | "buttonText", false>; APP_LAUNCHER_ACTIVITY_NOT_AVAILABLE_IN_THREAD: string; APP_LAUNCHER_ACTIVITY_NOT_AVAILABLE_ON_DEVICE: string; APP_LAUNCHER_ADS_DISCLOSURE: string; APP_LAUNCHER_APP_CARD_ARIA_LABEL: FM<"applicationDescription" | "applicationName", false>; APP_LAUNCHER_COMMAND_LIST_NO_COMMANDS_HERE: string; APP_LAUNCHER_COMMAND_LIST_SORT_A11Y_LABEL: string; APP_LAUNCHER_COMMAND_LIST_SORT_OPTION_POPULAR: string; APP_LAUNCHER_COMMAND_NO_PERMISSIONS_BODY: string; APP_LAUNCHER_COMMAND_NO_PERMISSIONS_TITLE: string; APP_LAUNCHER_COMMAND_OPTIONAL_OPTIONS_LIST_HEADER: string; APP_LAUNCHER_ENTRYPOINT_BUTTON_ARIA_LABEL: string; APP_LAUNCHER_GLOBAL_SEARCH_COACHMARK_DESCRIPTION: string; APP_LAUNCHER_GLOBAL_SEARCH_COACHMARK_TITLE: string; APP_LAUNCHER_HOME_APPS_IN_SERVER_HEADER: string; APP_LAUNCHER_HOME_EMPTY_STATE_ACTIVITIES_BODY: string; APP_LAUNCHER_HOME_EMPTY_STATE_SEARCH_SUGGEST_BODY: string; APP_LAUNCHER_HOME_IN_SERVER_HEADER: string; APP_LAUNCHER_HOME_LEARN_MORE_SECTION_BODY: string; APP_LAUNCHER_HOME_LEARN_MORE_SECTION_LEARN_MORE: string; APP_LAUNCHER_HOME_LEARN_MORE_SECTION_LEARN_MORE_ARIA_LABEL: FM<"sectionBody" | "sectionTitle", false>; APP_LAUNCHER_HOME_LEARN_MORE_SECTION_TITLE: string; APP_LAUNCHER_HOME_RECENT_APPS_HEADER: string; APP_LAUNCHER_HOME_RECENT_APPS_HEADER_ACTIVITIES: string; APP_LAUNCHER_HOME_RECENT_APPS_HEADER_APPS: string; APP_LAUNCHER_HOME_RECENT_COMMANDS_HEADER: string; APP_LAUNCHER_HOME_RECENT_COMMANDS_HEADER_COMMANDS: string; APP_LAUNCHER_HOME_RECENT_COMMANDS_HEADER_OPTION_APPS: string; APP_LAUNCHER_HOME_RECENT_COMMANDS_HEADER_OPTION_COMMANDS: string; APP_LAUNCHER_HOME_RECENT_VIEW_ALL: string; APP_LAUNCHER_HOME_RECOMMENDATIONS_HEADER: string; APP_LAUNCHER_HOME_SERVER_APPS_HEADER: string; APP_LAUNCHER_HOME_VOICE_ACTIIVTIES_HEADER: string; APP_LAUNCHER_IAP_DISCLOSURE: string; APP_LAUNCHER_NO_PERMISSIONS_STATE_BODY: string; APP_LAUNCHER_NO_REQUIRED_OPTIONS_CALLOUT: string; APP_LAUNCHER_ONBOARDING_ACTIVITIES_BANNER_BODY: FM<"activityName", false>; APP_LAUNCHER_ONBOARDING_APPS_BANNER_BODY: string; APP_LAUNCHER_ONBOARDING_BOTS_BANNER_BODY: FM<"firstApplicationName" | "secondApplicationName", false>; APP_LAUNCHER_PREVIOUSLY_EXECUTED_COMMAND_OPEN: string; APP_LAUNCHER_PROMOTED: string; APP_LAUNCHER_SEARCH_ACTIVITIES_PLACEHOLDER: string; APP_LAUNCHER_SEARCH_EMPTY_STATE_ACTIVITIES_BODY: string; APP_LAUNCHER_SEARCH_EMPTY_STATE_BODY_GENERIC: string; APP_LAUNCHER_SECTION_APPLICATION_DETAILS_ARIA_LABEL: FM<"applicationName", false>; APP_LAUNCHER_SECTION_APPLICATION_LAUNCHER_ARIA_LABEL: string; APP_LAUNCHER_SECTION_VIEW_MORE_ARIA_LABEL: FM<"sectionTitle", false>; APP_LAUNCHER_SEND_COMMAND_ARIA_LABEL: FM<"commandName", false>; APP_LAUNCHER_SHOW_LESS: string; APP_LAUNCHER_SHOW_MORE: string; APP_LAUNCHER_USE_THIS_APP_HEADER: string; APP_LAUNCHER_VIEW_ALL_ROW: string; APP_LAUNCHER_VIEW_LESS_ROW: string; APP_LAUNCHER_VIEW_MORE_ROW: string; APP_LAUNCHER_VIEW_MORE_ROW_ARIA_LABEL: FM<"title", false>; APP_NOT_OPENED: string; APP_OPENED_BODY: string; APP_OPENED_TITLE: string; APP_OPENING: string; APP_PERMISSION_CONNECT_DESC: string; APP_PERMISSION_CONNECT_LABEL: string; APP_SETTINGS: string; APP_TAG: string; APPEAL_INGESTION_AGE_VERIFICATION_LINK_TITLE: string; APPEAL_INGESTION_BREADCRUMBS_HEADER: string; APPEAL_INGESTION_FREE_TEXT_REASON_ACTION_SHEET_FOOTER: string; APPEAL_INGESTION_FREE_TEXT_REASON_ACTION_SHEET_PLACEHOLDER: string; APPEAL_INGESTION_FREE_TEXT_REASON_ACTION_SHEET_SUBHEADER: string; APPEAL_INGESTION_LEARN_MORE_LINK_TITLE: string; APPEAL_INGESTION_MODAL_COLLECT_SIGNAL_DIDNT_VIOLATE_POLICY: string; APPEAL_INGESTION_MODAL_COLLECT_SIGNAL_DISCLAIMER: FM; APPEAL_INGESTION_MODAL_COLLECT_SIGNAL_DONT_AGREE_PENALTY: string; APPEAL_INGESTION_MODAL_COLLECT_SIGNAL_SOMETHING_ELSE: string; APPEAL_INGESTION_MODAL_COLLECT_SIGNAL_SUBHEADER: string; APPEAL_INGESTION_MODAL_COLLECT_SIGNAL_TOO_STRICT_UNFAIR: string; APPEAL_INGESTION_MODAL_CONFIRM_SUBMISSION_ADD_DETAILS: string; APPEAL_INGESTION_MODAL_CONFIRM_SUBMISSION_DEFLECTION_ERROR: string; APPEAL_INGESTION_MODAL_CONFIRM_SUBMISSION_EDIT_DETAILS: string; APPEAL_INGESTION_MODAL_CONFIRM_SUBMISSION_ERROR: string; APPEAL_INGESTION_MODAL_CONFIRM_SUBMISSION_FOOTER: string; APPEAL_INGESTION_MODAL_CONFIRM_SUBMISSION_SUBHEADER: string; APPEAL_INGESTION_MODAL_HEADER: string; APPEAL_INGESTION_MODAL_REQUEST_SENT_ACTIONS_HEADER: string; APPEAL_INGESTION_MODAL_REQUEST_SENT_GUIDELINES_LINK: string; APPEAL_INGESTION_MODAL_REQUEST_SENT_HEADER: string; APPEAL_INGESTION_MODAL_REQUEST_SENT_RULES_LINK: string; APPEAL_INGESTION_MODAL_REQUEST_SENT_SUBHEADER: string; APPEAL_INGESTION_MODAL_SPAM_HEADER: string; APPEAL_INGESTION_MODAL_SPAM_LINK: string; APPEAL_INGESTION_MODAL_SPEED_BUMP_ACTIVITY_HEADER: string; APPEAL_INGESTION_MODAL_SPEED_BUMP_ACTIVITY_SUBHEADER: string; APPEAL_INGESTION_MODAL_SPEED_BUMP_LEARN_MORE_OTHER_OPTIONS_DSA: FM; APPEAL_INGESTION_MODAL_SPEED_BUMP_POLICY_HEADER: string; APPEAL_INGESTION_MODAL_SPEED_BUMP_SUBHEADER: string; APPEAL_INGESTION_MODAL_SPEED_BUMP_SUBMIT_SPAM: string; APPEAL_INGESTION_MODAL_THANKS_HEADER: string; APPEAL_QUARANTINE: string; APPEARANCE: string; APPEARANCE_SETTINGS_ACCESSIBILITY_LINK: FM; APPLICATION_ACTIONS_MENU_LABEL: string; APPLICATION_ACTIVE_USER_SUBSCRIPTIONS_DESCRIPTION: FM<"numSubscriptions", true>; APPLICATION_ADD_BUTTON: string; APPLICATION_ADD_BUTTON_ACTIONS: string; APPLICATION_ADD_BUTTON_ACTIONS_COPY: string; APPLICATION_ADDON_PURCHASE_CONFIRMATION_BLURB: FM<"applicationName" | "itemName", false>; APPLICATION_BRANCH_NAME_MASTER: string; APPLICATION_BRANCH_NAME_UNKNOWN: string; APPLICATION_CANCEL_GUILD_SUBSCRIPTION_MODAL_DESCRIPTION: FM<"guildName" | "timestamp", false>; APPLICATION_CANCEL_SUBSCRIPTION_MODAL_CANCEL_CTA: string; APPLICATION_CANCEL_SUBSCRIPTION_MODAL_HEADER: string; APPLICATION_CANCEL_SUBSCRIPTION_MODAL_NEVERMIND_CTA: string; APPLICATION_CANCEL_SUBSCRIPTION_MODAL_TITLE_V2: FM<"tier", true>; APPLICATION_CANCEL_SUBSCRIPTION_PREMIUM_BENEFITS: string; APPLICATION_CANCEL_USER_SUBSCRIPTION_MODAL_DESCRIPTION: FM<"timestamp", false>; APPLICATION_COMMAND: string; APPLICATION_COMMAND_AUTOCOMPLETE_FAILED: string; APPLICATION_COMMAND_AUTOCOMPLETE_NO_OPTIONS: string; APPLICATION_COMMAND_EDUCATION: FM; APPLICATION_COMMAND_FAILED: string; APPLICATION_COMMAND_FILE_ATTACHMENT: string; APPLICATION_COMMAND_MENTION_CONFIRM_BODY: string; APPLICATION_COMMAND_MENTION_CONFIRM_HEADER: string; APPLICATION_COMMAND_NO_PERMISSIONS: FM<"applicationName", true>; APPLICATION_COMMAND_PRIMARY_ENTRY_POINT_MISSING_WARNING: FM; APPLICATION_COMMAND_PRIMARY_ENTRY_POINT_USED: FM<[never, "activityHook" | "userHook"], true>; APPLICATION_COMMAND_PRIMARY_ENTRY_POINT_USED_CANNOT_LAUNCH: FM<[never, "userHook"], true>; APPLICATION_COMMAND_PRIMARY_ENTRY_POINT_USED_MOBILE: FM<"username", true>; APPLICATION_COMMAND_PRIMARY_ENTRY_POINT_USED_MOBILE_CANNOT_LAUNCH: FM<"username", true>; APPLICATION_COMMAND_PRIMARY_ENTRY_POINT_USED_NOTIFICATION: FM<"username", false>; APPLICATION_COMMAND_SENDING: string; APPLICATION_COMMAND_TIMED_OUT: string; APPLICATION_COMMAND_USED: FM<[never, "applicationHook" | "commandHook" | "userHook"], true>; APPLICATION_COMMAND_USED_MOBILE: FM<"applicationName" | "commandName" | "username", true>; APPLICATION_COMMAND_USED_MOBILE_SHORT: FM<"commandName" | "username", true>; APPLICATION_COMMAND_USED_SHORT: FM<[never, "commandHook" | "userHook"], true>; APPLICATION_COMMAND_USER_INSTALL_BETA_EPHEMERAL: FM<"learnMoreUrl", true>; APPLICATION_COMMAND_USER_INSTALL_BETA_EPHEMERAL_MOBILE: FM; APPLICATION_COMMAND_USER_INSTALL_EDUCATION: FM<"betaUserLimit", false>; APPLICATION_COMMAND_USER_INSTALL_EDUCATION_MOBILE: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_AUTOMOD_BLOCKED: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_BETA: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_JOIN_THREAD: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_MESSAGE_USER: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_SEND: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_SEND_ATTACHMENTS: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_SEND_EMBEDS: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_SEND_STICKERS: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_UNARCHIVE_THREAD: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_USE_COMMAND: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_CANNOT_USE_EXTERNAL_APPS: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_FEATURE_LIMITED: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_GUILD_FEATURE_LIMITED: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_HARMFUL_LINK: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_MISSING_PERMISSIONS: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_RATE_LIMIT: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_SLOWMODE: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_UNKNOWN: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_USER_FEATURE_LIMITED: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_REASON_USER_VERIFICATION_LEVEL: string; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_WITH_REASON: FM<"reason", true>; APPLICATION_COMMAND_USER_INSTALL_EPHEMERAL_WITH_REASON_MOBILE: FM<"reason", true>; APPLICATION_COMMAND_USER_INSTALL_LEARN_MORE: FM<"learnMoreUrl", true>; APPLICATION_COMMAND_USER_INSTALL_VIEW_HELP_ARTICLE: string; APPLICATION_COMMAND_WAITING: FM<"applicationName", false>; APPLICATION_CONTEXT_MENU_APPLICATION_ID: string; APPLICATION_CONTEXT_MENU_BRANCH_ID: string; APPLICATION_CONTEXT_MENU_CREATE_DESKTOP_SHORTCUT: string; APPLICATION_CONTEXT_MENU_HIDE: string; APPLICATION_CONTEXT_MENU_INSTALL: string; APPLICATION_CONTEXT_MENU_LAUNCH: string; APPLICATION_CONTEXT_MENU_LAUNCH_APPLICATION_NAME: FM<"name", false>; APPLICATION_CONTEXT_MENU_LAUNCH_OPTIONS: string; APPLICATION_CONTEXT_MENU_PRIVATE_STATUS: string; APPLICATION_CONTEXT_MENU_REPAIR: string; APPLICATION_CONTEXT_MENU_SHOW: string; APPLICATION_CONTEXT_MENU_SKU_ID: string; APPLICATION_CONTEXT_MENU_TOGGLE_OVERLAY_DISABLE: string; APPLICATION_CONTEXT_MENU_UNINSTALL: string; APPLICATION_DIRECTORY_LISTING_TOOLTIP_PREMIUM: string; APPLICATION_DIRECTORY_PROFILE_TOOLTIP_PREMIUM: string; APPLICATION_ENTITLEMENT_CODE_REDEMPTION_INVALID: string; APPLICATION_ENTITLEMENT_CODE_REDEMPTION_PROMOTION: FM; APPLICATION_ENTITLEMENT_CODE_REDEMPTION_PROMPT: string; APPLICATION_ENTITLEMENT_CODE_REDEMPTION_REDEEM: string; APPLICATION_GUILD_SUBSCRIPTION_LISTING_DETAILS: string; APPLICATION_GUILD_SUBSCRIPTION_LISTING_HEADER: string; APPLICATION_GUILD_SUBSCRIPTION_PURCHASE_MODAL_BENEFITS_SUBTITLE: FM<"guildName", false>; APPLICATION_GUILD_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_SUBTITLE: FM<"tier", true>; APPLICATION_IAP_PURCHASE_RETURN_TO_GAME: string; APPLICATION_ICON_A11Y_LABEL: FM<"applicationName", false>; APPLICATION_ICON_NO_NAME_A11Y_LABEL: string; APPLICATION_IFRAME_MODAL_LOAD_ERROR: string; APPLICATION_INSTALLATION_MODAL_DIRECTORY_WITH_SPACE: FM<"path" | "size", false>; APPLICATION_INSTALLATION_MODAL_LOCATION: string; APPLICATION_INSTALLATION_MODAL_NO_PERMISSION: string; APPLICATION_INSTALLATION_MODAL_NOT_ENOUGH_SPACE: string; APPLICATION_INSTALLATION_MODAL_SELECT_DIRECTORY: string; APPLICATION_INSTALLATION_MODAL_TITLE: string; APPLICATION_INSTALLATION_SPACE_USED: FM<"used", false>; APPLICATION_LIBRARY_EMPTY_SEARCH_DESCRIPTION: FM<"query", true>; APPLICATION_LIBRARY_EMPTY_STATE_DESCRIPTION_NO_IMPORT: string; APPLICATION_LIBRARY_EMPTY_STATE_HEADER: string; APPLICATION_LIBRARY_FILTER_PLACEHOLDER: string; APPLICATION_LIBRARY_INVENTORY: string; APPLICATION_LIBRARY_MY_GAMES: string; APPLICATION_LIBRARY_REMOVE_CONFIRM_BODY: FM<"name", false>; APPLICATION_LIBRARY_REMOVE_CONFIRM_CONFIRM: string; APPLICATION_LIBRARY_REMOVE_CONFIRM_HEADER: string; APPLICATION_MANAGE_SUBSCRIPTION_APP_CANCELLED: FM<"subscriptionPeriodEnd", false>; APPLICATION_MANAGE_SUBSCRIPTION_CANCEL_PLAN: string; APPLICATION_MANAGE_SUBSCRIPTION_CANCELED: string; APPLICATION_MANAGE_SUBSCRIPTION_CARD_APPLICATION_NAME_UNAVAILABLE: string; APPLICATION_MANAGE_SUBSCRIPTION_CARD_GUILD_NAME_UNAVAILABLE: string; APPLICATION_MANAGE_SUBSCRIPTION_CARD_IN_GUILD: FM<"guildName", false>; APPLICATION_MANAGE_SUBSCRIPTION_CARD_PERSONAL_SUBSCRIPTION: string; APPLICATION_MANAGE_SUBSCRIPTION_END_DATE: string; APPLICATION_MANAGE_SUBSCRIPTION_HIDE_BENEFITS: string; APPLICATION_MANAGE_SUBSCRIPTION_INFO_CURRENT_PERIOD_END_DATE: FM<"timestamp", false>; APPLICATION_MANAGE_SUBSCRIPTION_INFO_PRICE: string; APPLICATION_MANAGE_SUBSCRIPTION_INFO_SUBSCRIBED_SINCE: string; APPLICATION_MANAGE_SUBSCRIPTION_INFO_SUBSCRIBED_SINCE_DATE: FM<"timestamp", false>; APPLICATION_MANAGE_SUBSCRIPTION_INFO_SUBSCRIPTION_ENDED: string; APPLICATION_MANAGE_SUBSCRIPTION_INFO_SUBSCRIPTION_ENDS: string; APPLICATION_MANAGE_SUBSCRIPTION_MANAGE_OPTIONS_CANCEL: string; APPLICATION_MANAGE_SUBSCRIPTION_MANAGE_OPTIONS_LABEL: string; APPLICATION_MANAGE_SUBSCRIPTION_MANAGE_OPTIONS_RESTART: string; APPLICATION_MANAGE_SUBSCRIPTION_PAGE_TITLE: string; APPLICATION_MANAGE_SUBSCRIPTION_PAST_DUE: string; APPLICATION_MANAGE_SUBSCRIPTION_PAYMENT_METHOD_LABEL: string; APPLICATION_MANAGE_SUBSCRIPTION_PLAN_NAME_UNAVAILABLE: string; APPLICATION_MANAGE_SUBSCRIPTION_PRICE: string; APPLICATION_MANAGE_SUBSCRIPTION_RENEWAL_DATE: string; APPLICATION_MANAGE_SUBSCRIPTION_RESUME_PLAN: string; APPLICATION_MANAGE_SUBSCRIPTION_SERVER_SUBSCRIPTION: string; APPLICATION_MANAGE_SUBSCRIPTION_SHOW_BENEFITS: string; APPLICATION_MANAGE_SUBSCRIPTION_START_DATE: string; APPLICATION_MANAGE_SUBSCRIPTION_SUBSCRIPTION_BENEFITS: string; APPLICATION_MANAGE_SUBSCRIPTION_SUBSCRIPTION_TYPE: string; APPLICATION_MANAGE_SUBSCRIPTION_SUBSCRIPTION_USED_IN: FM<"guildName", false>; APPLICATION_MANAGE_SUBSCRIPTION_USER_CANCELLED: FM<"subscriptionPeriodEnd", false>; APPLICATION_MANAGE_SUBSCRIPTIONS_BUTTON: string; APPLICATION_PREORDER_PURCHASE_CONFIRMATION_BUTTON: string; APPLICATION_PROGRESS_INDICATOR_INSTALLING: FM<"name", false>; APPLICATION_PROGRESS_INDICATOR_INSTALLING_HOURS: FM<"name" | "timeRemaining", false>; APPLICATION_PROGRESS_INDICATOR_INSTALLING_MINUTES: FM<"name" | "timeRemaining", false>; APPLICATION_PROGRESS_INDICATOR_INSTALLING_SECONDS: FM<"name" | "timeRemaining", false>; APPLICATION_PROGRESS_INDICATOR_PAUSED: string; APPLICATION_PROGRESS_INDICATOR_UPDATING: FM<"name", false>; APPLICATION_PROGRESS_INDICATOR_UPDATING_HOURS: FM<"name" | "timeRemaining", false>; APPLICATION_PROGRESS_INDICATOR_UPDATING_MINUTES: FM<"name" | "timeRemaining", false>; APPLICATION_PROGRESS_INDICATOR_UPDATING_SECONDS: FM<"name" | "timeRemaining", false>; APPLICATION_STORE_ABOUT_HEADER: FM<"name", false>; APPLICATION_STORE_BUNDLE_PURCHASE_CONFIRMATION_BLURB: FM<"name", false>; APPLICATION_STORE_BUY: string; APPLICATION_STORE_BUY_AS_GIFT: string; APPLICATION_STORE_BUY_FOR_PRICE: FM<"price", false>; APPLICATION_STORE_BUY_GIFT: string; APPLICATION_STORE_CLOUD_SAVES: string; APPLICATION_STORE_CLOUD_SAVES_TOOLTIP: string; APPLICATION_STORE_COMING_SOON: string; APPLICATION_STORE_CONTROLLER_SUPPORT: string; APPLICATION_STORE_CONTROLLER_SUPPORT_TOOLTIP: string; APPLICATION_STORE_COUNTDOWN_DAYS: string; APPLICATION_STORE_COUNTDOWN_HOURS: string; APPLICATION_STORE_COUNTDOWN_MINUTES: string; APPLICATION_STORE_COUNTDOWN_SECONDS: string; APPLICATION_STORE_CROSS_PLATFORM: string; APPLICATION_STORE_CROSS_PLATFORM_TOOLTIP: string; APPLICATION_STORE_DESCRIPTION_READ_LESS: string; APPLICATION_STORE_DESCRIPTION_READ_MORE: string; APPLICATION_STORE_DETAILS_DEVELOPER: string; APPLICATION_STORE_DETAILS_GENRES: string; APPLICATION_STORE_DETAILS_PUBLISHER: string; APPLICATION_STORE_DETAILS_RELEASE_DATE: string; APPLICATION_STORE_DISCORD_GAME_INVITES: string; APPLICATION_STORE_DISCORD_GAME_INVITES_TOOLTIP: string; APPLICATION_STORE_EARLY_ACCESS: string; APPLICATION_STORE_EXPAND_DOWNLOADABLE_CONTENT: string; APPLICATION_STORE_FIRST_ON_DISCORD: string; APPLICATION_STORE_FREE: string; APPLICATION_STORE_FREE_PREMIUM_CONTENT: string; APPLICATION_STORE_FREE_WITH_PREMIUM: string; APPLICATION_STORE_GENRE_ACTION: string; APPLICATION_STORE_GENRE_ACTION_ADVENTURE: string; APPLICATION_STORE_GENRE_ACTION_RPG: string; APPLICATION_STORE_GENRE_ADVENTURE: string; APPLICATION_STORE_GENRE_ARCADE: string; APPLICATION_STORE_GENRE_ARTILLERY: string; APPLICATION_STORE_GENRE_BASEBALL: string; APPLICATION_STORE_GENRE_BASKETBALL: string; APPLICATION_STORE_GENRE_BILLIARDS: string; APPLICATION_STORE_GENRE_BOWLING: string; APPLICATION_STORE_GENRE_BOXING: string; APPLICATION_STORE_GENRE_BRAWLER: string; APPLICATION_STORE_GENRE_CARD_GAME: string; APPLICATION_STORE_GENRE_DRIVING_RACING: string; APPLICATION_STORE_GENRE_DUAL_JOYSTICK_SHOOTER: string; APPLICATION_STORE_GENRE_DUNGEON_CRAWLER: string; APPLICATION_STORE_GENRE_EDUCATION: string; APPLICATION_STORE_GENRE_FIGHTING: string; APPLICATION_STORE_GENRE_FISHING: string; APPLICATION_STORE_GENRE_FITNESS: string; APPLICATION_STORE_GENRE_FLIGHT_SIMULATOR: string; APPLICATION_STORE_GENRE_FOOTBALL: string; APPLICATION_STORE_GENRE_FOUR_X: string; APPLICATION_STORE_GENRE_FPS: string; APPLICATION_STORE_GENRE_GAMBLING: string; APPLICATION_STORE_GENRE_GOLF: string; APPLICATION_STORE_GENRE_HACK_AND_SLASH: string; APPLICATION_STORE_GENRE_HOCKEY: string; APPLICATION_STORE_GENRE_INDIE: string; APPLICATION_STORE_GENRE_LIFE_SIMULATOR: string; APPLICATION_STORE_GENRE_LIGHT_GUN: string; APPLICATION_STORE_GENRE_MASSIVELY_MULTIPLAYER: string; APPLICATION_STORE_GENRE_METROIDVANIA: string; APPLICATION_STORE_GENRE_MISCELLANEOUS: string; APPLICATION_STORE_GENRE_MMORPG: string; APPLICATION_STORE_GENRE_MOBA: string; APPLICATION_STORE_GENRE_MUSIC_RHYTHM: string; APPLICATION_STORE_GENRE_OPEN_WORLD: string; APPLICATION_STORE_GENRE_PARTY_MINI_GAME: string; APPLICATION_STORE_GENRE_PINBALL: string; APPLICATION_STORE_GENRE_PLATFORMER: string; APPLICATION_STORE_GENRE_POINT_AND_CLICK: string; APPLICATION_STORE_GENRE_PSYCHOLOGICAL_HORROR: string; APPLICATION_STORE_GENRE_PUZZLE: string; APPLICATION_STORE_GENRE_ROGUELIKE: string; APPLICATION_STORE_GENRE_ROLE_PLAYING: string; APPLICATION_STORE_GENRE_RTS: string; APPLICATION_STORE_GENRE_SANDBOX: string; APPLICATION_STORE_GENRE_SHOOT_EM_UP: string; APPLICATION_STORE_GENRE_SHOOTER: string; APPLICATION_STORE_GENRE_SIMULATION: string; APPLICATION_STORE_GENRE_SKATEBOARDING_SKATING: string; APPLICATION_STORE_GENRE_SNOWBOARDING_SKIING: string; APPLICATION_STORE_GENRE_SOCCER: string; APPLICATION_STORE_GENRE_SPORTS: string; APPLICATION_STORE_GENRE_STEALTH: string; APPLICATION_STORE_GENRE_STRATEGY: string; APPLICATION_STORE_GENRE_SURFING_WAKEBOARDING: string; APPLICATION_STORE_GENRE_SURVIVAL: string; APPLICATION_STORE_GENRE_SURVIVAL_HORROR: string; APPLICATION_STORE_GENRE_TACTICAL: string; APPLICATION_STORE_GENRE_TOWER_DEFENSE: string; APPLICATION_STORE_GENRE_TRACK_FIELD: string; APPLICATION_STORE_GENRE_TRAIN_SIMULATOR: string; APPLICATION_STORE_GENRE_TRIVIA_BOARD_GAME: string; APPLICATION_STORE_GENRE_TURN_BASED_STRATEGY: string; APPLICATION_STORE_GENRE_VEHICULAR_COMBAT: string; APPLICATION_STORE_GENRE_VISUAL_NOVEL: string; APPLICATION_STORE_GENRE_WARGAME: string; APPLICATION_STORE_GENRE_WRESTLING: string; APPLICATION_STORE_GET_PREMIUM: string; APPLICATION_STORE_GIFT_PURCHASE_AND_MESSAGE_CONFIRM_SUBSCRIPTION_MONTHLY: FM<"intervalCount" | "skuName", false>; APPLICATION_STORE_GIFT_PURCHASE_AND_MESSAGE_CONFIRM_SUBSCRIPTION_YEARLY: FM<"intervalCount" | "skuName", false>; APPLICATION_STORE_GIFT_PURCHASE_AND_MESSAGE_FAILED: string; APPLICATION_STORE_GIFT_PURCHASE_CONFIRM_MONTHLY_MOBILE: FM<"intervalCount" | "name", false>; APPLICATION_STORE_GIFT_PURCHASE_CONFIRM_SUBSCRIPTION_MONTHLY: FM<"intervalCount" | "skuName", false>; APPLICATION_STORE_GIFT_PURCHASE_CONFIRM_SUBSCRIPTION_YEARLY: FM<"intervalCount" | "skuName", false>; APPLICATION_STORE_GIFT_PURCHASE_CONFIRM_YEARLY_MOBILE: FM<"intervalCount" | "name", false>; APPLICATION_STORE_GIFT_PURCHASE_CONFIRMATION_BLURB: string; APPLICATION_STORE_GIFT_PURCHASE_CONFIRMATION_SUBTEXT: FM; APPLICATION_STORE_GIFT_PURCHASE_CONFIRMATION_SUBTEXT_NO_FORMAT: string; APPLICATION_STORE_GIFT_PURCHASE_CONFIRMATION_SUBTEXT_WO_LINK: string; APPLICATION_STORE_GIFT_PURCHASE_FAILURE_GENERIC_BLURB: string; APPLICATION_STORE_GIFT_PURCHASE_GIFT_ERROR_SENDING_LINK: string; APPLICATION_STORE_GIFT_PURCHASE_GIFT_RECIPIENT_SECTION_LABEL: string; APPLICATION_STORE_GIFT_PURCHASE_GIFT_RECIPIENT_SELECT_PLACEHOLDER: string; APPLICATION_STORE_GIFT_PURCHASE_GIFT_RECIPIENT_SUBTEXT: string; APPLICATION_STORE_GIFT_PURCHASE_GIFT_SEND_NOW_BUTTON: string; APPLICATION_STORE_GIFT_PURCHASE_PRIVATE_LINK: string; APPLICATION_STORE_IN_LIBRARY: string; APPLICATION_STORE_LINK_COPIED: string; APPLICATION_STORE_LISTING_PURCHASE_GENERIC_ERROR: string; APPLICATION_STORE_LISTING_PURCHASE_GENERIC_ERROR_SHORT: string; APPLICATION_STORE_LISTING_PURCHASE_RATE_LIMIT_ERROR: string; APPLICATION_STORE_LISTING_PURCHASE_RATE_LIMIT_ERROR_SHORT: string; APPLICATION_STORE_LISTING_SELECT_EDITION: string; APPLICATION_STORE_LOCAL_COOP: string; APPLICATION_STORE_LOCAL_COOP_TOOLTIP: string; APPLICATION_STORE_LOCAL_MULTIPLAYER: string; APPLICATION_STORE_LOCAL_MULTIPLAYER_TOOLTIP: string; APPLICATION_STORE_NEW_RELEASE: string; APPLICATION_STORE_ONLINE_COOP: string; APPLICATION_STORE_ONLINE_COOP_TOOLTIP: string; APPLICATION_STORE_ONLINE_MULTIPLAYER: string; APPLICATION_STORE_ONLINE_MULTIPLAYER_TOOLTIP: string; APPLICATION_STORE_PREORDER: string; APPLICATION_STORE_PREORDER_AS_GIFT: string; APPLICATION_STORE_PREORDER_FOR_PRICE: FM<"price", false>; APPLICATION_STORE_PREORDER_PURCHASE_CONFIRMATION_BLURB: FM<"applicationName" | "date", false>; APPLICATION_STORE_PURCHASE_APPLICATION: string; APPLICATION_STORE_PURCHASE_AVAILABLE_DATE: FM<"releaseDate", false>; APPLICATION_STORE_PURCHASE_BUNDLE: string; APPLICATION_STORE_PURCHASE_CONFIRMATION_BLURB: FM<"name", false>; APPLICATION_STORE_PURCHASE_CONFIRMATION_TITLE_1: string; APPLICATION_STORE_PURCHASE_CONFIRMATION_TITLE_2: string; APPLICATION_STORE_PURCHASE_CONFIRMATION_TITLE_3: string; APPLICATION_STORE_PURCHASE_CONFIRMATION_TITLE_4: string; APPLICATION_STORE_PURCHASE_CONFIRMATION_UNSUPPORTED_OS: FM<"name" | "operatingSystem", false>; APPLICATION_STORE_PURCHASE_CONSUMABLE: string; APPLICATION_STORE_PURCHASE_DLC: string; APPLICATION_STORE_PURCHASE_GAME_CURRENT_OS_UNSUPPORTED: string; APPLICATION_STORE_PURCHASE_GIFT_AND_MESSAGE_CONFIRMATION_TITLE: string; APPLICATION_STORE_PURCHASE_GIFT_CONFIRMATION_TITLE: string; APPLICATION_STORE_PURCHASE_GIFT_ONLY: string; APPLICATION_STORE_PURCHASE_GIFT_ONLY_UNGIFTABLE: string; APPLICATION_STORE_PURCHASE_HEADER_BUNDLES_DIFFERENT: string; APPLICATION_STORE_PURCHASE_HEADER_BUNDLES_SAME: string; APPLICATION_STORE_PURCHASE_HEADER_CONSUMABLES_DIFFERENT: string; APPLICATION_STORE_PURCHASE_HEADER_CONSUMABLES_SAME: string; APPLICATION_STORE_PURCHASE_HEADER_DISTRIBUTION_APPLICATION: string; APPLICATION_STORE_PURCHASE_HEADER_DISTRIBUTION_BUNDLE: string; APPLICATION_STORE_PURCHASE_HEADER_DISTRIBUTION_CONSUMABLE: string; APPLICATION_STORE_PURCHASE_HEADER_DISTRIBUTION_DLC: string; APPLICATION_STORE_PURCHASE_HEADER_DLC_DIFFERENT: string; APPLICATION_STORE_PURCHASE_HEADER_DLC_SAME: string; APPLICATION_STORE_PURCHASE_HEADER_FIRST_ON: string; APPLICATION_STORE_PURCHASE_HEADER_FREE_APPLICATION: string; APPLICATION_STORE_PURCHASE_HEADER_FREE_BUNDLE: string; APPLICATION_STORE_PURCHASE_HEADER_FREE_CONSUMABLE: string; APPLICATION_STORE_PURCHASE_HEADER_FREE_DLC: string; APPLICATION_STORE_PURCHASE_HEADER_GAMES_DIFFERENT: string; APPLICATION_STORE_PURCHASE_HEADER_GAMES_SAME: string; APPLICATION_STORE_PURCHASE_HEADER_PREORDER_APPLICATION: string; APPLICATION_STORE_PURCHASE_HEADER_PREORDER_BUNDLE: string; APPLICATION_STORE_PURCHASE_HEADER_PREORDER_CONSUMABLE: string; APPLICATION_STORE_PURCHASE_HEADER_PREORDER_DLC: string; APPLICATION_STORE_PURCHASE_HEADER_PREORDER_ENTITLED: string; APPLICATION_STORE_PURCHASE_HEADER_TIME_LEFT_UNTIL_RELEASE: string; APPLICATION_STORE_PURCHASE_IAP: string; APPLICATION_STORE_PURCHASE_IN_LIBRARY: string; APPLICATION_STORE_PURCHASE_IN_LIBRARY_HIDDEN: string; APPLICATION_STORE_PURCHASE_INSTALL_GAME: string; APPLICATION_STORE_PURCHASE_TEST_MODE: string; APPLICATION_STORE_PURCHASE_WARNING_PREORDER: FM<"date", false>; APPLICATION_STORE_PVP: string; APPLICATION_STORE_PVP_TOOLTIP: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_ALCOHOL_REFERENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_ANIMATED_BLOOD: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_ANIMATED_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_BLOOD: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_BLOOD_AND_GORE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_CARTOON_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_COMIC_MISCHIEF: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_CRUDE_HUMOR: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_DRUG_REFERENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_FANTASY_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_IN_GAME_PURCHASES: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_INTENSE_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_LANGUAGE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_LYRICS: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MATURE_HUMOR: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_BLOOD: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_CARTOON_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_FANTASY_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_LANGUAGE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_LYRICS: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_SEXUAL_THEMES: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_SUGGESTIVE_THEMES: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_MILD_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_NUDITY: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_PARTUAL_NUDITY: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_REAL_GAMBLING: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_SEXUAL_CONTENT: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_SEXUAL_THEMES: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_SEXUAL_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_SHARES_LOCATION: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_SIMULATED_GAMBLING: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_STRONG_LANGUAGE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_STRONG_LYRICS: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_STRONG_SEXUAL_CONTENT: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_SUGGESTIVE_THEMES: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_TOBACCO_REFERENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_UNRESTRICTED_INTERNET: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_USE_OF_ALCOHOL: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_USE_OF_DRUGS: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_USE_OF_TOBACCO: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_USERS_INTERACT: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_VIOLENCE: string; APPLICATION_STORE_RATING_DESCRIPTORS_ESRB_VIOLENT_REFERENCES: string; APPLICATION_STORE_RATING_DESCRIPTORS_PEGI_BAD_LANGUAGE: string; APPLICATION_STORE_RATING_DESCRIPTORS_PEGI_DISCRIMINATION: string; APPLICATION_STORE_RATING_DESCRIPTORS_PEGI_DRUGS: string; APPLICATION_STORE_RATING_DESCRIPTORS_PEGI_FEAR: string; APPLICATION_STORE_RATING_DESCRIPTORS_PEGI_GAMBLING: string; APPLICATION_STORE_RATING_DESCRIPTORS_PEGI_SEX: string; APPLICATION_STORE_RATING_DESCRIPTORS_PEGI_VIOLENCE: string; APPLICATION_STORE_RECOMMENDATION_EVER_PLAYED_DOUBLE: FM<["user1" | "user2", "user1Hook" | "user2Hook"], true>; APPLICATION_STORE_RECOMMENDATION_EVER_PLAYED_OTHER: FM<"count", true>; APPLICATION_STORE_RECOMMENDATION_EVER_PLAYED_SINGLE: FM<["user1", "user1Hook"], true>; APPLICATION_STORE_RECOMMENDATION_NOW_PLAYING_DOUBLE: FM<["user1" | "user2", "user1Hook" | "user2Hook"], true>; APPLICATION_STORE_RECOMMENDATION_NOW_PLAYING_OTHER: FM<"count", true>; APPLICATION_STORE_RECOMMENDATION_NOW_PLAYING_SINGLE: FM<["user1", "user1Hook"], true>; APPLICATION_STORE_RECOMMENDATION_RECENTLY_PLAYED_DOUBLE: FM<["user1" | "user2", "user1Hook" | "user2Hook"], true>; APPLICATION_STORE_RECOMMENDATION_RECENTLY_PLAYED_OTHER: FM<"count", true>; APPLICATION_STORE_RECOMMENDATION_RECENTLY_PLAYED_SINGLE: FM<["user1", "user1Hook"], true>; APPLICATION_STORE_RESTRICTED: string; APPLICATION_STORE_RICH_PRESENCE: string; APPLICATION_STORE_RICH_PRESENCE_TOOLTIP: string; APPLICATION_STORE_SECTION_TITLE_COPYRIGHT: string; APPLICATION_STORE_SECTION_TITLE_DETAILS: string; APPLICATION_STORE_SECTION_TITLE_FEATURES: string; APPLICATION_STORE_SECTION_TITLE_RATINGS: string; APPLICATION_STORE_SECTION_TITLE_RECOMMENDATION: string; APPLICATION_STORE_SECTION_TITLE_SYSTEM_REQUIREMENTS: string; APPLICATION_STORE_SECTION_TITLE_VERIFIED_GUILD: string; APPLICATION_STORE_SECURE_NETWORKING: string; APPLICATION_STORE_SECURE_NETWORKING_TOOLTIP: string; APPLICATION_STORE_SINGLE_PLAYER: string; APPLICATION_STORE_SINGLE_PLAYER_TOOLTIP: string; APPLICATION_STORE_SPECS_CPU: string; APPLICATION_STORE_SPECS_MEMORY: string; APPLICATION_STORE_SPECS_MEMORY_VALUE: FM<"size", false>; APPLICATION_STORE_SPECS_MINIMUM: string; APPLICATION_STORE_SPECS_NETWORK: string; APPLICATION_STORE_SPECS_NOTES: string; APPLICATION_STORE_SPECS_OS: string; APPLICATION_STORE_SPECS_RECOMMENDED: string; APPLICATION_STORE_SPECS_SOUND: string; APPLICATION_STORE_SPECS_STORAGE: string; APPLICATION_STORE_SPECS_VIDEO: string; APPLICATION_STORE_SPECTATOR_MODE: string; APPLICATION_STORE_SPECTATOR_MODE_TOOLTIP: string; APPLICATION_STORE_STAFF_PICK: string; APPLICATION_STORE_THE_GAME_AWARDS_WINNER: string; APPLICATION_STORE_WARNING_DLC_REQUIRES_BASE_APPLICATION_DESCRIPTION: FM<["baseName" | "helpArticle", "baseHook"], true>; APPLICATION_STORE_WARNING_DLC_REQUIRES_BASE_APPLICATION_TITLE: string; APPLICATION_STORE_WARNING_EARLY_ACCESS_DESCRIPTION: FM<"helpArticle", true>; APPLICATION_STORE_WARNING_EARLY_ACCESS_TITLE: string; APPLICATION_STORE_WARNING_REQUIRES_DESKTOP_APP_DESCRIPTION: FM<[never, "downloadHook"], true>; APPLICATION_STORE_WARNING_REQUIRES_DESKTOP_APP_TITLE: string; APPLICATION_STORE_WARNING_RESTRICTED_IN_REGION_DESCRIPTION: FM<"helpArticle", true>; APPLICATION_STORE_WARNING_RESTRICTED_IN_REGION_TITLE: string; APPLICATION_STORE_WARNING_UNAVAILABLE_IN_LANGUAGE_DESCRIPTION: string; APPLICATION_STORE_WARNING_UNAVAILABLE_IN_LANGUAGE_TITLE: string; APPLICATION_STORE_WARNING_UNAVAILABLE_LINUX_DESCRIPTION: string; APPLICATION_STORE_WARNING_UNAVAILABLE_LINUX_TITLE: string; APPLICATION_STORE_WARNING_UNAVAILABLE_MAC_OS_TITLE: string; APPLICATION_STORE_WARNING_UNAVAILABLE_OS_DESCRIPTION: string; APPLICATION_STORE_WARNING_UNAVAILABLE_WINDOWS_TITLE: string; APPLICATION_SUBSCRIPTION_AMOUNT_PER_PERIOD: FM<"amount" | "period", false>; APPLICATION_SUBSCRIPTION_BILLING_STEP_SUBSCRIPTION_DETAILS: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_ANSWER_CHOICE_NOT_SURE_HOW_TO_USE: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_ANSWER_CHOICE_NOT_USING_ENOUGH: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_ANSWER_CHOICE_NOT_WORTH: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_ANSWER_CHOICE_OTHER: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_ANSWER_CHOICE_TOO_EXPENSIVE: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_DONT_SHOW_AGAIN: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_OTHER_PLACEHOLDER: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_SUBTITLE: string; APPLICATION_SUBSCRIPTION_CANCELLATION_SURVEY_TITLE: string; APPLICATION_SUBSCRIPTION_EXPIRATION_CHANNEL_NOTICE_CTA: string; APPLICATION_SUBSCRIPTION_FREE: string; APPLICATION_SUBSCRIPTION_FROM_DELETED_APPLICATION: string; APPLICATION_SUBSCRIPTION_GUILD_PICKER_PLACEHOLDER: string; APPLICATION_SUBSCRIPTION_NO_GUILD_AVAILABLE: string; APPLICATION_SUBSCRIPTION_PAYMENT_CHOOSE_SERVER_SUBTITLE: string; APPLICATION_SUBSCRIPTION_PAYMENT_CHOOSE_SERVER_TITLE: string; APPLICATION_SUBSCRIPTION_PREMIUM: string; APPLICATION_SUBSCRIPTION_PURCHASE_CONFIRMATION_SUBTITLE: FM<"timestamp", false>; APPLICATION_SUBSCRIPTION_PURCHASE_CONFIRMATION_TITLE: FM<"tier", true>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_BENEFITS_LITE_SUBTITLE: FM<"guildName", false>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_BENEFITS_LITE_TITLE_V2: FM<"tier", true>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_BENEFITS_TITLE_V2: FM<"tier", true>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_BENEFITS_PREVIEW: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_CANCEL_BUTTON: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_CONTINUE_BUTTON: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_DONE_BUTTON: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_BENEFITS_SUBTITLE: FM<"benefitCount", false>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_CANCEL_BUTTON: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_CONTINUE_BUTTON: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_DONE_BUTTON: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_EXCLUSIVE_CHANNELS_SUBTITLE: FM<"commandCount", false>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_OPEN_DISCORD_BUTTON: string; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_SUBTITLE: FM<"benefits", false>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_TITLE_V2: FM<"tierName", true>; APPLICATION_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_TITLE_V2: FM<"tier", true>; APPLICATION_SUBSCRIPTION_TIER_ADDITIONAL_BENEFITS_SECTION_TITLE: string; APPLICATION_SUBSCRIPTION_TIER_EXCLUSIVE_COMMANDS_SECTION_TITLE: string; APPLICATION_SUBSCRIPTION_TIER_REVIEW_CANCELED_LABEL: string; APPLICATION_SUBSCRIPTION_TIER_REVIEW_CURRENT_TIER_LABEL: string; APPLICATION_SUBSCRIPTION_TIER_REVIEW_SUBSCRIBE_LABEL: string; APPLICATION_SUBSCRIPTION_TIER_SHOW_LESS_DESCRIPTION: string; APPLICATION_SUBSCRIPTION_TIER_SHOW_MORE_DESCRIPTION: string; APPLICATION_SUBSCRIPTION_TOGGLE_SECTION_LABEL: string; APPLICATION_SUBSCRIPTION_USER_SUBSCRIPTION_PAST_DUE_WARNING: string; APPLICATION_SUBSCRIPTIONS_CANNOT_MANAGE_SUBSCRIPTION: string; APPLICATION_TEST_MODE_VIEW_OTHER_LISTINGS: string; APPLICATION_UNINSTALL_PROMPT_BODY: FM<"gameName", false>; APPLICATION_UNINSTALL_PROMPT_CANCEL: string; APPLICATION_UNINSTALL_PROMPT_CONFIRM: string; APPLICATION_UNINSTALL_PROMPT_TITLE: FM<"gameName", false>; APPLICATION_USER_SUBSCRIPTION_ALREADY_SUBSCRIBED: FM<"tierName", false>; APPLICATION_USER_SUBSCRIPTION_LISTING_DETAILS: FM<"applicationName", false>; APPLICATION_USER_SUBSCRIPTION_LISTING_HEADER: string; APPLICATION_USER_SUBSCRIPTION_NO_SHARED_SERVER_WARNING_BODY: string; APPLICATION_USER_SUBSCRIPTION_NO_SHARED_SERVER_WARNING_TITLE: FM<"applicationName", false>; APPLICATION_USER_SUBSCRIPTION_PURCHASE_MODAL_BENEFITS_LITE_SUBTITLE: string; APPLICATION_USER_SUBSCRIPTION_PURCHASE_MODAL_BENEFITS_SUBTITLE: FM<"tier", false>; APPLICATION_USER_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_SUBTITLE: FM<"applicationName", true>; APPLICATION_USER_SUBSCRIPTION_PURCHASE_SUBTITLE: FM<"applicationName", false>; APPLICATION_USER_SUBSCRIPTION_PURCHASE_TITLE: string; APPLICATION_USER_SUBSCRIPTIONS_DESCRIPTION: string; APPLICATION_USER_SUBSCRIPTIONS_TITLE: string; APPLICATIONS_AND_CONNECTIONS: string; APPLICATIONS_AND_CONNECTIONS_BODY: string; APPLY: string; APPS: string; ARCHIVE_FORUM_POST: string; ARCHIVE_LOCK_FORUM_POST: string; ARCHIVE_LOCK_THREAD: string; ARCHIVE_NOW: string; ARCHIVE_SETTINGS: string; ARCHIVE_THREAD: string; ARCHIVED_POST_FOLLOW_DISABLED_TOAST: string; ARCHIVED_POST_REACTIONS_DISABLED_TOAST: string; ARCHIVED_THREAD_FOLLOW_DISABLED_TOAST: string; ARCHIVED_THREAD_REACTIONS_DISABLED_TOAST: string; ARS_NAME: string; ASSISTANT_CHAT_BANNER_BUTTON_TEXT: string; ASSISTANT_CHAT_BANNER_CLOSE_A11Y_LABEL: string; ASSISTANT_SPLASH_BUTTON: string; ATTACH_FILES: string; ATTACH_PAYMENT_SOURCE_OPTIONAL_WITH_ENTITLEMENTS_WARNING: FM<"months", true>; ATTACH_PAYMENT_SOURCE_PROMPT_OPTION: string; ATTACH_PAYMENT_SOURCE_PROMPT_OPTION_OPTIONAL: string; ATTACHMENT_COMPRESSING: string; ATTACHMENT_FILENAME_UNKNOWN: string; ATTACHMENT_FILES: string; ATTACHMENT_IMG_A11Y_HINT: string; ATTACHMENT_MEDIA: string; ATTACHMENT_MODAL_IMAGE_DESCRIPTION_LABEL: string; ATTACHMENT_MODAL_IMAGE_DESCRIPTION_PLACEHOLDER: string; ATTACHMENT_MODAL_SAVE: string; ATTACHMENT_PROCESSING: string; ATTACHMENT_PROCESSING_BYTES: string; ATTACHMENT_PROCESSING_CALL: string; ATTACHMENT_PROCESSING_FILING: string; ATTACHMENT_PROCESSING_GATHERING: string; ATTACHMENT_PROCESSING_PYLONS: string; ATTACHMENT_PROCESSING_SERVER: string; ATTACHMENT_PROCESSING_UNSURE: string; ATTACHMENT_PROCESSING_WEATHER: string; ATTACHMENT_PROCESSING_WUMPUS: string; ATTACHMENT_TOO_MANY_ERROR_MESSAGE: FM<"limit", false>; ATTACHMENT_TOO_MANY_ERROR_TITLE: string; ATTACHMENT_UTILITIES: string; ATTACHMENT_UTILITIES_MODIFY: string; ATTACHMENT_UTILITIES_REMOVE: string; ATTACHMENT_UTILITIES_SPOILER: string; ATTACHMENT_VIDEO_A11Y_HINT: string; ATTENUATE_WHILE_SPEAKING_OTHERS: string; ATTENUATE_WHILE_SPEAKING_SELF: string; AUD_NAME: string; AUDIENCE_A11Y_LABEL: FM<"name", false>; AUDIENCE_DISCONNECT: string; AUDIENCE_LABEL: string; AUDIENCE_LOWER_HAND: string; AUDIENCE_RAISE_HAND_CTA: string; AUDIENCE_RAISE_HAND_NO_PERMISSION: string; AUDIENCE_SECTION_HEADER: FM<"audienceSize", false>; AUDIO_DEVICE_ACTIONS: string; AUDIO_DEVICES_BLUETOOTH: string; AUDIO_DEVICES_BLUETOOTH_LE_HEADSET: string; AUDIO_DEVICES_CHANGE_EARPIECE: string; AUDIO_DEVICES_CHANGE_OUTPUT: string; AUDIO_DEVICES_CHANGE_SPEAKER: string; AUDIO_DEVICES_EARPIECE: string; AUDIO_DEVICES_INVALID: string; AUDIO_DEVICES_NONE_AVAILABLE: string; AUDIO_DEVICES_OUTPUT_SELECTION_PROMPT: string; AUDIO_DEVICES_SPEAKER: string; AUDIO_DEVICES_TOGGLE_UNAVAILABLE: string; AUDIO_DEVICES_UNKNOWN: string; AUDIO_DEVICES_WIRED: string; AUDIO_FILE_A11Y_LABEL: FM<"filename", false>; AUDIO_FILE_NOT_PLAYING_VALUE: FM<"duration", false>; AUDIO_FILE_PLAYING_VALUE: FM<"currentTime" | "duration", false>; AUDIT_LOG: string; AUTH_BANNED_INVITE_BODY: string; AUTH_BROWSER_HANDOFF_DETECTING_DESCRIPTION: string; AUTH_DISABLE_EMAIL_NOTIFICATIONS_FAILURE_BODY: string; AUTH_DISABLE_EMAIL_NOTIFICATIONS_FAILURE_HEADER: string; AUTH_DISABLE_EMAIL_NOTIFICATIONS_SUCCESS_BODY: string; AUTH_DISABLE_EMAIL_NOTIFICATIONS_SUCCESS_HEADER: string; AUTH_EXPIRED_SUGGESTION: string; AUTH_HIDE_PASSWORD: string; AUTH_INVALID_INVITE_BODY: string; AUTH_INVALID_INVITE_TIP: string; AUTH_INVALID_INVITE_TITLE: string; AUTH_IP_AUTH_SUCCEEDED_SUGGESTION: string; AUTH_LOGIN_BODY: string; AUTH_MESSAGE_INVITED_BY: FM<"username", false>; AUTH_MESSAGE_INVITED_TO_PLAY: string; AUTH_MESSAGE_INVITED_TO_PLAY_USERNAME: FM<"username", false>; AUTH_MESSAGE_INVITED_TO_STREAM: FM<"username", false>; AUTH_SESSIONS: string; AUTH_SESSIONS_ACTIVE_RECENTLY: string; AUTH_SESSIONS_CURRENT: string; AUTH_SESSIONS_DESCRIPTION: string; AUTH_SESSIONS_LINK_NEW_DEVICE: string; AUTH_SESSIONS_OS_UNKNOWN: string; AUTH_SESSIONS_OTHERS: string; AUTH_SESSIONS_OTHERS_LOG_OUT_ACTION: string; AUTH_SESSIONS_OTHERS_LOG_OUT_DESCRIPTION: string; AUTH_SESSIONS_OTHERS_LOG_OUT_TITLE: string; AUTH_SESSIONS_SESSION_LOG_OUT: string; AUTH_SESSIONS_UNKNOWN_LEGACY: string; AUTH_SESSIONS_UNKNOWN_LEGACY_LOG_OUT: FM; AUTH_USERNAME_TOOLTIP: string; AUTH_VERFICATION_EXPIRED_SUGGESTION: string; AUTH_VIEW_PASSWORD: string; AUTHORIZATION: string; AUTHORIZATION_EXPIRED: string; AUTHORIZE: string; AUTHORIZE_AND_CONTINUE: string; AUTHORIZED: string; AUTHORIZED_APP: FM<"installedApplicationName", true>; AUTHORIZED_APP_IS_CONNECTED_ACCOUNT: FM<"applicationName", true>; AUTHORIZED_APP_IS_CONNECTED_ACCOUNT_DISCONNECT_WARNING: FM<"applicationName", false>; AUTHORIZED_APP_TO_SERVER: FM<"guildName" | "installedApplicationName", true>; AUTHORIZED_APPS: string; AUTHORIZED_APPS_PRIVACY_POLICY: string; AUTHORIZED_APPS_TERMS_OF_SERVICE: string; AUTHORIZED_GENERIC: string; AUTHORIZED_SUCCESS: string; AUTHORIZING: string; AUTO_ARCHIVE: string; AUTO_ARCHIVE_DURATION_1_HOUR: string; AUTO_ARCHIVE_DURATION_1_WEEK: string; AUTO_ARCHIVE_DURATION_24_HOURS: string; AUTO_ARCHIVE_DURATION_3_DAYS: string; AUTO_ARCHIVE_OPTIONS: string; AUTO_ARCHIVE_THREAD_AFTER: FM<"duration", false>; AUTO_ARCHIVE_THREAD_AT_LONG: FM<"time", false>; AUTO_ARCHIVE_THREAD_PINNED: string; AUTO_SUGGEST_STICKERS: string; AUTO_SUGGEST_STICKERS_DESCRIPTION: string; AUTO_TOGGLE_STREAMER_MODE_DESCRIPTION: string; AUTO_TOGGLE_STREAMER_MODE_LABEL: string; AUTOCOMPLETE_EMOJI_UPSELL: FM<"count", false>; AUTOCOMPLETE_EMOJI_UPSELL_MODAL_BLURB: FM; AUTOCOMPLETE_EMOJI_UPSELL_MODAL_BLURB_MOBILE: string; AUTOCOMPLETE_EMOJI_UPSELL_MODAL_BLURB_MOBILE_GENERIC: FM<"planName", false>; AUTOCOMPLETE_EMOJI_UPSELL_MODAL_HEADER: string; AUTOCOMPLETE_NO_RESULTS_BODY: string; AUTOCOMPLETE_NO_RESULTS_HEADER: string; AUTOCOMPLETE_STICKERS_QUERY_MATCH: FM<"queryMatch", false>; AUTOMATIC_GAIN_CONTROL: string; AUTOMATIC_REGION: string; AUTOMOD_USER_PROFILE_UPSELL_CONTENT: FM; AUTOMOD_USER_PROFILE_UPSELL_HEADER: string; AVATAR_ACTIONS_MENU_LABEL: string; AVATAR_CONVERT_FAILURE_MOBILE: FM<"avatarUrl", false>; AVATAR_DECORATION_MODAL_APPLY: string; AVATAR_DECORATION_SELECTION_SECTION_A11Y: string; AVATAR_IN_ONBOARDING_ADD_PICTURE_CTA: string; AVATAR_IN_ONBOARDING_DEFAULT_SELECT_SUBTITLE: string; AVATAR_IN_ONBOARDING_FILE_TYPE_ERROR: string; AVATAR_IN_ONBOARDING_MODAL_SUBTITLE: string; AVATAR_IN_ONBOARDING_MODAL_TITLE: string; AVATAR_IN_ONBOARDING_SELECT_DEFAULT_AVATAR: string; AVATAR_IN_ONBOARDING_SELECT_DEFAULT_AVATAR_A11Y_LABEL: FM<"description" | "index", false>; AVATAR_IN_ONBOARDING_SKIP_FOR_NOW: string; AVATAR_IN_ONBOARDING_SKIP_STEP_ALERT_SUBTITLE: string; AVATAR_IN_ONBOARDING_SKIP_STEP_ALERT_TITLE: string; AVATAR_PROFILE_BANNER_MARKETING: string; AVATAR_SIZE_OPTION_LARGE: string; AVATAR_SIZE_OPTION_SMALL: string; AVATAR_UPLOAD_APPLY: string; AVATAR_UPLOAD_CANCEL: string; AVATAR_UPLOAD_EDIT_MEDIA: string; AVATAR_UPLOAD_SKIP: string; BACK: string; BACK_ACCESSIBILITY_HINT: string; BACK_BUTTON_MENTIONS_ACCESSIBILITY_LABEL: FM<"mentionCount", false>; BACK_TO: FM<"destination", false>; BACK_TO_LOGIN: string; BACKSPACE: string; BAD_LINK_WARNING_BODY_V2: FM; BAD_LINK_WARNING_TITLE_V2: string; BAN: string; BAN_CONFIRM_TITLE: FM<"username", false>; BAN_MEMBERS: string; BAN_REASON: string; BAN_REASON_OPTION_BREAKING_RULES: string; BAN_REASON_OPTION_HACKED_ACCOUNT: string; BAN_REASON_OPTION_OTHER: string; BAN_REASON_OPTION_SPAM_ACCOUNT: string; BAN_USER: FM<"user", false>; BAN_USER_BODY: FM<"user", false>; BAN_USER_CONFIRMED: FM<"user", false>; BAN_USER_ERROR_GENERIC: FM<"user", false>; BAN_USER_FROM_SERVER: FM<"user", false>; BAN_USER_TITLE: FM<"user", false>; BANS: string; BANS_HEADER: FM<"bans", false>; BANS_HEADER_NEW: string; BANS_HINT: FM; BANS_NO_RESULTS: string; BANS_NO_USERS_BANNED: string; BANS_SEARCH_PLACEHOLDER: string; BANS_SEARCH_PLACEHOLDER_NEW: string; BASIC: string; BEEP_BOOP: string; BEGINNING_CHANNEL_DESCRIPTION: FM<["channelName", "topicHook"], true>; BEGINNING_CHANNEL_NO_HISTORY: FM<"channelName", true>; BEGINNING_CHANNEL_WELCOME: FM<"channelName", false>; BEGINNING_CHAT_DM_MOBILE: FM<"username", false>; BEGINNING_DM: FM<"username", true>; BEGINNING_GROUP_DM: FM<"name", true>; BEGINNING_GROUP_DM_MANAGED: string; BEGINNING_GROUP_DM_NEW: string; BEGINNING_ROLE_REQUIRED_CHANNEL_DESCRIPTION: FM<["channelName", "topicHook"], true>; BEGINNING_THREAD_ARCHIVE_DESCRIPTION: FM<[never, "autoArchiveDurationHook"], true>; BETA: string; bg: string; BGN_NAME: string; BIDIRECTIONAL_STEP_HEADER: FM<"number" | "total", false>; BILLING: string; BILLING_ACCEPT_TERMS_PAID_SERVICES_TOOLTIP: string; BILLING_ACCOUNT_CREDIT: string; BILLING_ACCOUNT_CREDIT_DESCRIPTION: string; BILLING_ACCOUNT_CREDIT_DESCRIPTION_IOS_DISCLAIMER: string; BILLING_ADD_PAYMENT_METHOD: string; BILLING_ADDRESS: string; BILLING_ADDRESS_ACTION: string; BILLING_ADDRESS_ADDRESS: string; BILLING_ADDRESS_ADDRESS2: string; BILLING_ADDRESS_ADDRESS2_PLACEHOLDER: string; BILLING_ADDRESS_ADDRESS_ERROR_REQUIRED: string; BILLING_ADDRESS_ADDRESS_PLACEHOLDER: string; BILLING_ADDRESS_CITY: string; BILLING_ADDRESS_CITY_ERROR_REQUIRED: string; BILLING_ADDRESS_CITY_PLACEHOLDER: string; BILLING_ADDRESS_COUNTRY: string; BILLING_ADDRESS_COUNTRY_ERROR_REQUIRED: string; BILLING_ADDRESS_NAME: string; BILLING_ADDRESS_NAME_ERROR_REQUIRED: string; BILLING_ADDRESS_POSTAL_CODE: string; BILLING_ADDRESS_POSTAL_CODE_CANADA_PLACEHOLDER: string; BILLING_ADDRESS_POSTAL_CODE_ERROR_REQUIRED: string; BILLING_ADDRESS_PROVINCE: string; BILLING_ADDRESS_PROVINCE_ERROR_REQUIRED: string; BILLING_ADDRESS_REGION: string; BILLING_ADDRESS_STATE: string; BILLING_ADDRESS_STATE_ERROR_REQUIRED: string; BILLING_ADDRESS_ZIP_CODE: string; BILLING_ADDRESS_ZIP_CODE_ERROR_LENGTH: string; BILLING_ADDRESS_ZIP_CODE_ERROR_REQUIRED: string; BILLING_ADDRESS_ZIP_CODE_INVALID: string; BILLING_ADDRESS_ZIP_CODE_PLACEHOLDER: string; BILLING_ANNUAL_DISCOUNT_PAYMENT_MODAL_INFO: FM<"discountedPrice" | "regularPrice", true>; BILLING_ANNUAL_DISCOUNT_YEARLY_PRICE_SUBTEXT: FM<"regularPrice", false>; BILLING_APPLICATION_CONSUMABLE_REFUND_TEXT_UNABLE: FM<"supportURL", true>; BILLING_APPLICATION_REFUND_TEXT: FM<"dateLimit" | "playtimeLimit" | "supportURL", true>; BILLING_APPLICATION_REFUND_TEXT_UNABLE: FM<"dateLimit" | "playtimeLimit", false>; BILLING_BOOST_PURCHASE_IN_REVERSE_TRIAL_CONTEXT: FM<"endDate", true>; BILLING_BOOST_PURCHASE_IN_REVERSE_TRIAL_LEGAL_COPY: FM<"contactUsArticle" | "paidServiceTermsArticle" | "price" | "subscriptionFAQArticle", true>; BILLING_BOOST_PURCHASE_IN_REVERSE_TRIAL_LEGAL_COPY_V2: FM<"buttonText" | "contactUsArticle" | "paidServiceTermsArticle" | "price" | "subscriptionFAQArticle", true>; BILLING_BUNDLE_ALREADY_PURCHASED: string; BILLING_BUNDLE_PARTIALLY_OWNED: string; BILLING_CHECKOUT_CONFIRMATION_BODY: string; BILLING_CHECKOUT_CONFIRMATION_CANCEL: string; BILLING_CHECKOUT_CONFIRMATION_CONFIRM: string; BILLING_CHECKOUT_CONFIRMATION_HEADER: string; BILLING_CODE_REDEMPTION_REDIRECT: FM; BILLING_COLLECTIBLES_REFUND_TEXT_UNABLE: string; BILLING_CONFIRM_PRICE_CHANGE_TITLE: string; BILLING_DISCOUNT_LEGAL_COPY: FM<"buttonText" | "cancelSubscriptionArticle" | "interval" | "paidServiceTermsArticle", true>; BILLING_DISCOUNT_MONTHLY_PRICE: FM<"discountedPrice" | "regularPrice", true>; BILLING_DISCOUNT_MONTHLY_PRICE_GENERIC: FM<"discountedPrice" | "numMonths" | "regularPrice", true>; BILLING_DISCOUNT_PAYMENT_MODAL_INFO: FM<"discountedPrice" | "regularPrice", true>; BILLING_DISCOUNT_PAYMENT_MODAL_INFO_GENERIC: FM<"discountedPrice" | "numMonths" | "regularPrice", true>; BILLING_DOWNLOAD_INVOICE: string; BILLING_DOWNLOAD_INVOICE_ADDRESS_OVERRIDE_DESCRIPTION: string; BILLING_DOWNLOAD_INVOICE_ADDRESS_OVERRIDE_TOGGLE: string; BILLING_DOWNLOAD_INVOICE_PDF_BUTTON: string; BILLING_DOWNLOAD_INVOICE_PDF_BUTTON_ERROR: string; BILLING_DOWNLOAD_INVOICE_VAT: string; BILLING_DOWNLOAD_REFUND_INVOICE: string; BILLING_ERROR_ADD_PAYMENT_SOURCE_STREAMER_MODE: string; BILLING_ERROR_CONTACT_PAYMENT_SOURCE: string; BILLING_ERROR_GENERIC: string; BILLING_ERROR_INVALID_BILLING_ADDRESS: string; BILLING_ERROR_INVALID_CAPTCHA_RESPONSE: string; BILLING_ERROR_INVALID_PLAN_FOR_PAYMENT_SOURCE: string; BILLING_ERROR_NEGATIVE_INVOICE_AMOUNT: string; BILLING_ERROR_PENDING_PAYMENT: string; BILLING_ERROR_PURCHASE: string; BILLING_ERROR_PURCHASE_DETAILS_NOT_FOUND: string; BILLING_ERROR_RATE_LIMIT: string; BILLING_ERROR_SECTION_ADDRESS: string; BILLING_ERROR_SECTION_CARD: string; BILLING_ERROR_TRY_ANOTHER: string; BILLING_ERROR_UNKNOWN_PAYMENT_SOURCE: string; BILLING_ERROR_UNSUPPORTED_CURRENCY: string; BILLING_EXTERNAL_DESCRIPTION: FM<"billingHistoryLink" | "paymentGatewayName", true>; BILLING_EXTERNAL_HEADER: FM<"paymentGatewayName", false>; BILLING_EXTERNAL_MANAGE_ELSEWHERE: FM<"paymentGatewayName" | "subscriptionManagementLink", true>; BILLING_FINAL_PRICE_MAY_CHANGE: FM<"documentationLink", true>; BILLING_GIFT_COPIED: string; BILLING_GIFT_LINK: string; BILLING_GIFT_PURCHASE_TOOLTIP: string; BILLING_GIFT_REFUND_TEXT: FM<"dateLimit" | "supportURL", true>; BILLING_GIFT_REFUND_TEXT_UNABLE: FM<"dateLimit", false>; BILLING_HISTORY: string; BILLING_HOW_PRICING_WORKS: FM<"documentationLink", true>; BILLING_INVOICE_GIFT_PLAN: FM<"planName", false>; BILLING_INVOICE_SUBSCRIPTION_CREDIT_APPLIED: string; BILLING_INVOICE_TODAY_TOTAL: FM; BILLING_INVOICE_TODAY_TOTAL_TAX_INCLUSIVE: FM; BILLING_INVOICE_TOTAL: FM; BILLING_INVOICE_TOTAL_TAX_INCLUSIVE: FM; BILLING_IS_GIFT_PURCHASE: string; BILLING_LEGAL_MUMBO_JUMBO: string; BILLING_LEGAL_MUMBO_JUMBO_TERMS_LABEL: FM<"paidURL" | "termsURL", true>; BILLING_LEGAL_MUMBO_JUMBO_TERMS_LABEL_SIMPLE: FM<"paidURL", true>; BILLING_LEGAL_MUMBO_JUMBO_TERMS_LABEL_V2: FM<"paidURL" | "primaryText", true>; BILLING_LEGAL_MUMBO_JUMBO_TERMS_LABEL_V3: FM<"paidURL" | "primaryText", true>; BILLING_LEGAL_MUMBO_JUMBO_TRIAL_TERMS_LABEL: FM<"paidURL" | "rate" | "renewalDate" | "termsURL", true>; BILLING_MANAGE_BILLING: string; BILLING_MANAGE_ON_GOOGLE_PLAY: string; BILLING_MANAGE_ON_GOOGLE_PLAY_LINK: FM<"onClick", true>; BILLING_MANAGE_SUBSCRIPTION: string; BILLING_MANAGED_BY_APPLE: string; BILLING_MANAGED_BY_PAYMENT_GATEWAY: FM<"paymentGatewayName", false>; BILLING_NO_PAYMENT_METHOD: string; BILLING_NO_PAYMENT_METHOD_DESCRIPTION: string; BILLING_ONLINE_PURCHASE_WAIVER: string; BILLING_ONLINE_PURCHASE_WAIVER_CHECKBOX: string; BILLING_ONLINE_PURCHASE_WAIVER_DISCLAIMER: string; BILLING_PAY_FOR_IT_WITH: string; BILLING_PAYMENT_BREAKDOWN_NET: string; BILLING_PAYMENT_BREAKDOWN_TAXES: string; BILLING_PAYMENT_BREAKDOWN_TOTAL: string; BILLING_PAYMENT_HISTORY: string; BILLING_PAYMENT_ID: string; BILLING_PAYMENT_ID_COPIED: string; BILLING_PAYMENT_ID_COPY: string; BILLING_PAYMENT_PREMIUM: string; BILLING_PAYMENT_PREMIUM_DESCRIPTION: string; BILLING_PAYMENT_PREMIUM_TERMS_LEGALESE_MONTHLY: FM<"paidURL" | "price" | "privacyUrl" | "termsUrl", true>; BILLING_PAYMENT_PREMIUM_TERMS_LEGALESE_MULTI_MONTH: FM<"intervalCount" | "paidURL" | "price" | "privacyUrl" | "termsUrl", true>; BILLING_PAYMENT_PREMIUM_TERMS_LEGALESE_YEARLY: FM<"paidURL" | "price" | "privacyUrl" | "termsUrl", true>; BILLING_PAYMENT_SOURCE_INVALID: string; BILLING_PAYMENT_SOURCES: string; BILLING_PAYMENT_TABLE_HEADER_AMOUNT: string; BILLING_PAYMENT_TABLE_HEADER_DATE: string; BILLING_PAYMENT_TABLE_HEADER_DESCRIPTION: string; BILLING_PLAN_SELECT_DESCRIPTION_PREMIUM_TIER_1_PREMIUM_GUILD_BUNDLE: FM<"num", false>; BILLING_PLAN_SELECT_DESCRIPTION_PREMIUM_TIER_2_PREMIUM_GUILD_BUNDLE: FM<"num", false>; BILLING_PLAN_SELECT_INCLUDES_BOOSTS: FM<"num", false>; BILLING_PLAN_SELECTION: string; BILLING_PLAN_SELECTION_DISCOUNT: FM<"discount", false>; BILLING_POST_PURCHASE_JOIN_GUILD_FOR_EMOJI: FM<"guildName", true>; BILLING_POST_PURCHASE_JOIN_GUILD_FOR_EMOJI_CTA: string; BILLING_PREMIUM_AND_PREMIUM_GUILD_PLAN_ACTIVATED: FM<"planName", true>; BILLING_PREMIUM_AND_PREMIUM_GUILD_PLANS: string; BILLING_PREMIUM_GIFT_MONTH_MOBILE: FM<"price", false>; BILLING_PREMIUM_GIFT_YEAR_MOBILE: FM<"price", false>; BILLING_PREMIUM_GUILD_PLANS: string; BILLING_PREMIUM_PLANS: string; BILLING_PREMIUM_PREMIUM_TEXT_A11Y_LABEL: FM<"description" | "product", false>; BILLING_PREMIUM_REFUND_TEXT: FM<"dateLimit" | "supportURL", true>; BILLING_PREMIUM_REFUND_TEXT_UNABLE: FM<"dateLimit", false>; BILLING_PREMIUM_TIER_0_PLAN_ACTIVATED: string; BILLING_PREMIUM_TIER_1_PLAN_ACTIVATED: string; BILLING_PREMIUM_TIER_2_PLAN_ACTIVATED: string; BILLING_PREORDER_REFUND_TEXT: FM<"supportURL", true>; BILLING_PRICE_PER_MONTH: FM<"price", false>; BILLING_PRICE_PER_MONTH_BOLD: FM<"price", true>; BILLING_PRICE_PER_MONTH_CURRENT_PLAN_MOBILE: FM<"price", false>; BILLING_PRICE_PER_MONTH_EACH: FM<"price", false>; BILLING_PRICE_PER_MULTI_MONTH_EACH: FM<"price", false>; BILLING_PRICE_PER_MULTI_MONTHS: FM<"intervalCount" | "price", false>; BILLING_PRICE_PER_MULTI_MONTHS_BOLD: FM<"intervalCount" | "price", true>; BILLING_PRICE_PER_YEAR: FM<"price", false>; BILLING_PRICE_PER_YEAR_BOLD: FM<"price", true>; BILLING_PRICE_PER_YEAR_CURRENT_PLAN_MOBILE: FM<"price", false>; BILLING_PRICE_PER_YEAR_EACH: FM<"price", false>; BILLING_PURCHASE_DETAILS_HEADER: string; BILLING_PURCHASE_TERMS_ONE_TIME_DISCLAIMER: FM<"primaryText" | "termsURL", true>; BILLING_PURCHASE_TERMS_SUBSCRIPTION_DISCLAIMER: FM<"period" | "primaryText" | "termsURL" | "userSettingsURL", true>; BILLING_REFUND_ALREADY_CONSUMED_REASON: string; BILLING_REFUND_ALREADY_REFUNDED_PREMIUM_GUILD_REASON: string; BILLING_REFUND_ALREADY_REFUNDED_PREMIUM_REASON: string; BILLING_REFUND_BUTTON_TEXT: string; BILLING_REFUND_ERROR: FM<"error", false>; BILLING_REFUND_ERROR_CONTACT_SUPPORT: FM<"supportUrl", true>; BILLING_REFUND_GENERIC_REASON: string; BILLING_REFUND_HEADER: string; BILLING_REFUND_MODAL_HEADER: string; BILLING_REFUND_MODAL_HEADER_ERROR: string; BILLING_REFUND_ONE_TIME_REFUND_NOTICE: string; BILLING_REFUND_PURCHASE_DATE: FM<"daysSincePurchase", false>; BILLING_REFUND_PURCHASE_DATE_SUBHEADER: string; BILLING_REFUND_RELEASE_DATE_SUBHEADER: string; BILLING_REFUND_REPORT_A_PROBLEM: string; BILLING_REFUND_REVOCATION_NOTICE: string; BILLING_REFUND_SELECT_REASON: string; BILLING_REFUND_USER_REASON_BUYERS_REMORSE: string; BILLING_REFUND_USER_REASON_DONT_NEED: string; BILLING_REFUND_USER_REASON_FORGOT_TO_CANCEL: string; BILLING_REFUND_USER_REASON_GIFTING_REFUND: string; BILLING_REFUND_USER_REASON_OTHER: string; BILLING_REFUND_USER_REASON_SERVER_BOOSTING_COOLDOWN: string; BILLING_REFUND_USER_REASON_USER_CONFUSION: string; BILLING_REFUND_USER_REASON_WANT_TO_SWITCH_TIERS: string; BILLING_REFUND_USER_REASON_WRONG_PURCHASE: string; BILLING_RESUME_PAUSED_SUBSCRIPTION_IMMEDIATELY: string; BILLING_REVERSE_TRIAL_LEGAL_COPY: FM<"buttonText" | "cancelSubscriptionArticle" | "interval" | "paidServiceTermsArticle", true>; BILLING_SALES_TAX_ADDED: FM<"tax", false>; BILLING_SALES_TAX_INCLUDED: string; BILLING_SECURE: string; BILLING_SECURE_TOOLTIP: string; BILLING_SELECT_PAYMENT_SOURCE_TOOLTIP: string; BILLING_SELECT_PLAN: string; BILLING_SELECT_PLAN_GUILD_SUBSCRIPTION: FM<"planName", false>; BILLING_SELECT_PLAN_PREMIUM_MONTH_TIER_0: string; BILLING_SELECT_PLAN_PREMIUM_MONTH_TIER_1: string; BILLING_SELECT_PLAN_PREMIUM_MONTH_TIER_2: string; BILLING_SELECT_PLAN_PREMIUM_MONTHS_TIER_2: FM<"intervalCount", false>; BILLING_SELECT_PLAN_PREMIUM_YEAR_TIER_0: string; BILLING_SELECT_PLAN_PREMIUM_YEAR_TIER_1: string; BILLING_SELECT_PLAN_PREMIUM_YEAR_TIER_2: string; BILLING_SETTINGS: string; BILLING_STANDALONE_ADD_PAYMENT_TITLE: string; BILLING_STANDALONE_GUILD_SUBSCRIPTION_PURCHASE_TITLE: string; BILLING_STANDALONE_MANAGE_SUBSCRIPTION_TITLE: string; BILLING_STANDALONE_PAYMENT_HISTORY_TITLE: string; BILLING_STANDALONE_PREMIUM_GIFT_PURCHASE_TITLE: string; BILLING_STANDALONE_PREMIUM_PURCHASE_TITLE: string; BILLING_STANDALONE_PREMIUM_SWITCH_PLAN_TITLE: string; BILLING_STANDALONE_PROMOTION_REDEMPTION_TITLE: string; BILLING_STEP_ADDRESS: string; BILLING_STEP_AWAITING_AUTHENTICATION: string; BILLING_STEP_CREDIT_CARD_INFORMATION: string; BILLING_STEP_PAYMENT: string; BILLING_STEP_PAYMENT_INFO: string; BILLING_STEP_PAYMENT_METHOD: string; BILLING_STEP_PAYMENT_TYPE: string; BILLING_STEP_PAYPAL: string; BILLING_STEP_PLAN: string; BILLING_STEP_PLAN_AND_PAYMENT: string; BILLING_STEP_REVIEW: string; BILLING_STEP_SELECT_PLAN: string; BILLING_STEP_SHOP: string; BILLING_STEP_VENMO: string; BILLING_SUBSCRIBE_TO_PLAN: string; BILLING_SUBSCRIPTION_CREDIT: string; BILLING_SUBTOTAL: string; BILLING_SWITCH_PLAN_CHANGE: string; BILLING_SWITCH_PLAN_CHANGE_DATE: FM<"renewalDate", true>; BILLING_SWITCH_PLAN_CHANGE_DATE_WITH_CHARGE: FM<"rate" | "renewalDate", true>; BILLING_SWITCH_PLAN_CHOOSE_ONE: string; BILLING_SWITCH_PLAN_CHOOSE_ONE_TRIAL_SUBTITLE: FM; BILLING_SWITCH_PLAN_CHOOSE_ONE_TRIAL_SUBTITLE_DURATION: FM<"duration", true>; BILLING_SWITCH_PLAN_CONFIRM_TIER_0: string; BILLING_SWITCH_PLAN_CONFIRM_TIER_1: string; BILLING_SWITCH_PLAN_CONFIRM_TIER_1_YEAR_TO_MONTH: string; BILLING_SWITCH_PLAN_CONFIRM_TIER_2: string; BILLING_SWITCH_PLAN_CONFIRM_TIER_2_GENERIC_TO_MONTH: string; BILLING_SWITCH_PLAN_CONFIRM_TIER_2_NO_PAYMENT_TRIAL: string; BILLING_SWITCH_PLAN_CONFIRM_TIER_2_TO_TIER_1: string; BILLING_SWITCH_PLAN_CONFIRM_TIER_2_YEAR_TO_MONTH: string; BILLING_SWITCH_PLAN_CONFIRM_TO_TIER_0: string; BILLING_SWITCH_PLAN_CONFIRM_UPGRADE_TIER_1_YEAR: string; BILLING_SWITCH_PLAN_CONFIRM_UPGRADE_TIER_2_MONTH: string; BILLING_SWITCH_PLAN_CONFIRM_UPGRADE_TIER_2_MULTI_MONTH: string; BILLING_SWITCH_PLAN_CONFIRM_UPGRADE_TIER_2_YEAR: FM<"numFreeGuildSubscriptions", false>; BILLING_SWITCH_PLAN_CURRENT_PLAN: string; BILLING_SWITCH_PLAN_DELAYED_CONFIRMATION_TIER_1: FM; BILLING_SWITCH_PLAN_DELAYED_CONFIRMATION_TIER_2: FM; BILLING_SWITCH_PLAN_DELAYED_CONFIRMATION_UPGRADE_TIER_1_YEAR: FM; BILLING_SWITCH_PLAN_DELAYED_CONFIRMATION_UPGRADE_TIER_2_YEAR: FM<"numFreeGuildSubscriptions", true>; BILLING_SWITCH_PLAN_DOWNGRADE_BODY_MONTH: string; BILLING_SWITCH_PLAN_DOWNGRADE_BODY_TIER_0: string; BILLING_SWITCH_PLAN_DOWNGRADE_BODY_TIER_1: string; BILLING_SWITCH_PLAN_DOWNGRADE_BODY_TIER_1_TO_TIER_0: string; BILLING_SWITCH_PLAN_PURCHASE_DETAILS: string; BILLING_SWITCH_PLAN_SUBSCRIPTION_COST: string; BILLING_SWITCH_PLAN_TIER_0_DESCRIPTION_V3: FM<["uploadSize", "uploadSizeHook"], true>; BILLING_SWITCH_PLAN_TIER_1_DESCRIPTION: string; BILLING_SWITCH_PLAN_TIER_2_DESCRIPTION: FM<"numFreeGuildSubscriptions", false>; BILLING_SWITCH_PLAN_UPGRADE: string; BILLING_SWITCH_PLAN_UPGRADE_BODY_TIER_1: string; BILLING_SWITCH_PLAN_UPGRADE_BODY_TIER_1_YEAR: string; BILLING_SWITCH_PLAN_UPGRADE_BODY_TIER_2: string; BILLING_SWITCH_PLAN_UPGRADE_BODY_TIER_2_YEAR: FM<"numFreeGuildSubscriptions", false>; BILLING_SWITCH_PLAN_YEARLY_FREE_MONTHS: string; BILLING_TAG_CANCELED: string; BILLING_TAG_FAILED: string; BILLING_TAG_PARTIALLY_REFUNDED: string; BILLING_TAG_PENDING: string; BILLING_TAG_REFUNDED: string; BILLING_TAG_REVERSED: string; BILLING_THIRD_PARTY_EULA_LABEL: FM<"applicationName", true>; BILLING_TRIAL_1_WEEK_PERIOD: string; BILLING_TRIAL_2_WEEK_PERIOD: string; BILLING_TRIAL_30_DAY_PERIOD: string; BILLING_TRIAL_CANCEL_ANYTIME: string; BILLING_TRIAL_CANCEL_ANYTIME_LINK: FM<"link", true>; BILLING_TRIAL_CHOOSE_PAYMENT: string; BILLING_TRIAL_FREE_TRIAL_TEXT: string; BILLING_TRIAL_LEGAL_COPY: FM<"buttonText" | "cancelSubscriptionArticle" | "paidServiceTermsArticle", true>; BILLING_TRIAL_LEGAL_COPY_V2: FM<"buttonText" | "cancelSubscriptionArticle" | "interval" | "paidServiceTermsArticle", true>; BILLING_TRIAL_MONTHLY_PRICE_AFTER_TRIAL: FM<"price", false>; BILLING_TRIAL_PAYMENT_MODAL_INFO: FM<"trialEnd" | "trialPeriod", true>; BILLING_TRIAL_PRICE_NOW: FM<"price", false>; BILLING_TRIAL_REDEMPTION_DISABLED: string; BILLING_TRIAL_YEARLY_PRICE_AFTER_TRIAL: FM<"price", false>; BILLING_YEARLY_PLAN_SAVINGS: FM<"percent", false>; BITRATE_KBPS: FM<"bitrate", false>; BITRATE_KBPS_NO_SPACE: FM<"bitrate", false>; BLACK_FRIDAY_PROMOTION_GIFT_INVENTORY_TITLE: string; BLOCK: string; BLOCK_SPAMMER_HEADER: string; BLOCK_SPAMMER_SUBHEADER: FM<"username", false>; BLOCK_USER_ERROR_TOO_MANY_BLOCKED_USERS: string; BLOCKED: string; BLOCKED_BY_PROXY_NOTICE: string; BLOCKED_COUNT: FM<"count", false>; BLOCKED_MESSAGE_COUNT: FM<"count", false>; BLOCKED_MESSAGES: FM<"count", false>; BLOCKED_MESSAGES_HIDE: FM<"count", false>; BLOCKED_MESSAGES_SHOW: FM<"count", false>; BLOG_POST: FM<"url", true>; BLUE: string; BOGO_ANNOUNCEMENT_MODAL_HEADER: string; BOGO_ANNOUNCEMENT_MODAL_REMIXING_CARD_BODY_FORMATTED: FM<"helpCenterLink", true>; BOGO_ANNOUNCEMENT_MODAL_REMIXING_CARD_HEADER: string; BOGO_ANNOUNCEMENT_MODAL_SOUNDBOARD_CARD_BODY_FORMATTED: string; BOGO_ANNOUNCEMENT_MODAL_SOUNDBOARD_CARD_HEADER: string; BOGO_ANNOUNCEMENT_MODAL_SUBHEADER: string; BOGO_ANNOUNCEMENT_MODAL_THEMES_CARD_BODY: string; BOGO_ANNOUNCEMENT_MODAL_THEMES_CARD_HEADER: string; BOGO_ANNOUNCEMENT_MODAL_UPGRADE_HEADER: string; BOGO_BUY_HEADLINE: string; BOGO_CHANGE_LOG_BOOST_BODY: string; BOGO_CHANGE_LOG_BOOST_SUBTITLE: string; BOGO_CHANGE_LOG_FILE_BODY_INCREASE: FM<"premiumMaxSize", false>; BOGO_CHANGE_LOG_FILE_SUBTITLE: string; BOGO_CHANGE_LOG_MORE: string; BOGO_CHANGE_LOG_REDEEM: string; BOGO_CHANGE_LOG_STREAM_BODY: string; BOGO_CHANGE_LOG_STREAM_SUBTITLE: string; BOGO_CHANGE_LOG_TITLE: string; BOGO_CLAIM_OFFER: string; BOGO_HURRY_UP_OFFER_ENDS_ON_DATE: FM<"date" | "helpdeskArticle", true>; BOGO_HURRY_UP_OFFER_ENDS_ON_DATE_WITHOUT_LINK: FM<"date", false>; BOGO_LIMITED_TIME_VALUE_PROP: string; BOGO_MARKETING_PAGE_BANNER_HEADER_2024: string; BOGO_MARKETING_PAGE_BANNER_NON_NITRO_HEADER_2024: string; BOGO_MARKETING_PAGE_BANNER_SUBHEADER_2024: FM<"helpCenterLink", true>; BOGO_PAYMENT_MODAL_BANNER_2024: string; BOGO_PERKS_SUBTITLE_NON_SUB_FORMATTED: FM<"helpCenterLink", true>; BOGO_PERKS_SUBTITLE_SUB_FORMATTED: FM<"helpCenterLink", true>; BOGO_PILL: string; BOGO_PILL_2024_V1: string; BOGO_PILL_2024_V2: string; BOGO_SUPERCHARGE_YOUR_EXPERIENCE: string; BOGO_TERMS_APPLY: string; BOGO_UNTIL_OFFER_ENDS: FM<"hours" | "minutes" | "seconds", false>; BOGO_UNTIL_OFFER_ENDS_DAYS: FM<"days", false>; BOGO_UPGRADE_HEADLINE: string; BOGO_VALUE_PROP: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_BOOSTER_RECOGNITION_BOOSTER_ROLE: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_BOOSTER_RECOGNITION_COMMUNITY_SUPPORT: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_BOOSTER_RECOGNITION_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_BOOSTER_RECOGNITION_MEMBER_LIST_ICON: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_BOOSTER_RECOGNITION_PROFILE_BADGE: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_BOOSTS_REQUIRED: FM<"numBoostsRequired", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_CURRENT_TIER_LABEL: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_ANSWER_1: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_ANSWER_2: FM<"helpCenterUrl", true>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_ANSWER_3: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_ANSWER_4: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_QUESTION_1: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_QUESTION_2: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_QUESTION_3: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_FAQ_QUESTION_4: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_MOBILE_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_NEXT_TIER: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_ANIMATED_GUILD_BANNER: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_ANIMATED_GUILD_ICON: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_AUDIO_QUALITY: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_AUDIO_QUALITY_WITH_BITRATE: FM<"bitrate", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_CUSTOM_EMOJI: FM<"numEmojiSlots", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_CUSTOM_SOUNDS: FM<"numSoundboardSlots", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_CUSTOM_STICKERS: FM<"numStickerSlots", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_GUILD_BANNER: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_GUILD_BANNER_ANIMATED: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_GUILD_BANNER_STATIC: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_HIGHEST_AUDIO_QUALITY: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_LARGER_FILE_UPLOADS: FM<"uploadSizeLimit", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_ROLE_ICONS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_STAGE_SEATS: FM<"numStageSeats", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_STAGE_SEATS_AND_MORE: FM<"numStageSeats", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_STREAM_QUALITY: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_STREAM_QUALITY_WITH_RESOLUTION: FM<"resolution", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PERK_VANITY_URL: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PRODUCT_DEMO_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PROGRESS_BAR_SCREEN_READER_VALUE: FM<"numSubscriptionsApplied", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PROGRESS_BAR_SCREEN_READER_VALUE_TIER_UNLOCKED: FM<"numSubscriptionsApplied" | "tierName", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PROGRESS_BAR_TOOLTIP_REMAINING_FOR_TIER: FM<"numBoostsRequired" | "tierName", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_PROGRESS_BAR_TOOLTIP_TIER_UNLOCKED: FM<"tierName", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_SHOW_LESS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_SHOW_MORE: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_CELL_GUILD_BANNER_ANIMATED: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_CELL_GUILD_BANNER_STATIC: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_CELL_STREAM_QUALITY: FM<"framerate" | "resolution", false>; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_COLUMN_HEADING_PERKS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_CURRENT_TAG: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_ANIMATED_GUILD_ICON: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_CUSTOM_ROLE_ICONS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_EMOJI_SLOTS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_GUILD_BANNER: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_GUILD_INVITE_BACKGROUND: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_SOUNDBOARD_SLOTS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_STICKER_SLOTS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_STREAM_QUALITY: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_UPLOAD_SIZE_LIMIT: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_VANITY_URL: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_VIDEO_STAGE_SEATS: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_PERK_HEADING_VOICE_QUALITY: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_COMPARISON_TABLE_RECOMMENDED_TAG: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TIER_NONE_NAME: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TOP_PERKS_CARDS_ANIMATED_GUILD_ICON_DESCRIPTION: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TOP_PERKS_CARDS_ANIMATED_GUILD_ICON_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TOP_PERKS_CARDS_HD_STREAMING_DESCRIPTION: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TOP_PERKS_CARDS_HD_STREAMING_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TOP_PERKS_CARDS_HEADING: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TOP_PERKS_VANITY_URL_DESCRIPTION: string; BOOSTING_MARKETING_REDESIGN_EXPERIMENT_TOP_PERKS_VANITY_URL_HEADING: string; BOT_CALL_IDLE_DISCONNECT_2: FM<"number", false>; BOT_DM_EXPLICIT_CONTENT: FM<"name", false>; BOT_DM_RATE_LIMITED: string; BOT_DM_SEND_FAILED: string; BOT_DM_SEND_FAILED_WITH_HELP_LINK: FM<"helpUrl", false>; BOT_DM_SEND_FAILED_WITH_HELP_LINK_MOBILE: FM<"helpUrl", true>; BOT_DM_SEND_MESSAGE_TEMPORARILY_DISABLED: string; BOT_DM_TOO_MANY_ANNOUNCEMENT_THREADS: string; BOT_DM_TOO_MANY_POSTS: string; BOT_DM_TOO_MANY_THREADS: string; BOT_GDM_EXPLICIT_CONTENT: FM<"name", false>; BOT_GUILD_EXPLICIT_CONTENT: FM<"name", false>; BOT_PROFILE_CREATED_ON: string; BOT_PROFILE_REMOVE_PRIVATE_CHANNEL_INTEGRATION: string; BOT_PROFILE_SLASH_COMMANDS: string; BOT_PROFILE_VIEW_ALL_COMMANDS_CTA: string; BOT_REQUIRES_EMAIL_VERIFICATION: string; BOT_TAG_BOT: string; BOT_TAG_FORUM_ORIGINAL_POSTER: string; BOT_TAG_FORUM_ORIGINAL_POSTER_TOOLTIP: string; BOT_TAG_SERVER: string; BOTS_DATA_ACCESS_BASELINE: FM<"helpCenterUrl", true>; BOTS_DATA_ACCESS_GUILD_MEMBERS_BODY: string; BOTS_DATA_ACCESS_GUILD_MEMBERS_HEADER: string; BOTS_DATA_ACCESS_GUILD_PRESENCES_BODY: string; BOTS_DATA_ACCESS_GUILD_PRESENCES_HEADER: string; BOTS_DATA_ACCESS_MESSAGE_CONTENT_BODY: string; BOTS_DATA_ACCESS_MESSAGE_CONTENT_HEADER: string; BOTS_DATA_ACCESS_TAB: string; BOUNCED_EMAIL_DETECTED_NOTICE: string; BRL_NAME: string; BROWN: string; BROWSE_CHANNELS_TAB: string; BROWSER_CHROME: string; BROWSER_FIREFOX: string; BROWSER_HANDOFF_AUTHENTICATING_DESCRIPTION: string; BROWSER_HANDOFF_AUTHENTICATING_TITLE: string; BROWSER_HANDOFF_DETECTING_TITLE: string; BROWSER_HANDOFF_DONE_SAFE_TO_CLOSE: string; BROWSER_HANDOFF_DONE_TITLE: string; BROWSER_HANDOFF_FAILED_TITLE: string; BROWSER_HANDOFF_SUCCESS_ACTION: FM<"name", false>; BROWSER_HANDOFF_SUCCESS_BODY: string; BROWSER_HANDOFF_SUCCESS_CANCEL: string; BROWSER_HANDOFF_SUCCESS_TITLE: FM<"name", false>; BROWSER_INPUT_DEVICE_WARNING: FM; BROWSER_NOT_SUPPORTED: string; BROWSER_NOTIFICATIONS_ENABLED_BODY: string; BROWSER_OUTPUT_DEVICE_WARNING: FM; BUG_REPORT_ADD_ATTACHMENTS: string; BUG_REPORT_ATTACHMENTS: string; BUG_REPORT_BUG_SUBMITTED: string; BUG_REPORT_CLIENT_BUILD_NUMBER: string; BUG_REPORT_CLIENT_VERSION: string; BUG_REPORT_DESCRIPTION: string; BUG_REPORT_DEVICE: string; BUG_REPORT_ERROR_NAME_REQUIRED: string; BUG_REPORT_ERROR_PRIORITY_REQUIRED: string; BUG_REPORT_EXTERNAL_SOURCE: string; BUG_REPORT_FAILED_TO_SUBMIT: string; BUG_REPORT_FEATURE_AREA: string; BUG_REPORT_HAS_BEEN_TURNED_OFF_TEXT: string; BUG_REPORT_IS_ANDROID_REACT_NATIVE: string; BUG_REPORT_LOCALE: string; BUG_REPORT_NAME: string; BUG_REPORT_NO_SCREENSHOT: string; BUG_REPORT_OS: string; BUG_REPORT_OS_VERSION: string; BUG_REPORT_OVERRIDE_PLATFORM_INFORMATION: string; BUG_REPORT_PRIORITY: string; BUG_REPORT_PRIORITY_CRITICAL_DESCRIPTION: FM; BUG_REPORT_PRIORITY_CRITICAL_TITLE: string; BUG_REPORT_PRIORITY_HIGH_DESCRIPTION: FM; BUG_REPORT_PRIORITY_HIGH_TITLE: string; BUG_REPORT_PRIORITY_LOW_DESCRIPTION: FM; BUG_REPORT_PRIORITY_LOW_TITLE: string; BUG_REPORT_PRIORITY_VERY_LOW_DESCRIPTION: FM; BUG_REPORT_PRIORITY_VERY_LOW_TITLE: string; BUG_REPORT_REMOVE_SCREENSHOT: string; BUG_REPORT_SELECT_FEATURE_AREA: string; BUG_REPORT_SOMETHING_IS_BROKEN: string; BUG_REPORT_STATUS_SENDING: string; BUG_REPORT_STATUS_SENT: string; BUG_REPORT_SUBMITTING: string; BUG_REPORT_SUBMITTING_BUG: string; BUG_REPORT_TITLE: string; BUG_REPORT_TURN_OFF_TEXT: string; BUG_REPORT_UPLOAD_ATTACHMENT: string; BUG_REPORT_WHAT_DID_YOU_EXPECT_TO_SEE: string; BUILD_OVERRIDE: string; BUILD_OVERRIDE_APPLY: string; BUILD_OVERRIDE_CLEAR: string; BUILD_OVERRIDE_EXPIRED: string; BUILD_OVERRIDE_FOR: FM<"releaseChannel", false>; BUILD_OVERRIDE_ID: string; BUILD_OVERRIDE_INCOMPATIBLE_CLIENT: FM<"releaseChannel", false>; BUILD_OVERRIDE_INCOMPATIBLE_TARGETS: FM<"requestedTargets", false>; BUILD_OVERRIDE_INVALID: string; BUILD_OVERRIDE_INVALID_USER: string; BUILD_OVERRIDE_ISNT_AVAILABLE: string; BUILD_OVERRIDE_LINK_COPIED: string; BUILD_OVERRIDE_LINK_COPY: string; BUILD_OVERRIDE_MODAL_APPLY: string; BUILD_OVERRIDE_MODAL_EXPIRES_DURATION: FM<"expirationDuration", false>; BUILD_OVERRIDE_MODAL_INVALID: string; BUILD_OVERRIDE_MODAL_INVALID_BUTTON: string; BUILD_OVERRIDE_MODAL_INVITE: string; BUNDLE_READY_BODY: string; BUNDLE_READY_LATER: string; BUNDLE_READY_RESTART: string; BUNDLE_READY_TITLE: string; BURGUNDY: string; BURST_MOBILE_NOT_READY_IMG_ALT: string; BURST_MOBILE_NOT_READY_TITLE: string; BURST_REACTION_ADD_UNLIMITED_ERROR_A11Y: FM<"name", false>; BURST_REACTION_ADD_UNLIMITED_SUCCESS_A11Y: FM<"name", false>; BURST_REACTION_REACTORS_A11Y: FM<"n" | "name", false>; BURST_REACTION_REMOVE_ERROR_A11Y: FM<"name", false>; BURST_REACTION_REMOVE_SUCCESS_A11Y: FM<"name", false>; BURST_REACTION_TOOLTIP_1: FM<"a" | "emojiName", false>; BURST_REACTION_TOOLTIP_1_N: FM<"a" | "emojiName" | "n", false>; BURST_REACTION_TOOLTIP_1_N_INTERACTIVE: FM<"a" | "emojiName" | "n", true>; BURST_REACTION_TOOLTIP_2: FM<"a" | "b" | "emojiName", false>; BURST_REACTION_TOOLTIP_2_N: FM<"a" | "b" | "emojiName" | "n", false>; BURST_REACTION_TOOLTIP_2_N_INTERACTIVE: FM<"a" | "b" | "emojiName" | "n", true>; BURST_REACTION_TOOLTIP_3: FM<"a" | "b" | "c" | "emojiName", false>; BURST_REACTION_TOOLTIP_3_N: FM<"a" | "b" | "c" | "emojiName" | "n", false>; BURST_REACTION_TOOLTIP_3_N_INTERACTIVE: FM<"a" | "b" | "c" | "emojiName" | "n", true>; BURST_REACTION_TOOLTIP_N: FM<"emojiName" | "n", false>; BURST_REACTION_TOOLTIP_N_INTERACTIVE: FM<"emojiName" | "n", true>; BURST_REACTIONS_LEFT: FM<"count", false>; BURST_REACTIONS_REMOVE_MODAL_CANCEL: string; BURST_REACTIONS_REMOVE_MODAL_CONFIRM: string; BURST_REACTIONS_REMOVE_MODAL_DESCRIPTION: string; BURST_REACTIONS_REMOVE_MODAL_TITLE: string; BUY_ONE_GET_ONE_FREE: string; BUY_ONE_GET_ONE_FREE_NEWLINE: FM; BUY_ONE_GET_ONE_MONTH_FREE: string; BUY_ONE_GET_ONE_MONTH_FREE_NEWLINE: FM; CALENDAR_CHANNEL_LOCATION: FM<"channelName" | "guildName", false>; CALL: string; CALL_ENDED: string; CALL_ENDED_DESCRIPTION: FM<"duration" | "timestamp", false>; CALL_FEEDBACK_CONFIRMATION: string; CALL_FEEDBACK_ISSUE_SECTION_HEADER: string; CALL_FEEDBACK_OPTION_AUDIO_CUT: string; CALL_FEEDBACK_OPTION_AUDIO_ECHOS: string; CALL_FEEDBACK_OPTION_AUDIO_ROBOTIC: string; CALL_FEEDBACK_OPTION_BACKGROUND_NOISE: string; CALL_FEEDBACK_OPTION_BAD_VOLUME: string; CALL_FEEDBACK_OPTION_COULD_NOT_HEAR_AUDIO: string; CALL_FEEDBACK_OPTION_HEADSET: string; CALL_FEEDBACK_OPTION_NOBODY_COULD_HEAR_ME: string; CALL_FEEDBACK_OPTION_OTHER: string; CALL_FEEDBACK_OPTION_SPEAKERPHONE: string; CALL_FEEDBACK_PROMPT: string; CALL_FEEDBACK_SENTIMENT_NEGATIVE: string; CALL_FEEDBACK_SENTIMENT_NEUTRAL: string; CALL_FEEDBACK_SENTIMENT_POSITIVE: string; CALL_FEEDBACK_SHEET_TITLE: string; CALL_HIGH_FIVE_EXCLAMATION: string; CALL_INVITE_NOT_FRIENDS: FM<"username", true>; CALL_MOBILE_TAP_TO_RETURN: FM<"callState", false>; CALL_SOUNDS_CONTEXT_MENU_GLOBAL: string; CALL_SOUNDS_CONTEXT_MENU_GUILD: string; CALL_SOUNDS_SETTINGS: string; CALL_SOUNDS_SETTINGS_ALL_SERVERS: FM<["soundName", "subtextHook"], true>; CALL_SOUNDS_SETTINGS_DESCRIPTION_2: FM<"helpdeskArticle", true>; CALL_SOUNDS_SETTINGS_GLOBAL_GUILD_SEARCH: string; CALL_SOUNDS_SETTINGS_JOIN_SOUND: FM<[never, "nitroWheelHook"], true>; CALL_SOUNDS_SETTINGS_JOIN_SOUND_CHANGE: string; CALL_SOUNDS_SETTINGS_JOIN_SOUND_REMOVE: string; CALL_SOUNDS_SETTINGS_SOUND_REMOVED: string; CALL_SOUNDS_UPSELL_DESCRIPTION_NON_SUB: string; CALL_SOUNDS_UPSELL_DESCRIPTION_NON_TIER_2: string; CALL_SOUNDS_UPSELL_DESCRIPTION_TIER_2: string; CALL_SOUNDS_UPSELL_TITLE_NON_SUB: string; CALL_TILE_A11Y_LABEL_ACTIVITY: FM<"activityName", false>; CALL_TILE_A11Y_LABEL_HIDDEN_STREAM: FM<"streamerName", false>; CALL_TILE_A11Y_LABEL_STREAM: FM<"streamerName", false>; CALL_TILE_A11Y_LABEL_USER: FM<"username", false>; CALL_UNAVAILABLE: string; CALL_UNAVAILABLE_BLOCKED_USERS: string; CALL_USER_CONFIRM: string; CALL_USER_PROMPT: string; CALL_USER_PROMPT_HEADER: string; CAMERA: string; CAMERA_A11Y_TURNED_OFF: string; CAMERA_A11Y_TURNED_ON: string; CAMERA_CHANGE_VIDEO_BACKGROUND_MENU_ITEM: string; CAMERA_DISABLED_LIMIT_REACHED: FM<"limit", false>; CAMERA_DISABLED_STAGE_LIMIT_REACHED: string; CAMERA_DISABLED_STAGE_LIMIT_REACHED_MAX: string; CAMERA_INTENT_RESULT_ERROR: string; CAMERA_NO_DEVICE: string; CAMERA_OFF: string; CAMERA_ON: string; CAMERA_PREVIEW_ALWAYS_PREVIEW: string; CAMERA_PREVIEW_ALWAYS_PREVIEW_NOTE: string; CAMERA_PREVIEW_CAMERA: string; CAMERA_PREVIEW_MENU_ITEM: string; CAMERA_PREVIEW_MODAL_HEADER: string; CAMERA_PREVIEW_MODAL_VIDEO_BACKGROUND_EDUCATION_SUBTITLE_2: string; CAMERA_PREVIEW_VIDEO_BACKGROUND: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_BLUR: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_CHANGE_BACKGROUND: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_CHANGE_HEADER: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_CUSTOM: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_CUSTOM_TOOLTIP: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_NEW_ANIMATED_TOOLTIP: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_NONE: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_UPLOAD_SUBTITLE: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_UPLOAD_TOOLTIP_MAX_REACHED: FM<"maxCustomBackgrounds", false>; CAMERA_PREVIEW_VIDEO_BACKGROUND_UPLOAD_TOOLTIP_PREMIUM: string; CAMERA_PREVIEW_VIDEO_BACKGROUND_UPSELL_TOOLTIP: string; CAMERA_SWITCH: string; CAMERA_UNAVAILABLE: string; CAMERA_UNKNOWN_ERROR: string; CAMERA_UPLOADS_LABEL: string; CANCEL: string; CANCEL_FRIEND_REQUEST: string; CANCEL_PAUSE: string; CANCEL_REPLYING_TO: string; CANCEL_TRANSFER_VOICE_FAILED_BODY: string; CANCEL_TRANSFER_VOICE_FAILED_TITLE: string; CANNOT_ACCESS_HANGOUT: string; CANNOT_ADD_USER_TO_FORUM_POST: string; CANNOT_ADD_USER_TO_THREAD: string; CANNOT_ATTACH_FILES: string; CANNOT_CHANGE_CHANNEL_PERMS: string; CANNOT_CREATE_FORUM_POST: string; CANNOT_CREATE_THREAD: string; CANNOT_DELETE_CHANNEL: string; CANNOT_DENY_MISSING_PERMISSION: string; CANNOT_DENY_SELF_SIMPLE: string; CANNOT_DENY_SINGULAR_PERMISSION: string; CANNOT_JOIN_FORUM_POST: string; CANNOT_JOIN_THREAD: string; CANNOT_MANAGE_HIGHER_RANK: string; CANNOT_MANAGE_IS_OWNER: string; CANNOT_MANAGE_SAME_RANK: string; CANNOT_PRIVATIZE_CHANNEL: string; CANNOT_UNARCHIVE_FORUM_POST: string; CANNOT_UNARCHIVE_THREAD: string; CAPTCHA: string; CAPTCHA_FAILED: string; CAPTCHA_FAILED_PLAY_SERVICES: string; CAPTCHA_FAILED_UNSUPPORTED: string; CAPTCHA_ISSUES: string; CAPTCHA_OPEN_BROWSER: string; CAPTCHA_PROBLEMS: string; CAPTCHA_PROBLEMS_INFO: string; CARD_NUMBER: string; CASH_APP_PAY_AWARENESS_NON_SUBSCRIBER_CONTENT: string; CASH_APP_PAY_AWARENESS_NON_SUBSCRIBER_CTA: string; CASH_APP_PAY_AWARENESS_NON_SUBSCRIBER_UPSELL_CONTENT: FM; CASH_APP_PAY_AWARENESS_NON_SUBSCRIBER_UPSELL_CTA: string; CASH_APP_PAY_AWARENESS_SUBSCRIBER_CONTENT: string; CASH_APP_PAY_AWARENESS_SUBSCRIBER_CTA: string; CASH_APP_PAY_AWARENESS_UPDATE_NITRO_PAYMENT_METHOD_TOAST: string; CASH_APP_PAY_AWARENESS_UPDATE_NON_NITRO_PAYMENT_METHOD_TOAST: string; CATEGORIES: string; CATEGORY: string; CATEGORY_A11Y_HINT_COLLAPSED: string; CATEGORY_A11Y_HINT_EXPANDED: string; CATEGORY_A11Y_LABEL: FM<"categoryName", false>; CATEGORY_A11Y_LABEL_WITH_EXPANDED_STATE: FM<"categoryName" | "isExpanded", false>; CATEGORY_FAVORITE: string; CATEGORY_HAS_BEEN_DELETED: string; CATEGORY_NAME: string; CATEGORY_NAME_PLACEHOLDER: string; CATEGORY_PERMISSIONS: string; CATEGORY_PERMISSIONS_SUBTITLE: string; CATEGORY_SETTINGS: string; CATEGORY_SETTINGS_HAVE_BEEN_UPDATED: string; CERTIFIED: string; CERTIFIED_DEVICE_RECOMMENDATION_AUDIO_INPUT_AND_OUTPUT_BODY: FM<"modelName" | "vendorName", true>; CERTIFIED_DEVICE_RECOMMENDATION_AUDIO_INPUT_BODY: FM<"modelName" | "vendorName", true>; CERTIFIED_DEVICE_RECOMMENDATION_AUDIO_OUTPUT_BODY: FM<"modelName" | "vendorName", true>; CERTIFIED_DEVICE_RECOMMENDATION_TITLE: string; CHANGE: string; CHANGE_AVATAR: string; CHANGE_AVATAR_A11Y_LABEL: string; CHANGE_AVATAR_OR_DECORATION_A11Y_LABEL: string; CHANGE_BANNER: string; CHANGE_CAMERA: string; CHANGE_CATEGORY: string; CHANGE_DECORATION_MODAL_PREMIUM_STARTER_HEADER: string; CHANGE_DECORATION_MODAL_PREVIEW_STARTER_CHURNED: string; CHANGE_DECORATION_MODAL_STARTER_DESC: string; CHANGE_DM_OWNER: string; CHANGE_EMAIL: string; CHANGE_EMAIL_SHORT: string; CHANGE_FRIEND_NICKNAME: string; CHANGE_HOME_HEADER: string; CHANGE_ICON: string; CHANGE_IDENTITY: string; CHANGE_IDENTITY_BIO_PLACEHOLDER: string; CHANGE_IDENTITY_MODAL_CHANGE_NICKNAME_DISABLED: string; CHANGE_IDENTITY_MODAL_UNKNOWN_ERROR: string; CHANGE_IDENTITY_NICKNAME_PERMISSIONS_DISABLED: string; CHANGE_IDENTITY_PREVIEW_WITH_GUILD_NAME: FM<"guildName", false>; CHANGE_IDENTITY_SERVER_PROFILE: string; CHANGE_IDENTITY_SERVER_PROFILE_MENU_HELP: string; CHANGE_IDENTITY_UPSELL: string; CHANGE_LOG: string; CHANGE_LOG_CLIENT_OLD: string; CHANGE_LOG_FAILED_TO_LOAD: string; CHANGE_NICKNAME: string; CHANGE_NICKNAME_DESCRIPTION: string; CHANGE_NICKNAME_WARNING: string; CHANGE_ONLINE_STATUS: string; CHANGE_PASSWORD: string; CHANGE_PASSWORD_DESCRIPTION: string; CHANGE_PHONE_NUMBER: string; CHANGE_SPLASH: string; CHANGE_VANITY_URL_ERROR: string; CHANGELOG_CONTENT_LABEL: string; CHANGELOG_SPECIAL_CTA_BODY: string; CHANGELOG_STICKERS_CTA: string; CHANGELOG_STICKERS_CTA_BODY: FM; CHANGELOG_STICKERS_CTA_TITLE: string; CHANGELOG_STICKERS_HEADER: string; CHANNEL: string; CHANNEL_A11Y_LABEL: FM<"channelName", false>; CHANNEL_ACTIONS_MENU_LABEL: string; CHANNEL_ADD_TO_MESSAGES: string; CHANNEL_BROWSER_ACTIVE_TEXT: FM<"timeAgo", false>; CHANNEL_BROWSER_ADMIN_NUX_CTA: string; CHANNEL_BROWSER_ADMIN_NUX_DESCRIPTION: string; CHANNEL_BROWSER_ADMIN_NUX_TITLE: string; CHANNEL_BROWSER_DISABLED_BY_CATEGORY: string; CHANNEL_BROWSER_HTML_TITLE: FM<"guildName", false>; CHANNEL_BROWSER_NUX_DESCRIPTION: string; CHANNEL_BROWSER_NUX_DESCRIPTION_2: FM; CHANNEL_BROWSER_NUX_TITLE: string; CHANNEL_BROWSER_SEARCH_PLACEHOLDER: string; CHANNEL_BROWSER_SELECT_ALL: string; CHANNEL_BROWSER_TITLE: string; CHANNEL_BROWSER_VIEW: string; CHANNEL_CALL_CURRENT_SPEAKER: FM<"username", false>; CHANNEL_CALL_MEMBERS_POPOUT_HEADER: FM<"count", false>; CHANNEL_CALL_OVERFLOW_MENU_LABEL: string; CHANNEL_CALL_PARTICIPANTS: string; CHANNEL_CHAT_HEADING: FM<"channelName", false>; CHANNEL_HAS_BEEN_DELETED: string; CHANNEL_HEADER_BAR_A11Y_LABEL: string; CHANNEL_LINKED_LOBBY_CHANNEL_HEADER: FM<"applicationName" | "helpdeskArticle", true>; CHANNEL_LINKED_LOBBY_CHANNEL_HEADER_COACHMARK_TITLE: string; CHANNEL_LINKED_LOBBY_CHANNEL_HEADER_UNKNOWN_APPLICATION: FM<"helpdeskArticle", true>; CHANNEL_LINKED_LOBBY_CHANNEL_TOPIC_NOTICE: FM<["applicationName" | "helpdeskArticle", "separatorHook"], true>; CHANNEL_LINKED_LOBBY_CHANNEL_TOPIC_TOOLTIP: string; CHANNEL_LIST_V2_NUX_BODY: FM; CHANNEL_LIST_V2_NUX_TITLE: string; CHANNEL_LOCKED: string; CHANNEL_LOCKED_SHORT: string; CHANNEL_LOCKED_TO_CATEGORY: FM<"categoryName", true>; CHANNEL_MEMBERS_A11Y_LABEL: FM<"count" | "title", false>; CHANNEL_MENTION_ACTIONS_MENU_LABEL: string; CHANNEL_MESSAGE_REPLY_A11Y_LABEL: FM<"author" | "repliedAuthor", false>; CHANNEL_MESSAGES_A11Y_DESCRIPTION: string; CHANNEL_MESSAGES_A11Y_LABEL: FM<"channelName", false>; CHANNEL_MUTED_A11Y_HINT: string; CHANNEL_NAME_PLACEHOLDER: string; CHANNEL_NOTICE_ELIGIBILITY_CTA: string; CHANNEL_NOTICE_SERVER_DISCOVERY_ALMOST_DONE: string; CHANNEL_NOTICE_SERVER_DISCOVERY_NEWLY_ELIGIBLE: string; CHANNEL_NOTICE_SERVER_DISCOVERY_NOT_YET_ELIGIBLE: string; CHANNEL_OPT_IN: string; CHANNEL_OPT_IN_ALL_CHANNELS: string; CHANNEL_OPT_OUT: string; CHANNEL_OPT_OUT_PARENT_CATEGORY: string; CHANNEL_OR_CATEGORY: string; CHANNEL_OR_GUILD_MUTED: string; CHANNEL_ORDER_UPDATED: string; CHANNEL_PERMISSIONS: string; CHANNEL_PERMISSIONS_ADD_HAS_GUILD_PERMISSIONS: string; CHANNEL_PERMISSIONS_ADD_MEMBERS_TITLE: string; CHANNEL_PERMISSIONS_ADD_MEMBERS_TOOLTIP: string; CHANNEL_PERMISSIONS_ADD_MEMBERS_TOOLTIP_ADMINISTRATOR: string; CHANNEL_PERMISSIONS_ADD_MEMBERS_TOOLTIP_OWNER: string; CHANNEL_PERMISSIONS_ADD_MODERATOR_TITLE: string; CHANNEL_PERMISSIONS_ADD_MODERATOR_TITLE_SIMPLE: string; CHANNEL_PERMISSIONS_ADVANCED_PERMISSIONS: string; CHANNEL_PERMISSIONS_ADVANCED_VIEW: string; CHANNEL_PERMISSIONS_BASIC_VIEW: string; CHANNEL_PERMISSIONS_CANNOT_EDIT_MODERATORS: string; CHANNEL_PERMISSIONS_CANNOT_REMOVE_PERMISSIONS: string; CHANNEL_PERMISSIONS_EVERYONE_CAN_NOT_VIEW_WARNING: string; CHANNEL_PERMISSIONS_EVERYONE_IS_ADMIN_WARNING: string; CHANNEL_PERMISSIONS_MAKE_PRIVATE_ALERT_SUBTITLE: FM<"channelName", true>; CHANNEL_PERMISSIONS_MAKE_PRIVATE_ALERT_TITLE: string; CHANNEL_PERMISSIONS_MAKE_PUBLIC_ALERT_SUBTITLE: FM<"channelName", true>; CHANNEL_PERMISSIONS_MAKE_PUBLIC_ALERT_TITLE: string; CHANNEL_PERMISSIONS_MODERATOR_CURRENT_TITLE: string; CHANNEL_PERMISSIONS_MODERATOR_DESCRIPTION: string; CHANNEL_PERMISSIONS_MODERATOR_LABEL: string; CHANNEL_PERMISSIONS_MODERATOR_TITLE: string; CHANNEL_PERMISSIONS_MODERATOR_TITLE_SIMPLE: string; CHANNEL_PERMISSIONS_NO_ROLES: string; CHANNEL_PERMISSIONS_NOT_MODERATOR: string; CHANNEL_PERMISSIONS_PRIVATE_CATEGORY_DESCRIPTION: string; CHANNEL_PERMISSIONS_PRIVATE_CHANNEL_DESCRIPTION: string; CHANNEL_PERMISSIONS_PRIVATE_CHANNEL_DESCRIPTION_NEW: string; CHANNEL_PERMISSIONS_PRIVATE_CHANNEL_DESCRIPTION_VOICE: string; CHANNEL_PERMISSIONS_REMOVE_MODERATOR_TOOLTIP: string; CHANNEL_PERMISSIONS_REMOVE_NOT_OVERWRITE: string; CHANNEL_PERMISSIONS_ROLE_ALREADY_HAS_PERMISSIONS: string; CHANNEL_PERMISSIONS_SEARCH_TOOLTIP: string; CHANNEL_PERMISSIONS_SUBTITLE: string; CHANNEL_POPULAR: string; CHANNEL_RECOMMENDED: string; CHANNEL_REMOVE_FROM_MESSAGES: string; CHANNEL_SELECT: string; CHANNEL_SETTINGS: string; CHANNEL_SETTINGS_HAVE_BEEN_UPDATED: string; CHANNEL_SLOWMODE_COOLDOWN: FM<"seconds", false>; CHANNEL_SLOWMODE_DESC: FM<"seconds", false>; CHANNEL_SLOWMODE_DESC_HOURS: FM<"hours" | "minutes" | "seconds", false>; CHANNEL_SLOWMODE_DESC_IMMUNE: string; CHANNEL_SLOWMODE_DESC_MINUTES: FM<"minutes" | "seconds", false>; CHANNEL_SLOWMODE_DESC_SHORT: string; CHANNEL_STATE_BUSY: string; CHANNEL_STATE_OPEN: string; CHANNEL_TOOLTIP_ANNOUNCEMENTS: string; CHANNEL_TOOLTIP_ANNOUNCEMENTS_LIMITED: string; CHANNEL_TOOLTIP_ANNOUNCEMENTS_NSFW: string; CHANNEL_TOOLTIP_DIRECTORY: string; CHANNEL_TOOLTIP_FORUM_LIMITED: string; CHANNEL_TOOLTIP_FORUM_NSFW: string; CHANNEL_TOOLTIP_MEDIA_LIMITED: string; CHANNEL_TOOLTIP_MEDIA_NSFW: string; CHANNEL_TOOLTIP_RULES: string; CHANNEL_TOOLTIP_STAGE: string; CHANNEL_TOOLTIP_STAGE_LIMITED: string; CHANNEL_TOOLTIP_STAGE_LOCKED: string; CHANNEL_TOOLTIP_STORE: string; CHANNEL_TOOLTIP_TEXT: string; CHANNEL_TOOLTIP_TEXT_ACTIVE_THREADS: string; CHANNEL_TOOLTIP_TEXT_LIMITED: string; CHANNEL_TOOLTIP_TEXT_LINKED_LOBBY: string; CHANNEL_TOOLTIP_TEXT_NSFW: string; CHANNEL_TOOLTIP_VOICE: string; CHANNEL_TOOLTIP_VOICE_LIMITED: string; CHANNEL_TOOLTIP_VOICE_LOCKED: string; CHANNEL_TOPIC_EMPTY: string; CHANNEL_TYPE: string; CHANNEL_TYPE_NEW: string; CHANNELS: string; CHANNELS_AND_ROLES: string; CHANNELS_AND_ROLES_HTML_TITLE: FM<"guildName", false>; CHANNELS_MATCHING: FM<"prefix", true>; CHANNELS_UNAVAILABLE_BODY: string; CHANNELS_UNAVAILABLE_TITLE: string; CHARACTER_COUNT: string; CHARACTER_COUNT_A11Y_LABEL: FM<"remainingCharacters", false>; CHARACTER_COUNT_AT_LIMIT: string; CHARACTER_COUNT_CLOSE_TO_LIMIT: FM<"count", false>; CHARACTER_COUNT_OVER_LIMIT: string; CHAT: string; CHAT_ATTACH_INVITE_TO_LISTEN: FM<"channel" | "name", false>; CHAT_ATTACH_INVITE_TO_PLAY_GAME: FM<"channel" | "game", false>; CHAT_ATTACH_INVITE_TO_WATCH: FM<"channel" | "name", false>; CHAT_ATTACH_PLUS_BUTTON_A11Y_LABEL: string; CHAT_ATTACH_UPLOAD_A_FILE: string; CHAT_ATTACH_UPLOAD_OR_INVITE: string; CHAT_ATTACH_UPLOAD_TEXT_AS_FILE: string; CHAT_ATTACH_USE_SLASH_COMMAND: string; CHAT_BEHAVIOR: string; CHAT_DISABLED_CHANNEL_LINK: FM<"channelName", false>; CHAT_DISABLED_CHANNEL_LIST: string; CHAT_DISABLED_CTA: string; CHAT_DISABLED_HOME_BACK: string; CHAT_GESTURES: string; CHAT_WHEEL_PAGINATION_HINT: string; CHATS: string; CHECK_IT_OUT: string; CHECKING_FOR_UPDATES: string; CHECKOUT_RECOVERY_NAGBAR_CONTENT: string; CHECKOUT_RECOVERY_NAGBAR_CTA: string; CHOOSE_AN_APPLICATION: string; CHURN_DISCOUNT_CLAIM: string; CHURN_DISCOUNT_CONFIRM_DESCRIPTION: FM<"numMonths" | "percent" | "price", true>; CHURN_DISCOUNT_CONFIRM_DISCOUNT: string; CHURN_DISCOUNT_CONFIRM_HEADER: FM<"percent", false>; CHURN_DISCOUNT_CONFIRM_LEGALESE: FM<"billingPeriod" | "discountedPrice" | "fullPrice" | "helpdeskArticle" | "numMonths", true>; CHURN_DISCOUNT_DESCRIPTION: FM<"numMonths" | "percent", true>; CHURN_DISCOUNT_NEVERMIND: string; CHURN_DISCOUNT_REDEMPTION_ERROR: string; CLAIM_ACCOUNT: string; CLAIM_ACCOUNT_BODY_2: string; CLAIM_ACCOUNT_EMAIL_TO: FM<"email", true>; CLAIM_ACCOUNT_GET_APP: string; CLAIM_ACCOUNT_LONG: string; CLAIM_ACCOUNT_PROMOTE_APP_2021_04: string; CLAIM_ACCOUNT_REQUIRED_BODY: string; CLAIM_ACCOUNT_REQUIRED_EMAIL_TO: FM<"email", true>; CLAIM_ACCOUNT_SHORT: string; CLAN_DISCOVERY_CARD_TAG_TOOLTIP: string; CLAN_SETUP_PLAYSTYLE_CASUAL_TITLE: string; CLAN_SETUP_PLAYSTYLE_COMPETITIVE_TITLE: string; CLAN_SETUP_PLAYSTYLE_SOCIAL_TITLE: string; CLAN_SETUP_PLAYSTYLE_VERY_HARDCORE_TITLE: string; CLAN_USER_WAITLIST_CTA: string; CLAN_USER_WAITLIST_TOAST_SUCCESS: string; CLAN_USER_WAITLISTED: string; CLEAR: string; CLEAR_ALL: string; CLEAR_ATTACHMENTS: string; CLEAR_BUILD_OVERRIDE: string; CLEAR_INCOMING_REQUESTS_BUTTON: string; CLEAR_INCOMING_REQUESTS_CONFIRMATION_BODY: FM<"incomingRequestCount", false>; CLEAR_INCOMING_REQUESTS_CONFIRMATION_CTA: string; CLEAR_INCOMING_REQUESTS_CONFIRMATION_ERROR: string; CLEAR_INCOMING_REQUESTS_CONFIRMATION_TITLE: string; CLEAR_RECENT_CHANNELS: string; CLICK_TO_LEARN_MORE: string; CLIENT_THEMES_EDITOR_EXIT_PREVIEW: string; CLIENT_THEMES_EDITOR_GRADIENT_DESCRIPTION: string; CLIENT_THEMES_EDITOR_GRADIENT_DESCRIPTION_COACHMARK: string; CLIENT_THEMES_EDITOR_GRADIENT_DESCRIPTION_PREVIEW_WITH_LINK: FM; CLIENT_THEMES_EDITOR_GRADIENT_DESCRIPTION_SETTINGS: string; CLIENT_THEMES_EDITOR_GRADIENT_DESCRIPTION_WITH_LINK: FM; CLIENT_THEMES_EDITOR_HEADER: string; CLIENT_THEMES_EDITOR_PICK_A_THEME_HEADER: string; CLIENT_THEMES_EDITOR_PREVIEW_A_THEME_HEADER: string; CLIENT_THEMES_EDITOR_RETURN_TO_SETTINGS: string; CLIENT_THEMES_EDITOR_UPSELL: FM; CLIENT_THEMES_EDITOR_UPSELL_HEADER: string; CLIENT_THEMES_GRADIENT_AURORA: string; CLIENT_THEMES_GRADIENT_BLURPLE_TWILIGHT: string; CLIENT_THEMES_GRADIENT_CHROMA_GLOW: string; CLIENT_THEMES_GRADIENT_CITRUS_SHERBERT: string; CLIENT_THEMES_GRADIENT_COTTON_CANDY: string; CLIENT_THEMES_GRADIENT_CRIMSON_MOON: string; CLIENT_THEMES_GRADIENT_DESERT_KHAKI: string; CLIENT_THEMES_GRADIENT_DUSK: string; CLIENT_THEMES_GRADIENT_EASTER_EGG: string; CLIENT_THEMES_GRADIENT_FOREST: string; CLIENT_THEMES_GRADIENT_HANAMI: string; CLIENT_THEMES_GRADIENT_LOFI_VIBES: string; CLIENT_THEMES_GRADIENT_MARS: string; CLIENT_THEMES_GRADIENT_MIDNIGHT_BLURPLE: string; CLIENT_THEMES_GRADIENT_MINT_APPLE: string; CLIENT_THEMES_GRADIENT_NEON_NIGHTS: string; CLIENT_THEMES_GRADIENT_RETRO_RAINCLOUD: string; CLIENT_THEMES_GRADIENT_RETRO_STORM: string; CLIENT_THEMES_GRADIENT_SEPIA: string; CLIENT_THEMES_GRADIENT_STRAWBERRY_LEMONADE: string; CLIENT_THEMES_GRADIENT_SUNRISE: string; CLIENT_THEMES_GRADIENT_SUNSET: string; CLIENT_THEMES_GRADIENT_UNDER_THE_SEA: string; CLIP_SHARE_MODAL_SUBTITLE: string; CLIP_SHARE_MODAL_TITLE: string; CLIP_SHARE_SELECT_CHANNEL: string; CLIP_TAG: string; CLIP_TAG_MOBILE: string; CLIPS: string; CLIPS_ADD_A_TITLE: string; CLIPS_ATTACHMENT_TOOLTIP: string; CLIPS_ATTACHMENT_UTILITIES_REMOVE: string; CLIPS_ATTACHMENT_UTILITIES_SPOILER: string; CLIPS_BETA_TAG_HOVER: string; CLIPS_CALL_TOOLTIP_LINK_CTA: string; CLIPS_CALL_TOOLTIP_TITLE: string; CLIPS_CANNOT_ATTACH_FILE_TO_CHANNEL: string; CLIPS_CHANNEL_NOTICE_EDUCATION_BODY: FM<["keybind", "keybindHook"], true>; CLIPS_CLIPPING: string; CLIPS_CONNECTIVITY_ALL: string; CLIPS_CONNECTIVITY_FRIENDS: string; CLIPS_CROP_END: string; CLIPS_CROP_START: string; CLIPS_DELETE_CLIP: string; CLIPS_DELETE_MODAL_SUBTITLE: string; CLIPS_DELETE_MODAL_TITLE: string; CLIPS_EDIT_DATE_TITLE: string; CLIPS_EDIT_EXPORT: string; CLIPS_EDIT_GAME_AUDIO: string; CLIPS_EDIT_SAVE_CLIP: string; CLIPS_EDIT_SHARE_CLIP: string; CLIPS_EDIT_TIME_TITLE: string; CLIPS_EDIT_TITLE: string; CLIPS_EDIT_USER_LIST_TITLE: string; CLIPS_EDIT_VOICE_CHANNEL_AUDIO: string; CLIPS_ENABLED_BADGE: string; CLIPS_ENABLED_VIEWER_TOOLTIP: string; CLIPS_ENABLED_VIEWER_TOOLTIP_NITRO_EA: string; CLIPS_EXPORT_TO_FILE: string; CLIPS_EXPORT_TO_SOUNDBOARD: string; CLIPS_GALLERY_NO_CLIPS: FM<["keybind", "keybindHook"], true>; CLIPS_GALLERY_NO_CLIPS_CLIPS_NOT_ENABLED: FM; CLIPS_GALLERY_NO_CLIPS_MATCH_QUERY: string; CLIPS_GALLERY_NO_CLIPS_NO_KEYBIND_SET: FM; CLIPS_GALLERY_TOOLTIP: string; CLIPS_GO_LIVE_EA_UPSELL_BODY: FM; CLIPS_GO_LIVE_EA_UPSELL_CTA: string; CLIPS_GO_LIVE_EA_UPSELL_TITLE: string; CLIPS_IN_CALL_WARNING: string; CLIPS_KEYBIND_DESCRIPTION: string; CLIPS_LENGTH_MINUTES: FM<"count", false>; CLIPS_LENGTH_SECONDS: FM<"count", false>; CLIPS_LOAD_ERROR_BODY: string; CLIPS_LOAD_ERROR_TITLE: string; CLIPS_NOTIFICATION_TITLE: FM<"duration", false>; CLIPS_ONBOARDING_CLIP_BUTTON_ACTIVITY_PANEL_COACHMARK_BODY: FM<["keybind", "keybindHook"], true>; CLIPS_ONBOARDING_CLIP_BUTTON_ACTIVITY_PANEL_COACHMARK_TITLE: FM<["keybind", "keybindHook"], true>; CLIPS_ONBOARDING_GO_LIVE_DEFAULT_DISABLED_COACHMARK_BODY: string; CLIPS_ONBOARDING_GO_LIVE_DEFAULT_DISABLED_COACHMARK_HARDWARE_IMPACT_WARNING: FM<"url", true>; CLIPS_ONBOARDING_GO_LIVE_DEFAULT_DISABLED_COACHMARK_TITLE: string; CLIPS_PROCESSING_BADGE: string; CLIPS_QUALITY_DEFAULT: string; CLIPS_REMINDER_NOTIFICATION_TITLE: FM<["keybind", "keybindHook"], true>; CLIPS_REVIEW_NOW: string; CLIPS_SAVE: string; CLIPS_SAVE_CLIP_TOOLTIP: FM<"hotkey", false>; CLIPS_SESSION_ENDED_TOOLTIP_BODY: FM<"applicationName", false>; CLIPS_SESSION_ENDED_TOOLTIP_PRIMARY_CTA: string; CLIPS_SESSION_ENDED_TOOLTIP_SECONDARY_CTA: string; CLIPS_SETTINGS: string; CLIPS_SETTINGS_ALLOW_VIEWER_CLIPS: string; CLIPS_SETTINGS_ALLOW_VIEWER_CLIPS_HELP: string; CLIPS_SETTINGS_EDUCATION_BANNER_BODY: string; CLIPS_SETTINGS_EDUCATION_BANNER_TITLE: string; CLIPS_SETTINGS_EDUCATION_BANNER_TITLE_WITH_KEYBIND: FM<["keybind", "keybindHook"], true>; CLIPS_SETTINGS_ENABLE_CLIPS_HELP: string; CLIPS_SETTINGS_ENABLE_REMINDERS: string; CLIPS_SETTINGS_ENABLE_REMINDERS_HELP: string; CLIPS_SETTINGS_FRAMERATE: string; CLIPS_SETTINGS_FRAMERATE_NOTE: string; CLIPS_SETTINGS_HELP_IN_GO_LIVE_CTA: FM<["keybind", "keybindHook"], true>; CLIPS_SETTINGS_OPT_OUT_OF_VOICE_RECORDING: string; CLIPS_SETTINGS_OPT_OUT_OF_VOICE_RECORDING_DESCRIPTION: string; CLIPS_SETTINGS_QUALITY_INFOBOX: string; CLIPS_SETTINGS_RESOLUTION: string; CLIPS_SETTINGS_RESOLUTION_NOTE: string; CLIPS_SETTINGS_STORAGE_LOCATION_HELP: string; CLIPS_SETTINGS_STORAGE_LOCATION_LABEL: FM<"storageLocation", false>; CLIPS_SETTINGS_TOP_SUBHEADER: string; CLIPS_SETTINGS_UNDER_MIN_SPECS: string; CLIPS_SETTINGS_VIDEO_QUALITY: string; CLIPS_SETTINGS_VIDEO_QUALITY_HELP: string; CLIPS_SETTINGS_VIEWERSIDE_CLIPS_TOGGLE: string; CLIPS_SETTINGS_WHO_CAN_CAPTURE: string; CLIPS_SETTINGS_WHO_CAN_CAPTURE_HELP: string; CLIPS_SHARE_A_CLIP: string; CLIPS_SORT_OLDEST: string; CLIPS_SORT_PLACEHOLDER: string; CLIPS_SORT_RECENT: string; CLIPS_UNKNOWN_SOURCE: string; CLIPS_UNTITLED: string; CLIPS_USER_EDUCATION_DISABLED_BODY: string; CLIPS_USER_EDUCATION_ENABLED_BODY: FM<["keybind", "keybindHook"], true>; CLIPS_USER_EDUCATION_ENABLED_BODY_NO_KEYBIND: string; CLIPS_USER_EDUCATION_ERROR_BODY: string; CLIPS_USER_EDUCATION_LEARN_MORE: string; CLIPS_USER_EDUCATION_MANAGE_CLIPS_SETTINGS: string; CLIPS_VIEWERSIDE_BUTTON_ENABLE_CLIPS_TOOLTIP: string; CLIPS_YOU_HAVE_NEW_CLIPS: FM<"count", false>; CLONE_CHANNEL: string; CLONE_CHANNEL_HELP: FM<"name", true>; CLOSE: string; CLOSE_DM: string; CLOSE_DRAWER: string; CLOSE_MODAL_A11Y_LABEL: string; CLOSE_STREAM: string; CLOSE_WINDOW: string; CLOUD_SYNC_ICON_TOOLTIP_DONE: string; CLOUD_SYNC_ICON_TOOLTIP_PLANNING: string; CLOUD_SYNC_ICON_TOOLTIP_PREPARING: string; CLOUD_SYNC_ICON_TOOLTIP_PULLING: string; CLOUD_SYNC_ICON_TOOLTIP_PUSHING: string; CLOUD_SYNC_ICON_TOOLTIP_SUPPORTED: string; CLOUD_SYNC_MODAL_CONFLICT_CHOICE_DOWNLOAD: string; CLOUD_SYNC_MODAL_CONFLICT_CHOICE_UPLOAD: string; CLOUD_SYNC_MODAL_CONFLICT_DESCRIPTION: FM<"applicationName", true>; CLOUD_SYNC_MODAL_CONFLICT_HEADER: string; CLOUD_SYNC_MODAL_CONFLICT_LAST_MODIFIED: string; CLOUD_SYNC_MODAL_ERROR_DESCRIPTION: FM<"applicationName", true>; CLOUD_SYNC_MODAL_ERROR_HEADER: string; CLOUD_SYNC_MODAL_OR: string; CLR_NAME: string; COLLAPSE: string; COLLAPSE_ALL_CATEGORIES: string; COLLAPSE_CATEGORY: string; COLLAPSE_ROLES: string; COLLAPSED: string; COLLECTIBLES_ACQUIRED_DATE: FM<"date", false>; COLLECTIBLES_ADD_TO_YOUR_COLLECTION: string; COLLECTIBLES_ALREADY_OWNED: string; COLLECTIBLES_ARCADE_COACHTIP_DESCRIPTION: string; COLLECTIBLES_ARCADE_COACHTIP_TITLE: string; COLLECTIBLES_AVATAR_DECO_UPDATED_NOTIFICATION: string; COLLECTIBLES_AVATAR_DECORATION_PREVIEW_A11Y_LABEL: FM<"avatarDecoration", false>; COLLECTIBLES_BANNER_DESCRIPTION_2024: string; COLLECTIBLES_BANNER_TITLE_2024: string; COLLECTIBLES_BUNDLE_BUY_BUNDLE: string; COLLECTIBLES_BUNDLE_DECORATION: string; COLLECTIBLES_BUNDLE_DESCRIPTION: FM<"avatarDecorationName" | "profileEffectName", false>; COLLECTIBLES_BUNDLE_DESCRIPTION_ALT: FM<"avatarDecorationName" | "profileEffectName", false>; COLLECTIBLES_BUNDLE_DESCRIPTION_PRFIX: string; COLLECTIBLES_BUNDLE_PROFILE_EFFECT: string; COLLECTIBLES_BUNDLE_PURCHASE_BUNDLE_AT_PRICE: FM<"price", false>; COLLECTIBLES_BUY_DECORATION: string; COLLECTIBLES_BUY_PROFILE_EFFECT: string; COLLECTIBLES_CATEGORY_BANNER_A11Y_LABEL: FM<"category", false>; COLLECTIBLES_CHAT_PREVIEW_TEXT: string; COLLECTIBLES_CLAIM: string; COLLECTIBLES_COLLECTING: string; COLLECTIBLES_COLLECTING_FINISHED: string; COLLECTIBLES_CTA_GO_TO_SHOP: string; COLLECTIBLES_DARK_FANTASY_COACHTIP_DESCRIPTION: string; COLLECTIBLES_DARK_FANTASY_COACHTIP_NEUTRAL_TEXT: FM; COLLECTIBLES_DARK_FANTASY_COACHTIP_TITLE: string; COLLECTIBLES_DAYS_LEFT: FM<"days", false>; COLLECTIBLES_DETAILS_MODAL_BUNDLE_PURCHASE_DISCLAIMER: string; COLLECTIBLES_DETAILS_MODAL_PREMIUM_PURCHASE_DISCLAIMER: string; COLLECTIBLES_DETAILS_MODAL_PROFILE_EFFECT_PREMIUM_PURCHASE_DISCLAIMER: string; COLLECTIBLES_EPHEMERAL_DECO_UPSELL_BODY: string; COLLECTIBLES_EPHEMERAL_DECO_UPSELL_CTA_1: string; COLLECTIBLES_EPHEMERAL_DECO_UPSELL_CTA_2: string; COLLECTIBLES_EPHEMERAL_DECO_UPSELL_HEADER_1: string; COLLECTIBLES_EPHEMERAL_DECO_UPSELL_HEADER_2: string; COLLECTIBLES_EXPIRE_DATE: FM<"date", false>; COLLECTIBLES_FEELIN_RETRO_PIRATES_COACHTIP_DESCRIPTION: string; COLLECTIBLES_FEELIN_RETRO_PIRATES_COACHTIP_TITLE: string; COLLECTIBLES_GALAXY_COACHTIP_DESCRIPTION: string; COLLECTIBLES_GALAXY_COACHTIP_TITLE: string; COLLECTIBLES_INCLUDED_WITH_PREMIUM: string; COLLECTIBLES_ITEM_NITRO_PRICE_A11Y_LABEL: FM<"price", false>; COLLECTIBLES_ITEM_ORIGINAL_PRICE_A11Y_LABEL: FM<"price", false>; COLLECTIBLES_LAST_CHANCE: string; COLLECTIBLES_LAST_DAY: string; COLLECTIBLES_LIMITED_TIME_BADGE_A11Y_LABEL: FM<"daysLeft", false>; COLLECTIBLES_LOFI_VIBES_COACHTIP_DESCRIPTION: string; COLLECTIBLES_LOFI_VIBES_COACHTIP_TITLE: string; COLLECTIBLES_MOBILE_IAP_NOTICE: string; COLLECTIBLES_MOBILE_SHOP_DAYS_LEFT: FM<"days", false>; COLLECTIBLES_MOBILE_SHOP_HOURS_LEFT: FM<"hours", false>; COLLECTIBLES_MOBILE_SHOP_IAP_DESCRIPTION_1: string; COLLECTIBLES_MOBILE_SHOP_IAP_DESCRIPTION_2: string; COLLECTIBLES_MOBILE_SHOP_IAP_DESCRIPTION_3: string; COLLECTIBLES_MOBILE_SHOP_IAP_NEW_DESCRIPTION_2: string; COLLECTIBLES_MOBILE_SHOP_IAP_TITLE: string; COLLECTIBLES_MOBILE_SHOP_MARKETING_COACHTIP_DESCRIPTION: string; COLLECTIBLES_MOBILE_SHOP_MARKETING_COACHTIP_TITLE: string; COLLECTIBLES_MOBILE_SHOP_MARKETING_SHEET_USER_DESCRIPTION_1: string; COLLECTIBLES_MOBILE_SHOP_MARKETING_SHEET_USER_DESCRIPTION_2: string; COLLECTIBLES_MOBILE_SHOP_USUAL_PRICE: FM<"price", false>; COLLECTIBLES_NEW_BADGE: string; COLLECTIBLES_NEW_RELEASE: string; COLLECTIBLES_NITRO_EXCLUSIVE: string; COLLECTIBLES_NON_PREMIUM_PRICE: FM<"price", false>; COLLECTIBLES_NON_PREMIUM_PRICE_SUBSCRIBE_NOW_MOBILE: FM<["price", "subscribeNowHook"], true>; COLLECTIBLES_PARTIALLY_OWNED: string; COLLECTIBLES_PARTIALLY_OWNED_DISCLAIMER: string; COLLECTIBLES_PERMANENT_COLLECTION: string; COLLECTIBLES_PERMANENT_COLLECTION_BUNDLE: string; COLLECTIBLES_PFX_UPDATED_NOTIFICATION: string; COLLECTIBLES_POPULAR_PICKS: string; COLLECTIBLES_PREMIUM_DISCOUNT_TOOLTIP_TEXT: string; COLLECTIBLES_PROFILE_EFFECT_PERMANENT_COLLECTION: string; COLLECTIBLES_PROFILE_EFFECT_PREVIEW_A11Y_LABEL: FM<"profileEffect", false>; COLLECTIBLES_PROFILE_UPDATE_NOTIFICATION: string; COLLECTIBLES_PURCHASE: FM<"price", false>; COLLECTIBLES_PURCHASE_DISCLAIMER_PAYMENT: string; COLLECTIBLES_PURCHASE_DISCLAIMER_PAYMENT_MOBILE: FM<"buyButtonLabel" | "paidServiceTermURL", true>; COLLECTIBLES_QUEUING_UP: string; COLLECTIBLES_ROBERT_COACHTIP_DESCRIPTION: string; COLLECTIBLES_ROBERT_COACHTIP_TITLE: string; COLLECTIBLES_ROBERT_SETTINGS_BANNER_DESCRIPTION: string; COLLECTIBLES_ROBERT_SETTINGS_BANNER_TITLE: string; COLLECTIBLES_SEE_WHATS_NEW: string; COLLECTIBLES_SHOP: string; COLLECTIBLES_SHOP_ALL: string; COLLECTIBLES_SHOP_AUTUMN_EQUINOX_COLLECTION: string; COLLECTIBLES_SHOP_CATEGORY_COLLECTION: FM<"category_name", false>; COLLECTIBLES_SHOP_ERROR_HEADING: string; COLLECTIBLES_SHOP_ERROR_SHOP_LOAD: string; COLLECTIBLES_SHOP_FEED_END_OF_SCROLL_BUTTON: string; COLLECTIBLES_SHOP_FEED_END_OF_SCROLL_TEXT: string; COLLECTIBLES_SHOP_GIFT_MODAL_REVIEW_HEADER: string; COLLECTIBLES_SHOP_GIFT_MODAL_SELECT_HEADER: string; COLLECTIBLES_SHOP_HERO_BANNER_TITLE: string; COLLECTIBLES_SHOP_THE_VAULT_COLLECTION: string; COLLECTIBLES_SHOP_VIEW_ALL: string; COLLECTIBLES_SHY_COACHTIP_DESCRIPTION: string; COLLECTIBLES_SHY_COACHTIP_TITLE: string; COLLECTIBLES_SHY_FOR_A_LIMITED_TIME: string; COLLECTIBLES_STORM_MYSTERY_CARD_TITLE: string; COLLECTIBLES_TIDE_CAROUSEL_SLIDE_DESCRIPTION: string; COLLECTIBLES_TIDE_COACHTIP_DESCRIPTION: string; COLLECTIBLES_TIDE_COACHTIP_TITLE: string; COLLECTIBLES_TIDE_SETTINGS_BANNER_DESCRIPTION: string; COLLECTIBLES_TIDE_SETTINGS_BANNER_TITLE: string; COLLECTIBLES_USE_NOW: string; COLLECTIBLES_YOU_COLLECTED: FM<"itemName", false>; COLOR_PICKER_CUSTOM: string; COLOR_PICKER_PRESETS: string; COLOR_PICKER_USE_DEFAULT: string; COMING_SOON: string; COMMAND_ACCESSIBILITY_DESC_APP_HEADER_ITEM: FM<"applicationName", false>; COMMAND_ACCESSIBILITY_DESC_APP_ITEM: FM<"applicationName", false>; COMMAND_ACCESSIBILITY_DESC_APP_ITEM_SELECTED: FM<"applicationName", false>; COMMAND_ACCESSIBILITY_DESC_COMMAND_ITEM: FM<"applicationName" | "commandDescription" | "commandName", false>; COMMAND_ACCESSIBILITY_DESC_COMMAND_OPTION_BUTTON: FM<"optionName", false>; COMMAND_ACCESSIBILITY_DESC_CONTEXT_MENU_COMMAND_ITEM: FM<"applicationName" | "commandName", false>; COMMAND_ACCESSIBILITY_DESC_OPEN_DISCOVER_LIST: string; COMMAND_BAN_CONFIRMATION: FM<"user", false>; COMMAND_BAN_DELETE_MESSAGES_DESCRIPTION: string; COMMAND_BAN_DESCRIPTION: string; COMMAND_BAN_ERROR: string; COMMAND_BAN_REASON_DESCRIPTION: string; COMMAND_BAN_UNABLE: string; COMMAND_BAN_USER_DESCRIPTION: string; COMMAND_CHANGE_NICK_FOR_MEMBER_FAILURE: string; COMMAND_DISPLAY_STRING: FM<"commandName" | "commandText", false>; COMMAND_GIPHY_DESCRIPTION: string; COMMAND_GIPHY_QUERY_DESCRIPTION: string; COMMAND_KICK_CONFIRMATION: FM<"user", false>; COMMAND_KICK_DESCRIPTION: string; COMMAND_KICK_ERROR: string; COMMAND_KICK_REASON_DESCRIPTION: string; COMMAND_KICK_UNABLE: string; COMMAND_KICK_USER_DESCRIPTION: string; COMMAND_ME_DESCRIPTION: string; COMMAND_ME_MESSAGE_DESCRIPTION: string; COMMAND_MSG_DESCRIPTION: string; COMMAND_MSG_ERROR: string; COMMAND_MSG_MESSAGE_DESCRIPTION: string; COMMAND_MSG_USER_DESCRIPTION: string; COMMAND_NICK_DESCRIPTION: string; COMMAND_NICK_FAILURE: string; COMMAND_NICK_FAILURE_PERMISSION: FM; COMMAND_NICK_NEWNICK_DESCRIPTION: string; COMMAND_NICK_RESET: string; COMMAND_NICK_SUCCESS: FM<"nick", true>; COMMAND_SECTION_BUILT_IN_NAME: string; COMMAND_SHRUG_DESCRIPTION: string; COMMAND_SHRUG_MESSAGE_DESCRIPTION: string; COMMAND_SPOILER_DESCRIPTION: string; COMMAND_SPOILER_MESSAGE_DESCRIPTION: string; COMMAND_STICKER_DESCRIPTION: string; COMMAND_STICKER_QUERY_DESCRIPTION: string; COMMAND_TABLEFLIP_DESCRIPTION: string; COMMAND_TABLEFLIP_MESSAGE_DESCRIPTION: string; COMMAND_TABLEUNFLIP_DESCRIPTION: string; COMMAND_TABLEUNFLIP_MESSAGE_DESCRIPTION: string; COMMAND_THREAD_DESCRIPTION: string; COMMAND_THREAD_MESSAGE_DESCRIPTION: string; COMMAND_THREAD_NAME_DESCRIPTION: string; COMMAND_TIMEOUT_CONFIRMATION: FM<"duration" | "user", false>; COMMAND_TIMEOUT_DESCRIPTION: string; COMMAND_TIMEOUT_DURATION_DESCRIPTION: string; COMMAND_TIMEOUT_ERROR: string; COMMAND_TIMEOUT_REASON_DESCRIPTION: string; COMMAND_TIMEOUT_UNABLE: string; COMMAND_TIMEOUT_USER_DESCRIPTION: string; COMMAND_TTS_DESCRIPTION: string; COMMAND_TTS_MESSAGE_DESCRIPTION: string; COMMAND_VALIDATION_BOOLEAN_ERROR: string; COMMAND_VALIDATION_CHANNEL_ERROR: string; COMMAND_VALIDATION_CHOICE_ERROR: string; COMMAND_VALIDATION_GENERAL_ERROR: string; COMMAND_VALIDATION_INTEGER_ERROR: string; COMMAND_VALIDATION_MENTIONABLE_ERROR: string; COMMAND_VALIDATION_NUMBER_ERROR: string; COMMAND_VALIDATION_NUMBER_MAXIMUM_ERROR: FM<"maximum", false>; COMMAND_VALIDATION_NUMBER_MINIMUM_ERROR: FM<"minimum", false>; COMMAND_VALIDATION_NUMBER_RANGE_ERROR: FM<"maximum" | "minimum", false>; COMMAND_VALIDATION_REQUIRED_ERROR: string; COMMAND_VALIDATION_ROLE_ERROR: string; COMMAND_VALIDATION_STRING_EXACT_RANGE_ERROR: FM<"value", false>; COMMAND_VALIDATION_STRING_MAXIMUM_ERROR: FM<"maximum", false>; COMMAND_VALIDATION_STRING_MINIMUM_ERROR: FM<"minimum", false>; COMMAND_VALIDATION_STRING_RANGE_ERROR: FM<"maximum" | "minimum", false>; COMMAND_VALIDATION_USER_ERROR: string; COMMANDS: string; COMMANDS_MATCHING: FM<"prefix", true>; COMMANDS_OPTION_COUNT: FM<"count", false>; COMMANDS_OPTIONAL_COUNT: FM<"count", false>; COMMANDS_OPTIONAL_COUNT_REMAINING: FM<"count", false>; COMMANDS_OPTIONAL_HEADER: string; COMMANDS_SCOPE_MIGRATION_ADMIN_NOTICE: FM; COMMANDS_SCOPE_MIGRATION_OVERVIEW_TOOLTIP: string; COMMANDS_SCOPE_MIGRATION_TOGGLE_TOOLTIP: FM<"botName" | "link", true>; COMMUNICATORS_INFO: string; COMMUNITIES: string; COMMUNITY: string; COMMUNITY_GUIDELINES: FM<"url", true>; COMMUNITY_GUIDELINES_AND_TYPES_OF_SPACES_POLICIES: FM<"communityGuidelines" | "typesOfGuilds", true>; COMMUNITY_POLICY_HELP: FM<"helpdeskArticle", true>; COMPACT_MODE: string; COMPETING: FM<"name", true>; COMPLETED: string; CONFIGURE: string; CONFIRM: string; CONFIRM_CHANGE_DM_OWNER: FM<[never, "usernameHook"], true>; CONFIRM_CHANNEL_DRAG_TITLE: string; CONFIRM_DISABLE_SILENCE_BODY: string; CONFIRM_DISABLE_SILENCE_DONT_SHOW: string; CONFIRM_DISABLE_SILENCE_TITLE: string; CONFIRM_QR_CHECK_YOUR_PHONE: string; CONFIRM_QR_DESCRIPTION: string; CONFIRM_QR_KEEP_ME_SIGNED_IN: string; CONFIRM_QR_LOGIN_ON_COMPUTER: string; CONFIRM_USER_BLOCK_BODY: FM<"name", true>; CONFIRM_USER_BLOCK_TITLE: FM<"name", false>; CONFIRMATION_CODE: string; CONNECT: string; CONNECT_ACCOUNT_DESCRIPTION: string; CONNECT_ACCOUNT_TITLE: string; CONNECT_CONSOLE_ERROR_TITLE: string; CONNECT_CONSOLE_LANDING_BODY_LEARN_MORE: FM<"helpCenterLink", true>; CONNECT_CRUNCHYROLL_DISPLAY_SHOW_VALUE_PROP: string; CONNECT_CRUNCHYROLL_ERROR_BODY: string; CONNECT_CRUNCHYROLL_ERROR_TITLE: string; CONNECT_CRUNCHYROLL_LANDING_BODY: string; CONNECT_CRUNCHYROLL_LANDING_TITLE: string; CONNECT_CRUNCHYROLL_SUCCESS_BODY: string; CONNECT_CRUNCHYROLL_SUCCESS_TITLE: string; CONNECT_PLAYSTATION: string; CONNECT_PS_ERROR_BODY: string; CONNECT_PS_LANDING_BODY: string; CONNECT_PS_LANDING_TITLE: string; CONNECT_TO_VIDEO: string; CONNECT_TO_VOICE: string; CONNECT_XBOX: string; CONNECT_XBOX_APP_INSTALLED: string; CONNECT_XBOX_DISPLAY_GAME_VALUE_PROP: string; CONNECT_XBOX_EDUCATION_TITLE: string; CONNECT_XBOX_ENSURE_APP_INSTALLED: string; CONNECT_XBOX_ERROR_BODY: string; CONNECT_XBOX_ERROR_TITLE: string; CONNECT_XBOX_LANDING_BODY: string; CONNECT_XBOX_LANDING_ONE_WAY_WARNING: string; CONNECT_XBOX_LANDING_TITLE: string; CONNECT_XBOX_ONE_MORE_THING: string; CONNECT_XBOX_SUCCESS_APP_BODY: string; CONNECT_XBOX_SUCCESS_APP_BUTTON_ANDROID: string; CONNECT_XBOX_SUCCESS_APP_BUTTON_IOS: string; CONNECT_XBOX_SUCCESS_APP_TITLE: string; CONNECT_XBOX_SUCCESS_BODY: string; CONNECT_XBOX_SUCCESS_TITLE: string; CONNECT_XBOX_TRANSFER_VOICE_VALUE_PROP: string; CONNECTED_ACCOUNT_ADD_DETAILS: string; CONNECTED_ACCOUNT_ADD_DETAILS_DESCRIPTION: FM<"helpdeskUrl", true>; CONNECTED_ACCOUNT_ADD_DETAILS_LEARN_MORE: string; CONNECTED_ACCOUNT_ADD_DETAILS_SHORT_DESC: string; CONNECTED_ACCOUNT_AUTHORIZATION_CONTINUE_BUTTON: string; CONNECTED_ACCOUNT_COPY_USERNAME: FM<"name", false>; CONNECTED_ACCOUNT_HELP_CENTER_ARTICLE: FM<[never, "link"], true>; CONNECTED_ACCOUNT_HELP_CENTER_ARTICLE_MOBILE: FM<[never, "link"], true>; CONNECTED_ACCOUNT_IS_AUTHORIZED_APP_DISCONNECT_WARNING: FM<"platformName", false>; CONNECTED_ACCOUNT_REVOKED: FM; CONNECTED_ACCOUNT_VERIFY_FAILURE: FM<"name", true>; CONNECTED_ACCOUNT_VERIFY_FAILURE_DETAILS: string; CONNECTED_ACCOUNT_VERIFY_FAILURE_PSN_CHILD_ACCOUNT_DETAILS: string; CONNECTED_ACCOUNT_VERIFY_SUCCESS: FM<"name", true>; CONNECTED_ACCOUNT_VERIFY_SUCCESS_DETAILS: string; CONNECTED_ACCOUNT_VERIFYING: FM<"name", true>; CONNECTED_ACCOUNTS: string; CONNECTED_ACCOUNTS_NONE: string; CONNECTED_ACCOUNTS_NONE_TITLE: string; CONNECTED_DEVICE_DETECTED_CANCEL_BUTTON: string; CONNECTED_DEVICE_DETECTED_CONFIRM_BUTTON: string; CONNECTED_DEVICE_DETECTED_INPUT_AND_OUTPUT_BODY: FM<"name", true>; CONNECTED_DEVICE_DETECTED_INPUT_BODY: FM<"name", true>; CONNECTED_DEVICE_DETECTED_OPTION_INPUT: string; CONNECTED_DEVICE_DETECTED_OPTION_INPUT_AND_OUTPUT: string; CONNECTED_DEVICE_DETECTED_OPTION_OUTPUT: string; CONNECTED_DEVICE_DETECTED_OUTPUT_BODY: FM<"name", true>; CONNECTED_DEVICE_DETECTED_TITLE: string; CONNECTED_ON_ANOTHER_CLIENT: string; CONNECTING: string; CONNECTING_PROBLEMS_CTA: string; CONNECTION_ENTER_CODE: string; CONNECTION_INVALID_PIN: string; CONNECTION_LOGIN_MICROSOFT: string; CONNECTION_LOGIN_WITH: string; CONNECTION_STATUS_AUTHENTICATING: string; CONNECTION_STATUS_AWAITING_ENDPOINT: string; CONNECTION_STATUS_CONNECTING: string; CONNECTION_STATUS_DISCONNECTED: string; CONNECTION_STATUS_DTLS_CONNECTING: string; CONNECTION_STATUS_ICE_CHECKING: string; CONNECTION_STATUS_NO_ROUTE: string; CONNECTION_STATUS_RTC_CONNECTING: string; CONNECTION_STATUS_RTC_DISCONNECTED: string; CONNECTION_STATUS_STREAM_CONNECTED: FM<"username", false>; CONNECTION_STATUS_STREAM_SELF_CONNECTED: string; CONNECTION_STATUS_VIDEO_CONNECTED: string; CONNECTION_STATUS_VOICE_CONNECTED: string; CONNECTION_VERIFIED: string; CONNECTION_VERIFIED_ON_TWITTER: string; CONNECTIONS: string; CONNECTIONS_ADD_CONNECTIONS: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_ACCOUNT_CONNECTED: FM<"platformName", false>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_ACCOUNT_CONNECTED_PREVIEW: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_ACCOUNT_CONNECTED_PRIVACY: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_ACCOUNT_CONNECTED_TOOLTIP: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_HEADER_TEXT_ALL: FM<"roleName", true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_HEADER_TEXT_ANY: FM<"roleName", true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_HEADER_TEXT_ONE: FM<"roleName", true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_MANAGE_CONNECTIONS: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_MUST_BE: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_MUST_HAVE_A: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_MUST_HAVE_AT_LEAST: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_MUST_HAVE_AT_MOST: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_MUST_NOT_BE: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_PLATFORM_DISABLED: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_REQUIREMENTS_NOT_MET: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_ROLE_GRANTED: string; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_USAGE: FM<"privacyPolicyUrl", true>; CONNECTIONS_CONNECT_ACCOUNTS_MODAL_USAGE_SETTINGS: FM<"privacyPolicyUrl", true>; CONNECTIONS_EBAY_POSITIVE_FEEDBACK_PERCENTAGE: string; CONNECTIONS_EBAY_TOP_RATED_SELLER: string; CONNECTIONS_EBAY_UNIQUE_NEGATIVE_FEEDBACK_COUNT: string; CONNECTIONS_EBAY_UNIQUE_POSITIVE_FEEDBACK_COUNT: string; CONNECTIONS_INSTAGRAM_POSTS: string; CONNECTIONS_NUX_CONTENT: FM<"helpdeskArticle", true>; CONNECTIONS_NUX_TITLE: string; CONNECTIONS_OPEN_LINK: string; CONNECTIONS_PAYPAL_VERIFIED: string; CONNECTIONS_PROFILE_EBAY_POSITIVE_FEEDBACK_PERCENTAGE: FM<"value", true>; CONNECTIONS_PROFILE_GENERIC_VANITY_METRIC: FM<"name" | "value", true>; CONNECTIONS_PROFILE_INSTAGRAM_POSTS: FM<"value", true>; CONNECTIONS_PROFILE_MEMBER_SINCE: FM<"date", false>; CONNECTIONS_PROFILE_POWERED_BY: FM<[never, "applicationHook"], true>; CONNECTIONS_PROFILE_REDDIT_KARMA: FM<"value", true>; CONNECTIONS_PROFILE_STEAM_GAMES: FM<"value", true>; CONNECTIONS_PROFILE_TIKTOK_FOLLOWERS: FM<"value", true>; CONNECTIONS_PROFILE_TIKTOK_FOLLOWING: FM<"value", true>; CONNECTIONS_PROFILE_TIKTOK_LIKES: FM<"value", true>; CONNECTIONS_PROFILE_TWITTER_FOLLOWERS: FM<"value", true>; CONNECTIONS_PROFILE_TWITTER_STATUSES: FM<"value", true>; CONNECTIONS_REDDIT_GOLD: string; CONNECTIONS_REDDIT_KARMA: string; CONNECTIONS_REDDIT_MOD: string; CONNECTIONS_ROLE_OFFICIAL_ICON_TOOLTIP: string; CONNECTIONS_ROLE_POPOUT_CLICK_TO_VIEW: string; CONNECTIONS_ROLE_POPOUT_GET_ROLES: string; CONNECTIONS_ROLE_POPOUT_HEADER_ALL: FM; CONNECTIONS_ROLE_POPOUT_HEADER_ONE: string; CONNECTIONS_ROLE_POPOUT_HEADER_OR: FM; CONNECTIONS_ROLE_POPOUT_MUST_BE: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_ROLE_POPOUT_MUST_HAVE_A: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_ROLE_POPOUT_MUST_HAVE_AT_LEAST: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_ROLE_POPOUT_MUST_HAVE_AT_MOST: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_ROLE_POPOUT_MUST_NOT_BE: FM<[never, "platformQuantityHook"], true>; CONNECTIONS_ROLE_POPOUT_VIEW_CONNECTIONS: string; CONNECTIONS_ROLE_RULE_ACCOUNT_AGE: FM<"days", false>; CONNECTIONS_ROLE_RULE_EBAY_POSITIVE_FEEDBACK_PERCENTAGE: FM<"value", false>; CONNECTIONS_ROLE_RULE_EBAY_UNIQUE_NEGATIVE_FEEDBACK_COUNT: FM<"count", false>; CONNECTIONS_ROLE_RULE_EBAY_UNIQUE_POSITIVE_FEEDBACK_COUNT: FM<"count", false>; CONNECTIONS_ROLE_RULE_GENERIC: FM<"count" | "description", true>; CONNECTIONS_ROLE_RULE_INSTAGRAM_POSTS: FM<"count", false>; CONNECTIONS_ROLE_RULE_PAYPAL_VERIFIED: string; CONNECTIONS_ROLE_RULE_REDDIT_GOLD: string; CONNECTIONS_ROLE_RULE_REDDIT_KARMA: FM<"karma", false>; CONNECTIONS_ROLE_RULE_REDDIT_MODERATOR: string; CONNECTIONS_ROLE_RULE_STEAM_DOTA2_ITEMS: FM<"count", false>; CONNECTIONS_ROLE_RULE_STEAM_GAMES: FM<"count", false>; CONNECTIONS_ROLE_RULE_STEAM_TF2_ITEMS: FM<"count", false>; CONNECTIONS_ROLE_RULE_TIKTOK_FOLLOWER_COUNT: FM<"count", false>; CONNECTIONS_ROLE_RULE_TIKTOK_FOLLOWING_COUNT: FM<"count", false>; CONNECTIONS_ROLE_RULE_TIKTOK_LIKES_COUNT: FM<"count", false>; CONNECTIONS_ROLE_RULE_TIKTOK_VERIFIED: string; CONNECTIONS_ROLE_RULE_TWITTER_FOLLOWERS: FM<"count", false>; CONNECTIONS_ROLE_RULE_TWITTER_STATUSES: FM<"count", false>; CONNECTIONS_ROLE_RULE_TWITTER_VERIFIED: string; CONNECTIONS_ROLES_CHANNEL_CALL_TO_ACTION_LEARN_MORE: FM<"helpdeskArticleUrl", true>; CONNECTIONS_ROLES_CHANNEL_CONNECTIONS_REQUIRED: FM<"count", false>; CONNECTIONS_ROLES_CHANNEL_LEAVE_VERIFIED_ROLE: string; CONNECTIONS_ROLES_CHANNEL_LEAVE_VERIFIED_ROLE_INFO: string; CONNECTIONS_ROLES_CHANNEL_LEAVE_VERIFIED_ROLE_MOBILE: string; CONNECTIONS_ROLES_CHANNEL_NAME: string; CONNECTIONS_STEAM_DOTA2: string; CONNECTIONS_STEAM_GAMES: string; CONNECTIONS_STEAM_ITEMS: FM<"count", true>; CONNECTIONS_STEAM_TF2: string; CONNECTIONS_STEAM_TOOLTIP: string; CONNECTIONS_TIKTOK_FOLLOWERS: string; CONNECTIONS_TIKTOK_FOLLOWING: string; CONNECTIONS_TIKTOK_LIKES: string; CONNECTIONS_TIKTOK_VERIFIED: string; CONNECTIONS_TWITTER_FOLLOWERS: string; CONNECTIONS_TWITTER_STATUSES: string; CONNECTIONS_USER_SETTINGS_CONNECT_ACCOUNTS_DESCRIPTION: FM<"privacyPolicyUrl", true>; CONNECTIONS_USER_SETTINGS_CONNECT_ACCOUNTS_HEADER: string; CONNECTIONS_VIEW_MORE: string; CONSOLE_CONNECTING: string; CONSOLE_CONNECTING_DISABLED: string; CONSOLE_DETECT_DEVICE_FOUND: FM<"count", false>; CONSOLE_DETECT_DEVICE_FOUND_DESCRIPTION: FM<"count", false>; CONSOLE_DETECT_NO_DEVICES_FOUND: string; CONSOLE_DETECT_NO_DEVICES_FOUND_DESCRIPTION: string; CONSOLE_DEVICE_COMMUNICATION_RESTRICTED: string; CONSOLE_DEVICE_COMMUNICATION_RESTRICTED_BODY: FM<"deviceType", false>; CONSOLE_DEVICE_IN_USE: FM<"deviceType", false>; CONSOLE_DEVICE_IN_USE_BODY: FM<"deviceName", false>; CONSOLE_DEVICE_NOT_RESPONDING: FM<"deviceType", false>; CONSOLE_DEVICE_NOT_RESPONDING_BODY: FM<"deviceName", false>; CONSOLE_DEVICE_RECONNECT_ACCOUNT: FM<"deviceType", false>; CONSOLE_DEVICE_REQUIRES_PASSCODE: FM<"deviceType", false>; CONSOLE_DEVICE_REQUIRES_PASSCODE_BODY: FM<"deviceName", false>; CONSOLE_DEVICE_UNKNOWN_ERROR: string; CONSOLE_DEVICE_UNKNOWN_ERROR_BODY: FM<"deviceName", false>; CONSOLE_ERROR_CODE_SUPPORT: FM<"errorCode" | "supportURL", true>; CONSOLE_LAN_DETECT_CTA: string; CONSOLE_LAN_SEARCHING: string; CONSOLE_LAN_SEARCHING_DESCRIPTION: string; CONSOLE_NUX_MOBILE: string; CONSOLE_NUX_MOBILE_SUBTITLE: string; CONSOLE_NUX_TOOLTIP_ACCEPT: string; CONSOLE_NUX_TOOLTIP_BODY_PS5: string; CONSOLE_NUX_TOOLTIP_BODY_XBOX: string; CONSOLE_NUX_TOOLTIP_DISMISS: string; CONSOLE_NUX_TOOLTIP_HEADER: string; CONSOLE_PLAYSTATION_JOIN_VOICE: string; CONSOLE_PLAYSTATION_TRANSFER_VOICE: string; CONSOLE_PLAYSTATION_TRANSFER_VOICE_MODAL_HEADER: string; CONSOLE_PLAYSTATION_TRANSFER_VOICE_MODAL_SUBHEADING: string; CONSOLE_PRECONNECT_TITLE_WAITING: string; CONSOLE_REDIRECT_NOTICE: FM<"redirectUrl", false>; CONSOLE_STREAM_DISABLED: string; CONSOLE_STREAM_UNAVAILABLE: string; CONSOLE_STREAM_UNAVAILABLE_TOOLTIP: string; CONSOLE_STREAMING: string; CONSOLE_STREAMING_TOOLTIP: string; CONSOLE_TRANSFER: string; CONSOLE_TRANSFER_VOICE: string; CONSOLE_TRANSFERRING_SUBTITLE: FM; CONSOLE_VOICE_MOBILE_UPSELL: string; CONSOLE_VOICE_MOBILE_UPSELL_HEADER: string; CONSOLE_VOICE_MOBILE_UPSELL_HEADER_PLAYSTATION: string; CONSOLE_VOICE_MOBILE_UPSELL_REDESIGN_PLAYSTATION: string; CONSOlE_VOICE_MOBILE_UPSELL_REDESIGN_SUBTITLE_PLAYSTATION: string; CONSOlE_VOICE_MOBILE_UPSELL_REDESIGN_SUBTITLE_XBOX: string; CONSOLE_VOICE_MOBILE_UPSELL_REDESIGN_XBOX: string; CONTACT_SYNC_CONTACT_INVITE_TITLE: string; CONTACT_SYNC_DONT_SHOW_AGAIN: string; CONTACT_SYNC_EMPTY_FRIENDS_SUBTITLE: string; CONTACT_SYNC_ENTER_NAME_INPUT_HEADER: string; CONTACT_SYNC_ENTER_NAME_PREFILL: string; CONTACT_SYNC_ENTER_NAME_SUBTITLE: string; CONTACT_SYNC_ENTER_NAME_TITLE: string; CONTACT_SYNC_ENTER_PHONE_NUMBER_DESCRIPTION: string; CONTACT_SYNC_ENTER_PHONE_NUMBER_TITLE: string; CONTACT_SYNC_FAILED_ALERT_MESSAGE: string; CONTACT_SYNC_FAILED_ALERT_TITLE: string; CONTACT_SYNC_FIND_FRIENDS_SUBTITLE: string; CONTACT_SYNC_FIND_FRIENDS_TITLE: string; CONTACT_SYNC_FRIEND_FINDER_SUBTITLE: string; CONTACT_SYNC_FRIEND_FINDER_TITLE: FM<"count", false>; CONTACT_SYNC_INFO_2: string; CONTACT_SYNC_INFO_3: string; CONTACT_SYNC_INFO_EMAIL: string; CONTACT_SYNC_INFO_PERMISSIONS_FORM_HEADER: string; CONTACT_SYNC_INFO_PHONE: string; CONTACT_SYNC_INFO_SETTINGS_2: FM; CONTACT_SYNC_LANDING_DISCOVERABILITY_FOOTER: FM<[never, "learnMoreHook"], true>; CONTACT_SYNC_LANDING_INFO_2: string; CONTACT_SYNC_LANDING_SCREEN_DESCRIPTION: string; CONTACT_SYNC_LANDING_SUBTITLE_REDESIGN: string; CONTACT_SYNC_LANDING_TITLE: string; CONTACT_SYNC_LANDING_TOGGLE_LABEL: string; CONTACT_SYNC_LEARN_MORE: FM<[never, "learnMoreHook"], true>; CONTACT_SYNC_NEEDS_PERMISSIONS: string; CONTACT_SYNC_NEEDS_PERMISSIONS_ANDROID: string; CONTACT_SYNC_PERMISSIONS_DESCRIPTION_ANDROID: FM<[never, "learnMoreHook"], true>; CONTACT_SYNC_PHONE_VERIFY_SUBTITLE: string; CONTACT_SYNC_PHONE_VERIFY_TITLE: string; CONTACT_SYNC_PHONE_VERIFY_TITLE_2: string; CONTACT_SYNC_REMOVE_NAME: string; CONTACT_SYNC_SETTING_LABEL: string; CONTACT_SYNC_SUBTITLE: string; CONTACT_SYNC_SUGGESTIONS_CTA: string; CONTACT_SYNC_SUGGESTIONS_EMPTY_SUBTITLE: string; CONTACT_SYNC_SUGGESTIONS_EMPTY_TITLE: string; CONTACT_SYNC_SUGGESTIONS_SUBTITLE: string; CONTACT_SYNC_SUGGESTIONS_TITLE: string; CONTACT_SYNC_TITLE: string; CONTACT_SYNC_UPDATE_NAME_SUBTITLE: string; CONTACT_SYNC_UPDATE_NAME_TITLE: string; CONTACTS: string; CONTACTS_ON_DISCORD: string; CONTENT_INVENTORY_ACTIVITY_CARD_ARIA_ROLE_DESCRIPTION: string; CONTENT_INVENTORY_ENTRY_USERS_V2: FM<["countOthers" | "user0" | "user1", "name0Hook" | "name1Hook"], true>; CONTENT_INVENTORY_GAME_STATE_SIZE: FM<"count" | "max", false>; CONTENT_INVENTORY_JOIN_LIVE_CHANNEL: FM<"channelName", false>; CONTENT_INVENTORY_MEMBERLIST_GROUP_TITLE: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_ALT: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_DESCRIPTION: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_DISCLOSURE: FM<"recentActivityURL", true>; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_FRIEND_NOTE: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_GOT_IT: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_HEADER: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_MANAGE_NOTE: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_PLAYED_NOTE: string; CONTENT_INVENTORY_MEMBERLIST_LEARN_MORE_REPLY_NOTE: string; CONTENT_INVENTORY_MEMBERLIST_SETTINGS_ABOUT: string; CONTENT_INVENTORY_MEMBERLIST_SETTINGS_ALT: string; CONTENT_INVENTORY_MEMBERLIST_SETTINGS_HIDE: string; CONTENT_INVENTORY_MESSAGE_SENDING: string; CONTENT_INVENTORY_MESSAGE_SENT: string; CONTENT_INVENTORY_OPEN_ACTIVITY_A11Y_DESCRIPTION: FM<"title", false>; CONTENT_INVENTORY_OPEN_CRUNCHYROLL_ITEM_A11Y_DESCRIPTION: FM<"title", false>; CONTENT_INVENTORY_OPEN_GAME_PROFILE_A11Y_DESCRIPTION: FM<"gameName", false>; CONTENT_INVENTORY_OPEN_SPOTIFY_ITEM_A11Y_DESCRIPTION: FM<"itemName", false>; CONTENT_INVENTORY_REACTION_USER_PLAYED: FM<"countOthers" | "gameName" | "user1" | "user2", true>; CONTENT_INVENTORY_REACTION_USER_PLAYING: FM<"countOthers" | "gameName" | "user1" | "user2", true>; CONTENT_INVENTORY_REPLY_WITH_EMOJI: FM<"emojiName", false>; CONTENT_INVENTORY_SWITCH_SEND_MESSAGE_TO_USER: string; CONTENT_INVENTORY_SWITCH_SHARE_TO_CHANNEL: string; CONTENT_INVENTORY_VIEW_ACTIVITY: string; CONTENT_MATCHING: FM<"command" | "query", true>; CONTINUE: string; CONTINUE_IN_BROWSER: string; CONTINUE_TO_WEBAPP: string; CONTROL_VOLUME: string; CONVERT_EMOTICONS: string; CONVERT_EMOTICONS_HELP: string; COP_NAME: string; COPIED: string; COPIED_LINK: string; COPIED_TEXT: string; COPY: string; COPY_CHANNEL_TOPIC: string; COPY_CODE: FM<"code", false>; COPY_COMMAND: string; COPY_EMOJI: string; COPY_EVENT_LINK: string; COPY_ID: string; COPY_ID_APP: string; COPY_ID_APPLICATION: string; COPY_ID_AUTHOR: string; COPY_ID_AUTOMOD_RULE: string; COPY_ID_CHANNEL: string; COPY_ID_COMMAND: string; COPY_ID_EMOJI: string; COPY_ID_EVENT: string; COPY_ID_EVENT_RECURRENCE: string; COPY_ID_FORUM_TAG: string; COPY_ID_GUILD: string; COPY_ID_MESSAGE: string; COPY_ID_ROLE: string; COPY_ID_STICKER: string; COPY_ID_THREAD: string; COPY_ID_UNKNOWN: string; COPY_ID_USER: string; COPY_IMAGE_MENU_ITEM: string; COPY_LINK: string; COPY_MEDIA_LINK: string; COPY_MESSAGE_LINK: string; COPY_RECURRENCE_LINK: string; COPY_SERIES_LINK: string; COPY_STATS: string; COPY_SUCCESS_1: string; COPY_SUCCESS_10: string; COPY_SUCCESS_11: string; COPY_SUCCESS_2: string; COPY_SUCCESS_3: string; COPY_SUCCESS_4: string; COPY_SUCCESS_5: string; COPY_SUCCESS_6: string; COPY_SUCCESS_7: string; COPY_SUCCESS_8: string; COPY_SUCCESS_9: string; COPY_TEXT: string; COPY_USERNAME: string; COPY_VERSION: string; COUNT_REMAINING: FM<"count", false>; COUNTDOWN_UNITS_DAYS: string; COUNTDOWN_UNITS_HOURS: string; COUNTDOWN_UNITS_MINUTES: string; COUNTDOWN_UNITS_SECONDS: string; COUNTRY_CODE: string; COUNTRY_CODE_SELECT_A11Y_HINT: string; COUNTRY_CODES: string; COUNTRY_NAME_AC: string; COUNTRY_NAME_AD: string; COUNTRY_NAME_AE: string; COUNTRY_NAME_AF: string; COUNTRY_NAME_AG: string; COUNTRY_NAME_AI: string; COUNTRY_NAME_AL: string; COUNTRY_NAME_AM: string; COUNTRY_NAME_AN: string; COUNTRY_NAME_AO: string; COUNTRY_NAME_AQ: string; COUNTRY_NAME_AR: string; COUNTRY_NAME_AS: string; COUNTRY_NAME_AT: string; COUNTRY_NAME_AU: string; COUNTRY_NAME_AW: string; COUNTRY_NAME_AX: string; COUNTRY_NAME_AZ: string; COUNTRY_NAME_BA: string; COUNTRY_NAME_BB: string; COUNTRY_NAME_BD: string; COUNTRY_NAME_BE: string; COUNTRY_NAME_BF: string; COUNTRY_NAME_BG: string; COUNTRY_NAME_BH: string; COUNTRY_NAME_BI: string; COUNTRY_NAME_BJ: string; COUNTRY_NAME_BL: string; COUNTRY_NAME_BM: string; COUNTRY_NAME_BN: string; COUNTRY_NAME_BO: string; COUNTRY_NAME_BQ: string; COUNTRY_NAME_BR: string; COUNTRY_NAME_BS: string; COUNTRY_NAME_BT: string; COUNTRY_NAME_BV: string; COUNTRY_NAME_BW: string; COUNTRY_NAME_BY: string; COUNTRY_NAME_BZ: string; COUNTRY_NAME_CA: string; COUNTRY_NAME_CC: string; COUNTRY_NAME_CD: string; COUNTRY_NAME_CF: string; COUNTRY_NAME_CG: string; COUNTRY_NAME_CH: string; COUNTRY_NAME_CI: string; COUNTRY_NAME_CK: string; COUNTRY_NAME_CL: string; COUNTRY_NAME_CM: string; COUNTRY_NAME_CN: string; COUNTRY_NAME_CO: string; COUNTRY_NAME_CR: string; COUNTRY_NAME_CU: string; COUNTRY_NAME_CV: string; COUNTRY_NAME_CW: string; COUNTRY_NAME_CX: string; COUNTRY_NAME_CY: string; COUNTRY_NAME_CZ: string; COUNTRY_NAME_DE: string; COUNTRY_NAME_DG: string; COUNTRY_NAME_DJ: string; COUNTRY_NAME_DK: string; COUNTRY_NAME_DM: string; COUNTRY_NAME_DO: string; COUNTRY_NAME_DZ: string; COUNTRY_NAME_EC: string; COUNTRY_NAME_EE: string; COUNTRY_NAME_EG: string; COUNTRY_NAME_EH: string; COUNTRY_NAME_ER: string; COUNTRY_NAME_ES: string; COUNTRY_NAME_ET: string; COUNTRY_NAME_FI: string; COUNTRY_NAME_FJ: string; COUNTRY_NAME_FK: string; COUNTRY_NAME_FM: string; COUNTRY_NAME_FO: string; COUNTRY_NAME_FR: string; COUNTRY_NAME_GA: string; COUNTRY_NAME_GB: string; COUNTRY_NAME_GD: string; COUNTRY_NAME_GE: string; COUNTRY_NAME_GF: string; COUNTRY_NAME_GG: string; COUNTRY_NAME_GH: string; COUNTRY_NAME_GI: string; COUNTRY_NAME_GL: string; COUNTRY_NAME_GM: string; COUNTRY_NAME_GN: string; COUNTRY_NAME_GP: string; COUNTRY_NAME_GQ: string; COUNTRY_NAME_GR: string; COUNTRY_NAME_GS: string; COUNTRY_NAME_GT: string; COUNTRY_NAME_GU: string; COUNTRY_NAME_GW: string; COUNTRY_NAME_GY: string; COUNTRY_NAME_HK: string; COUNTRY_NAME_HM: string; COUNTRY_NAME_HN: string; COUNTRY_NAME_HR: string; COUNTRY_NAME_HT: string; COUNTRY_NAME_HU: string; COUNTRY_NAME_ID: string; COUNTRY_NAME_IE: string; COUNTRY_NAME_IL: string; COUNTRY_NAME_IM: string; COUNTRY_NAME_IN: string; COUNTRY_NAME_IO: string; COUNTRY_NAME_IQ: string; COUNTRY_NAME_IR: string; COUNTRY_NAME_IS: string; COUNTRY_NAME_IT: string; COUNTRY_NAME_JE: string; COUNTRY_NAME_JM: string; COUNTRY_NAME_JO: string; COUNTRY_NAME_JP: string; COUNTRY_NAME_KE: string; COUNTRY_NAME_KG: string; COUNTRY_NAME_KH: string; COUNTRY_NAME_KI: string; COUNTRY_NAME_KM: string; COUNTRY_NAME_KN: string; COUNTRY_NAME_KP: string; COUNTRY_NAME_KR: string; COUNTRY_NAME_KW: string; COUNTRY_NAME_KY: string; COUNTRY_NAME_KZ: string; COUNTRY_NAME_LA: string; COUNTRY_NAME_LB: string; COUNTRY_NAME_LC: string; COUNTRY_NAME_LI: string; COUNTRY_NAME_LK: string; COUNTRY_NAME_LR: string; COUNTRY_NAME_LS: string; COUNTRY_NAME_LT: string; COUNTRY_NAME_LU: string; COUNTRY_NAME_LV: string; COUNTRY_NAME_LY: string; COUNTRY_NAME_MA: string; COUNTRY_NAME_MC: string; COUNTRY_NAME_MD: string; COUNTRY_NAME_ME: string; COUNTRY_NAME_MF: string; COUNTRY_NAME_MG: string; COUNTRY_NAME_MH: string; COUNTRY_NAME_MI: string; COUNTRY_NAME_MK: string; COUNTRY_NAME_ML: string; COUNTRY_NAME_MM: string; COUNTRY_NAME_MN: string; COUNTRY_NAME_MO: string; COUNTRY_NAME_MP: string; COUNTRY_NAME_MQ: string; COUNTRY_NAME_MR: string; COUNTRY_NAME_MS: string; COUNTRY_NAME_MT: string; COUNTRY_NAME_MU: string; COUNTRY_NAME_MV: string; COUNTRY_NAME_MW: string; COUNTRY_NAME_MX: string; COUNTRY_NAME_MY: string; COUNTRY_NAME_MZ: string; COUNTRY_NAME_NA: string; COUNTRY_NAME_NC: string; COUNTRY_NAME_NE: string; COUNTRY_NAME_NF: string; COUNTRY_NAME_NG: string; COUNTRY_NAME_NI: string; COUNTRY_NAME_NL: string; COUNTRY_NAME_NO: string; COUNTRY_NAME_NP: string; COUNTRY_NAME_NR: string; COUNTRY_NAME_NU: string; COUNTRY_NAME_NZ: string; COUNTRY_NAME_OM: string; COUNTRY_NAME_PA: string; COUNTRY_NAME_PE: string; COUNTRY_NAME_PF: string; COUNTRY_NAME_PG: string; COUNTRY_NAME_PH: string; COUNTRY_NAME_PK: string; COUNTRY_NAME_PL: string; COUNTRY_NAME_PM: string; COUNTRY_NAME_PN: string; COUNTRY_NAME_PR: string; COUNTRY_NAME_PS: string; COUNTRY_NAME_PT: string; COUNTRY_NAME_PW: string; COUNTRY_NAME_PY: string; COUNTRY_NAME_QA: string; COUNTRY_NAME_RE: string; COUNTRY_NAME_RO: string; COUNTRY_NAME_RS: string; COUNTRY_NAME_RU: string; COUNTRY_NAME_RW: string; COUNTRY_NAME_SA: string; COUNTRY_NAME_SB: string; COUNTRY_NAME_SC: string; COUNTRY_NAME_SD: string; COUNTRY_NAME_SE: string; COUNTRY_NAME_SG: string; COUNTRY_NAME_SH: string; COUNTRY_NAME_SI: string; COUNTRY_NAME_SJ: string; COUNTRY_NAME_SK: string; COUNTRY_NAME_SL: string; COUNTRY_NAME_SM: string; COUNTRY_NAME_SN: string; COUNTRY_NAME_SO: string; COUNTRY_NAME_SR: string; COUNTRY_NAME_SS: string; COUNTRY_NAME_ST: string; COUNTRY_NAME_SV: string; COUNTRY_NAME_SX: string; COUNTRY_NAME_SY: string; COUNTRY_NAME_SZ: string; COUNTRY_NAME_TC: string; COUNTRY_NAME_TD: string; COUNTRY_NAME_TF: string; COUNTRY_NAME_TG: string; COUNTRY_NAME_TH: string; COUNTRY_NAME_TJ: string; COUNTRY_NAME_TK: string; COUNTRY_NAME_TL: string; COUNTRY_NAME_TM: string; COUNTRY_NAME_TN: string; COUNTRY_NAME_TO: string; COUNTRY_NAME_TP: string; COUNTRY_NAME_TR: string; COUNTRY_NAME_TT: string; COUNTRY_NAME_TV: string; COUNTRY_NAME_TW: string; COUNTRY_NAME_TZ: string; COUNTRY_NAME_UA: string; COUNTRY_NAME_UG: string; COUNTRY_NAME_UM: string; COUNTRY_NAME_US: string; COUNTRY_NAME_UY: string; COUNTRY_NAME_UZ: string; COUNTRY_NAME_VA: string; COUNTRY_NAME_VC: string; COUNTRY_NAME_VE: string; COUNTRY_NAME_VG: string; COUNTRY_NAME_VI: string; COUNTRY_NAME_VN: string; COUNTRY_NAME_VU: string; COUNTRY_NAME_WF: string; COUNTRY_NAME_WK: string; COUNTRY_NAME_WS: string; COUNTRY_NAME_XK: string; COUNTRY_NAME_YE: string; COUNTRY_NAME_YT: string; COUNTRY_NAME_ZA: string; COUNTRY_NAME_ZM: string; COUNTRY_NAME_ZW: string; COUNTRY_NO_RESULTS: string; COZY_MODE: string; CRASH_APP_VERSION: FM<"version", false>; CRASH_DETAILS: string; CRASH_DEVICE: FM<"device", false>; CRASH_DEVICE_VERSION: FM<"version", false>; CRASH_DISCLAIMER: string; CRASH_SOURCE: FM<"source", false>; CRASH_TESTERS_INVITE: FM<"testers", false>; CRASH_TIMESTAMP: FM<"timestamp", false>; CRASH_UNEXPECTED: string; CREATE: string; CREATE_ACCOUNT: string; CREATE_AND_VIEW_EVENTS: string; CREATE_CATEGORY: string; CREATE_CHANNEL: string; CREATE_CHANNEL_IN_CATEGORY: FM<"categoryName", false>; CREATE_CHANNEL_MODAL_CATEGORY_PLACEHOLDER: string; CREATE_DM: string; CREATE_EVENT_ADD_END_TIME_LABEL: string; CREATE_EVENT_END_DATE_LABEL: string; CREATE_EVENT_END_TIME_LABEL: string; CREATE_EVENT_PRIVACY_LABEL: string; CREATE_EVENT_RECUR_BIWEEKLY: FM<"weekday", false>; CREATE_EVENT_RECUR_LABEL: string; CREATE_EVENT_RECUR_MONTHLY: FM<"nth" | "weekday", false>; CREATE_EVENT_RECUR_NONE: string; CREATE_EVENT_RECUR_WEEKDAYS: string; CREATE_EVENT_RECUR_WEEKENDS: string; CREATE_EVENT_RECUR_WEEKLY: FM<"weekday", false>; CREATE_EVENT_RECUR_YEARLY: FM<"date", false>; CREATE_EVENT_REMOVE_END_TIME_LABEL: string; CREATE_EVENT_START_DATE_LABEL: string; CREATE_EVENT_START_TIME_LABEL: string; CREATE_EVENTS: string; CREATE_EXPRESSIONS: string; CREATE_FOLDER: string; CREATE_FOLDER_MISSING_SERVERS_ERROR_DESCRIPTION: string; CREATE_FOLDER_MISSING_SERVERS_ERROR_TITLE: string; CREATE_FORUM_CHANNEL: string; CREATE_FORUM_POSTS: string; CREATE_GROUP_DM: string; CREATE_GUILD_WITH_TEMPLATES_TITLE: string; CREATE_INSTANT_INVITE: string; CREATE_LINK: string; CREATE_MEDIA_CHANNEL_DESCRIPTION: string; CREATE_NEWS_CHANNEL_DESCRIPTION: string; CREATE_POLL: string; CREATE_POLL_ADD_ALT_ARIA_LABEL: FM<"answerNumber", false>; CREATE_POLL_ADD_ANSWER_BUTTON: string; CREATE_POLL_ADD_EMOJI: string; CREATE_POLL_ADD_EMOJI_ARIA: FM<"answerNumber", false>; CREATE_POLL_ADD_IMAGE: string; CREATE_POLL_ADD_IMAGE_ARIA: FM<"answerNumber", false>; CREATE_POLL_ALT_TEXT_LABEL: string; CREATE_POLL_ALT_TEXT_SCREEN_READER_HINT: string; CREATE_POLL_ANSWER_INPUT_LABEL: FM<"answerNumber", false>; CREATE_POLL_ANSWER_MUST_CONTAIN_TEXT: string; CREATE_POLL_ANSWER_PLACEHOLDER: string; CREATE_POLL_ANSWERS_FIELDSET_LABEL: string; CREATE_POLL_DURATION_BUTTON_A11Y_HINT: string; CREATE_POLL_DURATION_LABEL: string; CREATE_POLL_DURATION_OPTION_LABEL_14_DAYS: string; CREATE_POLL_DURATION_OPTION_LABEL_3_DAYS: string; CREATE_POLL_DURATION_OPTION_LABEL_7_DAYS: string; CREATE_POLL_DURATION_OPTION_LABEL_N_HOURS: FM<"num", false>; CREATE_POLL_DURATION_SELECTION_ARIA_LABEL: FM<"duration", false>; CREATE_POLL_EDIT_ALT_ARIA_LABEL: FM<"answerNumber", false>; CREATE_POLL_EDIT_ALT_TEXT: string; CREATE_POLL_EDIT_EMOJI_ARIA: FM<"answerNumber" | "emojiName", false>; CREATE_POLL_EDIT_IMAGE_ARIA: FM<"answerNumber" | "imageName", false>; CREATE_POLL_EDIT_IMAGE_DESCRIPTION: string; CREATE_POLL_EXPIRATION: string; CREATE_POLL_HEADING: string; CREATE_POLL_LAYOUT_DEFAULT: string; CREATE_POLL_LAYOUT_IMAGE: string; CREATE_POLL_LAYOUTS_RADIOGROUP_ARIA_LABEL: string; CREATE_POLL_MINIMUM_ANSWERS_REQUIRED: string; CREATE_POLL_MODAL_WARNING_MODAL_TITLE: string; CREATE_POLL_MODAL_WARNING_UNSAVED_CHANGES_BODY: string; CREATE_POLL_MULTIPLE_ANSWERS: string; CREATE_POLL_POLL_ANSWER: string; CREATE_POLL_POLL_DURATION_HEADING: string; CREATE_POLL_POST: string; CREATE_POLL_QUESTION_INPUT_LABEL: string; CREATE_POLL_QUESTION_PLACEHOLDER: string; CREATE_POLL_QUESTION_REQUIRED: string; CREATE_POLL_REMOVE_ANSWER: string; CREATE_POLL_REMOVE_ANSWER_A11Y: FM<"answerNumber", false>; CREATE_POLL_REMOVE_EMOJI: string; CREATE_POLL_REPLACE_EMOJI: string; CREATE_POLL_REPLACE_IMAGE: string; CREATE_POLL_TEXT_PRECEDING_DURATION_SELECTION: string; CREATE_POLL_UPDATE_EMOJI_MENU_ARIA: string; CREATE_PRIVATE_THREADS: string; CREATE_PUBLIC_THREADS: string; CREATE_SERVER_BUTTON_ACTION: string; CREATE_SERVER_BUTTON_CTA: string; CREATE_SERVER_BUTTON_CTA_MOBILE: string; CREATE_SERVER_DEFAULT_SERVER_NAME_FORMAT: FM<"username", false>; CREATE_SERVER_DESCRIPTION_MOBILE_REFRESH: string; CREATE_SERVER_GUIDELINES: FM<"guidelinesURL", true>; CREATE_SERVER_TITLE_MOBILE_REFRESH: string; CREATE_STAGE_CHANNEL: string; CREATE_STAGE_CHANNEL_DESCRIPTION: string; CREATE_STAGE_INSTANCE_DESCRIPTION_INPUT_LABEL: string; CREATE_STORE_CHANNEL_APPLICATION: string; CREATE_STORE_CHANNEL_BETA_NOTE: FM<"devPortalUrl", true>; CREATE_STORE_CHANNEL_BETA_TITLE: string; CREATE_STORE_CHANNEL_BRANCH: string; CREATE_STORE_CHANNEL_DESCRIPTION: string; CREATE_STORE_CHANNEL_NO_SKUS: string; CREATE_STORE_CHANNEL_SELECT_APPLICATION: string; CREATE_STORE_CHANNEL_SELECT_BRANCH: string; CREATE_STORE_CHANNEL_SELECT_SKU: string; CREATE_STORE_CHANNEL_SKU: string; CREATE_TEXT_CHANNEL: string; CREATE_TEXT_CHANNEL_DESCRIPTION: string; CREATE_THREAD: string; CREATE_THREAD_HEADER_1: string; CREATE_THREAD_HEADER_2: FM<[never, "durationHook"], true>; CREATE_VOICE_CHANNEL: string; CREATE_VOICE_CHANNEL_DESCRIPTION: string; CREATION_INTENT_DESCRIPTION: string; CREATION_INTENT_OPTION_COMMUNITY: string; CREATION_INTENT_OPTION_FRIENDS: string; CREATION_INTENT_SKIP: FM; CREATION_INTENT_TITLE: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_ACCEPT_CTA: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_ACCEPT_DISCLAIMER: FM<"termsURL", true>; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_BODY: FM<"termsURL", true>; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_BODY_POINT_1_BODY: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_BODY_POINT_1_HEADER: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_BODY_POINT_2_BODY: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_BODY_POINT_2_HEADER: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_MODAL_TITLE: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_REMIND_ME_LATER: string; CREATOR_MONETIZATION_ACCEPT_NEW_TERMS_TITLE: string; CREATOR_MONETIZATION_APPLIED_AUDIT_LOG_TITLE: FM<["user", "userHook"], true>; CREATOR_MONETIZATION_DISABLED_NOTICE_DESCRIPTION: string; CREATOR_MONETIZATION_DISABLED_NOTICE_TITLE: string; CREATOR_MONETIZATION_NEW_OWNER_ONBOARDING_MODAL_CHOOSE_TEAM_BODY: string; CREATOR_MONETIZATION_NEW_OWNER_ONBOARDING_MODAL_NO_TEAM_BODY: FM; CREATOR_MONETIZATION_NEW_OWNER_ONBOARDING_MODAL_SETUP_TEAM_CTA: string; CREATOR_MONETIZATION_NEW_OWNER_ONBOARDING_MODAL_TITLE: string; CREATOR_MONETIZATION_NEW_OWNER_ONBOARDING_MODAL_TITLE_ACCEPT_TERM_ONLY: string; CREATOR_MONETIZATION_NOTICE_ILLO_A11Y_LABEL: string; CREATOR_MONETIZATION_ONBOARDING_V2_UPSELL_DESCRIPTION: string; CREATOR_MONETIZATION_ONBOARDING_V2_UPSELL_IMG_ALT: string; CREATOR_MONETIZATION_ONBOARDING_V2_UPSELL_TITLE: string; CREATOR_MONETIZATION_SETTINGS_DISABLE_MONETIZATION_SECTION_DESCRIPTION: FM<"guildName", true>; CREATOR_MONETIZATION_SETTINGS_RESTRICTED_NOTICE: string; CREATOR_MONETIZATION_TERMS_ACCEPTED_AUDIT_LOG_TITLE: FM<["user", "userHook"], true>; CREDIT_CARD_CVC: string; CREDIT_CARD_ERROR_EXPIRATION: string; CREDIT_CARD_ERROR_NUMBER: string; CREDIT_CARD_ERROR_REQUIRED: string; CREDIT_CARD_ERROR_SECURITY_CODE: string; CREDIT_CARD_EXPIRATION_DATE: string; CREDIT_CARD_NAME: string; CREDIT_CARD_NAME_ON_CARD: string; CREDIT_CARD_NUMBER: string; CREDIT_CARD_SECURITY_CODE: string; CROP: string; CRUNCHYROLL: string; CRUNCHYROLL_DETAILS_BODY: string; CRUNCHYROLL_DETAILS_BODY_WAITING: string; CRUNCHYROLL_DETAILS_TITLE: string; CRUNCHYROLL_DETAILS_TITLE_WAITING: string; cs: string; CURRENTLY_IN_STAGE_1: FM<"a", false>; CURRENTLY_IN_STAGE_2: FM<"a" | "b", false>; CURRENTLY_IN_STAGE_2_N: FM<"a" | "b" | "n", false>; CURRENTLY_IN_STAGE_EMPTY: string; CURRENTLY_IN_VOICE_1: FM<"a", false>; CURRENTLY_IN_VOICE_1_SHORT: FM<"a", false>; CURRENTLY_IN_VOICE_2: FM<"a" | "b", false>; CURRENTLY_IN_VOICE_2_N: FM<"a" | "b" | "n", false>; CURRENTLY_IN_VOICE_2_N_SHORT: FM<"a" | "b" | "n", false>; CURRENTLY_IN_VOICE_2_SHORT: FM<"a" | "b", false>; CURRENTLY_IN_VOICE_EMPTY: string; CUSTOM_COLOR: string; CUSTOM_HANG_STATUS: string; CUSTOM_HANG_STATUS_CTA: string; CUSTOM_HANG_STATUS_PLACEHOLDER: string; CUSTOM_HANGS_STATUS_COPY_CTA: string; CUSTOM_INVITE_DEFAULT_CHANNEL: string; CUSTOM_PROFILES_DESCRIPTION_BULLETED: FM; CUSTOM_PROFILES_SIDEBAR_TITLE: string; CUSTOM_SOUNDS: string; CUSTOM_STATUS: string; CUSTOM_STATUS_ACTION_SHEET_EDIT: string; CUSTOM_STATUS_ADD_CUSTOM_STATUS_A11Y_LABEL: string; CUSTOM_STATUS_ADD_STATUS: string; CUSTOM_STATUS_CHANGE_CUSTOM_STATUS_A11Y_HINT: FM<"emoji" | "status", false>; CUSTOM_STATUS_CHANGE_CUSTOM_STATUS_A11Y_LABEL: string; CUSTOM_STATUS_CLEAR_AFTER: string; CUSTOM_STATUS_CLEAR_CUSTOM_STATUS: string; CUSTOM_STATUS_CLEAR_CUSTOM_STATUS_A11Y_LABEL: string; CUSTOM_STATUS_CLEAR_IN_HOURS: FM<"hours", false>; CUSTOM_STATUS_CLEAR_IN_MINUTES: FM<"minutes", false>; CUSTOM_STATUS_CLEAR_TOMORROW: string; CUSTOM_STATUS_CLEARS_IN_HOURS: FM<"hours", false>; CUSTOM_STATUS_CLEARS_IN_MINUTES: FM<"minutes", false>; CUSTOM_STATUS_CUSTOM_STATUS_A11Y_LABEL: FM<"emoji" | "status", false>; CUSTOM_STATUS_DELETE: string; CUSTOM_STATUS_DONT_CLEAR: string; CUSTOM_STATUS_DURATION: string; CUSTOM_STATUS_EDIT_CUSTOM_STATUS_A11Y_LABEL: string; CUSTOM_STATUS_EDIT_CUSTOM_STATUS_PLACEHOLDER: string; CUSTOM_STATUS_EMOJI_BUTTON_A11Y_LABEL: string; CUSTOM_STATUS_HOURS: FM<"hours", false>; CUSTOM_STATUS_MINUTES: FM<"minutes", false>; CUSTOM_STATUS_MODAL_BODY: FM<"username", false>; CUSTOM_STATUS_MODAL_PLACEHOLDER: string; CUSTOM_STATUS_PLACEHOLDER: string; CUSTOM_STATUS_SET_CUSTOM_STATUS: string; CUSTOM_STATUS_SET_CUSTOM_STATUS_CTA: string; CUSTOM_STATUS_STATUS_TITLE: string; CUSTOM_STATUS_TODAY: string; CUSTOM_STATUS_UPDATE_SUCCESS: string; CUSTOM_TABS_MOBILE_BODY: string; CUSTOM_TABS_MOBILE_HEADER: string; CUSTOMIZE: string; CUSTOMIZE_COMMUNITY_ADD_CHANNELS: FM<["channel1" | "count", "itemHook"], true>; CUSTOMIZE_COMMUNITY_ADD_CHANNELS_AND_ROLES: FM<["channel1" | "channelCount" | "role1" | "roleCount", "itemHook"], true>; CUSTOMIZE_COMMUNITY_ADD_ROLES: FM<["count" | "role1", "itemHook"], true>; CUSTOMIZE_COMMUNITY_EMPTY_HEADER: string; CUSTOMIZE_COMMUNITY_EMPTY_SUBHEADER: FM; CUSTOMIZE_COMMUNITY_HTML_TITLE: FM<"guildName", false>; CUSTOMIZE_COMMUNITY_PROFILE: string; CUSTOMIZE_COMMUNITY_PROFILE_DESCRIPTION: string; CUSTOMIZE_COMMUNITY_TAB: string; CUSTOMIZE_COMMUNITY_TITLE: string; CUSTOMIZE_FOLDERS: string; CUSTOMIZE_GROUP: string; CUSTOMIZE_PROFILE_SELECT_GIF: string; CUSTOMIZE_SERVERS: string; CUSTOMIZE_TAB_SUBTITLE: string; CUSTOMIZE_TAB_TITLE: string; CUT: string; CZK_NAME: string; da: string; DARK_BLUE: string; DARK_GREY: string; DARK_PURPLE: string; DARK_TEAL: string; DATA_CONSUMPTION_SETTING: string; DATA_DOWNLOAD_REQUESTED_STATUS_NOTE: FM<"date", false>; DATA_PRIVACY_CONTROLS: string; DATA_PRIVACY_CONTROLS_BASIC_SERVICE_NOTE: FM; DATA_PRIVACY_CONTROLS_BASIC_SERVICE_TITLE: string; DATA_PRIVACY_CONTROLS_PERSONALIZATION_NOTE_LEARN_MORE: FM<"helpdeskArticle", true>; DATA_PRIVACY_CONTROLS_PERSONALIZATION_TITLE: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_DOWNLOAD: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_FAILURE_BODY: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_FAILURE_TITLE: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_MODAL_CANCEL: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_MODAL_CONFIRM: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_MODAL_NATIVE_NOTE: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_MODAL_NOTE: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_MODAL_SUCCESS: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_MODAL_TITLE: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_MODAL_WEB_NOTE: FM<"helpdeskArticle", true>; DATA_PRIVACY_CONTROLS_REQUEST_DATA_NOTE: FM<"helpdeskArticle", true>; DATA_PRIVACY_CONTROLS_REQUEST_DATA_SUCCESS_BODY: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_SUCCESS_TITLE: string; DATA_PRIVACY_CONTROLS_REQUEST_DATA_TOOLTIP: string; DATA_PRIVACY_CONTROLS_USAGE_STATISTICS_NOTE: FM<"helpdeskArticle", true>; DATA_PRIVACY_CONTROLS_USAGE_STATISTICS_TITLE: string; DATA_PRIVACY_RATE_LIMIT_TITLE: string; DATA_PRIVACY_UPDATE_CONSENTS_FAILED: string; DATA_SAVING_MODE_HINT: string; DATA_SAVING_MODE_SETTING: string; DATA_SETTINGS: string; DATE: string; DATE_ABOVE_MAX_ALERT_BODY: FM<"maxDate", false>; DATE_BELOW_MIN_ALERT_BODY: FM<"minDate", false>; DATE_GENERIC_ERROR: string; de: string; DEADCHAT_ACTION_CAMERA: string; DEADCHAT_ACTION_STICKER: string; DEAFEN: string; DEAFEN_MEMBERS: string; DEAUTHORIZE: string; DEAUTHORIZE_APP: string; DEB: string; DEBUG: string; DECLINE: string; DEEPLINK_BROWSER_APP_OPENED: string; DEEPLINK_BROWSER_PROMPT: string; DEEPLINK_BROWSER_TITLE: string; DEFAULT: string; DEFAULT_APP_DESCRIPTION: string; DEFAULT_AVATAR_1_A11Y_LABEL: string; DEFAULT_AVATAR_2_A11Y_LABEL: string; DEFAULT_AVATAR_3_A11Y_LABEL: string; DEFAULT_AVATAR_4_A11Y_LABEL: string; DEFAULT_AVATAR_5_A11Y_LABEL: string; DEFAULT_AVATAR_6_A11Y_LABEL: string; DEFAULT_AVATAR_7_A11Y_LABEL: string; DEFAULT_AVATAR_8_A11Y_LABEL: string; DEFAULT_CHANNELS_ADVANCED_EXPLAINER: string; DEFAULT_CHANNELS_CHATTABLE_COUNT: FM<"count", false>; DEFAULT_CHANNELS_DISABLED_PRIVATE: string; DEFAULT_CHANNELS_GOOD: string; DEFAULT_CHANNELS_PREVIEW_ADDITIONAL: FM<["count", "prejoinHook"], true>; DEFAULT_CHANNELS_PREVIEW_BROWSE_CHANNELS_HELP: string; DEFAULT_CHANNELS_PREVIEW_EMPTY_STATE: string; DEFAULT_CHANNELS_PREVIEW_HEADER: string; DEFAULT_CHANNELS_PREVIEW_VOICE_HELP: string; DEFAULT_CHANNELS_SAVE_INVALID_DEFAULT_CHANNELS: string; DEFAULT_CHANNELS_TOGGLE: string; DEFAULT_CHANNELS_TOTAL_COUNT: FM<"count", false>; DEFAULT_CUSTOM_GIFT_MESSAGE: string; DEFAULT_FAILURE_TO_PERFORM_ACTION_MESSAGE: string; DEFAULT_INPUT_PLACEHOLDER: string; DELETE: string; DELETE_ACCOUNT: string; DELETE_ACCOUNT_BODY: string; DELETE_ACCOUNT_ERROR: string; DELETE_ACCOUNT_TRANSFER_OWNERSHIP: string; DELETE_ACCOUNT_TRANSFER_OWNERSHIP_BODY: string; DELETE_ALL_EVENTS: string; DELETE_ALL_EVENTS_IN_SERIES: string; DELETE_APP_CONFIRM_MSG: string; DELETE_APP_CONFIRM_MSG_V2: FM<"applicationName", false>; DELETE_CATEGORY: string; DELETE_CHANNEL: string; DELETE_CHANNEL_BODY: FM<"channelName", true>; DELETE_DEFAULT_CHANNEL_BODY: string; DELETE_EVENT: string; DELETE_FAVORITES_CATEGORY_CONFIRM: string; DELETE_FAVORITES_CHANNEL_CONFIRM: string; DELETE_FAVORITES_CHANNEL_TITLE: string; DELETE_FOLDER: string; DELETE_FOLDER_CONFIRM_TEXT: string; DELETE_FOLLOWED_NEWS_BODY: string; DELETE_FORUM_POST: string; DELETE_FORUM_POST_BODY: string; DELETE_FORUM_POST_CONFIRM_BODY: FM<"postName", true>; DELETE_FORUM_POST_OP_CONFIRM_BODY: FM<"postName", true>; DELETE_FORUM_POST_OP_WITH_REPLIES_CONFIRM_BODY: string; DELETE_MESSAGE: string; DELETE_MESSAGE_BODY: string; DELETE_MESSAGE_CONTEXT_MENU_HINT: FM; DELETE_MESSAGE_HISTORY_OPTION_12HR: string; DELETE_MESSAGE_HISTORY_OPTION_1HR: string; DELETE_MESSAGE_HISTORY_OPTION_24HR: string; DELETE_MESSAGE_HISTORY_OPTION_3D: string; DELETE_MESSAGE_HISTORY_OPTION_6HR: string; DELETE_MESSAGE_HISTORY_OPTION_7D: string; DELETE_MESSAGE_HISTORY_OPTION_NONE: string; DELETE_MESSAGE_REPORT: string; DELETE_MESSAGE_TITLE: string; DELETE_ROLE: FM<"name", false>; DELETE_ROLE_MOBILE: string; DELETE_RULES_CHANNEL_BODY: string; DELETE_SERVER: string; DELETE_SERVER_BODY: FM<"name", true>; DELETE_SERVER_ENTER_NAME: string; DELETE_SERVER_INCORRECT_NAME: string; DELETE_SERVER_TITLE: FM<"name", false>; DELETE_THIS_EVENT: string; DELETE_THREAD: string; DELETE_UPDATES_CHANNEL_BODY: string; DELETE_VOICE_MESSAGE: string; DELETED: string; DESCRIPTION: string; DESIGNATE_OTHER_CHANNEL: FM; DESIGNATE_OTHER_CHANNEL_GUIDE_RESOURCE: FM; DESIGNATE_OTHER_CHANNEL_GUIDE_TODO: FM; DESIGNATE_OTHER_CHANNEL_ONBOARDING: FM; DESIGNATE_OTHER_CHANNEL_ONBOARDING_PRIVATE: FM; DESKTOP_APP: string; DESKTOP_NOTIFICATIONS_ENABLE: string; DESKTOP_NOTIFICATIONS_ENABLE_BODY: string; DETECT_PLATFORM_ACCOUNTS: string; DEVELOPER_ACTIVITY_SHELF: string; DEVELOPER_ACTIVITY_SHELF_ENABLE: string; DEVELOPER_ACTIVITY_SHELF_NOTE: string; DEVELOPER_APPLICATION_TEST_MODE: string; DEVELOPER_APPLICATION_TEST_MODE_ACTIVATE: string; DEVELOPER_APPLICATION_TEST_MODE_CLEAR: string; DEVELOPER_APPLICATION_TEST_MODE_FAILED_TO_AUTHORIZE_APP: string; DEVELOPER_APPLICATION_TEST_MODE_FULL_URL_OPTION: string; DEVELOPER_APPLICATION_TEST_MODE_INVALID: string; DEVELOPER_APPLICATION_TEST_MODE_INVALID_URL: string; DEVELOPER_APPLICATION_TEST_MODE_LOCALHOST_OPTION: string; DEVELOPER_APPLICATION_TEST_MODE_MODAL_BODY: string; DEVELOPER_APPLICATION_TEST_MODE_MODAL_HEADER: string; DEVELOPER_APPLICATION_TEST_MODE_NOTE: string; DEVELOPER_APPLICATION_TEST_MODE_ORIGIN_LABEL: string; DEVELOPER_APPLICATION_TEST_MODE_PLACEHOLDER: string; DEVELOPER_APPLICATION_TEST_MODE_PORT_NUMBER_LABEL: string; DEVELOPER_APPLICATION_TEST_MODE_PROXY_OPTION: string; DEVELOPER_MODE: string; DEVELOPER_MODE_HELP_TEXT: FM<"apiDocsUrl", true>; DEVICE_SETTINGS: string; DIALOG_JUST_SO_YOU_KNOW: string; DIRECT_MESSAGE: string; DIRECT_MESSAGE_A11Y_LABEL: FM<"channelName", false>; DIRECT_MESSAGE_A11Y_LABEL_WITH_UNREADS: FM<"channelName", false>; DIRECT_MESSAGE_NOTIFICATIONS: string; DIRECT_MESSAGES: string; DIRECT_MESSAGES_PENDING_FRIENDS: FM<"requestCount", false>; DIRECTORY_CATEGORY_ALL: string; DIRECTORY_CATEGORY_CLASS: string; DIRECTORY_CATEGORY_MISCELLANEOUS: string; DIRECTORY_CATEGORY_RECOMMENDED: string; DIRECTORY_CATEGORY_SCHOOL_CLUB: string; DIRECTORY_CATEGORY_STUDY_SOCIAL: string; DIRECTORY_CATEGORY_SUBJECT_MAJOR: string; DIRECTORY_CATEGORY_TOWN_HALL_1: string; DIRECTORY_CATEGORY_TOWN_HALL_2: string; DIRECTORY_CATEGORY_TOWN_HALL_3: string; DIRECTORY_CATEGORY_TOWN_HALL_5: string; DIRECTORY_SEARCH_INITIAL_TITLE: string; DIRECTORY_SEARCH_NO_RESULTS_NO_ADD: string; DIRECTORY_SEARCH_NO_RESULTS_SUBTITLE: FM<[never, "addServerHook"], true>; DIRECTORY_SEARCH_NO_RESULTS_SUBTITLE_MOBILE: FM; DIRECTORY_SEARCH_NO_RESULTS_TITLE: string; DIRECTORY_SEARCH_PLACEHOLDER: string; DIRECTORY_SEARCH_RESULTS_HEADER: FM<"numResults" | "query", true>; DISABLE: string; DISABLE_ACCOUNT: string; DISABLE_ACCOUNT_BODY: string; DISABLE_DMS: string; DISABLE_DMS_DESCRIPTION: string; DISABLE_EMAIL_NOTIFICATIONS: string; DISABLE_GUILD_COMMUNICATION_BODY: FM<"helpdeskArticle", true>; DISABLE_GUILD_COMMUNICATION_BODY_HEADER: FM<"helpdeskArticle", true>; DISABLE_GUILD_COMMUNICATION_BODY_ITEM_1: string; DISABLE_GUILD_COMMUNICATION_BODY_ITEM_2: string; DISABLE_GUILD_COMMUNICATION_BODY_ITEM_3: string; DISABLE_GUILD_COMMUNICATION_CONFIRMED: FM<"duration" | "user", false>; DISABLE_GUILD_COMMUNICATION_FOOTER: string; DISABLE_GUILD_COMMUNICATION_FOR_USER: FM<"user", false>; DISABLE_GUILD_COMMUNICATION_REASON_HEADER: string; DISABLE_GUILD_COMMUNICATION_TITLE: string; DISABLE_INTEGRATION_TITLE: string; DISABLE_INTEGRATION_TWITCH_BODY: string; DISABLE_INTEGRATION_YOUTUBE_BODY: string; DISABLE_INVITES: string; DISABLE_NOISE_CANCELLATION: string; DISABLE_NOTIFICATIONS_DESCRIPTION: string; DISABLE_NOTIFICATIONS_LABEL: string; DISABLE_SOUNDS_DESCRIPTION: string; DISABLE_SOUNDS_LABEL: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_DISABLED: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_DISABLED_PERMISSIONS: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_DISABLING_PERMISSIONS: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_ENABLED_PERMISSIONS: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_NOTICE_CONFIRMATION: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_NOTICE_CONFIRMATION_DONE: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_NOTICE_DISMISS: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_NOTICE_HEADER: string; DISABLE_UNSAFE_DEFAULT_PERMISSIONS_NOTICE_SUBHEADER: string; DISABLE_VIDEO: string; DISCARD_CHANGES: string; DISCARD_CHANGES_CANCEL: string; DISCARD_CHANGES_CONFIRM: string; DISCARD_CHANGES_DESCRIPTION: string; DISCODO_DISABLED: string; DISCODO_ENABLED: string; DISCONNECT_ACCOUNT: string; DISCONNECT_ACCOUNT_BODY: string; DISCONNECT_ACCOUNT_TITLE: FM<"name", false>; DISCONNECT_FROM_VOICE: string; DISCONNECT_MENU: string; DISCONNECT_OTHER: string; DISCONNECT_SELF: string; DISCONNECT_USER_SUCCESS: string; DISCORD: string; DISCORD_DESC_LONG: string; DISCORD_DESC_SHORT: string; DISCORD_RICH_PRESENCE: string; DISCORD_SYSTEM_MESSAGE_BOT_TAG_TOOLTIP: string; DISCORD_SYSTEM_MESSAGE_BOT_TAG_TOOLTIP_OFFICIAL: string; DISCORD_SYSTEM_MESSAGES: string; DISCORD_U_COMING_SOON_TO_MOBILE: string; DISCOVER: string; DISCOVERABILITY_ALLOW_FIND_ME: string; DISCOVERABILITY_LANDING_INFO: string; DISCOVERABILITY_LANDING_INFO_SETTINGS: string; DISCOVERABILITY_LANDING_SUBTITLE: string; DISCOVERABILITY_LANDING_TITLE: string; DISCOVERABILITY_LANDING_TOGGLE_LABEL: string; DISCOVERABILITY_LEARN_MORE: FM<[never, "learnMoreHook"], true>; DISCOVERABILITY_LEARN_MORE_REDESIGN: FM<[never, "learnMoreHook"], true>; DISCOVERABLE_GUILD_HEADER_PUBLIC: string; DISCOVERABLE_GUILD_HEADER_PUBLIC_INFO: string; DISCOVERABLE_GUILD_PROFILE_PUBLIC_LABEL: string; DISCOVERY: string; DISCOVERY_LANDING_PAGE: string; DISCOVERY_LANDING_PAGE_ABOUT_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_ABOUT_HINT: string; DISCOVERY_LANDING_PAGE_ABOUT_TITLE: string; DISCOVERY_LANDING_PAGE_CATEGORY_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_CATEGORY_TITLE: string; DISCOVERY_LANDING_PAGE_CHECKLIST_ABOUT: string; DISCOVERY_LANDING_PAGE_CHECKLIST_PUBLISH: string; DISCOVERY_LANDING_PAGE_CHECKLIST_REASONS: string; DISCOVERY_LANDING_PAGE_CHECKLIST_REQUIREMENTS: string; DISCOVERY_LANDING_PAGE_CHECKLIST_SHORT_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_CHECKLIST_TITLE: string; DISCOVERY_LANDING_PAGE_CHECKLIST_UPLOAD_COVER_IMAGE: string; DISCOVERY_LANDING_PAGE_COVER_IMAGE_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_DESCRIPTION: FM<"discordURL", true>; DISCOVERY_LANDING_PAGE_DISABLE_BUTTON: string; DISCOVERY_LANDING_PAGE_DISABLE_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_DISABLE_TITLE: string; DISCOVERY_LANDING_PAGE_LEARN_MORE: FM<"learnMoreURL", true>; DISCOVERY_LANDING_PAGE_PUBLISHED_URL_TITLE: string; DISCOVERY_LANDING_PAGE_PUBLISHED_URL_VIEW_PAGE_BUTTON: string; DISCOVERY_LANDING_PAGE_REASONS_TO_JOIN_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_REASONS_TO_JOIN_PLACEHOLDER_FOUR: string; DISCOVERY_LANDING_PAGE_REASONS_TO_JOIN_PLACEHOLDER_ONE: string; DISCOVERY_LANDING_PAGE_REASONS_TO_JOIN_PLACEHOLDER_THREE: string; DISCOVERY_LANDING_PAGE_REASONS_TO_JOIN_PLACEHOLDER_TWO: string; DISCOVERY_LANDING_PAGE_REASONS_TO_JOIN_TITLE: string; DISCOVERY_LANDING_PAGE_SERVER_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_SERVER_DESCRIPTION_HINT: string; DISCOVERY_LANDING_PAGE_SOCIAL_LINKS_BUTTON_ADD_ANOTHER: string; DISCOVERY_LANDING_PAGE_SOCIAL_LINKS_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_SOCIAL_LINKS_DROPDOWN_PLACEHOLDER: string; DISCOVERY_LANDING_PAGE_SOCIAL_LINKS_HINT: string; DISCOVERY_LANDING_PAGE_SOCIAL_LINKS_TITLE: string; DISCOVERY_LANDING_PAGE_UPSELL_BUTTON_ACCEPT: string; DISCOVERY_LANDING_PAGE_UPSELL_BUTTON_DISMISS: string; DISCOVERY_LANDING_PAGE_UPSELL_DESCRIPTION: string; DISCOVERY_LANDING_PAGE_UPSELL_TITLE: string; DISCOVERY_SPEAKER_COUNT: FM<"count" | "speakersCount", false>; DISCOVERY_UPSELL_DESCRIPTION: string; DISCOVERY_UPSELL_HEADER: string; DISMISS: string; DISMISS_BUTTON_TEXT: string; DISPATCH_ERROR_MODAL_BODY: string; DISPATCH_ERROR_MODAL_DESCRIPTION: FM<"link", true>; DISPATCH_ERROR_MODAL_ERROR_LABEL: string; DISPATCH_ERROR_MODAL_HEADER: string; DISPATCH_ERROR_MODAL_OPEN_TICKET: string; DISPLAY: string; DISPLAY_ACTIVITY: FM<"platform", false>; DISPLAY_COMPACT_AVATARS: string; DISPLAY_DETAILS_ON_PROFILE: string; DISPLAY_NAME: string; DISPLAY_ON_PROFILE: string; DISPLAY_OPTION_ALWAYS: string; DISPLAY_OPTION_NEVER: string; DISPLAY_OPTION_ONLY_WHILE_SPEAKING: string; DISPLAY_SILENCE_WARNING: string; DISPLAY_SUBMIT_BUTTON: string; DKK_NAME: string; DM: string; DM_NO_FRIENDS: string; DM_SEARCH_PLACEHOLDER: string; DM_SEND_MESSAGE: string; DM_SETTINGS_UPSELL_BODY: FM<"guild_name", true>; DM_SETTINGS_UPSELL_FOOTER: FM; DM_SETTINGS_UPSELL_NO_BUTTON: string; DM_SETTINGS_UPSELL_SUBTITLE: string; DM_SETTINGS_UPSELL_SUCCESS_TOAST: string; DM_SETTINGS_UPSELL_TITLE: string; DM_SETTINGS_UPSELL_YES_BUTTON: string; DM_TEXTAREA_PLACEHOLDER: FM<"channel", false>; DM_TOOLTIP_A11Y_LABEL: FM<"mentions" | "name", false>; DM_VERIFICATION_TEXT_BLOCKED: string; DND_DRAG_CANCELED: string; DND_DROP_ABOVE: FM<"itemName", false>; DND_DROP_BELOW: FM<"itemName", false>; DND_DROP_COMBINE: FM<"itemName", false>; DND_END_OF_LIST: string; DND_FOLDER_NO_NAME: string; DND_GUILD_UNKNOWN: string; DND_ITEM_DROPPED: string; DND_ITEM_PICKED_UP: FM<"itemName", false>; DND_MOBILE_DROP_ADD_TO_FOLDER: FM<"folderName", false>; DND_MOBILE_DROP_COMBINE_TO_NEW_FOLDER: string; DND_MOBILE_ITEM_HINT: string; DND_MOVE_DOWN: string; DND_MOVE_UP: string; DND_OPERATION_LABEL_CANCEL: string; DND_OPERATION_LABEL_DROP: string; DND_OPERATION_LABEL_MOVE: string; DND_OPERATION_LABEL_START: string; DOMAIN_VERIFICATION_DESCRIPTION: string; DOMAIN_VERIFICATION_DNS_WARNING: string; DOMAIN_VERIFICATION_HEADER: string; DOMAIN_VERIFICATION_INSTRUCTIONS_DNS_1: string; DOMAIN_VERIFICATION_INSTRUCTIONS_DNS_2: string; DOMAIN_VERIFICATION_INSTRUCTIONS_HTTP: string; DOMAIN_VERIFICATION_LABEL: string; DOMAIN_VERIFICATION_RECORD_CONTENT: string; DOMAIN_VERIFICATION_RECORD_NAME: string; DOMAIN_VERIFICATION_RECORD_TYPE: string; DOMAIN_VERIFICATION_USE_DNS: string; DOMAIN_VERIFICATION_USE_HTTP: string; DONE: string; DONT_ASK_AGAIN: string; DONT_SHOW_AGAIN: string; DONUT_GET_ANDROID_BETA: string; DONUT_GET_ANDROID_BETA_BODY: FM<"helpArticle", true>; DONUT_GET_ANDROID_BETA_TITLE: string; DOWNLOAD: string; DOWNLOAD_APP: string; DOWNLOAD_APPS: string; DOWNLOAD_DESKTOP_FOOTER: FM; DOWNLOAD_DESKTOP_TITLE: string; DOWNLOAD_FAILED: string; DOWNLOAD_FILE_COMPLETE: FM<"fileName", false>; DOWNLOAD_ICS: string; DOWNLOAD_MOBILE_TITLE: string; DROP_ENROLLMENT_CTA_TOOLTIP_HEADER: FM<"gameName", false>; DROPDOWN_OPTIONS_EMPTY: string; DROPDOWN_OPTIONS_TITLE: string; DROPS_AVAILABLE: string; DROPS_BANNER_ENDED_INCOMPLETE: FM<"gameTitle", false>; DROPS_BANNER_NOTICE: FM<"endDate" | "gameName" | "streamLengthRequirement", false>; DROPS_CARD_REDEEM_UNTIL: FM<"endDate", false>; DROPS_CODE_ALREADY_CLAIMED_ERROR: string; DROPS_CODES_RAN_OUT: string; DROPS_ELIGIBILITY_ENROLLMENT_PRIMARY_CTA: string; DROPS_ENABLED: string; DROPS_FEEDBACK_SURVEY: string; DROPS_GIFT_INVENTORY_AVAILABLE_GIFT_PROMPT: FM<"gameTitle" | "streamLengthRequirement", false>; DROPS_GIFT_INVENTORY_ENROLL: string; DROPS_GIFT_INVENTORY_REDEMPTION_TOOLTIP: string; DROPS_GIFT_INVENTORY_TITLE: string; DROPS_LEARN_MORE: FM<"faqUrl", true>; DROPS_MODAL_CHOOSE_PLATFORM: FM<"title", false>; DROPS_MODAL_CHOOSE_SINGLE_PLATFORM: FM<"platform", false>; DROPS_MODAL_CONFIRMATION_WARNING: string; DROPS_MODAL_PLATFORM_CONFIRMATION_TITLE: FM<"platform", false>; DROPS_NO_CODE_AVAILABLE_ERROR: string; DROPS_PLATFORM_PC: string; DROPS_PLATFORM_PLAYSTATION: string; DROPS_PLATFORM_SWITCH: string; DROPS_PLATFORM_XBOX: string; DROPS_PROGRESS_INTERRUPTION_WARNING: FM<"gameTitle", false>; DROPS_QUEST_COMPLETION_TOOLTIP_HEADER: string; DROPS_QUEST_NOT_COMPLETED_ERROR: string; DROPS_READ_BLOG_TO_ENABLE: FM<"blogURL", true>; DROPS_REDEMPTION_CODE_PLATFORM_TITLE: FM<"platform", false>; DROPS_REQUEST_FEEDBACK_OPT_OUT: FM<"feedbackURL", true>; DROPS_REQUEST_FEEDBACK_SUCCESS: FM<"feedbackURL", true>; DROPS_REQUIRE_NUM_VIEWERS: FM<"numViewers", false>; DROPS_STREAM_PROGRESS_INDICATOR: FM<"minutesStreamed" | "streamLengthRequirement", false>; DROPS_USER_NOT_ENROLLED_ERROR: string; DUPLICATE_SUBSCRIPTIONS_BANNER: FM<"helpCenterLink", true>; DURATION: string; DURATION_DAYS: FM<"days", false>; DURATION_DAYS_CAPITALIZE: FM<"days", false>; DURATION_DAYS_SHORT: FM<"days", false>; DURATION_FOREVER: string; DURATION_HOURS: FM<"hours", false>; DURATION_HOURS_CAPITALIZE: FM<"hours", false>; DURATION_HOURS_SHORT: FM<"hours", false>; DURATION_MINS: FM<"mins", false>; DURATION_MINUTES: FM<"minutes", false>; DURATION_MINUTES_CAPITALIZE: FM<"minutes", false>; DURATION_MINUTES_SHORT: FM<"minutes", false>; DURATION_MONTHS: FM<"months", false>; DURATION_MONTHS_CAPITALIZE: FM<"months", false>; DURATION_SECONDS: FM<"seconds", false>; DURATION_SECONDS_CAPITALIZE: FM<"seconds", false>; DURATION_SECONDS_SHORT: FM<"seconds", false>; DURATION_SECS: FM<"secs", false>; DURATION_WEEKS: FM<"weeks", false>; DURATION_WEEKS_CAPITALIZE: FM<"weeks", false>; DURATION_YEARS: FM<"years", false>; DURATION_YEARS_CAPITALIZE: FM<"years", false>; E2EE_ANONYMOUS_DEVICE_TAG: FM<"index", false>; E2EE_CALL_VERIFICATION_FOOTER_TEXT: FM<"helpArticle", true>; E2EE_CALL_VERIFICATION_SUBTITLE: string; E2EE_CALL_VERIFIED_A11Y: string; E2EE_CALL_VERIFIED_TOOLTIP: string; E2EE_CHECK_CALL_PRIVACY_CODE: string; E2EE_CHECK_STREAM_PRIVACY_CODE: string; E2EE_CLEAR_USER_VERIFICATION_CONFIRM_SUBTITLE: string; E2EE_CLEAR_USER_VERIFICATION_CONFIRM_TITLE: FM<"username", false>; E2EE_CLEAR_VERIFICATION: string; E2EE_CLEAR_VERIFICATION_CONFIRM_SUBTITLE: string; E2EE_CLEAR_VERIFICATION_CONFIRM_TITLE: string; E2EE_CLEAR_VERIFICATION_FOR_ALL: string; E2EE_CLEAR_VERIFICATION_SUBTITLE: string; E2EE_CONNECTION: string; E2EE_CURRENT_USER_TRANSIENT_VERIFICATION_DESC: FM<"helpArticle", true>; E2EE_DEVICES_COUNT: FM<"count", false>; E2EE_DISABLE_PERSISTENT_KEYS_CONFIRM_SUBTITLE: string; E2EE_DISABLE_PERSISTENT_KEYS_CONFIRM_TITLE: string; E2EE_DISABLE_PERSISTENT_KEYS_RECONNECT_CONFIRM_SUBTITLE: string; E2EE_DISABLE_PERSISTENT_KEYS_RECONNECT_CONFIRM_TITLE: string; E2EE_ENABLE_PERSISTENT_CODES: string; E2EE_ENABLE_PERSISTENT_KEYS_RECONNECT_CONFIRM_SUBTITLE: string; E2EE_ENABLE_PERSISTENT_KEYS_RECONNECT_CONFIRM_TITLE: string; E2EE_ENCRYPTION: string; E2EE_END_TO_END_ENCRYPTED: string; E2EE_END_TO_END_ENCRYPTION: string; E2EE_INCONSISTENT_KEY_MISMATCH_SUBTITLE: FM<"username", true>; E2EE_INCONSISTENT_KEY_MISMATCH_TITLE: string; E2EE_LINKING_CODE_ALREADY_VERIFIED_SUBTITLE: FM<"username", true>; E2EE_LINKING_CODE_ALREADY_VERIFIED_TITLE: string; E2EE_LINKING_CODE_MATCH_SUBTITLE: FM<"username", true>; E2EE_LINKING_CODE_MATCH_TITLE: string; E2EE_LINKING_CODE_MISMATCH_SUBTITLE: FM<"username", true>; E2EE_LINKING_CODE_MISMATCH_TITLE: string; E2EE_LINKING_CODE_UNABLE_TO_VERIFY_SUBTITLE: FM<"username", true>; E2EE_LINKING_CODE_UNABLE_TO_VERIFY_TITLE: string; E2EE_LINKING_DISCONNECTED_SUBTITLE: string; E2EE_LINKING_DISCONNECTED_TITLE: string; E2EE_LINKING_INCONSISTENT_KEY_MISMATCH: string; E2EE_LINKING_OTHER_USER_DISCONNECTED_SUBTITLE: FM<"username", true>; E2EE_LINKING_OTHER_USER_DISCONNECTED_TITLE: string; E2EE_MARK_AS_VERIFIED: string; E2EE_OTHER_USER_TRANSIENT_VERIFICATION_DESC: FM<"helpArticle" | "username", true>; E2EE_PERSISTENT: string; E2EE_PERSISTENT_CODES_DESCRIPTION: FM<"helpArticle", true>; E2EE_PERSISTENT_KEYS_RECONNECT_CONFIRM: string; E2EE_PERSISTENT_VERIFICATION_DESC: FM<"helpArticle", true>; E2EE_PRIVACY: string; E2EE_PRIVACY_CODE: string; E2EE_RTC_PANEL_CALL_VERIFICATION_SUBTITLE: string; E2EE_SETTINGS_SUBTITLE: FM<"helpArticle", true>; E2EE_STREAM_PRIVACY_CODE: string; E2EE_STREAM_VERIFICATION_FOOTER_TEXT: FM<"helpArticle", true>; E2EE_STREAM_VERIFICATION_SUBTITLE: string; E2EE_TRANSIENT_VERIFICATION_DESC: FM<"helpArticle", true>; E2EE_USER_EXISTING_PERSISTENT_VERIFICATIONS: FM<"count", false>; E2EE_USER_VERIFICATION_SUBTITLE: FM<"username", true>; E2EE_USER_VERIFIED_A11Y: string; E2EE_USER_VERIFIED_DAYS_AGO: FM<"count", false>; E2EE_USER_VERIFIED_HOURS_AGO: FM<"count", false>; E2EE_USER_VERIFIED_MINUTES_AGO: FM<"count", false>; E2EE_USER_VERIFIED_MONTHS_AGO: FM<"count", false>; E2EE_USER_VERIFIED_SECONDS_AGO: FM<"count", false>; E2EE_USER_VERIFIED_TOOLTIP: string; E2EE_USER_VERIFIED_WEEKS_AGO: FM<"count", false>; E2EE_USER_VERIFIED_YEARS_AGO: FM<"count", false>; E2EE_USERNAME_VERIFIED: FM<"username", false>; E2EE_VERIFICATION_CODE: string; E2EE_VERIFICATION_CODES: string; E2EE_VERIFIED: string; E2EE_VERIFIED_DEVICES: string; E2EE_VERIFIED_DEVICES_DESCRIPTION: FM<"helpArticle", true>; E2EE_VIDEO_DETAILS: string; E2EE_VIEW_STREAM_PRIVACY_CODE: string; E2EE_VIEW_VERIFICATION_CODE: string; E2EE_VOICE_DETAILS: string; E2EE_VOICE_PRIVACY_CODE: string; EARLY_ACCESS: string; EARN_A_REWARD: string; EARN_A_REWARD_EXCLAIMATION: string; EARN_A_REWARD_EXCLAIMATION_PLURAL: string; EARN_A_REWARD_PLURAL: string; EARN_AN_EXCLUSIVE_ITEM: string; EARN_AN_EXCLUSIVE_ITEM_EXCLAIMATION: string; EARN_AN_EXCLUSIVE_ITEM_EXCLAIMATION_PLURAL: string; EARN_AN_EXCLUSIVE_ITEM_PLURAL: string; ECHO_CANCELLATION: string; EDIT: string; EDIT_ALL_EVENTS: string; EDIT_CATEGORY: string; EDIT_CHANNEL: string; EDIT_EVENT: string; EDIT_FOLDER: string; EDIT_FOLDER_A11Y_LABEL: FM<"name", false>; EDIT_FOLDER_MISSING_SERVERS_ERROR_DESCRIPTION: string; EDIT_FOLDER_MISSING_SERVERS_ERROR_TITLE: string; EDIT_FOLLOWED_NEWS_BODY: string; EDIT_FORUM_POST: string; EDIT_FORUM_POST_SETTINGS: string; EDIT_MAIN_PROFILE: string; EDIT_MESSAGE: string; EDIT_NOTE: string; EDIT_ONBOARDING: string; EDIT_OVERVIEW: string; EDIT_PROFILE: string; EDIT_PROFILE_CATEGORY_GUILD_IDENTITY: string; EDIT_PROFILE_CATEGORY_USER_PROFILE: string; EDIT_ROLES: string; EDIT_STAGE_CHANNEL_TITLE: string; EDIT_STAGE_SUBTITLE: string; EDIT_STAGE_TITLE: string; EDIT_TEXTAREA_HELP: FM; EDIT_THIS_EVENT: string; EDIT_THREAD: string; EDIT_USER: FM<"user", false>; EDITING_MESSAGE: string; EDITING_MESSAGE_CANCEL: string; EDUCATION_NEW_FEATURE_CONFIRM: string; EDUCATION_NEW_FEATURE_DISMISS: string; EDUCATION_NEW_FEATURE_TRY_IT: string; el: string; ELEVATED_PERMISSIONS_SOUND_BODY: string; ELEVATED_PERMISSIONS_SOUND_NO_SOUND_BUTTON: string; ELEVATED_PERMISSIONS_SOUND_REQUEST_ACCESS_BUTTON: string; ELEVATED_PERMISSIONS_SOUND_TITLE: string; EMAIL: string; EMAIL_CATEGORY_MANAGE_SETTING_LABEL: string; EMAIL_CATEGORY_UNSUBSCRIBE_EMAIL_BODY: FM<"category", false>; EMAIL_CATEGORY_UNSUBSCRIBE_HEADER: string; EMAIL_CHANGE_REASONING_CONTINUE: string; EMAIL_CHANGE_REASONING_DISCORD_EMPLOYEE_ASKED: string; EMAIL_CHANGE_REASONING_DISCORD_NEVER_ASKS_FOR_EMAIL_CHANGE: string; EMAIL_CHANGE_REASONING_HEADER: string; EMAIL_CHANGE_REASONING_IMPERSONATION_EDUCATION: FM<"hcArticle", true>; EMAIL_CHANGE_REASONING_NEW_EMAIL: string; EMAIL_CHANGE_REASONING_SOMEONE_ASKED: string; EMAIL_CHANGE_REASONING_SOMETHING_ELSE: string; EMAIL_CHANGE_REASONING_WARNING_HEADER: string; EMAIL_ENTER_MODAL_INPUT_ERROR: string; EMAIL_INVALID: string; EMAIL_REQUIRED: string; EMAIL_VERIFICATION_INSTRUCTIONS_BODY: FM<"email", true>; EMAIL_VERIFICATION_INSTRUCTIONS_HEADER: string; EMBED_LINKS: string; EMBEDDED_ACTIVITES_THERMAL_ALERT_HEADER: string; EMBEDDED_ACTIVITIES_ACTIVITIES_AVAILABLE_IN_TEXT: string; EMBEDDED_ACTIVITIES_ACTIVITIES_OPEN_TO_EVERYONE_BANNER_A11Y_LABEL: string; EMBEDDED_ACTIVITIES_ACTIVITY: string; EMBEDDED_ACTIVITIES_ACTIVITY_ENDED: string; EMBEDDED_ACTIVITIES_ACTIVITY_ENTRY_POINT_TILE_CHOOSE_AN_ACTIVITY: string; EMBEDDED_ACTIVITIES_ACTIVITY_INFO_TILE_TITLE: string; EMBEDDED_ACTIVITIES_ACTIVITY_URL_OVERRIDE: string; EMBEDDED_ACTIVITIES_AGE_GATED_DESCRIPTION: FM<"applicationName", false>; EMBEDDED_ACTIVITIES_AGE_GATED_TITLE: string; EMBEDDED_ACTIVITIES_ALREADY_IN_ACTIVITY: string; EMBEDDED_ACTIVITIES_ALT_TREASURE_CHEST: string; EMBEDDED_ACTIVITIES_APPLICATION_UNSUPPORTED_OS: string; EMBEDDED_ACTIVITIES_ARE_YOU_SURE_WANT_TO_LEAVE: string; EMBEDDED_ACTIVITIES_AUTO_SUGGEST_ACTIVITIES_TITLE: string; EMBEDDED_ACTIVITIES_AVAILABLE_NOW: string; EMBEDDED_ACTIVITIES_BOOST_SUBSCRIBE_CTA: string; EMBEDDED_ACTIVITIES_BOOSTING_BADGE_TOOLTIP: FM<"tier", false>; EMBEDDED_ACTIVITIES_CAREFUL: string; EMBEDDED_ACTIVITIES_CHANNEL_LABEL: string; EMBEDDED_ACTIVITIES_CONCURRENT_ACTIVITIES_LIMITED_UPSELL_MODAL_BODY: FM<"targetBoostTier" | "targetTierConcurrentActivities" | "unlimitedConcurrentActivitiesBoostTier", false>; EMBEDDED_ACTIVITIES_CONCURRENT_ACTIVITIES_UNLIMITED_UPSELL_MODAL_BODY: FM<"unlimitedConcurrentActivitiesBoostTier", false>; EMBEDDED_ACTIVITIES_CONCURRENT_ACTIVITIES_UPSELL_MODAL_TITLE: FM<"boostingTier", false>; EMBEDDED_ACTIVITIES_CONFIGURE_DEVELOPER_ACTIVITY_SHELF: string; EMBEDDED_ACTIVITIES_CURRENTLY_TESTING_NITRO_ACTIVITIES: string; EMBEDDED_ACTIVITIES_DEVELOPER_ACTIVITY: string; EMBEDDED_ACTIVITIES_DEVELOPER_ACTIVITY_SHELF_FETCH_ERROR: string; EMBEDDED_ACTIVITIES_DEVELOPER_ACTIVITY_SHELF_FILTER_ERROR: FM<"filter", false>; EMBEDDED_ACTIVITIES_DEVELOPER_SHELF_SUBTITLE: string; EMBEDDED_ACTIVITIES_DISALLOWED_NAVIGATION_ALERT_BODY: string; EMBEDDED_ACTIVITIES_DISMISS_ACTIVITY_MESSAGE: FM<"applicationName", false>; EMBEDDED_ACTIVITIES_DM_START_CONFIRMATION_TEXT: string; EMBEDDED_ACTIVITIES_DM_TOOLTIP_BODY: string; EMBEDDED_ACTIVITIES_DM_TOOLTIP_HEADER: string; EMBEDDED_ACTIVITIES_DONT_ASK_ME_THIS_AGAIN: string; EMBEDDED_ACTIVITIES_EMBED_ENDED: string; EMBEDDED_ACTIVITIES_EMBED_START: string; EMBEDDED_ACTIVITIES_EMBED_TITLE_INVITED_TO_JOIN: string; EMBEDDED_ACTIVITIES_END_ACTIVITY: FM<"applicationName", false>; EMBEDDED_ACTIVITIES_ENDED: string; EMBEDDED_ACTIVITIES_ERROR_TITLE: FM<"code", false>; EMBEDDED_ACTIVITIES_EXTERNAL_APP_CONFIRM_ANNOUNCEMENT_BIRD_A11Y_LABEL: string; EMBEDDED_ACTIVITIES_EXTERNAL_APP_CONFIRM_HEADS_UP: string; EMBEDDED_ACTIVITIES_EXTERNAL_APP_CONFIRM_SUBTITLE: string; EMBEDDED_ACTIVITIES_EXTERNAL_APP_CONFIRM_TITLE: FM<"activityName", false>; EMBEDDED_ACTIVITIES_EXTERNAL_APP_LAUNCH_DESCRIPTION: string; EMBEDDED_ACTIVITIES_EXTERNAL_APP_LAUNCH_TITLE: string; EMBEDDED_ACTIVITIES_EXTERNAL_APP_LEARN_MORE: string; EMBEDDED_ACTIVITIES_FALLBACK_CHANNEL_NAME: string; EMBEDDED_ACTIVITIES_FEEDBACK_SURVEY: FM<"surveyURL", true>; EMBEDDED_ACTIVITIES_FREE_FOR_EVERYONE_BANNER_TEXT: string; EMBEDDED_ACTIVITIES_FREE_PREVIEW_TOOLTIP: FM<"activity", false>; EMBEDDED_ACTIVITIES_GAME_NIGHT: string; EMBEDDED_ACTIVITIES_GAME_NIGHT_BODY: string; EMBEDDED_ACTIVITIES_GAME_NIGHT_HEADING: string; EMBEDDED_ACTIVITIES_GAMEPLAY_ALT: FM<"activityName", false>; EMBEDDED_ACTIVITIES_GUILD_LABEL: string; EMBEDDED_ACTIVITIES_IAP_NON_REFUNDABLE: FM; EMBEDDED_ACTIVITIES_IAP_NON_REFUNDABLE_SUBSCRIPTION_MONTHLY_V2: FM; EMBEDDED_ACTIVITIES_IAP_NON_REFUNDABLE_SUBSCRIPTION_MULTI_MONTH: FM<"intervalCount", false>; EMBEDDED_ACTIVITIES_IAP_NON_REFUNDABLE_SUBSCRIPTION_MULTI_MONTH_V2: FM<"intervalCount", true>; EMBEDDED_ACTIVITIES_IAP_NON_REFUNDABLE_SUBSCRIPTION_RATE_AND_RENEWAL_V2: FM<"subtotalRate", true>; EMBEDDED_ACTIVITIES_IAP_NON_REFUNDABLE_SUBSCRIPTION_YEARLY_V2: FM; EMBEDDED_ACTIVITIES_IN_ACTIVITY: string; EMBEDDED_ACTIVITIES_IN_VIDEO_CALL_MOBILE_PREVIEW_SUBTITLE_SHORT: string; EMBEDDED_ACTIVITIES_INSTANCE_EMBED_ENDED: string; EMBEDDED_ACTIVITIES_INSTANCE_EMBED_INVALID_CHANNEL: string; EMBEDDED_ACTIVITIES_INSTANCE_EMBED_NO_PRESENCE: string; EMBEDDED_ACTIVITIES_INSTANCE_EMBED_NO_VOICE_PERMISSION: string; EMBEDDED_ACTIVITIES_INVALID_ACTIVITY_URL_OVERRIDE_ERROR: string; EMBEDDED_ACTIVITIES_INVALID_CHANNEL: string; EMBEDDED_ACTIVITIES_INVALID_PERMISSIONS: string; EMBEDDED_ACTIVITIES_INVITE_ACTIVITY_ENDED: string; EMBEDDED_ACTIVITIES_INVITE_ACTIVITY_FOOTER_LINK_HEADER: string; EMBEDDED_ACTIVITIES_INVITE_CHANNEL_IN_SERVER: FM<"channelName" | "serverName", true>; EMBEDDED_ACTIVITIES_INVITE_FRIENDS_TO_ACTIVITY_NAME: FM<"applicationName", false>; EMBEDDED_ACTIVITIES_INVITE_IN: string; EMBEDDED_ACTIVITIES_INVITE_NO_PARTICIPANTS_TEXT_WITH_NEWLINE: string; EMBEDDED_ACTIVITIES_INVITE_SUBTITLE_TEXT: FM<"channelName" | "guildName", true>; EMBEDDED_ACTIVITIES_INVITE_TITLE_TEXT: string; EMBEDDED_ACTIVITIES_INVITE_TO_ACTIVITY: string; EMBEDDED_ACTIVITIES_IOS_KEYBOARD_RESIZES_VIEW: string; EMBEDDED_ACTIVITIES_IS_PLAYING: FM<"username", false>; EMBEDDED_ACTIVITIES_JOIN: string; EMBEDDED_ACTIVITIES_JOIN_ACTIVITY: string; EMBEDDED_ACTIVITIES_JOIN_ACTIVITY_NAME: FM<"name", false>; EMBEDDED_ACTIVITIES_JOINED: string; EMBEDDED_ACTIVITIES_KEEP_THE_FUN_GOING_SUBTITLE: string; EMBEDDED_ACTIVITIES_KEEP_THE_FUN_GOING_TITLE: string; EMBEDDED_ACTIVITIES_LAST_HOST_LEAVING_MODAL: string; EMBEDDED_ACTIVITIES_LAUNCH: string; EMBEDDED_ACTIVITIES_LAUNCH_ACTIVITY_IN_VOICE_CHANNEL: FM<"activityName", false>; EMBEDDED_ACTIVITIES_LAUNCH_DISABLED_START: string; EMBEDDED_ACTIVITIES_LAUNCH_FAIL_ACCESS: string; EMBEDDED_ACTIVITIES_LAUNCH_FAIL_AGE_GATE: string; EMBEDDED_ACTIVITIES_LAUNCH_FAIL_CONCURRENT: string; EMBEDDED_ACTIVITIES_LAUNCH_FAIL_GENERIC: string; EMBEDDED_ACTIVITIES_LAUNCH_FAIL_GUILD_SIZE: string; EMBEDDED_ACTIVITIES_LAUNCH_FAIL_MISSING_PRIMARY_APP_COMMAND: string; EMBEDDED_ACTIVITIES_LAUNCH_FAIL_PREMIUM: string; EMBEDDED_ACTIVITIES_LAUNCH_FAILURE: string; EMBEDDED_ACTIVITIES_LAUNCHING_ACTIVITY: string; EMBEDDED_ACTIVITIES_LEAVE: string; EMBEDDED_ACTIVITIES_LEAVE_ACTIVITY: string; EMBEDDED_ACTIVITIES_LEAVE_ACTIVITY_A11Y_LABEL: string; EMBEDDED_ACTIVITIES_MAX_PARTICIPANTS: FM<"count", false>; EMBEDDED_ACTIVITIES_MINI_SHELF_GAME_NIGHT_POSTER_ALT: string; EMBEDDED_ACTIVITIES_MINI_SHELF_TITLE: string; EMBEDDED_ACTIVITIES_MINI_SHELF_TUNE_IN_POSTER_ALT: string; EMBEDDED_ACTIVITIES_MINIMIZE_A11Y_LABEL: string; EMBEDDED_ACTIVITIES_MOBILE_ACTIVITIES_SOON_HEADER: string; EMBEDDED_ACTIVITIES_MOBILE_ACTIVITIES_SOON_SUBHEADER: string; EMBEDDED_ACTIVITIES_MOBILE_ACTIVITY_PREVIEW_A11Y_LABEL: FM<"applicationName", false>; EMBEDDED_ACTIVITIES_MOBILE_NUX_BODY: string; EMBEDDED_ACTIVITIES_MOBILE_NUX_HEADING: string; EMBEDDED_ACTIVITIES_NITRO_BANNER_HEADER: string; EMBEDDED_ACTIVITIES_NITRO_BANNER_IMG_ALT: string; EMBEDDED_ACTIVITIES_NITRO_END_WARNING: string; EMBEDDED_ACTIVITIES_NITRO_PERKS_BACKGROUNDS: string; EMBEDDED_ACTIVITIES_NITRO_PERKS_BOOSTS: string; EMBEDDED_ACTIVITIES_NITRO_PERKS_STREAMING: string; EMBEDDED_ACTIVITIES_NITRO_SUBSCRIBE_CTA: string; EMBEDDED_ACTIVITIES_NO_ELIGIBLE_HOST_MODAL: string; EMBEDDED_ACTIVITIES_NO_ELIGIBLE_HOST_UPSELL_MODAL: string; EMBEDDED_ACTIVITIES_NOT_AVAILABLE_ON_OS: string; EMBEDDED_ACTIVITIES_NUM_PARTICIPANTS: FM<"numUsers", false>; EMBEDDED_ACTIVITIES_NUMBER_OF_MINUTES: FM<"nMinutes", false>; EMBEDDED_ACTIVITIES_NUMBER_OF_PLAYERS: FM<"nPlayers", false>; EMBEDDED_ACTIVITIES_NVM: string; EMBEDDED_ACTIVITIES_ONE_TO_N_PARTICIPANTS: FM<"count", false>; EMBEDDED_ACTIVITIES_OPEN_ACTIVITY_SHELF: string; EMBEDDED_ACTIVITIES_PEOPLE_ARE_IN_AN_ACTIVITY: FM<"n", false>; EMBEDDED_ACTIVITIES_PLAYING_IN_GUILD: FM<"guildName", false>; EMBEDDED_ACTIVITIES_POP_IN_WARNING: string; EMBEDDED_ACTIVITIES_POP_OUT_WARNING: string; EMBEDDED_ACTIVITIES_PREMIUM_TIER_CUSTOM_EMOJI: string; EMBEDDED_ACTIVITIES_PREMIUM_TIER_EXTRA_BOOSTS: FM<"boostDiscount" | "nBoostsWithNitro", false>; EMBEDDED_ACTIVITIES_PREMIUM_TIER_UPLOAD_SIZE: FM<"premiumMaxSize", false>; EMBEDDED_ACTIVITIES_PREMIUM_UPSELL_BANNER_A11Y_LABEL: string; EMBEDDED_ACTIVITIES_RESOLVING_ACTIVITY: string; EMBEDDED_ACTIVITIES_RESUME_VIDEO: string; EMBEDDED_ACTIVITIES_RESUME_VIDEO_EXPLANATION: string; EMBEDDED_ACTIVITIES_RETURN_TO_ACTIVITY: string; EMBEDDED_ACTIVITIES_ROCKET_BUTTON_A11Y_LABEL: string; EMBEDDED_ACTIVITIES_SEARCH_SHELF_ITEMS: string; EMBEDDED_ACTIVITIES_SELECT_CHANNEL: string; EMBEDDED_ACTIVITIES_SELECT_GUILD: string; EMBEDDED_ACTIVITIES_SELECT_VOICE_CHANNEL: string; EMBEDDED_ACTIVITIES_SEND_ACTIVITY_INVITE: string; EMBEDDED_ACTIVITIES_SHARE_ACTIVITY_WITH: FM<"activityName", false>; EMBEDDED_ACTIVITIES_SHARE_EMPTY_LOGS_ERROR_MESSAGE: string; EMBEDDED_ACTIVITIES_SHARE_LIMIT_WARNING: FM<"maxShares", false>; EMBEDDED_ACTIVITIES_SHARE_LINK_TO_ACTIVITY: string; EMBEDDED_ACTIVITIES_SHARE_MOMENT_FROM_APP: FM<"applicationName", false>; EMBEDDED_ACTIVITIES_SHARE_MOMENT_HEADING: string; EMBEDDED_ACTIVITIES_SHELF_CHARACTERS_ALT_TEXT: string; EMBEDDED_ACTIVITIES_SHELF_SUBTITLE: string; EMBEDDED_ACTIVITIES_SHELF_TITLE: string; EMBEDDED_ACTIVITIES_SHOW_ACTIVITY_DEBUG_OVERLAY: string; EMBEDDED_ACTIVITIES_START_ACTIVITY: FM<"activityName", false>; EMBEDDED_ACTIVITIES_START_ACTIVITY_LABEL: string; EMBEDDED_ACTIVITIES_START_AN_ACTIVITY: string; EMBEDDED_ACTIVITIES_START_OR_SHARE: string; EMBEDDED_ACTIVITIES_SUBSCRIBE: string; EMBEDDED_ACTIVITIES_SUBSCRIBE_CTA: string; EMBEDDED_ACTIVITIES_SUBSCRIBE_TO_NITRO_AND_GET: string; EMBEDDED_ACTIVITIES_SUPPORTED_PLATFORMS_MOBILE: string; EMBEDDED_ACTIVITIES_THANKS_FOR_TRYING: string; EMBEDDED_ACTIVITIES_THIS_ACTIVITY: string; EMBEDDED_ACTIVITIES_TUNE_IN_PROMO_BANNER_ALT: string; EMBEDDED_ACTIVITIES_UNKNOWN_ACTIVITY_NAME: string; EMBEDDED_ACTIVITIES_UNLIMITED_PARTICIPANTS: string; EMBEDDED_ACTIVITIES_UNLIMITED_PARTICIPANTS_SHORT: string; EMBEDDED_ACTIVITIES_UNLOCK_ACTIVITIES: FM<"activity" | "tier", false>; EMBEDDED_ACTIVITIES_UNLOCK_ACTIVITIES_BOOSTING: FM<"activityName", false>; EMBEDDED_ACTIVITIES_UNLOCK_ACTIVITIES_NITRO: FM<"activityName", false>; EMBEDDED_ACTIVITIES_UNLOCK_WITH_NITRO: string; EMBEDDED_ACTIVITIES_USE_ACTIVITY_URL_OVERRIDE: string; EMBEDDED_ACTIVITIES_USERNAME_AND_OTHERS: FM<"count" | "username", false>; EMBEDDED_ACTIVITIES_VC_TILE_ENTRY_POINT_INVITE: string; EMBEDDED_ACTIVITIES_VC_TILE_ENTRY_POINT_TITLE: string; EMBEDDED_ACTIVITIES_VIDEO_DISABLED_FOR_THERMAL_STATE: string; EMBEDDED_ACTIVITIES_VOICE_CONTROLS_BUTTON_A11Y_LABEL: string; EMBEDDED_ACTIVITIES_VOICE_CONTROLS_TOGGLE_NUX_BODY: string; EMBEDDED_ACTIVITIES_VOICE_CONTROLS_TOGGLE_NUX_HEADER: string; EMBEDDED_ACTIVITIES_WATCHING_IN_GUILD: FM<"guildName", false>; EMBEDDED_ACTIVITIES_YEP: string; EMBEDDED_ACTIVITY_CHANGE_CONFIRM_TITLE: string; EMBEDDED_ACTIVITY_CURRENT_APPLICATION_DEFAULT: string; EMBEDDED_ACTIVITY_NOTICE_BASH_OUT_DESCRIPTION: string; EMBEDDED_ACTIVITY_NOTICE_HALLOWEEN_DESCRIPTION: string; EMBEDDED_ACTIVITY_NOTICE_HALLOWEEN_TITLE: string; EMBEDDED_ACTIVITY_NOTICE_LEARN_MORE_LINK_A11Y_LABEL: string; EMBEDDED_ACTIVITY_NOTICE_NITRO_DESCRIPTION: string; EMBEDDED_ACTIVITY_NOTICE_NITRO_TITLE: string; EMBEDDED_ACTIVITY_NOTICE_TITLE: string; EMBEDDED_ACTIVITY_NOTICE_WTP_DESCRIPTION: string; EMBEDDED_ACTIVITY_TARGET_APPLICATION_DEFAULT: string; EMOJI: string; EMOJI_ADD_TO_FAVORITES: string; EMOJI_AVAILABLE_WITH_PREMIUM: string; EMOJI_CATEGORY_ACTIVITY: string; EMOJI_CATEGORY_CUSTOM: string; EMOJI_CATEGORY_FLAGS: string; EMOJI_CATEGORY_FOOD: string; EMOJI_CATEGORY_NATURE: string; EMOJI_CATEGORY_OBJECTS: string; EMOJI_CATEGORY_PACK: FM<"packName", false>; EMOJI_CATEGORY_PEOPLE: string; EMOJI_CATEGORY_PREMIUM_UPSELL: string; EMOJI_CATEGORY_RECENT: string; EMOJI_CATEGORY_SYMBOLS: string; EMOJI_CATEGORY_TOP_GUILD_EMOJI: FM<"guildName", false>; EMOJI_CATEGORY_TRAVEL: string; EMOJI_DISABLED_PREMIUM_TIER_LOST: string; EMOJI_FAVORITE_TOOLTIP: FM<"key", false>; EMOJI_FROM_GUILD: FM<"guildName", true>; EMOJI_FROM_GUILD_LABEL: FM<"guildName" | "names", false>; EMOJI_FROM_PACK: FM<"packName", true>; EMOJI_FROM_PACK_V2: FM<"packName", true>; EMOJI_IS_FAVORITE_ARIA_LABEL: FM<"names", false>; EMOJI_MATCHING: FM<"prefix", true>; EMOJI_MODIFIER_DARK_SKIN_TONE: string; EMOJI_MODIFIER_LIGHT_SKIN_TONE: string; EMOJI_MODIFIER_MEDIUM_DARK_SKIN_TONE: string; EMOJI_MODIFIER_MEDIUM_LIGHT_SKIN_TONE: string; EMOJI_MODIFIER_MEDIUM_SKIN_TONE: string; EMOJI_MODIFIER_MENU_BUTTON: string; EMOJI_MODIFIER_NONE: string; EMOJI_NAMES_WITH_FAVORITED: FM<"names", false>; EMOJI_PICKER_COLLAPSE_EMOJI_SECTION: string; EMOJI_PICKER_CREATE_EMOJI_TITLE: string; EMOJI_PICKER_CREATE_EMOJI_TITLE_DESCRIPTION: string; EMOJI_PICKER_DOUBLE_REACTION_ERROR_TITLE: string; EMOJI_PICKER_DOUBLE_REACTION_SUPER_ERROR_BODY: string; EMOJI_PICKER_DOUBLE_REACTION_SUPER_ERROR_TITLE: string; EMOJI_PICKER_EXPAND_EMOJI_SECTION: string; EMOJI_PICKER_FAVORITES_TIP: string; EMOJI_PICKER_PREMIUM_PROMO_DESCRIPTION: FM<"planName", true>; EMOJI_PICKER_PREMIUM_TIER_0_UPSELL_BODY: FM<"planName", false>; EMOJI_PICKER_PREMIUM_UPSELL_BODY: string; EMOJI_PICKER_PREMIUM_UPSELL_BODY_TOP_OF_LIST: string; EMOJI_PICKER_PREMIUM_UPSELL_CTA: string; EMOJI_PICKER_PREMIUM_UPSELL_DESCRIPTION_V2: string; EMOJI_PICKER_PREMIUM_UPSELL_TITLE: string; EMOJI_PICKER_PREMIUM_UPSELL_TITLE_V2: string; EMOJI_PICKER_SCROLL_TO_UNICODE_A11Y_LABEL: string; EMOJI_POPOUT_ADDED_PACK_DESCRIPTION: string; EMOJI_POPOUT_APPLICATION_DESCRIPTION: FM<"appName", false>; EMOJI_POPOUT_CURRENT_GUILD_DESCRIPTION: string; EMOJI_POPOUT_JOINED_GUILD_DESCRIPTION: string; EMOJI_POPOUT_JOINED_GUILD_EMOJI_DESCRIPTION: string; EMOJI_POPOUT_PREMIUM_CTA: string; EMOJI_POPOUT_PREMIUM_CURRENT_GUILD_DESCRIPTION: string; EMOJI_POPOUT_PREMIUM_JOINED_GUILD_DESCRIPTION: string; EMOJI_POPOUT_PREMIUM_UNJOINED_DISCOVERABLE_GUILD_DESCRIPTION: string; EMOJI_POPOUT_PREMIUM_UNJOINED_PRIVATE_GUILD_DESCRIPTION: string; EMOJI_POPOUT_PRIVATE_SERVER: string; EMOJI_POPOUT_PUBLIC_SERVER: string; EMOJI_POPOUT_SHOW_MORE_EMOJIS: string; EMOJI_POPOUT_STANDARD_EMOJI_DESCRIPTION: string; EMOJI_POPOUT_UNJOINED_DISCOVERABLE_GUILD_DESCRIPTION: string; EMOJI_POPOUT_UNJOINED_GUILD_EMOJI_DESCRIPTION: string; EMOJI_POPOUT_UNJOINED_PRIVATE_GUILD_DESCRIPTION: FM; EMOJI_REMOVE_FROM_FAVORITES: string; EMOJI_SLOTS_AVAILABLE: FM<"count", false>; EMOJI_TOO_BIG: FM<"maxSize", false>; EMOJI_TOOLTIP_CLICK_CTA: string; EMOJIS_TITLE: FM<"count", false>; EMPTY_FRIENDS_BODY: string; EMPTY_FRIENDS_CTA: string; EMPTY_FRIENDS_TITLE: string; EMPTY_INSTANT_INVITE_FRIENDS_BODY: string; EMPTY_INSTANT_INVITE_FRIENDS_LINK: string; EMPTY_INSTANT_INVITE_FRIENDS_TITLE: string; EMPTY_MENTIONS_BODY: string; EMPTY_MENTIONS_BODY_V2: string; EMPTY_MENTIONS_TITLE: string; EMPTY_MESSAGE_PRIVATE_THREAD_INSTRUCTIONS: string; EMPTY_MESSAGES_BODY: string; EMPTY_MESSAGES_TITLE: string; EMPTY_PRIVATE_ADD_RECIPIENT_BODY: string; EMPTY_PRIVATE_ADD_RECIPIENT_TITLE: string; EMPTY_PRIVATE_DMS_BODY: string; EMPTY_PRIVATE_DMS_CTA: string; EMPTY_PRIVATE_DMS_TITLE: string; EMPTY_QUICK_NO_QUERY_BODY: string; EMPTY_QUICK_NO_QUERY_TITLE: string; EMPTY_QUICK_QUERY_TITLE: string; EMPTY_VOICE_CHANNEL_BODY: string; EMPTY_VOICE_CHANNEL_TITLE: string; en: string; "en-GB": string; "en-US": string; ENABLE: string; ENABLE_CAMERA: string; ENABLE_COMMUNITY_BUTTON_TEXT: string; ENABLE_COMMUNITY_MODAL_CONTENT_FILTER_LABEL: string; ENABLE_COMMUNITY_MODAL_CONTENT_FILTER_MET: string; ENABLE_COMMUNITY_MODAL_DEFAULT_NOTIFICATIONS_LABEL: FM<[never, "infoHook"], true>; ENABLE_COMMUNITY_MODAL_DEFAULT_NOTIFICATIONS_LABEL_MOBILE: string; ENABLE_COMMUNITY_MODAL_DEFAULT_NOTIFICATIONS_TOOLTIP: string; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_CREATE_EMOJI: string; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_DISABLED_TOOLTIP: string; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_LABEL: FM<[never, "infoHook"], true>; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_LABEL_MOBILE: FM; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_LABEL_UPDATED: string; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_MANAGE_EMOJI: string; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_MENTION_EVERYONE: string; ENABLE_COMMUNITY_MODAL_EVERYONE_ROLE_PERMISSION_TOOLTIP: string; ENABLE_COMMUNITY_MODAL_PUBLIC_GUILD_POLICY_TITLE: string; ENABLE_COMMUNITY_MODAL_REQUIREMENT_SATISFIED_TOOLTIP: string; ENABLE_COMMUNITY_MODAL_STEP_1_BODY: string; ENABLE_COMMUNITY_MODAL_STEP_1_HEADER: string; ENABLE_COMMUNITY_MODAL_STEP_1_TITLE: string; ENABLE_COMMUNITY_MODAL_STEP_2_BODY: string; ENABLE_COMMUNITY_MODAL_STEP_2_HEADER: string; ENABLE_COMMUNITY_MODAL_STEP_2_TITLE: string; ENABLE_COMMUNITY_MODAL_STEP_3_BODY: string; ENABLE_COMMUNITY_MODAL_STEP_3_HEADER: string; ENABLE_COMMUNITY_MODAL_STEP_3_TITLE: string; ENABLE_COMMUNITY_MODAL_STEP_HEADER: FM<"number" | "total", false>; ENABLE_COMMUNITY_MODAL_TITLE: string; ENABLE_COMMUNITY_MODAL_UPDATED_SETTINGS_LABEL: string; ENABLE_COMMUNITY_MODAL_VERIFICATION_LEVEL_HELP: string; ENABLE_COMMUNITY_MODAL_VERIFICATION_LEVEL_LABEL: string; ENABLE_COMMUNITY_MODAL_VERIFICATION_LEVEL_MET: string; ENABLE_GUILD_COMMUNICATION_BODY: FM<"timeRemaining" | "user", false>; ENABLE_GUILD_COMMUNICATION_BODY_HELP_TEXT: FM<"helpdeskArticle", true>; ENABLE_GUILD_COMMUNICATION_FOR_USER: FM<"user", false>; ENABLE_INGAME_OVERLAY: string; ENABLE_INVITES: string; ENABLE_LEGACY_OVERLAY: string; ENABLE_LOCAL_NETWORK_ACCESS: string; ENABLE_LOCAL_NETWORK_ACCESS_DESCRIPTION: string; ENABLE_NOISE_CANCELLATION: string; ENABLE_NOTIFICATIONS: string; ENABLE_NOTIFICATIONS_TITLECASE: string; ENABLE_PERMISSION: string; ENABLE_PHONE_INTEGRATION: string; ENABLE_PRIVACY_ACCESS: string; ENABLE_PUBLIC_MODAL_CONTENT_FILTER_HELP: string; ENABLE_PUBLIC_MODAL_CREATE_CHANNEL: string; ENABLE_PUBLIC_MODAL_RULES_CHANNEL_HELP: string; ENABLE_PUBLIC_MODAL_RULES_CHANNEL_TITLE: string; ENABLE_PUBLIC_MODAL_VERIFICATION_LEVEL_DESCRIPTION: string; ENABLE_STREAMER_MODE_DESCRIPTION: FM; ENABLE_STREAMER_MODE_LABEL: string; ENABLE_TWITCH_EMOJI_SYNC: string; ENABLE_VIDEO: string; END_EVENT: string; END_EVENT_STAGE_CONFIRMATION_SUBTITLE: string; END_EVENT_STAGE_CONFIRMATION_TITLE: string; END_GUILD_EVENT_FOR_EVERYONE: string; END_STAGE: string; END_STAGE_TITLE: string; ENDING_ON_DATE: FM<"date", false>; ENJOY_A_FREE_MONTH: string; ENTER_CODE: string; ENTER_EMAIL_BODY: string; ENTER_PHONE_DESCRIPTION: string; ENTER_PHONE_DESCRIPTION_NOTE: FM; ENTER_PHONE_OR_EMAIL: string; ENTER_PHONE_TITLE: string; ENTER_YOUR_EMAIL: string; ENTER_YOUR_PHONE: string; ERROR: string; ERROR_ANOTHER_TRY: string; ERROR_COPYING_IMAGE: string; ERROR_GENERIC_TITLE: string; ERROR_LOADING_STICKER: string; ERROR_OCCURRED_TRY_AGAIN: string; ERROR_SAVING_IMAGE: string; ERRORS_ACTION_TO_TAKE: string; ERRORS_IMAGE_NOT_FOUND: string; ERRORS_RELOAD: string; ERRORS_RESTART_APP: string; ERRORS_STORE_CRASH: string; ERRORS_UNEXPECTED_CRASH: string; "es-419": string; "es-ES": string; ESTIMATED_TAX_LABEL: string; EUR_NAME: string; EVENT_CANCELED: string; EVENT_DETAILS_A11Y_HINT: string; EVENT_MARK_INTERESTED: string; EVENT_MARK_NOT_INTERESTED: string; EVENT_NOTIFICATIONS: string; EVERYONE_POPOUT_BODY: FM<"count" | "role", true>; EVERYONE_POPOUT_BODY_FORUM_POST: FM<"count" | "role", true>; EVERYONE_POPOUT_BODY_THREAD: FM<"count" | "role", true>; EVERYONE_POPOUT_ENTER: FM; EVERYONE_POPOUT_ESC: FM; EVERYONE_POPOUT_FOOTER: string; EVERYONE_POPOUT_SEND_NOW: string; EXAMPLE: string; EXAMPLES: string; EXECUTED_COMMAND_POPOUT_ATTACHMENT_OPTION_VALUE: string; EXIT_EVENT_STAGE_OPTIONS_LABEL: string; EXIT_FULL_SCREEN: string; EXIT_PREVIEW: string; EXPAND: string; EXPAND_BUTTONS: string; EXPANDABLE_TEXT_SHOW_LESS: string; EXPANDABLE_TEXT_SHOW_MORE: string; EXPANDED: string; EXPERIMENT_MOBILE_ONLY_USER_HEADER: string; EXPERIMENT_MOBILE_ONLY_USER_TEXT1: FM<"downloadUrl", false>; EXPERIMENTAL: string; EXPERIMENTAL_DESCRIPTION: string; EXPERIMENTAL_ENCODERS: string; EXPERIMENTAL_FEATURES: string; EXPERIMENTAL_FEATURES_TOAST: string; EXPIRE_AFTER: string; EXPIRED_DATE: FM<"date", false>; EXPIRES_DAYS: FM<"numDays", false>; EXPIRES_HOURS: FM<"numHours", false>; EXPIRES_IN: string; EXPIRES_MINUTES: FM<"numMinutes", false>; EXPLICIT_CONTENT_ALT: string; EXPLICIT_CONTENT_BUTTON_TOOLTIP: string; EXPLICIT_CONTENT_FILTER_DISABLED: string; EXPLICIT_CONTENT_FILTER_DISABLED_DESCRIPTION: string; EXPLICIT_CONTENT_FILTER_DISABLED_DESCRIPTION_SHORT: string; EXPLICIT_CONTENT_FILTER_DISABLED_DESCRIPTION_V2: string; EXPLICIT_CONTENT_FILTER_DISABLED_SHORT: string; EXPLICIT_CONTENT_FILTER_DISABLED_V2: string; EXPLICIT_CONTENT_FILTER_HIGH: string; EXPLICIT_CONTENT_FILTER_HIGH_DESCRIPTION: string; EXPLICIT_CONTENT_FILTER_HIGH_DESCRIPTION_SHORT: string; EXPLICIT_CONTENT_FILTER_HIGH_DESCRIPTION_V2: string; EXPLICIT_CONTENT_FILTER_HIGH_SHORT: string; EXPLICIT_CONTENT_FILTER_HIGH_V2: string; EXPLICIT_CONTENT_FILTER_MEDIUM: string; EXPLICIT_CONTENT_FILTER_MEDIUM_DESCRIPTION: string; EXPLICIT_CONTENT_FILTER_MEDIUM_DESCRIPTION_SHORT: string; EXPLICIT_CONTENT_FILTER_MEDIUM_DESCRIPTION_V2: string; EXPLICIT_CONTENT_FILTER_MEDIUM_SHORT: string; EXPLICIT_CONTENT_FILTER_MEDIUM_V2: string; EXPLICIT_CONTENT_WARNING: string; EXPLICIT_CONTENT_WARNING_PENDING: string; EXPLICIT_CONTENT_WARNING_TOOLTIP: string; EXPLICIT_END_STAGE_CANCEL: string; EXPLICIT_END_STAGE_CONFIRM: string; EXPLICIT_END_STAGE_CONFIRM_MOBILE: string; EXPLICIT_END_STAGE_SUBTITLE: string; EXPLICIT_END_STAGE_TITLE: string; EXPRESSION_ADDED_TO_FAVORITES: string; EXPRESSION_PICKER: string; EXPRESSION_PICKER_ACTIONS_MENU_LABEL: string; EXPRESSION_PICKER_CATEGORIES_A11Y_LABEL: string; EXPRESSION_PICKER_EMOJI: string; EXPRESSION_PICKER_GIF: string; EXPRESSION_PICKER_OPEN_EMOJI_PICKER_A11Y_LABEL: string; EXPRESSION_PICKER_OPEN_GIF_PICKER_A11Y_LABEL: string; EXPRESSION_PICKER_OPEN_STICKER_PICKER_A11Y_LABEL: string; EXPRESSION_PICKER_STICKER: string; EXPRESSION_REMOVED_FROM_FAVORITES: string; EXPRESSION_SUGGESTIONS_STICKER_NAME: FM<"stickerName", true>; EXPRESSION_SUGGESTIONS_STICKER_SHORT_NAV_PROMPT: FM<[never, "upHook"], true>; FACEBOOK: string; FAILED: string; FAMILY_CENTER_ACCEPT_LINK_ACTIVITY_DISCLAIMER: FM<"username", false>; FAMILY_CENTER_ACCEPT_LINK_MODAL_ERROR: string; FAMILY_CENTER_ACCEPT_LINK_MODAL_TITLE: string; FAMILY_CENTER_ACCEPT_REQUEST: string; FAMILY_CENTER_ACCEPTED_REQUESTS_EMPTY_DESCRIPTION: string; FAMILY_CENTER_ACCEPTED_REQUESTS_TITLE_PARENT: FM<"count" | "max", false>; FAMILY_CENTER_ACCEPTED_REQUESTS_TITLE_TEEN: FM<"count" | "max", false>; FAMILY_CENTER_ACCEPTED_TIMESTAMP_DATE: FM<"date", false>; FAMILY_CENTER_ACCEPTED_TIMESTAMP_DAYS: FM<"count", false>; FAMILY_CENTER_ACCEPTED_TIMESTAMP_HOURS: FM<"count", false>; FAMILY_CENTER_ACCEPTED_TIMESTAMP_MINUTES: FM<"count", false>; FAMILY_CENTER_ACCEPTED_TIMESTAMP_SECONDS: string; FAMILY_CENTER_ACCEPTED_TIMESTAMP_YESTERDAY: string; FAMILY_CENTER_ACCESSIBILITY_LABEL_ACCEPT_WITH_NAME: FM<"name", false>; FAMILY_CENTER_ACCESSIBILITY_LABEL_CANCEL_WITH_NAME: FM<"name", false>; FAMILY_CENTER_ACCESSIBILITY_LABEL_DECLINE_WITH_NAME: FM<"name", false>; FAMILY_CENTER_ACCESSIBILITY_LABEL_DISCONNECT_WITH_NAME: FM<"name", false>; FAMILY_CENTER_ACTIVITY_ADD_FRIENDS_HEADER: string; FAMILY_CENTER_ACTIVITY_ADD_FRIENDS_SECTION_HEADER: FM<"count", false>; FAMILY_CENTER_ACTIVITY_ADD_FRIENDS_TOOLTIP_PARENT: string; FAMILY_CENTER_ACTIVITY_ADD_FRIENDS_TOOLTIP_TEEN: string; FAMILY_CENTER_ACTIVITY_BANNER_DESCRIPTION_PARENT: FM<"articleLink", true>; FAMILY_CENTER_ACTIVITY_BANNER_DESCRIPTION_TEEN: FM<"articleLink", true>; FAMILY_CENTER_ACTIVITY_BANNER_HEADER_PARENT: string; FAMILY_CENTER_ACTIVITY_BANNER_HEADER_TEEN: string; FAMILY_CENTER_ACTIVITY_BANNER_IMAGE_ALT: string; FAMILY_CENTER_ACTIVITY_DATA_CONFIRMATION_BANNER_ALT: string; FAMILY_CENTER_ACTIVITY_DATA_CONFIRMATION_BANNER_DESCRIPTION_PARENT: string; FAMILY_CENTER_ACTIVITY_DATA_CONFIRMATION_BANNER_DESCRIPTION_TEEN: string; FAMILY_CENTER_ACTIVITY_DATA_CONFIRMATION_BANNER_HEADER: string; FAMILY_CENTER_ACTIVITY_GUILD_INTERACTION_HEADER: string; FAMILY_CENTER_ACTIVITY_GUILD_INTERACTION_SECTION_HEADER: FM<"count", false>; FAMILY_CENTER_ACTIVITY_GUILD_INTERACTION_TOOLTIP_PARENT: string; FAMILY_CENTER_ACTIVITY_GUILD_INTERACTION_TOOLTIP_PARENT_WITH_VC: string; FAMILY_CENTER_ACTIVITY_GUILD_INTERACTION_TOOLTIP_TEEN: string; FAMILY_CENTER_ACTIVITY_GUILD_INTERACTION_TOOLTIP_TEEN_WITH_VC: string; FAMILY_CENTER_ACTIVITY_GUILD_JOIN_HEADER: string; FAMILY_CENTER_ACTIVITY_GUILD_JOIN_SECTION_HEADER: FM<"count", false>; FAMILY_CENTER_ACTIVITY_GUILD_JOIN_TOOLTIP_PARENT: string; FAMILY_CENTER_ACTIVITY_GUILD_JOIN_TOOLTIP_TEEN: string; FAMILY_CENTER_ACTIVITY_GUILD_ROW_MEMBER_COUNT: FM<"members", false>; FAMILY_CENTER_ACTIVITY_MORE: FM<"pageSize", false>; FAMILY_CENTER_ACTIVITY_OVERVIEW_DESCRIPTION_PARENT_DAYS: FM<"days", false>; FAMILY_CENTER_ACTIVITY_OVERVIEW_DESCRIPTION_PARENT_TODAY: string; FAMILY_CENTER_ACTIVITY_OVERVIEW_DESCRIPTION_PARENT_YESTERDAY: string; FAMILY_CENTER_ACTIVITY_OVERVIEW_DESCRIPTION_TEEN_DAYS: FM<"days", false>; FAMILY_CENTER_ACTIVITY_OVERVIEW_DESCRIPTION_TEEN_TODAY: string; FAMILY_CENTER_ACTIVITY_OVERVIEW_DESCRIPTION_TEEN_YESTERDAY: string; FAMILY_CENTER_ACTIVITY_OVERVIEW_NO_ACTIVITY: string; FAMILY_CENTER_ACTIVITY_OVERVIEW_PREFACE_PARENT: string; FAMILY_CENTER_ACTIVITY_OVERVIEW_PREFACE_TEEN: FM<"activeLinks", false>; FAMILY_CENTER_ACTIVITY_TAB: string; FAMILY_CENTER_ACTIVITY_USER_ADDED_TIMESTAMP_DAYS: FM<"days", false>; FAMILY_CENTER_ACTIVITY_USER_ADDED_TIMESTAMP_TODAY: string; FAMILY_CENTER_ACTIVITY_USER_ADDED_TIMESTAMP_YESTERDAY: string; FAMILY_CENTER_ACTIVITY_USER_CALLED_HEADER: string; FAMILY_CENTER_ACTIVITY_USER_CALLED_SECTION_HEADER: FM<"count", false>; FAMILY_CENTER_ACTIVITY_USER_CALLED_TIMESTAMP_DAYS: FM<"days", false>; FAMILY_CENTER_ACTIVITY_USER_CALLED_TIMESTAMP_TODAY: string; FAMILY_CENTER_ACTIVITY_USER_CALLED_TIMESTAMP_YESTERDAY: string; FAMILY_CENTER_ACTIVITY_USER_CALLED_TOOLTIP_PARENT: string; FAMILY_CENTER_ACTIVITY_USER_CALLED_TOOLTIP_TEEN: string; FAMILY_CENTER_ACTIVITY_USER_INTERACTION_HEADER: string; FAMILY_CENTER_ACTIVITY_USER_INTERACTION_SECTION_HEADER: FM<"count", false>; FAMILY_CENTER_ACTIVITY_USER_INTERACTION_TOOLTIP_PARENT: string; FAMILY_CENTER_ACTIVITY_USER_INTERACTION_TOOLTIP_TEEN: string; FAMILY_CENTER_ACTIVITY_USER_MESSAGED_TIMESTAMP_DAYS: FM<"days", false>; FAMILY_CENTER_ACTIVITY_USER_MESSAGED_TIMESTAMP_TODAY: string; FAMILY_CENTER_ACTIVITY_USER_MESSAGED_TIMESTAMP_YESTERDAY: string; FAMILY_CENTER_AVATAR_ARIA: FM<"name", false>; FAMILY_CENTER_CANCEL_LINK_MODAL_ERROR: string; FAMILY_CENTER_CANCEL_LINK_MODAL_TITLE: string; FAMILY_CENTER_CANCEL_REQUEST: string; FAMILY_CENTER_CANCEL_REQUEST_BACK: string; FAMILY_CENTER_DATA_CONFIRMATION_EXCLUDED_CONTENT_DESCRIPTION_PARENT: string; FAMILY_CENTER_DATA_CONFIRMATION_EXCLUDED_CONTENT_DESCRIPTION_TEEN: string; FAMILY_CENTER_DATA_CONFIRMATION_EXCLUDED_CONTENT_HEADER_PARENT: string; FAMILY_CENTER_DATA_CONFIRMATION_EXCLUDED_CONTENT_HEADER_TEEN: string; FAMILY_CENTER_DATA_CONFIRMATION_EXCLUDED_HEADER_PARENT: string; FAMILY_CENTER_DATA_CONFIRMATION_EXCLUDED_HEADER_TEEN: string; FAMILY_CENTER_DATA_CONFIRMATION_FRIEND_ADD_DESCRIPTION: string; FAMILY_CENTER_DATA_CONFIRMATION_FRIEND_ADD_HEADER: string; FAMILY_CENTER_DATA_CONFIRMATION_GUILD_PARTICIPATION_DESCRIPTION: string; FAMILY_CENTER_DATA_CONFIRMATION_GUILD_PARTICIPATION_HEADER: string; FAMILY_CENTER_DATA_CONFIRMATION_INCLUDED_HEADER_PARENT: string; FAMILY_CENTER_DATA_CONFIRMATION_INCLUDED_HEADER_TEEN: string; FAMILY_CENTER_DATA_CONFIRMATION_USERS_MESSAGED_DESCRIPTION: string; FAMILY_CENTER_DATA_CONFIRMATION_USERS_MESSAGED_HEADER: string; FAMILY_CENTER_DECLINE_LINK_MODAL_DISCLAIMER_TEEN: string; FAMILY_CENTER_DECLINE_LINK_MODAL_ERROR: string; FAMILY_CENTER_DECLINE_LINK_MODAL_NOTICE_HEADER: string; FAMILY_CENTER_DECLINE_LINK_MODAL_TITLE: string; FAMILY_CENTER_DECLINE_REQUEST: string; FAMILY_CENTER_DISABLE_FEATURE_MODAL_DISABLE_BUTTON_TEXT: string; FAMILY_CENTER_DISABLE_FEATURE_MODAL_HEADER_TEXT: string; FAMILY_CENTER_DISABLE_FEATURE_MODAL_SUBTITLE_TEXT: FM<[never, "openSettingsHook"], true>; FAMILY_CENTER_DISCONNECT_BUTTON: string; FAMILY_CENTER_DISCONNECT_LINK_MODAL_DISCLAIMER_PARENT: string; FAMILY_CENTER_DISCONNECT_LINK_MODAL_DISCLAIMER_TEEN: string; FAMILY_CENTER_DISCONNECT_LINK_MODAL_ERROR: string; FAMILY_CENTER_DISCONNECT_LINK_MODAL_NOTICE_DESCRIPTION_PARENT: string; FAMILY_CENTER_DISCONNECT_LINK_MODAL_NOTICE_DESCRIPTION_TEEN: string; FAMILY_CENTER_DISCONNECT_LINK_MODAL_NOTICE_HEADER: string; FAMILY_CENTER_DISCONNECT_LINK_MODAL_TITLE: FM<"isAdult", false>; FAMILY_CENTER_EMPTY_ACTIVITY_DAYS: FM<"days", false>; FAMILY_CENTER_EMPTY_ACTIVITY_TODAY: string; FAMILY_CENTER_EMPTY_ACTIVITY_YESTERDAY: string; FAMILY_CENTER_ERROR_CONNECTION_LIMIT_PARENT_DESCRIPTION: FM<"link", true>; FAMILY_CENTER_ERROR_CONNECTION_LIMIT_PARENT_HEADER: string; FAMILY_CENTER_ERROR_CONNECTION_LIMIT_TEEN_DESCRIPTION: FM<"link", true>; FAMILY_CENTER_ERROR_CONNECTION_LIMIT_TEEN_HEADER: string; FAMILY_CENTER_ERROR_GENERIC_DESCRIPTION: string; FAMILY_CENTER_ERROR_GENERIC_HEADER: string; FAMILY_CENTER_ERROR_GENERIC_TOAST: string; FAMILY_CENTER_ERROR_REQUEST_PENDING_DESCRIPTION: FM<"email", false>; FAMILY_CENTER_ERROR_REQUEST_PENDING_DESCRIPTION_NO_EMAIL: string; FAMILY_CENTER_ERROR_REQUEST_PENDING_HEADER: string; FAMILY_CENTER_ERROR_TEEN_TO_TEEN_LINK_DESCRIPTION: FM<"link", true>; FAMILY_CENTER_ERROR_TEEN_TO_TEEN_LINK_HEADER: string; FAMILY_CENTER_FEATURE_CARD_MESSAGES_DESCRIPTION_PARENT: string; FAMILY_CENTER_FEATURE_CARD_MESSAGES_DESCRIPTION_TEEN: string; FAMILY_CENTER_FEATURE_CARD_MESSAGES_HEADER: string; FAMILY_CENTER_FEATURE_CARD_PAIRING_DESCRIPTION_PARENT: string; FAMILY_CENTER_FEATURE_CARD_PAIRING_DESCRIPTION_TEEN: string; FAMILY_CENTER_FEATURE_CARD_PAIRING_HEADER: string; FAMILY_CENTER_FEATURE_CARD_SHARING_DESCRIPTION_PARENT: string; FAMILY_CENTER_FEATURE_CARD_SHARING_DESCRIPTION_TEEN: string; FAMILY_CENTER_FEATURE_CARD_SHARING_HEADER: string; FAMILY_CENTER_FEATURE_CARDS_HEADER: string; FAMILY_CENTER_HELP_LINE_CONTENT: FM<"helpLink", true>; FAMILY_CENTER_HELP_LINE_HEADER: string; FAMILY_CENTER_LINK_ACTION_ACCEPT: string; FAMILY_CENTER_LINK_ACTION_CANCEL: string; FAMILY_CENTER_LINK_ACTION_DECLINE: string; FAMILY_CENTER_LINK_ACTION_DISCONNECT: string; FAMILY_CENTER_PENDING_REQUESTS_TITLE_PARENT: FM<"count", false>; FAMILY_CENTER_PENDING_REQUESTS_TITLE_TEEN: FM<"count", false>; FAMILY_CENTER_PENDING_TIMESTAMP_DATE: FM<"date", false>; FAMILY_CENTER_PENDING_TIMESTAMP_DAYS: FM<"count", false>; FAMILY_CENTER_PENDING_TIMESTAMP_HOURS: FM<"count", false>; FAMILY_CENTER_PENDING_TIMESTAMP_MINUTES: FM<"count", false>; FAMILY_CENTER_PENDING_TIMESTAMP_SECONDS: string; FAMILY_CENTER_PENDING_TIMESTAMP_YESTERDAY: string; FAMILY_CENTER_QR_CODE_MODAL_BUTTON_HIDE: string; FAMILY_CENTER_QR_CODE_MODAL_BUTTON_SHOW: string; FAMILY_CENTER_QR_CODE_MODAL_DESCRIPTION: FM<"link", true>; FAMILY_CENTER_QR_CODE_MODAL_HEADER: string; FAMILY_CENTER_QR_CODE_MODAL_NOTICE: string; FAMILY_CENTER_QR_CODE_MODAL_REMINDER: string; FAMILY_CENTER_QR_CODE_SCAN: string; FAMILY_CENTER_REQUEST_LINK_BUTTON: string; FAMILY_CENTER_REQUEST_LINK_MODAL_TITLE_PARENT: string; FAMILY_CENTER_REQUEST_SUCCESS_DESCRIPTION: FM<"email", false>; FAMILY_CENTER_REQUEST_SUCCESS_HEADER: string; FAMILY_CENTER_REQUESTS_LIMIT_INFO_PARENT: FM<"maxConnections", false>; FAMILY_CENTER_REQUESTS_LIMIT_INFO_TEEN: FM<"maxConnections", false>; FAMILY_CENTER_REQUESTS_LINKING_BANNER_DESCRIPTION_PARENT: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_DESCRIPTION_PARENT_MOBILE: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_DESCRIPTION_TEEN: FM<"link", true>; FAMILY_CENTER_REQUESTS_LINKING_BANNER_HEADER_PARENT: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_HEADER_PARENT_MOBILE: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_HEADER_TEEN: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_PARENT_STEP_1_DESCRIPTION: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_PARENT_STEP_1_HEADER: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_PARENT_STEP_2_DESCRIPTION: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_PARENT_STEP_2_HEADER: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_PARENT_STEP_3_DESCRIPTION: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_PARENT_STEP_3_HEADER: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_TEEN_ASSET_ALT: string; FAMILY_CENTER_REQUESTS_LINKING_BANNER_TEEN_BUTTON: string; FAMILY_CENTER_REQUESTS_TAB: string; FAMILY_CENTER_SETTINGS_EMAIL_DIGEST_ENABLE_SWITCH: string; FAMILY_CENTER_SETTINGS_EMAIL_DIGEST_ENABLE_SWITCH_NOTE: string; FAMILY_CENTER_SETTINGS_ENABLE_CTA: string; FAMILY_CENTER_SETTINGS_ENABLE_PROMPT: string; FAMILY_CENTER_SETTINGS_ENABLE_SWITCH: string; FAMILY_CENTER_SETTINGS_ENABLE_SWITCH_NOTE: string; FAMILY_CENTER_SETTINGS_FORM_TITLE: string; FAMILY_CENTER_SETTINGS_TITLE: string; FAMILY_CENTER_SIDEBAR_TITLE: string; FAMILY_CENTER_TEEN_SELECT_TITLE: string; FAMILY_CENTER_THROUGHLINE_CONTENT: FM<"helpLink", true>; FAMILY_CENTER_TITLE: string; FAMILY_CENTER_TOOLTIP_MODAL_HEADER_PARENT: string; FAMILY_CENTER_TOOLTIP_MODAL_HEADER_TEEN: string; FAVORITE_ADDED: string; FAVORITE_CHANNEL: string; FAVORITE_DM: string; FAVORITE_GDM: string; FAVORITE_GIFS_LIMIT_REACHED_BODY: string; FAVORITE_ITEM: string; FAVORITES: string; FAVORITES_ADD_A_CHANNEL: string; FAVORITES_EMPTY_BODY: string; FAVORITES_EMPTY_TITLE: string; FAVORITES_GO_TO_ORIGINAL_GUILD: string; FAVORITES_GUILD_NAME: string; FAVORITES_LIMIT_REACHED_BODY: FM<"count", false>; FAVORITES_LIMIT_REACHED_TITLE: string; FAVORITES_RENAME_CATEGORY: string; FAVORITES_SET_NICKNAME_DESCRIPTION: string; FEATURE_DISABLED_WHILE_IN_BETA: string; FEEDBACK_DESCRIBE_ISSUE: string; FEEDBACK_DONT_SHOW_AGAIN: string; FEEDBACK_ISSUE_TITLE: string; FEEDBACK_MODAL_TITLE: string; FEEDBACK_NEED_MORE_HELP: FM<"helpdeskURL", true>; fi: string; FILE_PICKER_ERROR_DESCRIPTION: string; FILE_PICKER_ERROR_TITLE: string; FILE_RATE_KB: FM<"size", false>; FILE_RATE_MB: FM<"size", false>; FILE_SIZE_GB: FM<"size", false>; FILE_SIZE_GB_NO_SPACE: FM<"size", false>; FILE_SIZE_KB: FM<"size", false>; FILE_SIZE_KB_NO_SPACE: FM<"size", false>; FILE_SIZE_MB: FM<"size", false>; FILE_SIZE_MB_NO_SPACE: FM<"size", false>; FILE_UPLOAD_LIMIT_BOOSTED_GUILD_TIER_2: string; FILE_UPLOAD_LIMIT_BOOSTED_GUILD_TIER_3: string; FILE_UPLOAD_LIMIT_NEW_STANDARD: string; FILE_UPLOAD_LIMIT_PREMIUM_TIER_2_INCREASE: string; FILES: string; FILTER: string; FILTER_MENTIONS: string; FILTER_OPTIONS: string; FILTERING_ON_GUILD: FM<"guild", true>; FIND_CONSOLES: string; FINISH: string; FINISH_SIGNING_UP: string; FLASH_AUTO: string; FLASH_OFF: string; FLASH_ON: string; FLASH_TORCH: string; FOCUS_MODE_BADGE_OFF: string; FOCUS_MODE_BADGE_ON: string; FOCUS_MODE_BADGE_ON_VIA_DND: string; FOCUS_MODE_DESCRIPTION: string; FOCUS_MODE_DESCRIPTION_MOBILE: string; FOCUS_MODE_ENABLE_FOR: string; FOCUS_MODE_TITLE: string; FOCUS_MODE_TURN_OFF: string; FOCUS_PARTICIPANT: string; FOCUS_PARTICIPANT_TARGETED: FM<"targetName", false>; FOLDER_NAME: string; FOLLOW: string; FOLLOW_MODAL_BODY: string; FOLLOW_MODAL_FAIL: string; FOLLOW_MODAL_HINT: string; FOLLOW_MODAL_HINT_NO_PERMS: string; FOLLOW_MODAL_TITLE: string; FOLLOW_MODAL_TOO_MANY_WEBHOOKS: string; FOLLOW_MODAL_WARNING: string; FOLLOW_NEWS_CHAT_INPUT_MESSAGE: string; FOLLOW_NEWS_CHAT_INPUT_SUBTITLE: FM<"count", false>; FOLLOW_SUCCESS_MODAL_BODY: string; FOLLOW_SUCCESS_MODAL_HEADER_01: string; FOLLOW_SUCCESS_MODAL_HEADER_02: string; FOLLOW_SUCCESS_MODAL_HEADER_03: string; FOLLOW_SUCCESS_MODAL_HEADER_04: string; FOLLOW_SUCCESS_MODAL_HEADER_05: string; FOLLOW_SUCCESS_MODAL_HEADER_06: string; FOLLOW_SUCCESS_MODAL_HEADER_07: string; FOLLOW_SUCCESS_MODAL_HEADER_08: string; FOLLOW_SUCCESS_MODAL_HEADER_09: string; FOLLOW_SUCCESS_MODAL_HEADER_10: string; FOLLOW_US_FOR_MORE_UPDATES: string; FOR_LATER: string; FOR_LATER_DIRECT_MESSAGE_WITH: FM<"username", false>; FOR_LATER_MANAGE_MESSAGES: string; FOR_LATER_OPTIONS: string; FOR_LATER_REMINDER_DELETED: string; FOR_LATER_TAB_REMINDERS: string; FOR_LATER_TAB_REMINDERS_COUNT: FM<"count", false>; FOR_YOU: string; FOR_YOU_EMPTY_BODY: string; FOR_YOU_EMPTY_TITLE: string; FORCE_PASSWORD_UPDATE_DESCRIPTION: string; FORCE_SYNC: string; FORGOT_PASSWORD: string; FORM_ACTIVITY_FEED_TOGGLE: string; FORM_CHECKBOX_AEC_DUMP: string; FORM_CHECKBOX_CONNECTION_LOG: string; FORM_CHECKBOX_DEBUG_LOGGING: string; FORM_CHECKBOX_QOS: string; FORM_CLEAR_SERVER_NAME_A11Y_LABEL: string; FORM_DESCRIPTION_MOBILE_GUILD_NOTIFICATION_ALL_MESSAGES: string; FORM_DESCRIPTION_MOBILE_GUILD_NOTIFICATION_ONLY_MENTIONS: string; FORM_DESCRIPTION_MOBILE_NOTIFICATION_MUTED: string; FORM_DESCRIPTION_PUSH_AFK_TIMEOUT: string; FORM_DESCRIPTION_TTS: string; FORM_ERROR_GENERIC: FM<"statusPageURL", true>; FORM_ERROR_GENERIC_WITH_DETAILS: FM<"details" | "statusPageURL", true>; FORM_HELP_ACTIVITY_FEED: string; FORM_HELP_AEC_DUMP: string; FORM_HELP_AFK_CHANNEL: string; FORM_HELP_ATTENUATION: string; FORM_HELP_AUTO_ARCHIVE_DURATION: string; FORM_HELP_AUTO_ARCHIVE_DURATION_FORUM_POST: string; FORM_HELP_AUTOMATIC_VAD: string; FORM_HELP_BITRATE: FM<"bitrate", false>; FORM_HELP_CERTIFIED_VOICE_PROCESSING: string; FORM_HELP_CHANNEL_PERMISSIONS: string; FORM_HELP_CONNECTION_LOG: string; FORM_HELP_DEBUG_LOGGING: string; FORM_HELP_DEFAULT_AUTO_ARCHIVE_DURATION: string; FORM_HELP_DEFAULT_AUTO_ARCHIVE_DURATION_FORUM_POST: string; FORM_HELP_DEFAULT_NOTIFICATION_SETTINGS_MOBILE: string; FORM_HELP_DISCOVERABLE_CHANGE_TIME: string; FORM_HELP_DISCOVERY_COVER_IMAGE: string; FORM_HELP_ENABLE_DISCOVERABLE: string; FORM_HELP_EXPLICIT_CONTENT_FILTER_V2: FM<"helpdeskArticle", true>; FORM_HELP_FORUM_TAGS: string; FORM_HELP_INSTANT_INVITE_CHANNEL: string; FORM_HELP_LAST_SEEN_1: FM<"days" | "members", true>; FORM_HELP_LAST_SEEN_WITH_ROLES_1: FM<"days" | "members", true>; FORM_HELP_NEWS: FM<"documentationLink", true>; FORM_HELP_NEWS_ANDROID: FM<"documentationLink", true>; FORM_HELP_NSFW: string; FORM_HELP_QOS: string; FORM_HELP_REGION_OVERRIDE: string; FORM_HELP_SERVER_BANNER: string; FORM_HELP_SERVER_DESCRIPTION: string; FORM_HELP_SLOWMODE: string; FORM_HELP_SLOWMODE_FORUM: string; FORM_HELP_SLOWMODE_THREAD: string; FORM_HELP_STREAM_INFO_OVERLAY: string; FORM_HELP_SYSTEM_CHANNEL: string; FORM_HELP_SYSTEM_CHANNEL_DEADCHAT_PROMPT_MESSAGE: string; FORM_HELP_SYSTEM_CHANNEL_GUILD_REMINDERS: string; FORM_HELP_SYSTEM_CHANNEL_JOIN_MESSAGE_REPLIES: string; FORM_HELP_SYSTEM_CHANNEL_JOIN_MESSAGES: string; FORM_HELP_SYSTEM_CHANNEL_PREMIUM_SUBSCRIPTION_MESSAGES: string; FORM_HELP_SYSTEM_CHANNEL_ROLE_SUBSCRIPTION_PURCHASE_MESSAGE_REPLIES: string; FORM_HELP_TEMPORARY: string; FORM_HELP_THREAD_INVITABLE: string; FORM_HELP_USER_LIMIT: FM; FORM_HELP_USER_LIMIT_STAGE: FM; FORM_HELP_VERIFICATION_LEVEL: FM; FORM_HELP_VIDEO_HOOK: string; FORM_HELP_VIDEO_QUALITY_MODE: FM; FORM_HELP_VOICE_VIDEO_TROUBLESHOOTING_GUIDE: FM<"guideURL", true>; FORM_HELP_VOICE_VIDEO_TROUBLESHOOTING_SEARCHABLE: string; FORM_LABEL_ACCESSIBILITY_CHAT_INPUT: string; FORM_LABEL_ACCOUNT_INFORMATION: string; FORM_LABEL_ACTIVITY_FEED: string; FORM_LABEL_AFK_CHANNEL: string; FORM_LABEL_AFK_TIMEOUT: string; FORM_LABEL_ALL: string; FORM_LABEL_ALL_MESSAGES: string; FORM_LABEL_ALL_MESSAGES_SHORT: string; FORM_LABEL_ANDROID_OPENSL: string; FORM_LABEL_ANDROID_OPENSL_DEFAULT: string; FORM_LABEL_ANDROID_OPENSL_DEFAULT_DESC: string; FORM_LABEL_ANDROID_OPENSL_DESC: FM; FORM_LABEL_ANDROID_OPENSL_FORCE_DISABLED: string; FORM_LABEL_ANDROID_OPENSL_FORCE_DISABLED_DESC: string; FORM_LABEL_ANDROID_OPENSL_FORCE_ENABLED: string; FORM_LABEL_ANDROID_OPENSL_FORCE_ENABLED_DESC: string; FORM_LABEL_ATTENUATION: string; FORM_LABEL_AUTOMATIC_VAD: string; FORM_LABEL_AUTOMATIC_VAD_MOBILE: string; FORM_LABEL_AVATAR_SIZE: string; FORM_LABEL_BITRATE: string; FORM_LABEL_CATEGORY_PERMISSIONS: string; FORM_LABEL_CHANNEL_GUIDELINES: string; FORM_LABEL_CHANNEL_NAME: string; FORM_LABEL_CHANNEL_NOTIFCATION_SETTINGS: string; FORM_LABEL_CHANNEL_PERMISSIONS: string; FORM_LABEL_CHANNEL_TEMPLATE: string; FORM_LABEL_CHANNEL_TOPIC: string; FORM_LABEL_CONFIRM_NEW_PASSWORD: string; FORM_LABEL_CONFIRM_PASSWORD: string; FORM_LABEL_CURRENT_PASSWORD: string; FORM_LABEL_CUSTOM_TWITCH_EMOTICON: string; FORM_LABEL_DEBUG: string; FORM_LABEL_DEFAULT: string; FORM_LABEL_DEFAULT_CATEGORY: string; FORM_LABEL_DEFAULT_NOTIFICATION_SETTINGS: string; FORM_LABEL_DELETE_MESSAGE_HISTORY: string; FORM_LABEL_DESKTOP_ONLY: string; FORM_LABEL_DISABLED_FOR_EVERYONE: string; FORM_LABEL_DISCOVERY_COVER_IMAGE: string; FORM_LABEL_DISCOVERY_RULES_CHANNEL: string; FORM_LABEL_DISPLAY_NAMES: string; FORM_LABEL_DISPLAY_USERS: string; FORM_LABEL_EMAIL: string; FORM_LABEL_EMAIL_OR_PHONE_NUMBER: string; FORM_LABEL_EXPIRE_GRACE_PERIOD: string; FORM_LABEL_EXPLICIT_CONTENT_FILTER: string; FORM_LABEL_EXPLICIT_CONTENT_FILTER_CHANGE: string; FORM_LABEL_EXPLICIT_CONTENT_FILTER_V2: string; FORM_LABEL_HIGHLIGHTS: string; FORM_LABEL_HIGHLIGHTS_NOTE: string; FORM_LABEL_HOIST_DESCRIPTION: string; FORM_LABEL_INPUT: string; FORM_LABEL_INPUT_DEVICE: string; FORM_LABEL_INPUT_MODE: string; FORM_LABEL_INPUT_SENSITIVTY: string; FORM_LABEL_INPUT_VOLUME: string; FORM_LABEL_INSTANT_INVITE_CHANNEL: string; FORM_LABEL_INVITE_LINK: string; FORM_LABEL_JSON_API: string; FORM_LABEL_LAST_SEEN: string; FORM_LABEL_LIVE_STAGES_ONLY: string; FORM_LABEL_MAX_AGE: string; FORM_LABEL_MAX_USES: string; FORM_LABEL_MEMBER_ADD: string; FORM_LABEL_MEMBERSHIP_EXPIRE_BEHAVIOR: string; FORM_LABEL_MENTIONABLE: FM; FORM_LABEL_MENTIONABLE_DESCRIPTION: string; FORM_LABEL_MENTIONS: string; FORM_LABEL_MOBILE_CATEGORY_MUTED: string; FORM_LABEL_MOBILE_CATEGORY_MUTED_UNTIL: FM<["endTime", "endTimeHook"], true>; FORM_LABEL_MOBILE_CATEGORY_OVERRIDE_MUTE: string; FORM_LABEL_MOBILE_CHANNEL_MUTED: string; FORM_LABEL_MOBILE_CHANNEL_MUTED_UNTIL: FM<["endTime", "endTimeHook"], true>; FORM_LABEL_MOBILE_CHANNEL_OVERRIDE_GUILD_MESSAGE_NOTIFICATION: FM<[never, "notificationHook"], true>; FORM_LABEL_MOBILE_CHANNEL_OVERRIDE_GUILD_MUTED: FM<[never, "mutedHook"], true>; FORM_LABEL_MOBILE_CHANNEL_OVERRIDE_MUTE: string; FORM_LABEL_MOBILE_DM_MUTED: string; FORM_LABEL_MOBILE_DM_MUTED_UNTIL: FM<["endTime", "endTimeHook"], true>; FORM_LABEL_MOBILE_NOTIFICATIONS_BEHAVIOR: string; FORM_LABEL_MOBILE_NOTIFICATIONS_BLINK: string; FORM_LABEL_MOBILE_NOTIFICATIONS_CALL_DESC: string; FORM_LABEL_MOBILE_NOTIFICATIONS_EVERY_TIME_DESC: string; FORM_LABEL_MOBILE_NOTIFICATIONS_INAPP_DESC: string; FORM_LABEL_MOBILE_NOTIFICATIONS_INAPP_LABEL: string; FORM_LABEL_MOBILE_NOTIFICATIONS_LABEL: string; FORM_LABEL_MOBILE_NOTIFICATIONS_OS_CONTROL_JUMP: string; FORM_LABEL_MOBILE_NOTIFICATIONS_OS_CONTROL_JUMP_HELP: string; FORM_LABEL_MOBILE_NOTIFICATIONS_SOUND_DISABLE: string; FORM_LABEL_MOBILE_NOTIFICATIONS_STREAM_DESC: string; FORM_LABEL_MOBILE_NOTIFICATIONS_SYSTEM_DESC: string; FORM_LABEL_MOBILE_NOTIFICATIONS_SYSTEM_HINT: string; FORM_LABEL_MOBILE_NOTIFICATIONS_SYSTEM_LABEL: string; FORM_LABEL_MOBILE_NOTIFICATIONS_USER_LABEL: string; FORM_LABEL_MOBILE_NOTIFICATIONS_VIBRATIONS: string; FORM_LABEL_MOBILE_PUSH_NOTIFICATIONS: string; FORM_LABEL_MOBILE_SERVER_MUTED: string; FORM_LABEL_MOBILE_SERVER_MUTED_UNTIL: FM<["endTime", "endTimeHook"], true>; FORM_LABEL_MOBILE_USER_NOTIFICATIONS_HINT: string; FORM_LABEL_MOBILE_USER_NOTIFICATIONS_LABEL: string; FORM_LABEL_MUTE_SCHEDULED_EVENTS: string; FORM_LABEL_MUTE_SERVER: FM<"name", true>; FORM_LABEL_MUTE_SERVER_DESCRIPTION: string; FORM_LABEL_MUTE_SERVER_DESCRIPTION_NEW: string; FORM_LABEL_MUTED: string; FORM_LABEL_NEW_PASSWORD: string; FORM_LABEL_NEW_PASSWORD_MISMATCH: string; FORM_LABEL_NEWS_CHANNEL: string; FORM_LABEL_NOTHING: string; FORM_LABEL_NOTIFICATION_FREQUENCY: string; FORM_LABEL_NOTIFICATION_POSITION: string; FORM_LABEL_NSFW_CHANNEL: string; FORM_LABEL_OFF: string; FORM_LABEL_ONLY_MENTIONS: FM; FORM_LABEL_ONLY_MENTIONS_PLAIN: string; FORM_LABEL_ONLY_MENTIONS_SHORT: string; FORM_LABEL_OUTPUT: string; FORM_LABEL_OUTPUT_DEVICE: string; FORM_LABEL_OUTPUT_VOLUME: string; FORM_LABEL_OVERLAY_CHAT_OPACITY: string; FORM_LABEL_PASSWORD: string; FORM_LABEL_PHONE_NUMBER: string; FORM_LABEL_PREMADE_WIDGET: string; FORM_LABEL_PUSH_AFK_TIMEOUT: string; FORM_LABEL_QOS: string; FORM_LABEL_REASON_BAN: string; FORM_LABEL_REASON_KICK: string; FORM_LABEL_REGION_OVERRIDE: string; FORM_LABEL_REPORT_REASON: string; FORM_LABEL_ROLE_ADD: string; FORM_LABEL_ROLE_COLOR: string; FORM_LABEL_ROLE_DESCRIPTION: string; FORM_LABEL_ROLE_DESCRIPTION_INFO: string; FORM_LABEL_ROLE_ENTER_NAME: string; FORM_LABEL_ROLE_ICON: string; FORM_LABEL_ROLE_ICON_SUBTITLE_MOBILE: string; FORM_LABEL_ROLE_NAME: string; FORM_LABEL_ROLE_SETTINGS: string; FORM_LABEL_ROLES_PRO_TIP: string; FORM_LABEL_SCREENSHARE: string; FORM_LABEL_SELECT_CHANNEL: string; FORM_LABEL_SEND_TO: string; FORM_LABEL_SENSITIVTY: string; FORM_LABEL_SERVER_BANNER: string; FORM_LABEL_SERVER_DESCRIPTION: string; FORM_LABEL_SERVER_ID: string; FORM_LABEL_SERVER_LANGUAGE: string; FORM_LABEL_SERVER_NAME: string; FORM_LABEL_SERVER_NOTIFICATION_SETTINGS: string; FORM_LABEL_SHORTCUT: string; FORM_LABEL_SLOWMODE: string; FORM_LABEL_SLOWMODE_COOLDOWN: string; FORM_LABEL_SLOWMODE_OFF: string; FORM_LABEL_SLOWMODE_SEARCH_PLACEHOLDER: string; FORM_LABEL_STREAM_INFO_OVERLAY: string; FORM_LABEL_STREAM_VOLUME: string; FORM_LABEL_SUB_EXPIRE_BEHAVIOR: string; FORM_LABEL_SUBSYSTEM: string; FORM_LABEL_SUPPRESS_EVERYONE: FM; FORM_LABEL_SUPPRESS_HIGHLIGHTS: string; FORM_LABEL_SUPPRESS_HIGHLIGHTS_NOTE: string; FORM_LABEL_SUPPRESS_ROLES: string; FORM_LABEL_SYNCED_MEMBERS: string; FORM_LABEL_SYNCED_ROLE: string; FORM_LABEL_SYNCED_SUBS: string; FORM_LABEL_SYSTEM_CHANNEL: string; FORM_LABEL_SYSTEM_CHANNEL_SETTINGS: string; FORM_LABEL_TEMPORARY: string; FORM_LABEL_TEST_MICROPHONE: string; FORM_LABEL_TTS: string; FORM_LABEL_TTS_NOTIFICATIONS: string; FORM_LABEL_UNMUTE_SCHEDULED_EVENTS: string; FORM_LABEL_UNMUTE_SERVER: FM<"name", true>; FORM_LABEL_UNREAD_SETTINGS_OPT_IN: string; FORM_LABEL_UNREAD_SETTINGS_OPT_IN_NOTE: string; FORM_LABEL_USE_RICH_CHAT_BOX: string; FORM_LABEL_USER_LIMIT: string; FORM_LABEL_USERNAME: string; FORM_LABEL_USERNAME_MOBILE: string; FORM_LABEL_VERIFICATION_LEVEL: string; FORM_LABEL_VERIFICATION_LEVEL_CHANGE: string; FORM_LABEL_VIDEO_DEVICE: string; FORM_LABEL_VIDEO_PREVIEW: string; FORM_LABEL_VIDEO_QUALITY: string; FORM_LABEL_VOICE_DIAGNOSTICS: string; FORM_LABEL_VOICE_PROCESSING: string; FORM_LABEL_VOLUME: string; FORM_LENGTH_ERROR: FM<"max" | "min", false>; FORM_PLACEHOLDER_CHANNEL_TEMPLATE: string; FORM_PLACEHOLDER_SERVER_NAME: string; FORM_PLACEHOLDER_USERNAME: string; FORM_POST_ACTIVE_AGO_TIMESTAMP_DAYS: FM<"count", false>; FORM_POST_ACTIVE_AGO_TIMESTAMP_HOURS: FM<"count", false>; FORM_POST_ACTIVE_AGO_TIMESTAMP_MINUTES: FM<"count", false>; FORM_POST_ACTIVE_AGO_TIMESTAMP_MORE_THAN_MONTH: string; FORM_POST_CREATED_AGO_TIMESTAMP_DAYS: FM<"count", false>; FORM_POST_CREATED_AGO_TIMESTAMP_HOURS: FM<"count", false>; FORM_POST_CREATED_AGO_TIMESTAMP_MINUTES: FM<"count", false>; FORM_POST_CREATED_AGO_TIMESTAMP_MORE_THAN_MONTH: string; FORM_PRIVATE_THREAD_DESCRIPTION: string; FORM_REPORT_HELP_TEXT: FM<"guidelinesURL", true>; FORM_THREAD_AUTO_ARCHIVE_SECTION_LABEL: string; FORM_THREAD_NAME_PLACEHOLDER: string; FORM_THREAD_NAME_REQUIRED_ERROR: string; FORM_THREAD_PRIVATE_THREAD_DESCRIPTION: string; FORM_THREAD_PRIVATE_THREAD_SECTION_LABEL: string; FORM_THREAD_STARTER_MESSAGE_PLACEHOLDER: string; FORM_THREAD_STARTER_MESSAGE_REQUIRED_ERROR: string; FORM_THREAD_STARTER_MESSAGE_SECTION_LABEL: string; FORM_WARNING_INPUT_SENSITIVTY: FM; FORM_WARNING_VIDEO_PREVIEW: FM; FORNITE_GUARD_OUTPUT: string; FORTNITE_DROPS_COMPLETION_TOOLTIP: FM<"rewardName" | "streamLengthRequirement", false>; FORTNITE_DROPS_ELIGIBILITY_ENROLLMENT_TOOLTIP: FM<"rewardName" | "streamLengthRequirement", false>; FORTNITE_GIFT_INVENTORY_INFO: FM<"guardOutfitName" | "rewardName", true>; FORTNITE_GO_LIVE_TASK: FM<"rewardName" | "streamLengthRequirement", false>; FORTNITE_REDEMPTION_TIP: FM<"learnMoreUrl", true>; FORTNITE_REWARD_NAME: string; FORUM: string; FORUM_ADD_MEDIA_TO_ORIGINAL_POST_ADD: string; FORUM_ADD_MEDIA_TO_ORIGINAL_POST_DESCRIPTION: string; FORUM_ADD_MEDIA_TO_ORIGINAL_POST_DONT_ADD: string; FORUM_ADD_MEDIA_TO_ORIGINAL_POST_TITLE: string; FORUM_ANDROID_WARNING: string; FORUM_BEFORE_YOU_POST: string; FORUM_CHANNEL: string; FORUM_CHANNEL_CLEAR_ALL: string; FORUM_CHANNEL_CREATE_DEFAULT_GRID_VIEW: string; FORUM_CHANNEL_CREATE_GRID_VIEW: string; FORUM_CHANNEL_CREATE_LIST_VIEW: string; FORUM_CHANNEL_DESCRIPTION: string; FORUM_CHANNEL_GRID_UPSELL_AUTO_CANCEL: string; FORUM_CHANNEL_GRID_UPSELL_AUTO_CONFIRM: string; FORUM_CHANNEL_GRID_UPSELL_AUTO_DESCRIPTION: string; FORUM_CHANNEL_GRID_UPSELL_AUTO_TITLE: string; FORUM_CHANNEL_GRID_UPSELL_MANUAL_CANCEL: string; FORUM_CHANNEL_GRID_UPSELL_MANUAL_CONFIRM: string; FORUM_CHANNEL_GRID_UPSELL_MANUAL_DESCRIPTION: string; FORUM_CHANNEL_GRID_UPSELL_MANUAL_TITLE: string; FORUM_CHANNEL_MOST_RECENT_MESSAGE_DELETED: string; FORUM_CHANNEL_NAME_NOTE: FM<[never, "forumUpsellHook"], true>; FORUM_CHANNEL_NAME_NOTE_MOBILE: string; FORUM_CHANNEL_NAME_PLACEHOLDER: string; FORUM_CHANNEL_NO_POST_HISTORY: FM<"channelName", true>; FORUM_CHANNEL_NO_SEARCH_POST_HISTORY: FM<"channelName", true>; FORUM_CHANNEL_ONBOARDING_CHECKLIST_DEFAULT_REACTION_DESCRIPTION: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_DEFAULT_REACTION_TITLE: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_FIRST_POST_DESCRIPTION: FM; FORUM_CHANNEL_ONBOARDING_CHECKLIST_FIRST_POST_TITLE: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_GUIDELINES_DESCRIPTION: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_GUIDELINES_TITLE: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_PERMISSION_DESCRIPTION: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_PERMISSION_TITLE: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_TAGS_DESCRIPTION: string; FORUM_CHANNEL_ONBOARDING_CHECKLIST_TAGS_TITLE: string; FORUM_CHANNEL_ONBOARDING_COMPLETED_COUNT: FM<"numCompleted" | "numSteps", false>; FORUM_CHANNEL_ONBOARDING_DEFAULT_REACTION_MODAL_DESCRIPTION: string; FORUM_CHANNEL_ONBOARDING_DEFAULT_REACTION_MODAL_ERROR: string; FORUM_CHANNEL_ONBOARDING_DEFAULT_REACTION_MODAL_TITLE: string; FORUM_CHANNEL_ONBOARDING_HIDE: string; FORUM_CHANNEL_ONBOARDING_PERMISSION_MODAL_LET_EVERYONE_POST: string; FORUM_CHANNEL_ONBOARDING_PERMISSION_MODAL_ROLE_INPUT_PLACEHOLDER: string; FORUM_CHANNEL_ONBOARDING_PERMISSION_MODAL_TITLE: string; FORUM_CHANNEL_ONBOARDING_PERMISSION_MODEL_DESCRIPTION: FM; FORUM_CHANNEL_ONBOARDING_PERMISSION_MODEL_ERROR: string; FORUM_CHANNEL_ONBOARDING_SHOW: string; FORUM_CHANNEL_ONBOARDING_VISIBILITY: string; FORUM_CHANNEL_RESET_ALL: string; FORUM_CHANNEL_SET_DEFAULT_LAYOUT: string; FORUM_CHANNEL_SETTINGS_DEFAULT_LAYOUT: string; FORUM_CHANNEL_SETTINGS_DEFAULT_LAYOUT_BEHAVIOR_DESCRIPTION: string; FORUM_CHANNEL_SETTINGS_DEFAULT_LAYOUT_DESCRIPTION: string; FORUM_CHANNEL_SETTINGS_DEFAULT_LAYOUT_DESCRIPTION_SEE_EXAMPLES: FM; FORUM_CHANNEL_SETTINGS_DEFAULT_LAYOUT_EXAMPLE_POSTS: string; FORUM_CHANNEL_SETTINGS_GRID: string; FORUM_CHANNEL_SETTINGS_GRID_VIEW: string; FORUM_CHANNEL_SETTINGS_LIST: string; FORUM_CHANNEL_SETTINGS_LIST_VIEW: string; FORUM_CHANNEL_SHOW_POSTS: string; FORUM_CHANNEL_SORT_AND_VIEW: string; FORUM_CHANNEL_SORT_AND_VIEW_A11Y_LABEL: string; FORUM_CHANNEL_SORT_BY: string; FORUM_CHANNEL_SORT_BY_DATE_POSTED: string; FORUM_CHANNEL_SORT_BY_RECENTLY_ACTIVE: string; FORUM_CHANNEL_TAGS: string; FORUM_CHANNEL_TAGS_REMAINING: FM<"count", false>; FORUM_CHANNEL_THREAD_CREATED_PUSH_BODY_MOBILE: FM<"channelName" | "userUsername", false>; FORUM_CHANNEL_THREAD_CREATED_PUSH_DESCRIPTION_MOBILE: string; FORUM_CHANNEL_THREAD_CREATED_PUSH_TITLE_MOBILE: FM<"channelName" | "guildName", false>; FORUM_CHANNEL_TOPIC_HEADING: string; FORUM_CHANNEL_TOPIC_MISSING_CTA: string; FORUM_CHANNEL_TOPIC_MISSING_DESCRIPTION: string; FORUM_CHANNEL_TOPIC_MISSING_HEADING: string; FORUM_CHANNEL_TOPIC_SHOW_MORE: string; FORUM_CHANNEL_TOPIC_VIEW_ALL: string; FORUM_CHANNEL_TYPE: string; FORUM_CHANNEL_VIEW_AS: string; FORUM_CHANNEL_VIEW_AS_GRID: string; FORUM_CHANNEL_VIEW_AS_LIST: string; FORUM_CLEAR_ALL: string; FORUM_COMPOSER_AVATAR_A11Y_LABEL: FM<"nickname", false>; FORUM_COMPOSER_TO_CHANNEL: FM<"channelName", false>; FORUM_COMPOSER_TO_CHANNEL_A11Y_LABEL: FM<"channelName" | "nickname", false>; FORUM_DEFAULT_REACTION: string; FORUM_DEFAULT_REACTION_DESCRIPTION: string; FORUM_DEFAULT_SORT_ORDER: string; FORUM_DEFAULT_SORT_ORDER_DESCRIPTION: string; FORUM_EMPTY_STATE_CREATE_POST_CTA: string; FORUM_EMPTY_STATE_CTA: string; FORUM_EMPTY_STATE_DESCRIPTION: FM<"channelName", false>; FORUM_EMPTY_STATE_TITLE: string; FORUM_ENTER_TO_START_POST: string; FORUM_FOLLOW_BUTTON: string; FORUM_FOLLOW_BUTTON_A11Y_LABEL: string; FORUM_FOLLOW_TOOLTIP: string; FORUM_FOLLOW_TOOLTIP_ARCHIVED: string; FORUM_FOLLOWING_POST: string; FORUM_HELPER_CARD_ALT_TEXT: string; FORUM_HELPER_CARD_BODY: string; FORUM_HELPER_CARD_NOTICE: string; FORUM_HELPER_CARD_PRIMARY: string; FORUM_HELPER_CARD_TITLE: string; FORUM_MESSAGE_NOTIFICATIONS: string; FORUM_MESSAGE_NOTIFICATIONS_DESCRIPTION: string; FORUM_MOBILE_TAG_CREATE: string; FORUM_MOBILE_TAG_PLACEHOLDER: string; FORUM_MODERATED_TAG_CHECKBOX: string; FORUM_NEW_POSTS_CREATED: string; FORUM_NO_POST_PERMISSION_HELP: string; FORUM_NO_POST_WITH_TAG_DESCRIPTION: FM<"numTags", false>; FORUM_NO_POST_WITH_TAG_TITLE: FM<"numTags", false>; FORUM_NOTIFICATIONS: string; FORUM_PIN_CONFIRM_BODY: string; FORUM_PIN_CONFIRM_TITLE: string; FORUM_POST: string; FORUM_POST_ARIA_LABEL: FM<"count" | "title", false>; FORUM_POST_AUTHOR_A11Y_LABEL: FM<"name", false>; FORUM_POST_AUTOMOD_ERROR: string; FORUM_POST_BLOCKED_FIRST_MESSAGE: string; FORUM_POST_BLOCKED_MOST_RECENT_MESSAGE: string; FORUM_POST_CREATE_CLOSE_ALERT_BODY: string; FORUM_POST_CREATE_CLOSE_ALERT_DISCARD: string; FORUM_POST_CREATE_CLOSE_ALERT_SAVE: string; FORUM_POST_CREATE_CLOSE_ALERT_TITLE: string; FORUM_POST_CREATED_AT_TOOLTIP: FM<"timestamp", false>; FORUM_POST_CREATED_AT_TOOLTIP_LABEL: string; FORUM_POST_EMPTY_MESSAGE_ERROR: string; FORUM_POST_EMPTY_TITLE_ERROR: string; FORUM_POST_GUIDELINES_TITLE: string; FORUM_POST_HEADER_NOTICE_ACTIVE_LOCKED: string; FORUM_POST_HEADER_NOTICE_LOCKED: string; FORUM_POST_MEMBER_LIST_EMPTY_STATE_HEADER: string; FORUM_POST_MESSAGE_COUNT: FM<"count", false>; FORUM_POST_MESSAGE_COUNT_A11Y: FM<"count", false>; FORUM_POST_MESSAGE_COUNT_SHORT: FM<"count", false>; FORUM_POST_MESSAGE_COUNT_SHORT_PARENTHETICAL: FM<"count", false>; FORUM_POST_MESSAGE_PLACEHOLDER: string; FORUM_POST_NON_MODERATED_TAG_REQUIRED: string; FORUM_POST_NOTIFICATIONS: string; FORUM_POST_SETTINGS: string; FORUM_POST_TAG_REQUIRED_ERROR: string; FORUM_POST_TEXTAREA_PLACEHOLDER: FM<"channel", false>; FORUM_POST_TITLE: string; FORUM_POST_TITLE_PLACEHOLDER: string; FORUM_POST_TITLE_PLACEHOLDER_FOCUSED: string; FORUM_POST_TITLE_PLACEHOLDER_SEARCH: string; FORUM_POST_TYPING: string; FORUM_REACT_BUTTON: string; FORUM_REACT_TO_POST: string; FORUM_REACTIONS_OVERFLOW: FM<"count", false>; FORUM_READ_THE_GUIDELINES_BEFORE_YOU_POST: string; FORUM_REQUIRE_TAG: string; FORUM_REQUIRE_TAG_NOTE: string; FORUM_REQUIRE_TAG_NOTE_MOBILE: string; FORUM_SEARCH_MATCHING_POSTS: FM<"numPosts", false>; FORUM_SEARCH_MATCHING_POSTS_ALT: FM<"numPosts" | "query", false>; FORUM_SEARCH_NO_MATCHING_POSTS: string; FORUM_SEARCH_PLACEHOLDER: string; FORUM_SEARCHING: string; FORUM_SECTION_ARCHIVED: string; FORUM_SETTING_SLOW_MODE_MESSAGE_TEXT: string; FORUM_SETTING_SLOW_MODE_MESSAGES: string; FORUM_SETTING_SLOW_MODE_POSTS: string; FORUM_SLOWMODE_DESC: FM<"seconds", false>; FORUM_SLOWMODE_DESC_HOURS: FM<"hours" | "minutes" | "seconds", false>; FORUM_SLOWMODE_DESC_MINUTES: FM<"minutes" | "seconds", false>; FORUM_SORT_ACTIVITY: string; FORUM_SORT_AND_VIEW_AY11_LABEL: string; FORUM_SORT_AY11_LABEL: string; FORUM_SORT_CREATION: string; FORUM_START_THE_CONVERSATION_DESCRIPTION: string; FORUM_START_THE_CONVERSATION_HEADER: string; FORUM_TAG_A11Y_ADD_TAG: FM<"tagName", false>; FORUM_TAG_A11Y_FILTER_BY_TAG: FM<"tagName", false>; FORUM_TAG_A11Y_TAG_BY: FM<"tagName", false>; FORUM_TAG_ACTIONS_MENU_LABEL: string; FORUM_TAG_ALL: string; FORUM_TAG_ALL_A11Y_LABEL: string; FORUM_TAG_CREATE: string; FORUM_TAG_CREATE_DESCRIPTION: string; FORUM_TAG_CREATE_PLACEHOLDER: string; FORUM_TAG_EDIT: string; FORUM_TAG_EDIT_ERROR: string; FORUM_TAG_EDIT_LABEL: FM<"name", false>; FORUM_TAG_EDIT_RESET_LABEL: string; FORUM_TAG_FILTER_CLEAR: string; FORUM_TAG_FILTER_HEADER: string; FORUM_TAG_FILTER_LABEL: string; FORUM_TAG_FILTER_SEARCH_PLACEHOLDER: string; FORUM_TAG_FILTER_SUBMIT: string; FORUM_TAG_POST_EDIT: string; FORUM_TAG_POST_MAX_REACHED: string; FORUM_TAG_POST_SEARCH_PLACEHOLDER: string; FORUM_TAG_POST_SELECT: string; FORUM_TAG_REMOVE: string; FORUM_TAG_REMOVE_CONFIRM: string; FORUM_TAG_REMOVE_ERROR: string; FORUM_TAG_SEE_MORE: string; FORUM_TAG_SEE_MORE_A11Y_LABEL: string; FORUM_TAGS: string; FORUM_TAGS_INFO: string; FORUM_UNFOLLOW_BUTTON: string; FORUM_UNFOLLOW_BUTTON_A11Y_LABEL: string; FORUM_UPSELL_DEMO_1_ALT_TEXT: string; FORUM_UPSELL_DEMO_1_MESSAGE_CONTENT_1: string; FORUM_UPSELL_DEMO_1_MESSAGE_CONTENT_2: string; FORUM_UPSELL_DEMO_1_MESSAGE_CONTENT_3: string; FORUM_UPSELL_DEMO_1_POST_TITLE_1: string; FORUM_UPSELL_DEMO_1_POST_TITLE_2: string; FORUM_UPSELL_DEMO_1_POST_TITLE_3: string; FORUM_UPSELL_DEMO_1_POST_TITLE_4: string; FORUM_UPSELL_DEMO_1_TAG_NAME_1: string; FORUM_UPSELL_DEMO_1_TAG_NAME_2: string; FORUM_UPSELL_DEMO_1_TAG_NAME_3: string; FORUM_UPSELL_DEMO_2_ALT_TEXT: string; FORUM_UPSELL_DEMO_2_MESSAGE_CONTENT_1: string; FORUM_UPSELL_DEMO_2_MESSAGE_CONTENT_2: string; FORUM_UPSELL_DEMO_2_MESSAGE_CONTENT_3: string; FORUM_UPSELL_DEMO_2_POST_TITLE_1: string; FORUM_UPSELL_DEMO_2_POST_TITLE_2: string; FORUM_UPSELL_DEMO_2_POST_TITLE_3: string; FORUM_UPSELL_DEMO_2_POST_TITLE_4: string; FORUM_UPSELL_DEMO_2_TAG_NAME_1: string; FORUM_UPSELL_DEMO_2_TAG_NAME_2: string; FORUM_UPSELL_DEMO_2_TAG_NAME_3: string; FORUM_UPSELL_DEMO_3_ALT_TEXT: string; FORUM_UPSELL_DEMO_3_MESSAGE_CONTENT_1: string; FORUM_UPSELL_DEMO_3_MESSAGE_CONTENT_2: string; FORUM_UPSELL_DEMO_3_MESSAGE_CONTENT_3: string; FORUM_UPSELL_DEMO_3_POST_TITLE_1: string; FORUM_UPSELL_DEMO_3_POST_TITLE_2: string; FORUM_UPSELL_DEMO_3_POST_TITLE_3: string; FORUM_UPSELL_DEMO_3_POST_TITLE_4: string; FORUM_UPSELL_DEMO_3_TAG_NAME_1: string; FORUM_UPSELL_DEMO_3_TAG_NAME_2: string; FORUM_UPSELL_DEMO_3_TAG_NAME_3: string; FORUM_UPSELL_DEMO_ALT_TEXT: string; FORUM_UPSELL_DEMO_TAG_NAME_1: string; FORUM_UPSELL_DEMO_TAG_NAME_2: string; FORUM_UPSELL_DEMO_TAG_NAME_3: string; FORUM_UPSELL_MODAL_BODY: string; FORUM_UPSELL_MODAL_HEADER: string; fr: string; FREQUENTLY_USED: string; FRIEND_ACTIONS_MENU_LABEL: string; FRIEND_FINDER_CONTACT_FRIEND_SUGGESTIONS_HEADER: FM<"count", false>; FRIEND_FINDER_FRIENDS: string; FRIEND_FINDER_PEOPLE_YOU_MAY_KNOW_HEADER_NEW_USER: FM<"count", false>; FRIEND_FINDER_SUGGESTIONS: string; FRIEND_HAS_BEEN_DELETED: string; FRIEND_NICKNAME: string; FRIEND_NICKNAME_DESCRIPTION: string; FRIEND_PERMITTED_SOURCE: string; FRIEND_PERMITTED_SOURCE_ALL: string; FRIEND_PERMITTED_SOURCE_MUTUAL_FRIENDS: string; FRIEND_PERMITTED_SOURCE_MUTUAL_GUILDS: string; FRIEND_REQUEST_ACCEPT: string; FRIEND_REQUEST_ACCEPTED_A11Y_ANNOUNCEMENT: FM<"username", false>; FRIEND_REQUEST_CANCEL: string; FRIEND_REQUEST_CANCELLED: string; FRIEND_REQUEST_FAILED_BODY: string; FRIEND_REQUEST_FAILED_BODY_NAMES: FM<"name", false>; FRIEND_REQUEST_FAILED_HEADER: string; FRIEND_REQUEST_IGNORE: string; FRIEND_REQUEST_IGNORED: string; FRIEND_REQUEST_NO_RESULTS_FOUND: string; FRIEND_REQUEST_NOTIFICATIONS: string; FRIEND_REQUEST_PENDING_A11Y_ANNOUNCEMENT: FM<"username", false>; FRIEND_REQUEST_RATE_LIMITED_BODY: string; FRIEND_REQUEST_RATE_LIMITED_BUTTON: string; FRIEND_REQUEST_RATE_LIMITED_HEADER: string; FRIEND_REQUEST_RECEIVED: string; FRIEND_REQUEST_REQUIRES_EMAIL_VALIDATION_BODY: string; FRIEND_REQUEST_REQUIRES_EMAIL_VALIDATION_BUTTON: string; FRIEND_REQUEST_REQUIRES_EMAIL_VALIDATION_HEADER: string; FRIEND_REQUEST_SENT: string; FRIEND_REQUEST_SETTINGS: string; FRIEND_REQUEST_SPAM_COUNT: FM<"spam", false>; FRIEND_REQUESTS: string; FRIEND_REQUESTS_COMBINED_COUNT: FM<"incoming" | "outgoing", false>; FRIEND_REQUESTS_SPAM_REQUESTS: string; FRIEND_REQUESTS_TAB_RECIEVED: string; FRIEND_REQUESTS_TAB_SENT: string; FRIEND_REQUESTS_TAB_SPAM_CTA: string; FRIEND_REQUESTS_TAB_SPAM_SUBHEADING: string; FRIEND_REQUESTS_VIEW_SPAM_REQUESTS: string; FRIENDS: string; FRIENDS_ALL_HEADER: FM<"count", false>; FRIENDS_BLOCKED_HEADER: FM<"count", false>; FRIENDS_COLUMN_NAME: string; FRIENDS_CONTACT_SUGGESTION_ADDED: string; FRIENDS_CONTACT_SYNC_CTA: string; FRIENDS_EMPTY_STATE_ADD_FRIENDS: string; FRIENDS_EMPTY_STATE_ALL: string; FRIENDS_EMPTY_STATE_BLOCKED: string; FRIENDS_EMPTY_STATE_FRIEND_SUGGESTIONS_COPY: string; FRIENDS_EMPTY_STATE_ONLINE: string; FRIENDS_EMPTY_STATE_OUTGOING: string; FRIENDS_EMPTY_STATE_PENDING: string; FRIENDS_EMPTY_STATE_PENDING_FRIENDS_COPY: string; FRIENDS_EMPTY_STATE_SUBTITLE: string; FRIENDS_EMPTY_STATE_SUGGESTIONS: string; FRIENDS_FRIEND_SUGGESTIONS_HEADER: FM<"count", false>; FRIENDS_OFFLINE_HEADER: FM<"offline", false>; FRIENDS_ONLINE_HEADER: FM<"online", false>; FRIENDS_PENDING_HEADER: FM<"count", false>; FRIENDS_PENDING_REQUEST_EXPAND: string; FRIENDS_PENDING_REQUEST_EXPAND_COLLAPSE: string; FRIENDS_PENDING_REQUEST_HEADER: FM<"pendingRequestNumber", false>; FRIENDS_REQUEST_STATUS_INCOMING: string; FRIENDS_REQUEST_STATUS_OUTGOING: string; FRIENDS_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_ACCEPT_SUGGESTION: string; FRIENDS_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_ACCEPT_WITH_NAME: FM<"name", false>; FRIENDS_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_CALL_WITH_NAME: FM<"name", false>; FRIENDS_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_CANCEL_WITH_NAME: FM<"name", false>; FRIENDS_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_DECLINE_WITH_NAME: FM<"name", false>; FRIENDS_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_IGNORE_SUGGESTION: string; FRIENDS_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_MESSAGE_WITH_NAME: FM<"name", false>; FRIENDS_ROW_MUTUAL_FRIENDS: FM<"count", false>; FRIENDS_SECTION_ADD_FRIEND: string; FRIENDS_SECTION_ALL: string; FRIENDS_SECTION_ONLINE: string; FRIENDS_SECTION_PENDING: string; FRIENDS_SECTION_SUGGESTIONS: string; FRIENDS_SHARE_SHEET_SCANNING_TEXT_BOTTOM: string; FRIENDS_SHARE_SHEET_SCANNING_TEXT_TOP: string; FRIENDS_SHARE_TABBAR_TITLE: FM<"url" | "username", false>; FRIENDS_SPAM_HEADER: FM<"count", false>; FULL: string; FULL_SCREEN: string; GAME_ACTION_BUTTON_ADD_TO_LIBRARY: string; GAME_ACTION_BUTTON_CANNOT_INSTALL: string; GAME_ACTION_BUTTON_DOWNLOADING: string; GAME_ACTION_BUTTON_GAME_NOT_DETECTED: string; GAME_ACTION_BUTTON_INSTALL: string; GAME_ACTION_BUTTON_LOCATE: string; GAME_ACTION_BUTTON_LOGIN_TO_BUY: string; GAME_ACTION_BUTTON_NOW_PLAYING: string; GAME_ACTION_BUTTON_PAUSED: string; GAME_ACTION_BUTTON_PLAY: string; GAME_ACTION_BUTTON_PLAY_DISABLED_DESKTOP_APP: string; GAME_ACTION_BUTTON_PREORDER_WAIT: string; GAME_ACTION_BUTTON_PREORDER_WAIT_TOOLTIP: FM<"date", false>; GAME_ACTION_BUTTON_QUEUED: string; GAME_ACTION_BUTTON_RESTRICTED_IN_REGION: string; GAME_ACTION_BUTTON_UNAVAILABLE: string; GAME_ACTION_BUTTON_UNAVAILABLE_TOOLTIP: FM<"operatingSystem", false>; GAME_ACTION_BUTTON_UNINSTALLING_1: string; GAME_ACTION_BUTTON_UNINSTALLING_10: string; GAME_ACTION_BUTTON_UNINSTALLING_2: string; GAME_ACTION_BUTTON_UNINSTALLING_3: string; GAME_ACTION_BUTTON_UNINSTALLING_4: string; GAME_ACTION_BUTTON_UNINSTALLING_5: string; GAME_ACTION_BUTTON_UNINSTALLING_6: string; GAME_ACTION_BUTTON_UNINSTALLING_7: string; GAME_ACTION_BUTTON_UNINSTALLING_8: string; GAME_ACTION_BUTTON_UNINSTALLING_9: string; GAME_ACTION_BUTTON_UPDATE: string; GAME_ACTION_BUTTON_VIEW_IN_STORE: string; GAME_CONSOLE_TRANSFER_TIMEOUT_BODY: string; GAME_CONSOLE_TRANSFER_TIMEOUT_TITLE: string; GAME_DETECTION_SERVICE: string; GAME_FEED_ACTIVITY_ACTION_PLAY: string; GAME_FEED_ACTIVITY_PLAYING_XBOX: string; GAME_FEED_ACTIVITY_STREAMING_TWITCH: string; GAME_FEED_CURRENT_HEADER_TITLE: string; GAME_FEED_UNKNOWN_PLAYERS: FM<"count", false>; GAME_FEED_USER_PLAYED_DAYS_AGO: FM<"time", false>; GAME_FEED_USER_PLAYED_HOURS_AGO: FM<"time", false>; GAME_FEED_USER_PLAYED_MINUTES_AGO: FM<"time", false>; GAME_FEED_USER_PLAYED_MONTHS_AGO: FM<"time", false>; GAME_FEED_USER_PLAYED_WEEKS_AGO: FM<"time", false>; GAME_FEED_USER_PLAYED_YEARS_AGO: FM<"time", false>; GAME_FEED_USER_PLAYING_FOR_DAYS: FM<"time", false>; GAME_FEED_USER_PLAYING_FOR_HOURS: FM<"time", false>; GAME_FEED_USER_PLAYING_FOR_MINUTES: FM<"time", false>; GAME_FEED_USER_PLAYING_JUST_ENDED: string; GAME_FEED_USER_PLAYING_JUST_STARTED: string; GAME_INVITE_ACTIONS_MENU_LABEL: string; GAME_INVITES: string; GAME_INVITES_DELETE_ALL: string; GAME_INVITES_DELETE_INVITES: string; GAME_INVITES_DELETE_MODAL_SUBTITLE: string; GAME_INVITES_DELETE_MODAL_TITLE: string; GAME_INVITES_EMPTY_STATE_SUBTITLE: string; GAME_INVITES_EMPTY_STATE_TITLE: string; GAME_INVITES_EXPIRED: string; GAME_INVITES_EXPIRED_HEADER: string; GAME_INVITES_INSTALL_GAME: string; GAME_INVITES_INVITE_FROM: FM<"username", false>; GAME_INVITES_JOIN_GAME: string; GAME_INVITES_LAUNCH_GAME: string; GAME_INVITES_LAUNCH_TO_JOIN: string; GAME_INVITES_NOT_DETECTED_TOOLTIP: FM<"gameTitle", false>; GAME_INVITES_RECENT_HEADER: string; GAME_LAUNCH_FAILED_LAUNCH_TARGET_NOT_FOUND: string; GAME_LIBRARY_LAST_PLAYED_DAYS: FM<"time", false>; GAME_LIBRARY_LAST_PLAYED_HOURS: FM<"time", false>; GAME_LIBRARY_LAST_PLAYED_JUST_NOW: string; GAME_LIBRARY_LAST_PLAYED_MINUTES: FM<"time", false>; GAME_LIBRARY_LAST_PLAYED_MONTHS: FM<"time", false>; GAME_LIBRARY_LAST_PLAYED_NONE: string; GAME_LIBRARY_LAST_PLAYED_PLAYING_NOW: string; GAME_LIBRARY_LAST_PLAYED_WEEKS: FM<"time", false>; GAME_LIBRARY_LAST_PLAYED_YEARS: FM<"time", false>; GAME_LIBRARY_LIST_HEADER_LAST_PLAYED: string; GAME_LIBRARY_LIST_HEADER_NAME: string; GAME_LIBRARY_LIST_HEADER_PLATFORM: string; GAME_LIBRARY_NEW: string; GAME_LIBRARY_NOT_APPLICABLE: string; GAME_LIBRARY_NOTIFICATION_GAME_INSTALLED_BODY: FM<"name", false>; GAME_LIBRARY_NOTIFICATION_GAME_INSTALLED_TITLE: string; GAME_LIBRARY_OVERLAY_DISABLED_TOOLTIP: string; GAME_LIBRARY_PRIVATE_TOOLTIP: string; GAME_LIBRARY_TIME_PLAYED_HOURS: FM<"time", false>; GAME_LIBRARY_TIME_PLAYED_MINUTES: FM<"time", false>; GAME_LIBRARY_TIME_PLAYED_NONE: string; GAME_LIBRARY_TIME_PLAYED_SECONDS: FM<"time", false>; GAME_LIBRARY_UPDATES_ACTION_MOVE_UP: string; GAME_LIBRARY_UPDATES_ACTION_PAUSE: string; GAME_LIBRARY_UPDATES_ACTION_REMOVE: string; GAME_LIBRARY_UPDATES_ACTION_RESUME: string; GAME_LIBRARY_UPDATES_HEADER_DISK: string; GAME_LIBRARY_UPDATES_HEADER_NETWORK: string; GAME_LIBRARY_UPDATES_INSTALLING: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_INSTALLING_HOURS: FM<"percent" | "progress" | "timeRemaining" | "total", false>; GAME_LIBRARY_UPDATES_INSTALLING_MINUTES: FM<"percent" | "progress" | "timeRemaining" | "total", false>; GAME_LIBRARY_UPDATES_INSTALLING_SECONDS: FM<"percent" | "progress" | "timeRemaining" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_ALLOCATING_DISK: FM<"percent", false>; GAME_LIBRARY_UPDATES_PROGRESS_FINALIZING: FM<"percent", false>; GAME_LIBRARY_UPDATES_PROGRESS_FINISHED: FM; GAME_LIBRARY_UPDATES_PROGRESS_PAUSED: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_PAUSED_NO_TRANSITION: string; GAME_LIBRARY_UPDATES_PROGRESS_PAUSING: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_PLANNING: FM<"percent", false>; GAME_LIBRARY_UPDATES_PROGRESS_POST_INSTALL_SCRIPTS: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_QUEUED: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_QUEUED_NO_TRANSITION: string; GAME_LIBRARY_UPDATES_PROGRESS_REPAIRING: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_VERIFYING: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_WAITING_FOR_ANOTHER: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_PROGRESS_WAITING_FOR_ANOTHER_NO_TRANSITION: string; GAME_LIBRARY_UPDATES_UPDATING: FM<"percent" | "progress" | "total", false>; GAME_LIBRARY_UPDATES_UPDATING_UPDATING_HOURS: FM<"percent" | "progress" | "timeRemaining" | "total", false>; GAME_LIBRARY_UPDATES_UPDATING_UPDATING_MINUTES: FM<"percent" | "progress" | "timeRemaining" | "total", false>; GAME_LIBRARY_UPDATES_UPDATING_UPDATING_SECONDS: FM<"percent" | "progress" | "timeRemaining" | "total", false>; GAME_POPOUT_FOLLOW: string; GAME_POPOUT_NITRO_UPSELL: string; GAME_POPOUT_VIEW_SERVER: string; GAME_PROFILE: string; GAME_PROFILE_ALSO_PLAYING: string; GAME_PROFILE_EMPTY_FRIENDS_WHO_PLAY: string; GAME_PROFILE_FOLLOW_TOOLTIP: string; GAME_PROFILE_FRIENDS_WHO_PLAY_TAB: string; GAME_PROFILE_GAME_ARTWORK_ALT: FM<"game", false>; GAME_PROFILE_GAME_ICON_ALT: FM<"game", false>; GAME_PROFILE_GAME_LOGO_ALT: FM<"game", false>; GAME_PROFILE_GAME_REACT_REPLY_ALT: FM<"gameName" | "userName", false>; GAME_PROFILE_GUILD_ICON_ALT: FM<"guildName", false>; GAME_PROFILE_GUILDS_TAB: string; GAME_PROFILE_LINK_OFFICIAL: string; GAME_PROFILE_LINK_TWITTER: string; GAME_PROFILE_LINK_YOUTUBE: string; GAME_PROFILE_LINKS: string; GAME_PROFILE_NONE: string; GAME_PROFILE_OFFICIAL_GUILD: string; GAME_PROFILE_PLATFORMS: string; GAME_PROFILE_PUBLISHER: string; GAME_PROFILE_Q1_ACHIEVEMENTS: string; GAME_PROFILE_Q1_NEWS: string; GAME_PROFILE_Q1_WHEN_FRIENDS_PLAY: string; GAME_PROFILE_Q2_FOLLOW_DEV: string; GAME_PROFILE_Q2_GAMES_FRIENDS_PLAY: string; GAME_PROFILE_Q2_GAMES_I_PLAY_NOW: string; GAME_PROFILE_Q2_GAMES_I_WANT_TO_PLAY: string; GAME_PROFILE_Q2_GENRES: string; GAME_PROFILE_QUESTION_BENEFITS: string; GAME_PROFILE_QUESTION_GAME_TYPES: string; GAME_PROFILE_SCREENSHOTS: string; GAME_PROFILE_SEE_ALL_ENTRIES: string; GAME_PROFILE_SOMETHING_WENT_WRONG: string; GAME_PROFILE_SURVEY_INTRO: string; GAME_PROFILE_SURVEY_NOTIFY_ME: string; GAME_PROFILE_SURVEY_PROGRESS: FM<"step" | "total", false>; GAME_PROFILE_SURVEY_SELECT_ALL: string; GAME_PROFILE_SURVEY_TY: string; GAME_PROFILE_SURVEY_TY_MORE: string; GAME_PROFILE_UNFOLLOW_GAME: string; GAME_PROFILE_UNFOLLOW_TOOLTIP: string; GAME_PROFILE_USER_AVATAR_ALT: FM<"userName", false>; GAME_PROFILE_VIEW_MORE: string; GAMES: string; GDM_BLOCKED_USER_WARNING_BANNER_DESCRIPTION: string; GDM_BLOCKED_USER_WARNING_INVITE_NEEDED: string; GDM_BLOCKED_USER_WARNING_LEAVE: string; GDM_BLOCKED_USER_WARNING_LEAVE_GROUP_MODAL: string; GDM_BLOCKED_USER_WARNING_NO_NOTIFY: string; GDM_BLOCKED_USER_WARNING_STAY: string; GDM_MULTIPLE_BLOCKED_USERS_WARNING_HEADER_BANNER: string; GDM_MULTIPLE_BLOCKED_USERS_WARNING_HEADER_MODAL: string; GDM_MULTIPLE_BLOCKED_USERS_WARNING_PRESENCE: FM<"blockedUserCount", false>; GDM_SINGLE_BLOCKED_USER_WARNING_HEADER_BANNER: string; GDM_SINGLE_BLOCKED_USER_WARNING_HEADER_MODAL: string; GDM_SINGLE_BLOCKED_USER_WARNING_PRESENCE: FM<"userName", false>; GENERAL_PERMISSIONS: string; GENERATE_A_NEW_LINK: string; GENERIC_ACTIONS_MENU_LABEL: string; GENERIC_CAPTCHA_DESCRIPTION: string; GENERIC_CAPTCHA_HEADER: string; GENERIC_ERROR_BODY: string; GENERIC_ERROR_TITLE: string; GENERIC_FEEDBACK_THANKS: string; GENERIC_FORMATTED_LIST_FOUR: FM<[never, "a" | "b" | "c" | "d"], true>; GENERIC_FORMATTED_LIST_THREE: FM<[never, "a" | "b" | "c"], true>; GENERIC_FORMATTED_LIST_TWO: FM<[never, "a" | "b"], true>; GEO_RESTRICTED_MODAL_BODY: FM<"serverName", true>; GEO_RESTRICTED_MODAL_TITLE: string; GET_FREE_TRIAL: FM<"freeTrialText", false>; GET_STARTED: string; GET_THE_APP: string; GET_XBOX_APP: string; GET_XBOX_APP_BODY: string; GET_XBOX_APP_CANCEL: string; GIF: string; GIF_AUTO_PLAY_LABEL: string; GIF_AUTO_PLAY_LABEL_MOBILE: string; GIF_BUTTON_LABEL: string; GIF_CATEGORY_A11Y_LABEL: FM<"categoryName", false>; GIF_PICKER_ENTER_SEARCH: string; GIF_PICKER_RELATED_SEARCH: string; GIF_PICKER_RESULT_TYPE_TRENDING_GIFS: string; GIF_TOOLTIP_ADD_TO_FAVORITES: string; GIF_TOOLTIP_FAVORITED_PICKER_BUTTON: string; GIF_TOOLTIP_REMOVE_FROM_FAVORITES: string; GIFT_CARD_PREVIEW: string; GIFT_CARD_SELECTION: string; GIFT_CODE_AUTH_ACCEPT: string; GIFT_CODE_AUTH_ACCEPTING: string; GIFT_CODE_AUTH_CHECK_VERIFICATION_AGAIN: string; GIFT_CODE_AUTH_CONTINUE_IN_BROWSER: string; GIFT_CODE_AUTH_FETCHING_USER: string; GIFT_CODE_AUTH_GIFTED: string; GIFT_CODE_AUTH_GIFTED_BY: FM<"username", false>; GIFT_CODE_AUTH_GIFTED_SUBSCRIPTION_MONTHLY: FM<"intervalCount" | "skuName", false>; GIFT_CODE_AUTH_GIFTED_SUBSCRIPTION_YEARLY: FM<"intervalCount" | "skuName", false>; GIFT_CODE_AUTH_HELP_TEXT_CLAIMED: string; GIFT_CODE_AUTH_HELP_TEXT_OWNED: FM<"libraryLink", true>; GIFT_CODE_AUTH_HELP_TEXT_VERIFICATION_REQUIRED: string; GIFT_CODE_AUTH_INVALID_BODY: string; GIFT_CODE_AUTH_INVALID_TIP: string; GIFT_CODE_AUTH_INVALID_TITLE: string; GIFT_CODE_AUTH_LOGGED_IN_AS: FM<"userTag", true>; GIFT_CODE_AUTH_RESOLVING: string; GIFT_CODE_AUTH_VERIFICATION_SENT: string; GIFT_CODE_AUTH_VERIFICATION_TITLE: FM<"username", false>; GIFT_CODE_CANNOT_ACCEPT_BODY_IOS: string; GIFT_CODE_PAYMENT_SOURCE_INVALID: string; GIFT_CODE_SMITE_REJECT_HELP_TEXT: string; GIFT_CONFIRMATION_BODY_CLAIMED: string; GIFT_CONFIRMATION_BODY_CONFIRM: FM<"skuName", false>; GIFT_CONFIRMATION_BODY_CONFIRM_NITRO: FM<"skuName" | "timeFrame", true>; GIFT_CONFIRMATION_BODY_CONFIRM_NITRO_DISCLAIMER: FM<"helpdeskArticle", true>; GIFT_CONFIRMATION_BODY_ERROR_INVOICE_OPEN: string; GIFT_CONFIRMATION_BODY_ERROR_NITRO_UPGRADE_DOWNGRADE: string; GIFT_CONFIRMATION_BODY_ERROR_SUBSCRIPTION_MANAGED: string; GIFT_CONFIRMATION_BODY_INVALID: string; GIFT_CONFIRMATION_BODY_OWNED: FM; GIFT_CONFIRMATION_BODY_SELF_GIFT_NO_PAYMENT: string; GIFT_CONFIRMATION_BODY_SUBSCRIPTION_MONTHLY_CONFIRM: FM<"intervalCount" | "skuName", true>; GIFT_CONFIRMATION_BODY_SUBSCRIPTION_YEARLY_CONFIRM: FM<"intervalCount" | "skuName", true>; GIFT_CONFIRMATION_BODY_SUCCESS: FM<"skuName", false>; GIFT_CONFIRMATION_BODY_SUCCESS_GENERIC_SUBSCRIPTION_MONTHLY: FM<"intervalCount" | "skuName", false>; GIFT_CONFIRMATION_BODY_SUCCESS_GENERIC_SUBSCRIPTION_YEARLY: FM<"intervalCount" | "skuName", false>; GIFT_CONFIRMATION_BODY_SUCCESS_MOBILE: FM<"skuName", true>; GIFT_CONFIRMATION_BODY_SUCCESS_NITRO_CLASSIC_MOBILE: FM<"timeFrame", false>; GIFT_CONFIRMATION_BODY_SUCCESS_NITRO_MOBILE: FM<"timeframe", false>; GIFT_CONFIRMATION_BODY_SUCCESS_PREMIUM_TIER_1_MONTHLY: FM<"intervalCount", false>; GIFT_CONFIRMATION_BODY_SUCCESS_PREMIUM_TIER_1_YEARLY: FM<"intervalCount", false>; GIFT_CONFIRMATION_BODY_SUCCESS_PREMIUM_TIER_2_MONTHLY: FM<"intervalCount", false>; GIFT_CONFIRMATION_BODY_SUCCESS_PREMIUM_TIER_2_YEARLY: FM<"intervalCount", false>; GIFT_CONFIRMATION_BODY_UNKNOWN_ERROR: string; GIFT_CONFIRMATION_BUTTON_CONFIRM: string; GIFT_CONFIRMATION_BUTTON_CONFIRM_MOBILE: string; GIFT_CONFIRMATION_BUTTON_CONFIRM_SUBSCRIPTION: string; GIFT_CONFIRMATION_BUTTON_FAIL: string; GIFT_CONFIRMATION_BUTTON_GO_TO_LIBRARY: string; GIFT_CONFIRMATION_BUTTON_NOICE: string; GIFT_CONFIRMATION_BUTTON_SUBSCRIPTION_SUCCESS: string; GIFT_CONFIRMATION_BUTTON_SUCCESS_MOBILE: string; GIFT_CONFIRMATION_HEADER_CONFIRM: string; GIFT_CONFIRMATION_HEADER_CONFIRM_NITRO: FM<"skuName", false>; GIFT_CONFIRMATION_HEADER_FAIL: string; GIFT_CONFIRMATION_HEADER_SUCCESS: string; GIFT_CONFIRMATION_HEADER_SUCCESS_NITRO: FM<"skuName", false>; GIFT_CONFIRMATION_NITRO_TIME_FRAME_MONTHS: FM<"time", false>; GIFT_CONFIRMATION_NITRO_TIME_FRAME_YEARS: FM<"time", false>; GIFT_DURATION: FM<"timeInterval", false>; GIFT_EMBED_BODY_CLAIMED_OTHER: string; GIFT_EMBED_BODY_CLAIMED_SELF: FM<"skuName", true>; GIFT_EMBED_BODY_CLAIMED_SELF_MOBILE: string; GIFT_EMBED_BODY_CLAIMED_SELF_SUBSCRIPTION: string; GIFT_EMBED_BODY_DEFAULT: FM<"username", true>; GIFT_EMBED_BODY_GIVEAWAY: FM<"skuName" | "totalCopies" | "username", true>; GIFT_EMBED_BODY_NO_USER_DEFAULT: string; GIFT_EMBED_BODY_NO_USER_GIVEAWAY: FM<"skuName" | "totalCopies", false>; GIFT_EMBED_BODY_OWNED: FM<"skuName", true>; GIFT_EMBED_BODY_REQUIRES_VERIFICATION: FM; GIFT_EMBED_BODY_REQUIRES_VERIFICATION_EMAIL: FM; GIFT_EMBED_BODY_REQUIRES_VERIFICATION_EMAIL_MOBILE: string; GIFT_EMBED_BODY_REQUIRES_VERIFICATION_MOBILE: string; GIFT_EMBED_BODY_SELF: string; GIFT_EMBED_BODY_SELF_NOT_REDEEMABLE: FM<"skuName", false>; GIFT_EMBED_BODY_SUBSCRIPTION_ALREADY_ACTIVE: string; GIFT_EMBED_BODY_SUBSCRIPTION_DEFAULT_MONTHS: FM<"intervalCount" | "skuName" | "username", true>; GIFT_EMBED_BODY_SUBSCRIPTION_DEFAULT_YEARS: FM<"intervalCount" | "skuName" | "username", true>; GIFT_EMBED_BODY_SUBSCRIPTION_GIVEAWAY: FM<"maxUses" | "skuName" | "username", true>; GIFT_EMBED_BODY_SUBSCRIPTION_MISMATCH: FM<"planName", false>; GIFT_EMBED_BODY_SUBSCRIPTION_NO_USER_DEFAULT_MONTHS: FM<"intervalCount" | "skuName", true>; GIFT_EMBED_BODY_SUBSCRIPTION_NO_USER_DEFAULT_YEARS: FM<"intervalCount" | "skuName", true>; GIFT_EMBED_BODY_SUBSCRIPTION_NO_USER_GIVEAWAY: FM<"maxUses" | "skuName", false>; GIFT_EMBED_BUTTON_ACCEPT: string; GIFT_EMBED_BUTTON_CLAIM: string; GIFT_EMBED_BUTTON_CLAIMED: string; GIFT_EMBED_BUTTON_CLAIMING: string; GIFT_EMBED_BUTTON_OPEN: string; GIFT_EMBED_BUTTON_OWNED: string; GIFT_EMBED_COPIES_LEFT: FM<"remaining" | "total", false>; GIFT_EMBED_EXPIRATION: FM<"hours", false>; GIFT_EMBED_HEADER_OWNER_INVALID: string; GIFT_EMBED_HEADER_RECEIVER_INVALID: string; GIFT_EMBED_INFO_OWNER_INVALID: string; GIFT_EMBED_INFO_RECEIVER_INVALID: string; GIFT_EMBED_INVALID: string; GIFT_EMBED_INVALID_TAGLINE_OTHER: string; GIFT_EMBED_INVALID_TAGLINE_SELF: string; GIFT_EMBED_INVALID_TITLE_OTHER: string; GIFT_EMBED_INVALID_TITLE_SELF: string; GIFT_EMBED_RESOLVING: string; GIFT_EMBED_SUBSCRIPTIONS_LEFT: FM<"remaining" | "total", false>; GIFT_EMBED_TAGLINE_PROMOTION: string; GIFT_EMBED_TITLE: string; GIFT_EMBED_TITLE_PROMOTION: string; GIFT_EMBED_TITLE_SELF: string; GIFT_EMBED_TITLE_SUBSCRIPTION: string; GIFT_EMBED_TITLE_SUBSCRIPTION_SELF: string; GIFT_INVENTORY: string; GIFT_INVENTORY_AVAILABLE_GIFTS: string; GIFT_INVENTORY_CLAIM_GIFT: string; GIFT_INVENTORY_COPIES: FM<"copies", false>; GIFT_INVENTORY_EXPIRES_IN: FM<"hours", false>; GIFT_INVENTORY_EXPIRES_IN_MOBILE: FM<["hours", "revokeHook"], true>; GIFT_INVENTORY_GENERATE_HELP: string; GIFT_INVENTORY_GENERATE_LINK: string; GIFT_INVENTORY_GENERATE_LINK_IOS: string; GIFT_INVENTORY_GIFTS_YOU_PURCHASED: string; GIFT_INVENTORY_HIDDEN: string; GIFT_INVENTORY_NO_GIFTS: string; GIFT_INVENTORY_NO_GIFTS_SUBTEXT: FM; GIFT_INVENTORY_NO_GIFTS_SUBTEXT_MOBILE: string; GIFT_INVENTORY_REDEEM_CODES: string; GIFT_INVENTORY_SELECT_NITRO_CLASSIC_GIFT: string; GIFT_INVENTORY_SELECT_NITRO_GIFT: string; GIFT_INVENTORY_SUBSCRIPTION_MONTHS: FM<"intervalCount" | "skuName", false>; GIFT_INVENTORY_SUBSCRIPTION_YEARS: FM<"intervalCount" | "skuName", false>; GIFT_INVENTORY_YOUR_GIFTS: string; GIFT_NITRO: string; GIFT_NITRO_ACTION: string; GIFT_NITRO_BENEFITS: string; GIFT_NITRO_TIER_0: string; GIFT_OPEN_PROMPT: string; GIFT_OPTIONAL_MESSAGE: string; GIFT_PREVIEW: string; GIFT_PURCHASE_GOOGLE_PLAY_NOTICE: string; GIFT_PURCHASE_GOOGLE_PLAY_NOTICE_EXTENDED: FM; GIFT_PURCHASE_REVIEW: string; GIFT_RECIPIENT_INFO: FM<"recipientDisplayName", false>; GIFT_RECIPIENT_NOTIFICATION: FM<"recipientDisplayName", false>; GIFT_SELECT_EMOJI: string; GIFT_SELECT_SOUND: string; GIFT_SELECT_SOUNDBOARD_ADD: string; GIFT_SELECT_SOUNDBOARD_OR_EMOJI_DESCRIPTION: string; GIFT_SUBSCRIPTION_INFO_SENDER_UNKNOWN: FM<"timeInterval", false>; GIFT_SUBSCRIPTION_SELECTION: string; GLOBAL_DISCOVERY_APPS_TITLE: string; GLOBAL_DISCOVERY_MORE_MENU_A11Y: string; GLOBAL_DISCOVERY_QUESTS_TITLE: string; GLOBAL_DISCOVERY_SEARCH_PLACEHOLDER: FM<"title", false>; GLOBAL_DISCOVERY_SERVERS_BROWSE_CATEGORIES: string; GLOBAL_DISCOVERY_SERVERS_EDUCATION_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_EDUCATION_DESCRIPTION: string; GLOBAL_DISCOVERY_SERVERS_EDUCATION_TITLE: string; GLOBAL_DISCOVERY_SERVERS_ENTERTAINMENT_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_ENTERTAINMENT_DESCRIPTION: string; GLOBAL_DISCOVERY_SERVERS_ENTERTAINMENT_TITLE: string; GLOBAL_DISCOVERY_SERVERS_FEATURED_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_GAMING_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_GAMING_DESCRIPTION: string; GLOBAL_DISCOVERY_SERVERS_GAMING_TITLE: string; GLOBAL_DISCOVERY_SERVERS_GUILDS_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_GUILDS_HERO_DESCRIPTION: string; GLOBAL_DISCOVERY_SERVERS_GUILDS_HERO_DESCRIPTION_NUX_COMPLETED: string; GLOBAL_DISCOVERY_SERVERS_GUILDS_HERO_TITLE: string; GLOBAL_DISCOVERY_SERVERS_GUILDS_HERO_TITLE_2: FM; GLOBAL_DISCOVERY_SERVERS_HUB_DESCRIPTION: string; GLOBAL_DISCOVERY_SERVERS_HUB_TITLE: string; GLOBAL_DISCOVERY_SERVERS_HUBS_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_LANGUAGE_FILTER: string; GLOBAL_DISCOVERY_SERVERS_MUSIC_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_MUSIC_DESCRIPTION: string; GLOBAL_DISCOVERY_SERVERS_MUSIC_TITLE: string; GLOBAL_DISCOVERY_SERVERS_POPULAR_EDUCATION: string; GLOBAL_DISCOVERY_SERVERS_POPULAR_ENTERTAINMENT: string; GLOBAL_DISCOVERY_SERVERS_POPULAR_FEATURED: string; GLOBAL_DISCOVERY_SERVERS_POPULAR_GAMING: string; GLOBAL_DISCOVERY_SERVERS_POPULAR_MUSIC: string; GLOBAL_DISCOVERY_SERVERS_POPULAR_TECH: string; GLOBAL_DISCOVERY_SERVERS_SEARCH_RESULTS_HEADER: FM<"query", false>; GLOBAL_DISCOVERY_SERVERS_TECH_CATEGORY: string; GLOBAL_DISCOVERY_SERVERS_TECH_DESCRIPTION: string; GLOBAL_DISCOVERY_SERVERS_TECH_TITLE: string; GLOBAL_DISCOVERY_SERVERS_TITLE: string; GLOBAL_DISCOVERY_SHOP_TITLE: string; GLOBAL_DISCOVERY_SHOW: string; GLOBAL_DISCOVERY_TITLE: string; GO_BACK: string; GO_LIVE_HEY: string; GO_LIVE_LISTEN: string; GO_LIVE_LOOK: string; GO_LIVE_MODAL_ANY: string; GO_LIVE_MODAL_ANY_CTA: string; GO_LIVE_MODAL_APP: string; GO_LIVE_MODAL_APP_CTA: string; GO_LIVE_MODAL_APPLICATION_FORM_TITLE: string; GO_LIVE_MODAL_APPLICATIONS: string; GO_LIVE_MODAL_CAPTURE_HEADER: string; GO_LIVE_MODAL_CTA: string; GO_LIVE_MODAL_CURRENT_CHANNEL_FORM_TITLE: string; GO_LIVE_MODAL_DESCRIPTION_SELECT_NATIVE_SOURCE: FM<"buttonName", false>; GO_LIVE_MODAL_DESCRIPTION_SELECT_SOURCE: string; GO_LIVE_MODAL_DISABLE_STREAM_PREVIEWS: string; GO_LIVE_MODAL_ENABLE_APP_SOUNDSHARE_LABEL: string; GO_LIVE_MODAL_ENABLE_SCREEN_SOUNDSHARE_LABEL: string; GO_LIVE_MODAL_HARDWARE_WARNING_INFOBOX: FM; GO_LIVE_MODAL_NATIVE_SELECT_CTA: string; GO_LIVE_MODAL_NOTIFY_FRIENDS_CHECKBOX_LABEL: string; GO_LIVE_MODAL_OVERFLOW_FOUR_OR_MORE_USERS: FM<"nickname0" | "nickname1" | "remainingCount", false>; GO_LIVE_MODAL_OVERFLOW_THREE_USERS: FM<"nickname0" | "nickname1" | "nickname2", false>; GO_LIVE_MODAL_OVERFLOW_TWO_USERS: FM<"nickname0" | "nickname1", false>; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_ENDED_UPSELL_BODY: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_ENDED_UPSELL_TITLE: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_POPOUT_BODY: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_POPOUT_CTA_V2: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_UPSELL_BODY: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_V2_DURATION_MODAL_BODY_1_DAY: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_V2_DURATION_MODAL_BODY_MANY_DAYS: FM<"days", false>; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_V2_DURATION_POPOUT_BODY: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_V2_DURATION_UPSELL_BODY: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_OPT_IN_V2_DURATION_UPSELL_TITLE: string; GO_LIVE_MODAL_PERK_DEMO_HD_STREAMING_UPSELL_TOOLTIP: string; GO_LIVE_MODAL_SCREEN: string; GO_LIVE_MODAL_SCREEN_CTA: string; GO_LIVE_MODAL_SCREENS: string; GO_LIVE_MODAL_SCREENSHARE_HEADER: string; GO_LIVE_MODAL_SELECT_CHANNEL_FORM_TITLE: string; GO_LIVE_MODAL_TITLE: string; GO_LIVE_MODAL_WINDOW: string; GO_LIVE_MODAL_WINDOW_CTA: string; GO_LIVE_SCREENSHARE_NO_SOUND: string; GO_LIVE_SCREENSHARE_UPDATE_MACOS_FOR_SOUNDSHARE: string; GO_LIVE_SCREENSHARE_UPDATE_WINDOWS_FOR_SOUNDSHARE: string; GO_LIVE_SHARE_SCREEN: string; GO_LIVE_SUBTITLE: string; GO_LIVE_TILE_SCREEN: FM<"username", false>; GO_LIVE_USER_PLAYING: FM<"applicationName" | "username", false>; GO_LIVE_VIDEO_DRIVERS_OUTDATED: string; GO_LIVE_WATCHING_USER: FM<"username", false>; GO_TO_CHANNEL: string; GOOGLE_PLAY_PREMIUM_TRIAL_DISCLAIMER: FM<"cancelURL" | "interval" | "paidURL", true>; GOOGLE_PLAY_TRIAL_PAYMENT_FLOW_CTA: string; GOT_IT: string; GPLAY_BILLING_ALERT_BODY: string; GPLAY_BILLING_ALERT_TITLE: string; GPLAY_BILLING_CONNECTION_ERROR: string; GPLAY_BILLING_VALIDATE_FAILURE: string; GPLAY_BILLING_VALIDATE_FAILURE_RELOAD: string; GRANT_GUEST_MEMBERSHIP: string; GRANT_GUEST_MEMBERSHIP_VOICE_ONLY: string; GRANT_TEMPORARY_MEMBERSHIP: string; GREEN: string; GREY: string; GROUP_DM: string; GROUP_DM_ADD_ERROR: string; GROUP_DM_ADD_FRIENDS: string; GROUP_DM_ADD_MEMBERS_COUNT: FM<"maxMemberLimit" | "numMembers", false>; GROUP_DM_ALONE: FM<"name", false>; GROUP_DM_CREATE_MEMBERS_COUNT: FM<"maxMemberLimit" | "numMembers", false>; GROUP_DM_CREATE_SHARE_LINK_WHEN_READY: string; GROUP_DM_HEADER: string; GROUP_DM_INVITE_CONFIRM: string; GROUP_DM_INVITE_CONFIRM_BUTTON: string; GROUP_DM_INVITE_CONFIRM_DESCRIPTION: string; GROUP_DM_INVITE_EMPTY: string; GROUP_DM_INVITE_FULL_MAIN: string; GROUP_DM_INVITE_FULL_SUB: string; GROUP_DM_INVITE_FULL_SUB2: FM<"number", false>; GROUP_DM_INVITE_LINK_CREATE: string; GROUP_DM_INVITE_LINK_EXAMPLE: string; GROUP_DM_INVITE_LINK_EXPIRE_24_HOURS: string; GROUP_DM_INVITE_LINK_MOBILE_TITLE: string; GROUP_DM_INVITE_LINK_SHARE_MESSAGE: FM<"link" | "username", false>; GROUP_DM_INVITE_LINK_TITLE: string; GROUP_DM_INVITE_NO_FRIENDS: string; GROUP_DM_INVITE_NONE_REMAINING: string; GROUP_DM_INVITE_NOT_FRIENDS: FM<"username", true>; GROUP_DM_INVITE_REMAINING: FM<"number", false>; GROUP_DM_INVITE_SELECT_EXISTING: string; GROUP_DM_INVITE_TO: string; GROUP_DM_INVITE_UNSELECT_USERS: FM<"number", false>; GROUP_DM_INVITE_WILL_FILL_MOBILE: string; GROUP_DM_INVITE_WITH_NAME: FM<"groupname", false>; GROUP_DM_MEMBER_COUNT: FM<"members", false>; GROUP_DM_MULTIPLE_USER_SUMMARY: FM<"extras" | "user1" | "user2", false>; GROUP_DM_SEARCH_PLACEHOLDER: string; GROUP_DM_SINGLE_USER_SUMMARY: FM<"user", false>; GROUP_DM_TWO_USER_SUMMARY: FM<"user1" | "user2", false>; GROUP_DM_UPSELL_LINK_NOTICE: string; GROUP_DM_UPSELL_MSG_NOTICE: string; GROUP_DM_UPSELL_TEXT: string; GROUP_DMS: string; GROUP_MESSAGE_A11Y_LABEL: FM<"channelName", false>; GROUP_MESSAGE_A11Y_LABEL_WITH_UNREADS: FM<"channelName", false>; GROUP_NAME: string; GROUP_NAME_PROMPT: string; GROUP_OWNER: string; GROUPS: string; GUEST_INVITE_EMBED_TITLE_RECEIVER: string; GUEST_INVITE_EMBED_TITLE_SENDER: string; GUEST_MEMBERSHIP_EXPLANATION: string; GUEST_NAME_SUFFIX: string; GUILD_ACTIONS_MENU_LABEL: string; GUILD_ANALYICS_DEVELOPERS_BUTTON: string; GUILD_ANALYTICS_DESCRIPTION: FM; GUILD_ANALYTICS_DEVELOPERS_CTA: string; GUILD_ANALYTICS_ERROR_GUILD_SIZE: string; GUILD_ANALYTICS_ERROR_MESSAGE: string; GUILD_ANALYTICS_METRICS_LAST_WEEK: string; GUILD_ANTIRAID_EMBED_RESOLVE_REASON_DM_SPAM: string; GUILD_ANTIRAID_EMBED_RESOLVE_REASON_JOIN_RAID: string; GUILD_ANTIRAID_EMBED_RESOLVE_REASON_NO_ACTION: string; GUILD_ANTIRAID_EMBED_RESOLVE_REASON_OTHER: string; GUILD_ANTIRAID_LOCKDOWN_FEEDBACK_CHANGING_SETTINGS: string; GUILD_ANTIRAID_LOCKDOWN_FEEDBACK_CHANNEL_SPAM: string; GUILD_ANTIRAID_LOCKDOWN_FEEDBACK_DM_SPAM: string; GUILD_ANTIRAID_LOCKDOWN_FEEDBACK_MENTION_SPAM: string; GUILD_ANTIRAID_LOCKDOWN_FEEDBACK_OTHER: string; GUILD_ANTIRAID_LOCKDOWN_FEEDBACK_SUBMIT: string; GUILD_ANTIRAID_LOCKDOWN_FEEDBACK_SUS_NEW_MEMBERS: string; GUILD_ANTIRAID_LOCKDOWN_NAGBAR_ACTION: string; GUILD_ANTIRAID_NAGBAR_ACTION: string; GUILD_ANTIRAID_NAGBAR_ACTION_VIEW: string; GUILD_ANTIRAID_NAGBAR_DM_RAID_BODY: string; GUILD_ANTIRAID_NAGBAR_DM_RAID_MESSAGE_2_NEW: FM<"guildName", false>; GUILD_ANTIRAID_NAGBAR_EDIT_ACTION: string; GUILD_ANTIRAID_NAGBAR_MANAGE_ALERTS: string; GUILD_ANTIRAID_NAGBAR_MESSAGE_2_NEW: FM<"guildName", false>; GUILD_ANTIRAID_NAGBAR_RAID_BODY: string; GUILD_ANTIRAID_NAGBAR_RAID_MESSAGE_2_NEW: FM<"guildName", false>; GUILD_ANTIRAID_PAUSE_DMS_AND_JOINS_NAGBAR_MESSAGE_NEW: FM<"guildName" | "time", false>; GUILD_ANTIRAID_PAUSE_DMS_NAGBAR_MESSAGE_NEW: FM<"guildName" | "time", false>; GUILD_ANTIRAID_PAUSE_JOINS_NAGBAR_MESSAGE_NEW: FM<"guildName" | "time", false>; GUILD_ANTIRAID_RAID_ALERT: string; GUILD_ANTIRAID_RESOLVE_DESCRIPTION: string; GUILD_ANTIRAID_RESOLVE_REASON_DM_SPAM: string; GUILD_ANTIRAID_RESOLVE_REASON_JOIN_RAID: string; GUILD_ANTIRAID_RESOLVE_REASON_LEGITIMATE_ACTIVITY: string; GUILD_ANTIRAID_SAFETY_CHANNEL_DESCRIPTION: string; GUILD_ANTIRAID_SAFETY_CHANNEL_TITLE: string; GUILD_ANTIRAID_SAFETY_JOIN_RAIDS_TITLE: string; GUILD_ANTIRAID_SAFETY_MENTION_RAIDS_TITLE: string; GUILD_ANTIRAID_SAFETY_SETUP_CHANNEL_MANAGE_ACTION: string; GUILD_ANTIRAID_SAFETY_SETUP_CHANNEL_MODAL_CHANNEL_PERMISSIONS_NOTICE: string; GUILD_ANTIRAID_SAFETY_SETUP_CHANNEL_MODAL_DESCRIPTION: string; GUILD_ANTIRAID_SAFETY_SETUP_CHANNEL_MODAL_ENABLE_ALERTS: string; GUILD_ANTIRAID_SAFETY_SETUP_CHANNEL_MODAL_TITLE: string; GUILD_ANTIRAID_SAFETY_SETUP_CHANNEL_SETUP_ACTION: string; GUILD_ANTIRAID_SAFETY_SETUP_DESCRIPTION: string; GUILD_ANTIRAID_SAFETY_SETUP_ENABLE_TIP: FM; GUILD_ANTIRAID_SAFETY_SETUP_ERROR: string; GUILD_ANTIRAID_SAFETY_SETUP_IN_AUTOMOD_ACTION: string; GUILD_ANTIRAID_SAFETY_SETUP_NO_EXPERIMENT_ACTION: string; GUILD_ANTIRAID_SAFETY_SETUP_TITLE: string; GUILD_ANTIRAID_SETTING_CHANNEL_LABEL: string; GUILD_ANTIRAID_SETTING_CHANNEL_NONE: string; GUILD_ANTIRAID_SETTING_CHANNEL_NONE_LABEL: string; GUILD_ANTIRAID_SETTING_ENABLED: string; GUILD_ANTIRAID_SETTING_ENABLED_ALERTS: string; GUILD_ANTIRAID_SETTING_PROTECTION_LABEL: string; GUILD_ANTIRAID_UPSELL_ASSET_HEADER: string; GUILD_ANTIRAID_UPSELL_CONTENT: FM; GUILD_ANTIRAID_UPSELL_CTA: string; GUILD_ANTIRAID_UPSELL_DISMISSAL: string; GUILD_ANTIRAID_UPSELL_HEADER: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_CUSTOM_MESSAGE_CTA: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_CUSTOM_MESSAGE_HELPER: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_DESCRIPTION: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_DESCRIPTION_MENTION_SPAM: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_DESCRIPTION_ML_SPAM: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_DESCRIPTION_SPAM_LINK: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_MODAL_CUSTOM_MESSAGE_PLACEHOLDER: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_MODAL_DESCRIPTION: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_MODAL_TITLE: string; GUILD_AUTOMOD_ACTIONS_BLOCK_MESSAGE_NAME: string; GUILD_AUTOMOD_ACTIONS_DISABLE_GUILD_COMMUNICATION_FOR_USER: string; GUILD_AUTOMOD_ACTIONS_DISABLE_GUILD_COMMUNICATION_FOR_USER_DESCRIPTION: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_DESCRIPTION: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_DISPLAY_HELPER: FM<"channelName", true>; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_EDIT_HELPER: FM<"channelName", true>; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_MODAL_CHANNEL_HELPER: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_MODAL_CHANNEL_PLACEHOLDER: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_MODAL_DESCRIPTION: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_MODAL_EDIT: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_MODAL_ERROR_NO_CHANNEL: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_MODAL_SUBMIT: string; GUILD_AUTOMOD_ACTIONS_FLAG_TO_CHANNEL_NAME: string; GUILD_AUTOMOD_ACTIONS_HEADER: string; GUILD_AUTOMOD_ACTIONS_MODERATE_USER: FM<"nick", false>; GUILD_AUTOMOD_ACTIONS_QUARANTINE_USER: string; GUILD_AUTOMOD_ACTIONS_QUARANTINE_USER_DESCRIPTION: string; GUILD_AUTOMOD_ACTIONS_TIMEOUT_EDIT_HELPER: FM<"friendlyDurationString", true>; GUILD_AUTOMOD_ACTIONS_TIMEOUT_EDIT_HELPER_MENTION_SPAM: FM<"friendlyDurationString", true>; GUILD_AUTOMOD_ACTIONS_TIMEOUT_UPDATE_DURATION: string; GUILD_AUTOMOD_ACTIONS_USER_COMMUNICATION_DISABLED: string; GUILD_AUTOMOD_ACTIONS_USER_DISABLE_COMMUNICATION_DISPLAY_HELPER: FM<"duration", true>; GUILD_AUTOMOD_ADD_ADDITIONAL_RULE: FM<"ruleName", false>; GUILD_AUTOMOD_ADD_KEYWORD_TO_RULE_CONFIRM_DESCRIPTION: FM<"keyword" | "ruleName", true>; GUILD_AUTOMOD_ADD_KEYWORD_TO_RULE_CONFIRM_TITLE: string; GUILD_AUTOMOD_ADD_NEW_RULE: string; GUILD_AUTOMOD_ADD_SELECTION: FM<"keywordCount", false>; GUILD_AUTOMOD_ADD_SELECTION_TOAST_ERROR: string; GUILD_AUTOMOD_ADD_SELECTION_TOAST_SUCCESS: string; GUILD_AUTOMOD_ALERT_ACTION_ICON_TOOLTIP_DELETE_MESSAGE: FM<"timestamp" | "userName", false>; GUILD_AUTOMOD_ALERT_ACTION_ICON_TOOLTIP_SET_COMPLETED: FM<"timestamp" | "userName", false>; GUILD_AUTOMOD_ALERT_ACTION_ICON_TOOLTIP_SUBMIT_FEEDBACK: FM<"timestamp" | "userName", false>; GUILD_AUTOMOD_ALERT_DELETE_MEMBERS_MESSAGE: string; GUILD_AUTOMOD_ALERT_SET_COMPLETED: string; GUILD_AUTOMOD_ALERT_UNSET_COMPLETED: string; GUILD_AUTOMOD_ALLOW_LIST_SUBTITLE: string; GUILD_AUTOMOD_ALLOW_LIST_TITLE: string; GUILD_AUTOMOD_ANDROID_BACKGROUND_CONTENT_DESCRIPTION: string; GUILD_AUTOMOD_BIO_INVALID_MODAL_DESCRIPTION_MOBILE: string; GUILD_AUTOMOD_BLOCKED_MESSAGE_EDIT_NOTICE: string; GUILD_AUTOMOD_BLOCKED_MESSAGE_EDIT_POSTFIX: string; GUILD_AUTOMOD_BLOCKED_MESSAGE_LEARN_MORE: FM<"helpUrl", true>; GUILD_AUTOMOD_BLOCKED_MESSAGE_SEND_NOTICE: string; GUILD_AUTOMOD_CHANNEL_RULE_SUBTEXT: FM<"channelName" | "ruleName", true>; GUILD_AUTOMOD_CHATBLOCKER_PROFILE_INVALID_GENERAL_DESCRIPTION_MOBILE: FM<"guildName", true>; GUILD_AUTOMOD_CHATBLOCKER_PROFILE_INVALID_GENERAL_MOBILE: string; GUILD_AUTOMOD_CUSTOM_BLOCK_MESSAGE_UPSELL_CONTENT: FM; GUILD_AUTOMOD_CUSTOM_BLOCK_MESSAGE_UPSELL_HEADER: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_DESCRIPTION_TEXT: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_DESCRIPTION_TEXT_URL: FM<"helpUrl", true>; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_FILTER_NAME: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_PROFANITY_HEADER: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_PROFANITY_SUBTITLE: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_SEXUAL_CONTENT_HEADER: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_SEXUAL_CONTENT_SUBTITLE: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_SLURS_HEADER: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_SLURS_SUBTITLE: string; GUILD_AUTOMOD_DEFAULT_KEYWORD_LIST_TRIGGER_DESCRIPTION: string; GUILD_AUTOMOD_DEFAULT_UPSELL_ASSET_HEADER: string; GUILD_AUTOMOD_DEFAULT_UPSELL_CTA: string; GUILD_AUTOMOD_DEFAULT_UPSELL_DISMISSAL: string; GUILD_AUTOMOD_DELETE_RULE: string; GUILD_AUTOMOD_DISABLE_GUILD_COMMUNICATION_MODAL_DESCRIPTION: string; GUILD_AUTOMOD_DISABLE_GUILD_COMMUNICATION_PLACEHOLDER: string; GUILD_AUTOMOD_EDIT_NO_CHANGES: FM<"ruleName", false>; GUILD_AUTOMOD_EDIT_NO_CHANGES_BUTTON_CANCEL: string; GUILD_AUTOMOD_EDIT_RULE: string; GUILD_AUTOMOD_ERROR_BAR: string; GUILD_AUTOMOD_ERROR_MESSAGE_NOT_MEMBER: string; GUILD_AUTOMOD_ERROR_NO_ACTIONS: string; GUILD_AUTOMOD_EVENT_TYPE_GUILD_MEMBER_JOIN_OR_UPDATE: string; GUILD_AUTOMOD_EVENT_TYPE_MESSAGE_SEND: string; GUILD_AUTOMOD_EXEMPT_CHANNELS_EDIT_BUTTON: string; GUILD_AUTOMOD_EXEMPT_ROLES_EDIT_BUTTON: string; GUILD_AUTOMOD_EXEMPTION_HEADER: string; GUILD_AUTOMOD_EXEMPTION_HINT: string; GUILD_AUTOMOD_EXEMPTION_SEARCH_CHANNEL_PLACEHOLDER: string; GUILD_AUTOMOD_EXEMPTION_SEARCH_PLACEHOLDER: string; GUILD_AUTOMOD_EXEMPTION_SEARCH_ROLE_PLACEHOLDER: string; GUILD_AUTOMOD_INPUT_FILTER_NAME: string; GUILD_AUTOMOD_INPUT_FILTER_NAME_PLACEHOLDER: string; GUILD_AUTOMOD_JUMP_TO_SURROUNDING: string; GUILD_AUTOMOD_KEYWORD_ENTRY_HINT: string; GUILD_AUTOMOD_KEYWORD_ERROR_INVALID_KEYWORD_LENGTH: FM<"keyword" | "max" | "min", false>; GUILD_AUTOMOD_KEYWORD_ERROR_NO_KEYWORDS: string; GUILD_AUTOMOD_KEYWORD_ERROR_NO_KEYWORDS_OR_REGEX: string; GUILD_AUTOMOD_KEYWORD_ERROR_TOO_MANY_KEYWORDS: FM<"limit", false>; GUILD_AUTOMOD_KEYWORD_ERROR_TOO_MANY_REGEX: FM<"limit", false>; GUILD_AUTOMOD_KEYWORD_FILTER_DESCRIPTION: string; GUILD_AUTOMOD_KEYWORD_FILTER_EMPTY: string; GUILD_AUTOMOD_KEYWORD_FILTER_HEADER_WORD_AND_REGEX_COUNT: FM<"keywordCount" | "regexPatternCount", false>; GUILD_AUTOMOD_KEYWORD_FILTER_HEADER_WORD_COUNT: FM<"keywordCount", false>; GUILD_AUTOMOD_KEYWORD_FILTER_NAME: string; GUILD_AUTOMOD_KEYWORD_FILTER_TRIGGER_HEADER: string; GUILD_AUTOMOD_KEYWORD_GENERIC_SAVE_ERROR: string; GUILD_AUTOMOD_KEYWORDS_EXPAND: FM<"count", false>; GUILD_AUTOMOD_KEYWORDS_PLACEHOLDER: string; GUILD_AUTOMOD_LAUNCH_MODAL_HEADER_ACTION_APP_BLOCKED: FM<["applicationName", "integrationOwnerHook" | "interactionUserHook"], true>; GUILD_AUTOMOD_LAUNCH_MODAL_HEADER_ACTION_APP_BLOCKED_MOBILE: FM<"applicationName" | "integrationOwner" | "interactionUser", false>; GUILD_AUTOMOD_LAUNCH_MODAL_HEADER_ACTION_APP_FLAGGED: FM<["applicationName", "integrationOwnerHook" | "interactionUserHook"], true>; GUILD_AUTOMOD_LAUNCH_MODAL_HEADER_ACTION_APP_FLAGGED_MOBILE: FM<"applicationName" | "integrationOwner" | "interactionUser", false>; GUILD_AUTOMOD_LEARN_MORE_LINK: FM<"helpUrl", true>; GUILD_AUTOMOD_LINK_FILTER_MATCHING_STRATEGY_DESCRIPTION: FM; GUILD_AUTOMOD_MENTION_SPAM_FILTER_DESCRIPTION: string; GUILD_AUTOMOD_MENTION_SPAM_FILTER_NAME: string; GUILD_AUTOMOD_MENTION_SPAM_FILTER_RAID_DESCRIPTION: string; GUILD_AUTOMOD_MENTION_SPAM_FILTER_RAID_DESCRIPTION_HINT: string; GUILD_AUTOMOD_MENTION_SPAM_FILTER_TRIGGER_DESCRIPTION: string; GUILD_AUTOMOD_MENTION_SPAM_FILTER_TRIGGER_DESCRIPTION_HINT: string; GUILD_AUTOMOD_MENTION_SPAM_FILTER_TRIGGER_HEADER: string; GUILD_AUTOMOD_MENTION_SPAM_NOTICE_CONFIGURE_SETTINGS: string; GUILD_AUTOMOD_MENTION_SPAM_NOTICE_MESSAGE: string; GUILD_AUTOMOD_MENTION_SPAM_NOTICE_REMOVE_RESTRICTION: string; GUILD_AUTOMOD_MISSING_TIMEOUT_PERMISSIONS: FM; GUILD_AUTOMOD_ML_SPAM_FILTER_DESCRIPTION: string; GUILD_AUTOMOD_ML_SPAM_FILTER_NAME: string; GUILD_AUTOMOD_ML_SPAM_FILTER_TRIGGER_HEADER: string; GUILD_AUTOMOD_MODERATOR_REPORT_BUTTON: string; GUILD_AUTOMOD_NAGBAR_QUARANTINED_ACCOUNT_USERNAME_CTA: string; GUILD_AUTOMOD_NAGBAR_QUARANTINED_USER_PROFILE: string; GUILD_AUTOMOD_NAGBAR_QUARANTINED_USER_PROFILE_CTA: string; GUILD_AUTOMOD_NAGBAR_QUARANTINED_USER_PROFILE_NO_PERMS: string; GUILD_AUTOMOD_NEW_RULE_ERROR: string; GUILD_AUTOMOD_NOTFICATION_ALERT_TITLE: string; GUILD_AUTOMOD_NOTFICATION_APP_INTERACTION_BLOCKED_DESCRIPTION: string; GUILD_AUTOMOD_NOTFICATION_APP_INTERACTION_BLOCKED_TITLE: string; GUILD_AUTOMOD_NOTFICATION_UNSUPPORTED_DESCRIPTION: string; GUILD_AUTOMOD_NOTFICATION_UNSUPPORTED_TITLE: string; GUILD_AUTOMOD_NOTIFICATION_ACTIVITY_ALERTS_ENABLED_BY_PREFIX: string; GUILD_AUTOMOD_NOTIFICATION_ACTIVITY_ALERTS_ENABLED_DESCRIPTION: string; GUILD_AUTOMOD_NOTIFICATION_ACTIVITY_ALERTS_ENABLED_TITLE: string; GUILD_AUTOMOD_NOTIFICATION_DM_RAID_TITLE: string; GUILD_AUTOMOD_NOTIFICATION_MARK_AS_RESOLVED: string; GUILD_AUTOMOD_NOTIFICATION_MENTION_RAID_DESCRIPTION: string; GUILD_AUTOMOD_NOTIFICATION_MENTION_RAID_TITLE: string; GUILD_AUTOMOD_NOTIFICATION_RAID_ACTION_DESCRIPTION: FM<"dateTime", false>; GUILD_AUTOMOD_NOTIFICATION_RAID_DESCRIPTION: string; GUILD_AUTOMOD_NOTIFICATION_RAID_DMS: FM<"dmsSent", false>; GUILD_AUTOMOD_NOTIFICATION_RAID_FALSE_ALARM: string; GUILD_AUTOMOD_NOTIFICATION_RAID_JOINS: FM<"joinCount", false>; GUILD_AUTOMOD_NOTIFICATION_RAID_TITLE: string; GUILD_AUTOMOD_POST_TO_CHANNEL_CHANNEL_NAME: FM<["channelName", "channelHook"], true>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_APP_BLOCKED_HOOK: FM<["applicationName" | "channelName", "channelHook" | "integrationOwnerHook"], true>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_APP_BLOCKED_HOOK_MOBILE: FM<"applicationName" | "integrationOwner", false>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_APP_FLAGGED_HOOK: FM<["applicationName" | "channelName", "channelHook" | "integrationOwnerHook"], true>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_APP_FLAGGED_HOOK_MOBILE: FM<"applicationName" | "integrationOwner", false>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_BLOCKED: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_BLOCKED_HOOK: FM<["channelName", "channelHook"], true>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_BLOCKED_MOBILE: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_BLOCKED_VOICE_CHANNEL_STATUS_HOOK: FM<["channelName", "channelHook"], true>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_FLAGGED: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_FLAGGED_HOOK: FM<["channelName", "channelHook"], true>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_FLAGGED_MOBILE: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_ACTION_FLAGGED_VOICE_CHANNEL_STATUS_HOOK: FM<["channelName", "channelHook"], true>; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_BLOCK_GUEST_ON_GUILD_JOIN: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_BLOCK_NICKNAME_RESET: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_BLOCK_NICKNAME_UPDATE: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_QUARANTINE_CLAN_TAG_UPDATE: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_QUARANTINE_USER_MESSAGE_SEND: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_QUARANTINE_USER_ON_GUILD_JOIN: string; GUILD_AUTOMOD_POST_TO_CHANNEL_HEADER_QUARANTINE_USERNAME_UPDATE: string; GUILD_AUTOMOD_POST_TO_CHANNEL_KEYWORD: FM<"keyword", false>; GUILD_AUTOMOD_POST_TO_CHANNEL_REASON: FM<"reason", false>; GUILD_AUTOMOD_POST_TO_CHANNEL_REASON_CLAN_TAG: string; GUILD_AUTOMOD_POST_TO_CHANNEL_REASON_GLOBAL_NAME: string; GUILD_AUTOMOD_POST_TO_CHANNEL_REASON_NICKNAME: string; GUILD_AUTOMOD_POST_TO_CHANNEL_REASON_USERNAME: string; GUILD_AUTOMOD_POST_TO_CHANNEL_RULE_NAME: FM<"ruleName", false>; GUILD_AUTOMOD_POST_TO_CHANNEL_TIMEOUT_DURATION: FM<"duration", false>; GUILD_AUTOMOD_PROFILE_ERROR_QUARANTINE_BIO: string; GUILD_AUTOMOD_PROFILE_ERROR_QUARANTINE_USERNAME: string; GUILD_AUTOMOD_PROFILE_ERROR_QUARANTINE_USERNAME_IN_GUILD: FM<"guildName", false>; GUILD_AUTOMOD_PROFILE_INVALID_DESCRIPTION: string; GUILD_AUTOMOD_PROFILE_INVALID_MODAL_TITLE_MOBILE: FM<"guildName", true>; GUILD_AUTOMOD_PROFILE_INVALID_NO_PERMS_DESCRIPTION: string; GUILD_AUTOMOD_REGEX_ERROR_HELP: FM<"helpArticle", true>; GUILD_AUTOMOD_REGEX_ERROR_INVALID_REGEX_LENGTH: FM<"max" | "min" | "regex", false>; GUILD_AUTOMOD_REGEX_ERROR_SUMMARY_MULTIPLE: FM<"error", false>; GUILD_AUTOMOD_REGEX_ERROR_SUMMARY_OTHER_ERRORS: FM<"otherErrorCount", false>; GUILD_AUTOMOD_REGEX_ERROR_SUMMARY_SINGLE: FM<"error", false>; GUILD_AUTOMOD_REGEX_GENERIC_SAVE_ERROR: string; GUILD_AUTOMOD_REGEX_SUBTEXT: FM<"helpArticle", true>; GUILD_AUTOMOD_REGEX_TEXTAREA_SUBTITLE: FM<"articleUrl", true>; GUILD_AUTOMOD_REGEX_TEXTAREA_TITLE: string; GUILD_AUTOMOD_REMOVE_MENTION_RAID_MODAL_BODY: string; GUILD_AUTOMOD_REMOVE_MENTION_RAID_MODAL_TITLE: string; GUILD_AUTOMOD_REMOVE_RULE_CONFIRM_DESCRIPTION: FM<"ruleName", false>; GUILD_AUTOMOD_REMOVE_RULE_CONFIRM_TITLE: string; GUILD_AUTOMOD_REPORT_FEEDBACK_MODAL_ALLOWED_REASON: string; GUILD_AUTOMOD_REPORT_FEEDBACK_MODAL_BUG_REASON: string; GUILD_AUTOMOD_REPORT_FEEDBACK_MODAL_SUBTITLE: string; GUILD_AUTOMOD_REPORT_FEEDBACK_MODAL_TITLE: string; GUILD_AUTOMOD_REPORT_ISSUES: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_CONFIRM_CTA: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_CONFIRM_SUBTITLE: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_CONFIRM_TITLE: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_LEGITIMATE_ACCOUNTS: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_LEGITIMATE_DMS: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_MODAL_OTHER_REASON_PLACEHOLDER: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_MODAL_SUBTITLE: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_OTHER: string; GUILD_AUTOMOD_REPORT_RAID_FEEDBACK_SUBMIT_BUTTON: string; GUILD_AUTOMOD_ROLES_EXEMPTION_HEADER: string; GUILD_AUTOMOD_RULE_CONTEXT_MENU: string; GUILD_AUTOMOD_RULE_DELETE_ERROR_CONFIRM_MODAL_BODY: string; GUILD_AUTOMOD_RULE_DELETE_ERROR_CONFIRM_MODAL_HEADER: string; GUILD_AUTOMOD_RULE_SETUP_BUTTON: string; GUILD_AUTOMOD_SEPARATOR: string; GUILD_AUTOMOD_SERVER_POLICY_FILTER_DESCRIPTION: string; GUILD_AUTOMOD_SERVER_POLICY_FILTER_NAME: string; GUILD_AUTOMOD_SERVER_POLICY_FILTER_TRIGGER_HEADER: string; GUILD_AUTOMOD_SERVER_POLICY_FILTER_TRIGGER_SUBHEADER: FM; GUILD_AUTOMOD_SERVER_POLICY_FILTER_TRIGGER_SUBHEADER_WITH_CHANNEL: FM<["channelName", "channelHook"], true>; GUILD_AUTOMOD_SHIELD_CONTENT_DESCRIPTION: string; GUILD_AUTOMOD_SUBMIT_ISSUE: string; GUILD_AUTOMOD_SYSTEM_MESSAGE_AVATAR_CONTENT_DESCRIPTION: string; GUILD_AUTOMOD_SYSTEM_MESSAGE_TEXT: FM; GUILD_AUTOMOD_SYSTEM_MESSAGE_TEXT_FLAGGED: FM; GUILD_AUTOMOD_UNKNOWN: string; GUILD_AUTOMOD_UPDATE_ACCOUNT_USERNAME_CTA: string; GUILD_AUTOMOD_UPDATE_PROFILE_CTA: string; GUILD_AUTOMOD_UPSELL_ASSET_HEADER: string; GUILD_AUTOMOD_UPSELL_CONTENT: FM; GUILD_AUTOMOD_UPSELL_CTA: string; GUILD_AUTOMOD_UPSELL_DISMISSAL: string; GUILD_AUTOMOD_UPSELL_HEADER: string; GUILD_AUTOMOD_USER_BADGE_OFFICIAL: string; GUILD_AUTOMOD_USER_BADGE_TEXT: string; GUILD_AUTOMOD_USER_PROFILE_FILTER_DESCRIPTION: string; GUILD_AUTOMOD_USER_PROFILE_FILTER_NAME: string; GUILD_AUTOMOD_USERNAME: string; GUILD_AUTOMOD_USERNAME_INVALID_MODAL_DESCRIPTION_MOBILE: string; GUILD_AUTOMOD_USERNAME_INVALID_NO_PERMS_MODAL_DESCRIPTION_MOBILE: string; GUILD_AUTOMOD_VIEW_HELP_ARTICLE: string; GUILD_AUTOMOD_VISIBILITY_ICON_DESCRIPTION: string; GUILD_AUTOMOD_VISIBILITY_MESSAGE: FM; GUILD_AUTOMOD_WARNING_UNSAVED_CHANGES_DESCRIPTION: FM<"ruleName", false>; GUILD_AUTOMOD_WARNING_UNSAVED_CHANGES_TITLE: string; GUILD_BANNER_NOTICE: FM<"boostsNeeded", true>; GUILD_BANNER_NOTICE_CTA: string; GUILD_BANNER_UPSELL_MODAL_PERK_INTRO: string; GUILD_BANNER_UPSELL_MODAL_SUBTITLE_ANIMATED: FM<"targetLevelOrPlan", false>; GUILD_BANNER_UPSELL_MODAL_SUBTITLE_STATIC: FM<"targetLevelOrPlan", false>; GUILD_BANNER_UPSELL_MODAL_TITLE: string; GUILD_BOOST_NITRO_REWARD_BANNER: string; GUILD_BOOSTING_CANCEL_DISABLED_FOR_PAUSED_SUBSCRIPTION: string; GUILD_BOOSTING_DISABLED_FOR_PAUSED_SUBSCRIPTION: string; GUILD_BOOSTING_DISABLED_FOR_PAUSED_SUBSCRIPTION_WITH_LINK: FM; GUILD_BOOSTING_DISABLED_HEADER: string; GUILD_BOOSTING_MANAGEMENT_OPEN_DESKTOP_APP: FM; GUILD_BOOSTING_TRANSFER_DISABLED_FOR_PAUSED_SUBSCRIPTION: string; GUILD_BOOSTING_USER_SETTINGS_BOOST_ANY_GUILD_CTA: FM<[never, "boostAnyGuildHook"], true>; GUILD_BOOSTING_USER_SETTINGS_BOOST_ANY_SERVER: string; GUILD_BOOSTING_USER_SETTINGS_BOOST_THIS_SERVER: string; GUILD_BOOSTING_USER_SETTINGS_CANCEL_BOOST: string; GUILD_BOOSTING_USER_SETTINGS_HEADING_HAS_UNAPPLIED_FREE_GUILD_BOOSTS: FM; GUILD_BOOSTING_USER_SETTINGS_HEADING_NO_GUILD_BOOSTS: string; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOST_HEADING_INCLUDED_WITH_SUBSCRIPTION: FM<"numUnappliedGuildBoostSlots", false>; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOST_HEADING_V2: FM<"numUnappliedGuildBoostSlots", false>; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOST_SUBHEADING: FM<"numUnappliedGuildBoostSlots", false>; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOST_SUBHEADING_ALL_COOLDOWN: string; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOST_SUBHEADING_WITH_PREMIUM_SUBSCRIPTION: FM<["numUnappliedGuildBoostSlots", "learnMoreHook"], true>; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOST_SUBHEADING_WITH_PREMIUM_SUBSCRIPTION_ALL_COOLDOWN: FM<[never, "learnMoreHook"], true>; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOST_SUBHEADING_WITH_PREMIUM_SUBSCRIPTION_V2: FM<["numUnappliedGuildBoostSlots", "learnMoreHook"], true>; GUILD_BOOSTING_USER_SETTINGS_HEADING_UNAPPLIED_GUILD_BOOSTS_ALL_COOLDOWN: FM<"numUnappliedGuildBoostSlots", false>; GUILD_BOOSTING_USER_SETTINGS_HEADING_YOUR_GUILD_BOOSTS: FM; GUILD_BOOSTING_USER_SETTINGS_NO_AVAILABLE_GUILD_BOOST_SLOTS: string; GUILD_BOOSTING_USER_SETTINGS_NO_JOINED_SERVER_SUBTITLE: string; GUILD_BOOSTING_USER_SETTINGS_PERK_ANIMATED_GUILD_ICON: string; GUILD_BOOSTING_USER_SETTINGS_PERK_AUDIO_QUALITY: FM<"bitrate", false>; GUILD_BOOSTING_USER_SETTINGS_PERK_CUSTOM_ROLE_ICONS: string; GUILD_BOOSTING_USER_SETTINGS_PERK_EMOJI_SLOTS: FM<"numEmojiSlots", false>; GUILD_BOOSTING_USER_SETTINGS_PERK_GUILD_BANNER: string; GUILD_BOOSTING_USER_SETTINGS_PERK_GUILD_INVITE_BACKGROUND: string; GUILD_BOOSTING_USER_SETTINGS_PERK_SOUNDBOARD_SLOTS: FM<"numSoundboardSlots", false>; GUILD_BOOSTING_USER_SETTINGS_PERK_STICKER_SLOTS: FM<"numStickerSlots", false>; GUILD_BOOSTING_USER_SETTINGS_PERK_STREAM_QUALITY: FM<"framerate" | "resolution", false>; GUILD_BOOSTING_USER_SETTINGS_PERK_TEMPLATE: FM<"perk", true>; GUILD_BOOSTING_USER_SETTINGS_PERK_UPLOAD_SIZE_LIMIT: FM<"filesize", false>; GUILD_BOOSTING_USER_SETTINGS_PERK_VANITY_URL: string; GUILD_BOOSTING_USER_SETTINGS_PERK_VIDEO_STAGE_SEATS: FM<"numVideoStageSeats", false>; GUILD_BOOSTING_USER_SETTINGS_PUBLIC_SERVER_CTA: string; GUILD_BOOSTING_USER_SETTINGS_PUBLIC_SERVER_SUBTITLE: string; GUILD_BOOSTING_USER_SETTINGS_PUBLIC_SERVER_TITLE: string; GUILD_BOOSTING_USER_SETTINGS_RECOMMENDED_SERVERS_HEADING: string; GUILD_BOOSTING_USER_SETTINGS_SUBTITLE_ACTIVE_BOOSTS: string; GUILD_BOOSTING_USER_SETTINGS_SUBTITLE_ACTIVE_BOOSTS_FLAVOR: FM<"helpdeskArticle", true>; GUILD_BOOSTING_USER_SETTINGS_SUBTITLE_NO_ACTIVE_BOOSTS_FLAVOR: FM<"monthlyGuildBoostPrice", false>; GUILD_BOOSTING_USER_SETTINGS_SUBTITLE_NO_SUB_NO_ACTIVE_BOOSTS: string; GUILD_BOOSTING_USER_SETTINGS_SUBTITLE_SUBBED_NO_ACTIVE_BOOSTS: string; GUILD_BOOSTING_USER_SETTINGS_UNAPPLIED_GUILD_BOOST_DESCRIPTION: string; GUILD_BOOSTING_USER_SETTINGS_UNCANCEL_BOOST: string; GUILD_CAP_INVITE_MODAL_BUTTON: string; GUILD_CAP_PREMIUM_FEATURE_DESCRIPTION: string; GUILD_CAP_PREMIUM_FEATURE_TITLE: string; GUILD_CAP_UPSELL_GET_NITRO: string; GUILD_CAP_UPSELL_MODAL_AT_LIMIT_BODY: FM<[never, "newBadgeHook" | "onAndMore"], true>; GUILD_CAP_UPSELL_MODAL_AT_LIMIT_BODY_NON_FORMATTED: FM; GUILD_CAP_UPSELL_MODAL_AT_LIMIT_CONTEXT: string; GUILD_CAP_UPSELL_MODAL_GLOW_UP: FM<[never, "onAndMore"], true>; GUILD_CAP_UPSELL_MODAL_NEAR_LIMIT_BODY: FM<["guildCount", "newBadgeHook" | "onAndMore"], true>; GUILD_CAP_UPSELL_MODAL_NEAR_LIMIT_CONTEXT: FM<"guildCount", false>; GUILD_CAP_UPSELL_MODAL_TITLE: string; GUILD_CAP_UPSELL_TOOLTIP: string; GUILD_CHANNEL_OPT_IN: string; GUILD_CHECKLIST_UPSELL_BOOST_INTRO: FM; GUILD_CHECKLIST_UPSELL_FLAIR_INTRO: string; GUILD_CHECKLIST_UPSELL_FLAIR_SUBTITLE: string; GUILD_CHECKLIST_UPSELL_FLAIR_TITLE: string; GUILD_CHECKLIST_UPSELL_PROGRESS_BAR_FOOTER: FM; GUILD_CHECKLIST_UPSELL_PROGRESS_BAR_INTRO: string; GUILD_CHECKLIST_UPSELL_PROGRESS_BAR_TITLE: string; GUILD_COMMUNICATION_DISABLED_BOTTOM_SHEET_TITLE: string; GUILD_COMMUNICATION_DISABLED_CHAT_NOTICE_DESCRIPTION: FM<"link", true>; GUILD_COMMUNICATION_DISABLED_CHAT_NOTICE_TITLE: string; GUILD_COMMUNICATION_DISABLED_DURATION: string; GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY: string; GUILD_COMMUNICATION_DISABLED_NOTICE_HEADER: string; GUILD_COMMUNICATION_DISABLED_ON_MEMBER: string; GUILD_COMMUNICATION_DISABLED_POPOUT_HEADER: string; GUILD_COMMUNICATION_DISABLED_POPOUT_SUBHEADER: FM<"guildName", false>; GUILD_COMMUNICATION_DISABLED_REASON: string; GUILD_COMMUNICATION_DISABLED_REASON_HINT_ANDROID: string; GUILD_COMMUNICATION_DISABLED_REASON_PLACEHOLDER: string; GUILD_COMMUNICATION_DISABLED_REMOVED: string; GUILD_COMMUNICATION_DISABLED_SUCCESS: FM<"user", false>; GUILD_COMMUNITY_ALERTS_CHOOSE_SERVER: string; GUILD_COMMUNITY_ALERTS_DESCRIPTION: string; GUILD_COMMUNITY_ALERTS_HEADER: string; GUILD_COMMUNITY_ALERTS_NAG_DESCRIPTION: string; GUILD_COMMUNITY_ALERTS_NAG_HEADER: string; GUILD_COMMUNITY_ALERTS_PUSH_DESCRIPTION: string; GUILD_COMMUNITY_ALERTS_PUSH_HEADER: string; GUILD_CREATE_CHANNEL_CTA: string; GUILD_CREATE_INVITE_DESCRIPTION: string; GUILD_CREATE_INVITE_SEE_MORE_SUGGESTIONS: string; GUILD_CREATE_INVITE_TITLE: string; GUILD_CREATE_STAFF_ONLY_HINT: string; GUILD_CREATE_TITLE: string; GUILD_CREATE_UPLOAD_ICON_BUTTON_TEXT: string; GUILD_DELETE_FEEDBACK_ACCIDENT: string; GUILD_DELETE_FEEDBACK_BODY: string; GUILD_DELETE_FEEDBACK_HEADER: string; GUILD_DELETE_FEEDBACK_INACTIVE: string; GUILD_DELETE_FEEDBACK_LONELY: string; GUILD_DELETE_FEEDBACK_OTHER: string; GUILD_DELETE_FEEDBACK_REPORT: string; GUILD_DELETE_FEEDBACK_TEMPLATE: string; GUILD_DELETE_FEEDBACK_TEST: string; GUILD_DELETE_FEEDBACK_TOO_HARD: string; GUILD_DICOVERY_MAIN_VIEW_SUBTITLE: string; GUILD_DISCOVERY_ALL_CATEGORY_FILTER: string; GUILD_DISCOVERY_CATEGORY_FOOTER_TITLE: string; GUILD_DISCOVERY_CATEGORY_HEADER: FM<"categoryName", false>; GUILD_DISCOVERY_CATEGORY_SEARCH_PLACEHOLDER: FM<"categoryName", false>; GUILD_DISCOVERY_CATEGORY_TITLE: FM<"categoryName", false>; GUILD_DISCOVERY_CHAT_INPUT_BACK: string; GUILD_DISCOVERY_FEATURED_HEADER: string; GUILD_DISCOVERY_FOOTER_BODY: string; GUILD_DISCOVERY_HEADER_GAMES_YOU_PLAY: string; GUILD_DISCOVERY_HOME_SUBTITLE: string; GUILD_DISCOVERY_HOME_TITLE: string; GUILD_DISCOVERY_LURKER_FOLLOW_NEWS_BUTTON: string; GUILD_DISCOVERY_MAIN_VIEW_TITLE: string; GUILD_DISCOVERY_MOBILE_SEARCH_PLACEHOLDER: string; GUILD_DISCOVERY_POPULAR_HEADER: string; GUILD_DISCOVERY_RECOMMENDATIONS_TITLE: FM<"username", false>; GUILD_DISCOVERY_SEARCH_EMPTY_BODY: string; GUILD_DISCOVERY_SEARCH_EMPTY_CATEGORY_BODY: FM; GUILD_DISCOVERY_SEARCH_EMPTY_CATEGORY_HEADER: FM<"categoryName", false>; GUILD_DISCOVERY_SEARCH_EMPTY_HEADER: string; GUILD_DISCOVERY_SEARCH_ENTER_CTA: string; GUILD_DISCOVERY_SEARCH_ERROR: string; GUILD_DISCOVERY_SEARCH_LABEL: string; GUILD_DISCOVERY_SEARCH_PLACEHOLDER: string; GUILD_DISCOVERY_SEARCH_PROTIP: FM<[never, "protipHook"], true>; GUILD_DISCOVERY_SEARCH_RESULTS_CATEGORY_HEADER: FM<"category" | "count" | "query", true>; GUILD_DISCOVERY_SEARCH_RESULTS_HEADER: FM<"count" | "query", false>; GUILD_DISCOVERY_TOOLTIP: string; GUILD_DMS_DISABLE_ACTION_SHEET_DESCRIPTION: string; GUILD_DOCK: string; GUILD_DOCK_LABEL: string; GUILD_ENABLE_COMMUNICATION_CTA: FM<"link", true>; GUILD_ENABLE_COMMUNICATION_HEADER: string; GUILD_ENABLE_COMMUNICATION_SUCCESS: string; GUILD_ENABLE_COMMUNICATION_TIME_REMAINING: FM<["username", "countdown"], true>; GUILD_ENABLE_PROGRESS_BAR: string; GUILD_EVENT_ADD_IMAGE: string; GUILD_EVENT_ADD_IMAGE_SUGGESTION: string; GUILD_EVENT_CANNOT_CONNECT: string; GUILD_EVENT_CHANGE_IMAGE: string; GUILD_EVENT_CHANNEL_DELETE_GUILD_EVENTS: FM<"count", true>; GUILD_EVENT_CREATE_BODY: string; GUILD_EVENT_CREATE_CHANNEL_ERROR_EMPTY_FIELD: string; GUILD_EVENT_CREATE_DESCRIPTION_PLACEHOLDER: string; GUILD_EVENT_CREATE_ENTITY_TYPE_ERROR_EMPTY_FIELD: string; GUILD_EVENT_CREATE_HEADER: string; GUILD_EVENT_CREATE_IRL_LOCATION_ERROR_EMPTY_FIELD: string; GUILD_EVENT_CREATE_START_TIME_ERROR_EVENT_STARTED: string; GUILD_EVENT_CREATE_TOPIC_ERROR_EMPTY_FIELD: string; GUILD_EVENT_CREATE_TOPIC_LABEL: string; GUILD_EVENT_CREATE_TOPIC_PLACEHOLDER: string; GUILD_EVENT_CREATED_BY: FM<"username", false>; GUILD_EVENT_CREATED_BY_HOOK: FM<[never, "usernameHook"], true>; GUILD_EVENT_CREATED_MODAL_BODY: string; GUILD_EVENT_CREATED_MODAL_HEADER: string; GUILD_EVENT_DATE_AT_TIME: FM<"date" | "time", false>; GUILD_EVENT_DELETE_CONFIRM_BODY: string; GUILD_EVENT_DELETE_CONFIRM_BODY_IS_RECURRING: FM; GUILD_EVENT_DELETE_CONFIRM_HEADER: string; GUILD_EVENT_DETAILS_INFO_TAB_TITLE: string; GUILD_EVENT_DETAILS_USER_LIST_EMPTY_TITLE: string; GUILD_EVENT_DETAILS_USER_LIST_FETCH_ERROR: string; GUILD_EVENT_DETAILS_USER_LIST_REMAINING: FM<"userRemainCount", false>; GUILD_EVENT_DETAILS_USER_LIST_TAB_TITLE: FM<"userCount", false>; GUILD_EVENT_EDIT_CONFIRM_BODY_CONFIRM: string; GUILD_EVENT_EDIT_CONFIRM_BODY_EDIT_ALL_HINT: FM; GUILD_EVENT_END_DATE_BEFORE_START_DATE: string; GUILD_EVENT_END_DATE_REQUIRED: string; GUILD_EVENT_END_PROMPT_BODY: string; GUILD_EVENT_END_PROMPT_CANCEL: string; GUILD_EVENT_END_PROMPT_CONFIRM: string; GUILD_EVENT_END_PROMPT_TITLE: string; GUILD_EVENT_EXTERNAL_END_PROMPT_TITLE: string; GUILD_EVENT_IMAGE: string; GUILD_EVENT_INTERESTED: FM<"count", false>; GUILD_EVENT_INTERESTED_COUNT: FM<"count", false>; GUILD_EVENT_INTERESTED_NOTIFICATION: string; GUILD_EVENT_INVITE_COMPLETED: string; GUILD_EVENT_INVITE_EMBED_JOIN_SERVER_BUTTON_LABEL: string; GUILD_EVENT_INVITE_MODAL_FOOTER: string; GUILD_EVENT_INVITE_MODAL_TITLE: string; GUILD_EVENT_JOIN: string; GUILD_EVENT_LOCATION_A11Y_LABEL: string; GUILD_EVENT_LOCATION_DISABLED_CANNOT_EDIT: string; GUILD_EVENT_LOCATION_DISABLED_EXTERNAL_NO_PERMISSION: string; GUILD_EVENT_LOCATION_DISABLED_NO_AVAILABLE_CHANNEL: string; GUILD_EVENT_LOCATION_DISABLED_NO_PERMISSION: string; GUILD_EVENT_LOCATION_ELSEWHERE_FIELD_LABEL: string; GUILD_EVENT_LOCATION_ELSEWHERE_FIELD_PLACEHOLDER: string; GUILD_EVENT_LOCATION_EXTERNAL: string; GUILD_EVENT_LOCATION_OPTION_ELSEWHERE_HINT: string; GUILD_EVENT_LOCATION_OPTION_ELSEWHERE_PLACEHOLDER: string; GUILD_EVENT_LOCATION_OPTION_STAGE_HINT: string; GUILD_EVENT_LOCATION_OPTION_VOICE_HINT: string; GUILD_EVENT_LOCATION_SELECT_BUTTON_A11Y_HINT: string; GUILD_EVENT_LOCATION_SUBTITLE: string; GUILD_EVENT_LOCATION_TITLE: string; GUILD_EVENT_LOCATION_VOICE_FIELD_LABEL: string; GUILD_EVENT_MODAL_EMPTY_SUBTITLE: string; GUILD_EVENT_MODAL_EMPTY_TITLE: string; GUILD_EVENT_MODAL_PROGRESS_BAR_STEP_1: string; GUILD_EVENT_MODAL_PROGRESS_BAR_STEP_2: string; GUILD_EVENT_MODAL_PROGRESS_BAR_STEP_3: string; GUILD_EVENT_PAST_END_DATE_1: string; GUILD_EVENT_PAST_START_DATE: string; GUILD_EVENT_PREVIEW_BODY: FM<["channelName", "channelHook"], true>; GUILD_EVENT_PREVIEW_BODY_A11Y_LABEL: FM<"channelName", false>; GUILD_EVENT_PREVIEW_EXTERNAL_EVENT_BODY: string; GUILD_EVENT_PREVIEW_TITLE: string; GUILD_EVENT_PRIVATE_CHANNEL_TOOLTIP: string; GUILD_EVENT_PRIVATE_DESCRIPTION: string; GUILD_EVENT_REMOVE_IMAGE: string; GUILD_EVENT_ROLE_TIP: FM; GUILD_EVENT_STAGE_TOOLTIP_BODY: string; GUILD_EVENT_STAGE_UPSELL: FM<[never, "suggestionsHook"], true>; GUILD_EVENT_STAGE_UPSELL_ALT_IMAGE: string; GUILD_EVENT_STAGE_UPSELL_HINT_1: string; GUILD_EVENT_STAGE_UPSELL_HINT_2: string; GUILD_EVENT_STAGE_UPSELL_HINT_3: string; GUILD_EVENT_STAGE_UPSELL_HINT_4: string; GUILD_EVENT_STAGE_UPSELL_TITLE: string; GUILD_EVENT_START_DATE_REQUIRED: string; GUILD_EVENT_START_PROMPT: FM<"eventName", false>; GUILD_EVENT_START_PROMPT_DESCRIPTION: FM<"startTime", false>; GUILD_EVENT_STARTED: string; GUILD_EVENT_STEP_LABEL: FM<"step" | "total", false>; GUILD_EVENT_TOOLTIP_COPY_INVITE: string; GUILD_EVENT_TOOLTIP_COPY_INVITE_PRIVATE_CHANNEL: string; GUILD_EVENT_TOOLTIP_COPY_INVITE_WITHOUT_PERMISSION: string; GUILD_EVENT_UPCOMING_PROMPT: FM<"eventName", false>; GUILD_EVENT_UPSELL_ALT_IMG: string; GUILD_EVENT_UPSELL_BODY: string; GUILD_EVENT_UPSELL_HEADER: string; GUILD_EVENT_UPSELL_HEADER_PART_1: string; GUILD_EVENT_UPSELL_HEADER_PART_2: string; GUILD_EVENT_UPSELL_PRIMARY_CTA: string; GUILD_EVENTS: string; GUILD_EVENTS_LIST_ACTION_SHEET_CREATE_EVENT: string; GUILD_EVENTS_LIST_ACTION_SHEET_HEADER: FM<"count", false>; GUILD_EVENTS_PLURAL: FM<"number", false>; GUILD_FOLDER_COLOR: string; GUILD_FOLDER_NAME: string; GUILD_FOLDER_TOOLTIP_A11Y_LABEL: FM<"folderName" | "mentions", false>; GUILD_FOLDER_TOOLTIP_A11Y_LABEL_WITH_EXPANDED_STATE: FM<"expandedState" | "folderName" | "mentions", false>; GUILD_FOLDER_UNNAMED: string; GUILD_FOLDER_UPDATED_SUCCESS: string; GUILD_HEADER_ACTIVE_CHANNELS_COUNT: FM<"count", false>; GUILD_HEADER_ACTIVE_CHANNELS_COUNT_UNKNOWN: string; GUILD_HEADER_MEMBER_COUNT: FM<"count", false>; GUILD_HEADER_MEMBER_COUNT_UNKNOWN: string; GUILD_HEADER_ONLINE_COUNT: FM<"count", false>; GUILD_HEADER_ONLINE_COUNT_UNKNOWN: string; GUILD_HOME_ABOUT: string; GUILD_HOME_RESOURCES: string; GUILD_IDENTITY_BANNER_A11Y_LABEL: string; GUILD_IDENTITY_BIO_EDIT_A11Y_HINT: string; GUILD_IDENTITY_BIO_EDIT_A11Y_LABEL: string; GUILD_IDENTITY_BIO_EDIT_SUBTITLE: string; GUILD_IDENTITY_BIO_HINT: string; GUILD_IDENTITY_BIO_TOAST: FM<"guildName", false>; GUILD_IDENTITY_PFX_COACHMARK_BODY: string; GUILD_IDENTITY_PFX_COACHMARK_TITLE: string; GUILD_IDENTITY_PRONOUNS_EDIT_A11Y_HINT: string; GUILD_IDENTITY_PRONOUNS_EDIT_A11Y_LABEL: string; GUILD_IDENTITY_PRONOUNS_EDIT_SUBTITLE: string; GUILD_IDENTITY_PRONOUNS_HINT: string; GUILD_IDENTITY_PRONOUNS_TOAST: FM<"guildName", false>; GUILD_IDENTITY_SETTINGS_EMPTY_STATE_CTA: string; GUILD_IDENTITY_SETTINGS_EMPTY_STATE_DESCRIPTION: string; GUILD_IDENTITY_SETTINGS_EMPTY_STATE_DESCRIPTION_V2: string; GUILD_IDENTITY_SETTINGS_EMPTY_STATE_TITLE: string; GUILD_IDENTITY_UPSELL_MODAL_BODY: FM; GUILD_IDENTITY_UPSELL_MODAL_TITLE: string; GUILD_IDENTITY_UPSELL_NATIVE_MODAL_BODY: string; GUILD_IDENTITY_UPSELL_NATIVE_MODAL_TITLE: string; GUILD_IDENTITY_UPSELL_OVERLAY_DESCRIPTION_THEMES: string; GUILD_IDENTITY_UPSELL_OVERLAY_IMAGE_ALT: string; GUILD_IDENTITY_UPSELL_OVERLAY_TITLE: string; GUILD_IDENTITY_UPSELL_OVERLAY_TITLE_VARIANT: string; GUILD_INVITE_CTA: string; GUILD_INVITE_DISABLE_ACTION_SHEET_DESCRIPTION: string; GUILD_INVITE_EXPIRATION_SUBLABEL: FM<"xDays", false>; GUILD_INVITE_OTHER_GUILDS_LIST_LABEL: string; GUILD_INVITE_SEARCH_NO_RESULTS: string; GUILD_INVITE_SEARCH_SERVERS_PLACEHOLDER: string; GUILD_INVITE_YOUR_GUILDS_LIST_LABEL: string; GUILD_JOIN_REQUEST_STATUS_TOOLTIP_APPROVED: string; GUILD_JOIN_REQUEST_STATUS_TOOLTIP_PENDING: string; GUILD_JOIN_REQUEST_STATUS_TOOLTIP_REJECTED: string; GUILD_JOIN_REQUEST_STATUS_TOOLTIP_STARTED: string; GUILD_LEAVE_FEEDBACK_ACCIDENT: string; GUILD_LEAVE_FEEDBACK_BODY: FM<"server", false>; GUILD_LEAVE_FEEDBACK_CONFUSING: string; GUILD_LEAVE_FEEDBACK_DISRUPTIVE: string; GUILD_LEAVE_FEEDBACK_HEADER: string; GUILD_LEAVE_FEEDBACK_INACTIVE: string; GUILD_LEAVE_FEEDBACK_OVERACTIVE: string; GUILD_LEAVE_FEEDBACK_REPORT: string; GUILD_LEAVE_FEEDBACK_UNCOMFORTABLE: string; GUILD_LEAVE_FEEDBACK_UNINTERESTED: string; GUILD_LIMITED_ACCESS_INFO_MODAL_DESCRIPTION: FM<"guildName" | "helpdeskArticle", true>; GUILD_LIMITED_ACCESS_INFO_MODAL_DESCRIPTION_FALLBACK: FM<"helpdeskArticle", true>; GUILD_LIMITED_ACCESS_INFO_MODAL_HEADING: string; GUILD_LIST_EDIT_MODAL_FOLDERS_A11Y_LABEL: string; GUILD_LIST_EDIT_MODAL_PLACEHOLDER: string; GUILD_LIST_EDIT_MODAL_SERVERS_A11Y_LABEL: string; GUILD_MEMBER_MOD_VIEW_AGREE_TO_RULES: string; GUILD_MEMBER_MOD_VIEW_AUDIT_LOG_SOURCE_USER: string; GUILD_MEMBER_MOD_VIEW_DISCORD_JOIN_DATE: string; GUILD_MEMBER_MOD_VIEW_ELEVATED_PERMISSION: string; GUILD_MEMBER_MOD_VIEW_ELEVATED_PERMISSION_GRANTED_BY: string; GUILD_MEMBER_MOD_VIEW_ELEVATED_PERMISSION_TOOLTIP: string; GUILD_MEMBER_MOD_VIEW_GUILD_JOIN_DATE: string; GUILD_MEMBER_MOD_VIEW_GUILD_MESSAGE_ACTIVITY_TITLE: string; GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE: string; GUILD_MEMBER_MOD_VIEW_INVITE_LINK: string; GUILD_MEMBER_MOD_VIEW_INVITE_LINK_TOOLTIP: string; GUILD_MEMBER_MOD_VIEW_MOD_NO_MOD_PERMS_FOUND: string; GUILD_MEMBER_MOD_VIEW_MOD_PERMISSION: string; GUILD_MEMBER_MOD_VIEW_MOD_PERMSSISONS_PANEL_TITLE: string; GUILD_MEMBER_MOD_VIEW_MOD_PERMSSISONS_TITLE: string; GUILD_MEMBER_MOD_VIEW_PERMISSION_GRANTED_BY: string; GUILD_MEMBER_MOD_VIEW_PERMISSION_GRANTED_BY_ARIA_LABEL: string; GUILD_MEMBER_MOD_VIEW_PERMISSIONS_SEARCH_PLACEHOLDER: string; GUILD_MEMBER_MOD_VIEW_PHONE_VERIFIED: string; GUILD_MEMBER_MOD_VIEW_RECENT_AUDIT_LOG: string; GUILD_MEMBER_MOD_VIEW_ROLE_COUNT: FM<"roleCount", false>; GUILD_MEMBER_MOD_VIEW_ROLES_ADDED: FM<"roleNames", false>; GUILD_MEMBER_MOD_VIEW_ROLES_ADDED_AND_REMOVED: FM<"roleNamesAdded" | "roleNamesRemoved", false>; GUILD_MEMBER_MOD_VIEW_ROLES_ADDED_AND_REMOVED_CONTEXT: string; GUILD_MEMBER_MOD_VIEW_ROLES_ADDED_CONTEXT: string; GUILD_MEMBER_MOD_VIEW_ROLES_REMOVED: FM<"roleNames", false>; GUILD_MEMBER_MOD_VIEW_ROLES_REMOVED_CONTEXT: string; GUILD_MEMBER_MOD_VIEW_TITLE: string; GUILD_MEMBER_MOD_VIEW_VIEW_ALL_PERMISSIONS: FM<"count", false>; GUILD_MEMBER_REQUIRED_FOR_EVENT: string; GUILD_MEMBERS: string; GUILD_MEMBERS_HEADER: FM<"guild", false>; GUILD_MEMBERS_SEARCH_NO_RESULT: string; GUILD_MEMBERSHIP_AUTOMATION_VERFICATION_EXPIRED: string; GUILD_MEMBERSHIP_AUTOMATION_VERFICATION_VERIFIED: string; GUILD_MEMBERSHIP_AUTOMATION_VERIFICATION_VERIFYING: string; GUILD_MENTION_RAID_LIMIT_UPSELL_ASSET_HEADER: string; GUILD_MENTION_RAID_LIMIT_UPSELL_CONTENT: string; GUILD_MENTION_RAID_LIMIT_UPSELL_CTA: string; GUILD_MENTION_RAID_LIMIT_UPSELL_DISMISSAL: string; GUILD_MENTION_RAID_LIMIT_UPSELL_HEADER: string; GUILD_MONETIZATION_ENABLE_CONFIRMATION_SUBTITLE: string; GUILD_MONETIZATION_ENABLE_CONFIRMATION_TITLE: string; GUILD_MONETIZATION_ENABLE_CREATE_TEAM: string; GUILD_MONETIZATION_ENABLE_CTA: string; GUILD_MONETIZATION_ENABLE_DESCRIPTION: FM<[never, "onCreateTeamHook"], true>; GUILD_MONETIZATION_ENABLE_HEADER: string; GUILD_MONETIZATION_ENABLE_NON_OWNER_WARNING: string; GUILD_MONETIZATION_ENABLE_SELECT_PLACEHOLDER: string; GUILD_NO_CHANNELS_HEADER: string; GUILD_NO_CHANNELS_SUBHEADER: string; GUILD_NO_UNREADS_HEADER: string; GUILD_NO_UNREADS_SUBHEADER: string; GUILD_NOTIFY_MEMBERS: string; GUILD_NOTIFY_MEMBERS_DESKTOP: string; GUILD_NOTIFY_MEMBERS_DISABLED_NEW: string; GUILD_NOTIFY_MEMBERS_ENABLED_NEW: string; GUILD_NOTIFY_MEMBERS_TOOLTIP_NEW: string; GUILD_ONBOARDING_CHANNEL_NOTICE_MESSAGE: string; GUILD_ONBOARDING_CHANNEL_NOTICE_TITLE: string; GUILD_ONBOARDING_COMPLETED_JOINED: FM<"guildName", false>; GUILD_ONBOARDING_COMPLETED_ROLES: FM<"numSharedRoleMembers", false>; GUILD_ONBOARDING_COMPLETED_SUBTITLE: string; GUILD_ONBOARDING_COMPLETED_TITLE: string; GUILD_ONBOARDING_DEFAULT_CHANNELS_MIN_CHANNELS: FM<"count", false>; GUILD_ONBOARDING_DEFAULT_CHANNELS_MIN_CHATTABLE_CHANNELS: FM<"count", false>; GUILD_ONBOARDING_DEFAULT_CHANNELS_RECOMMENDED_DESCRIPTION: string; GUILD_ONBOARDING_DEFAULT_CHANNELS_RECOMMENDED_DISMISS_ALL: string; GUILD_ONBOARDING_DEFAULT_CHANNELS_RULES_DISCOURAGED: string; GUILD_ONBOARDING_DEFAULT_CHANNELS_VOICE_TOOLTIP: string; GUILD_ONBOARDING_HOME_GUILD_MEMBERS_RATIO: FM<"online" | "total", false>; GUILD_ONBOARDING_NAGBAR_MESSAGE: string; GUILD_ONBOARDING_NEW_MEMBER_PROGRESS_BAR_COUNTER: FM<["completed" | "total", "numberHook"], true>; GUILD_ONBOARDING_NEW_MEMBER_PROGRESS_BAR_GET_STARTED: string; GUILD_ONBOARDING_NOTICE_SUBTITLE: string; GUILD_ONBOARDING_NOTICE_TITLE: string; GUILD_ONBOARDING_OFF: string; GUILD_ONBOARDING_ON: string; GUILD_ONBOARDING_OVERVIEW_SEE_EXAMPLES: string; GUILD_ONBOARDING_OVERVIEW_SUBTITLE: string; GUILD_ONBOARDING_OVERVIEW_SUBTITLE_DISABLED: string; GUILD_ONBOARDING_OVERVIEW_SUBTITLE_ENABLED: string; GUILD_ONBOARDING_OVERVIEW_TITLE_DISABLED: string; GUILD_ONBOARDING_OVERVIEW_TITLE_ENABLED: string; GUILD_ONBOARDING_OVERVIEW_UPDATES_2: string; GUILD_ONBOARDING_OVERVIEW_UPDATES_3: string; GUILD_ONBOARDING_OVERVIEW_UPDATES_HEADER: string; GUILD_ONBOARDING_PREVIEW_AS_MEMBER: string; GUILD_ONBOARDING_PREVIEW_CTA: string; GUILD_ONBOARDING_SETUP_EDUCATION_CUSTOMIZATION_QUESTIONS_SUBTITLE: string; GUILD_ONBOARDING_SETUP_EDUCATION_CUSTOMIZATION_QUESTIONS_TITLE: string; GUILD_ONBOARDING_SETUP_EDUCATION_DEFAULT_CHANNELS_SUBTITLE: string; GUILD_ONBOARDING_SETUP_EDUCATION_DEFAULT_CHANNELS_TITLE: string; GUILD_ONBOARDING_SETUP_EDUCATION_HOME_SUBTITLE: string; GUILD_ONBOARDING_SETUP_EDUCATION_HOME_TITLE: string; GUILD_ONBOARDING_SETUP_EDUCATION_OVERVIEW_CTA: string; GUILD_ONBOARDING_SETUP_EDUCATION_OVERVIEW_CUSTOMIZATION_QUESTIONS_TITLE: FM<[never, "textHook"], true>; GUILD_ONBOARDING_SETUP_EDUCATION_OVERVIEW_DEFAULT_CHANNELS_TITLE: FM<[never, "textHook"], true>; GUILD_ONBOARDING_SETUP_EDUCATION_OVERVIEW_SUBTEXT: string; GUILD_ONBOARDING_SETUP_EDUCATION_OVERVIEW_SUBTITLE: string; GUILD_ONBOARDING_SETUP_EDUCATION_OVERVIEW_TITLE: string; GUILD_ONBOARDING_SETUP_LANDING_CHANNELS_SUBTITLE: string; GUILD_ONBOARDING_SETUP_LANDING_CHANNELS_TITLE: string; GUILD_ONBOARDING_SETUP_LANDING_CTA: string; GUILD_ONBOARDING_SETUP_LANDING_GUIDE_SUBTITLE: string; GUILD_ONBOARDING_SETUP_LANDING_GUIDE_TITLE: string; GUILD_ONBOARDING_SETUP_LANDING_GUIDE_TODO_1_CHANNEL_NAME: string; GUILD_ONBOARDING_SETUP_LANDING_GUIDE_TODO_1_TITLE: string; GUILD_ONBOARDING_SETUP_LANDING_GUIDE_TODO_2_CHANNEL_NAME: string; GUILD_ONBOARDING_SETUP_LANDING_GUIDE_TODO_2_TITLE: string; GUILD_ONBOARDING_SETUP_LANDING_GUIDE_WELCOME_MESSAGE: string; GUILD_ONBOARDING_SETUP_LANDING_ONBOARDING_SUBTITLE: string; GUILD_ONBOARDING_SETUP_LANDING_ONBOARDING_TITLE: string; GUILD_ONBOARDING_SETUP_LANDING_SUBTITLE: string; GUILD_ONBOARDING_SETUP_LANDING_TITLE: string; GUILD_ONBOARDING_SETUP_LANDING_WELCOMECARD_SUBTITLE: string; GUILD_ONBOARDING_SETUP_LANDING_WELCOMECARD_TITLE: string; GUILD_ONBOARDING_SETUP_PREVIEW: string; GUILD_ONBOARDING_SETUP_PREVIEW_ROLES_WARNING: string; GUILD_ONBOARDING_SETUP_REVIEW_DESCRIPTION: string; GUILD_ONBOARDING_SETUP_REVIEW_DESCRIPTION_INCOMPLETE: string; GUILD_ONBOARDING_SETUP_REVIEW_ENABLE_ONBOARDING: string; GUILD_ONBOARDING_SETUP_REVIEW_NO_STARTER_QUESTIONS: string; GUILD_ONBOARDING_SETUP_REVIEW_NO_WELCOME_CHANNELS: string; GUILD_ONBOARDING_SETUP_REVIEW_NOT_ENOUGH_DEFAULT_CHANNELS: FM<"numChattableChannels" | "numDefaultChannels", false>; GUILD_ONBOARDING_SETUP_REVIEW_NUM_DEFAULT_CHANNELS: FM<"numDefaultChannels", false>; GUILD_ONBOARDING_SETUP_REVIEW_NUM_DEFAULT_CHANNELS_ADVANCED: FM<"numDefaultChannels" | "numFromQuestions", false>; GUILD_ONBOARDING_SETUP_REVIEW_NUM_STARTER_QUESTIONS: FM<"numOnboardingPrompts", false>; GUILD_ONBOARDING_SETUP_REVIEW_NUM_WELCOME_CHANNELS: FM<"numWelcomeChannels", false>; GUILD_ONBOARDING_SETUP_REVIEW_SET_UP: string; GUILD_ONBOARDING_SETUP_REVIEW_TITLE: string; GUILD_ONBOARDING_SETUP_REVIEW_TITLE_INCOMPLETE: string; GUILD_ONBOARDING_SETUP_STEP_CHANNELS: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_STEP_CHANNELS_ADVANCED: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_STEP_COUNTER: FM<"count" | "total", false>; GUILD_ONBOARDING_SETUP_STEP_HOME: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_STEP_PROMPTS: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_STEP_PROMPTS_ADVANCED: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_STEP_REVIEW: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_STEP_SAFETY: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_STEP_WELCOME: FM<"stepNumber", false>; GUILD_ONBOARDING_SETUP_WELCOME_CARD_TITLE: string; GUILD_ONBOARDING_TESTIMONIAL_ADMIN_DESIGN_BUDDIES: string; GUILD_ONBOARDING_TESTIMONIAL_ADMIN_DUNGEON_SLIMES: string; GUILD_ONBOARDING_TESTIMONIAL_ADMIN_HARRY_POTTER: string; GUILD_ONBOARDING_TESTIMONIAL_ADMIN_VALORANT: string; GUILD_ONBOARDING_TESTIMONIAL_DESIGN_BUDDIES: FM<[never, "testimonialHook"], true>; GUILD_ONBOARDING_TESTIMONIAL_DUNGEON_SLIMES: FM<[never, "testimonialHook"], true>; GUILD_ONBOARDING_TESTIMONIAL_HARRY_POTTER: FM<[never, "testimonialHook"], true>; GUILD_ONBOARDING_TESTIMONIAL_VALORANT: FM<[never, "testimonialHook"], true>; GUILD_ONBOARDING_UPSELL_COACHMARK_CHECK_IT_OUT: string; GUILD_ONBOARDING_UPSELL_COACHMARK_DESCRIPTION: string; GUILD_ONBOARDING_UPSELL_COACHMARK_TITLE: string; GUILD_ONBOARDING_UPSELL_DESCRIPTION: string; GUILD_ONBOARDING_UPSELL_DESCRIPTION_1: string; GUILD_ONBOARDING_UPSELL_DESCRIPTION_2: string; GUILD_ONBOARDING_UPSELL_DESCRIPTION_3: string; GUILD_ONBOARDING_UPSELL_DESCRIPTION_4: string; GUILD_ONBOARDING_UPSELL_MODAL_DESCRIPTION: FM<"guildName", false>; GUILD_ONBOARDING_UPSELL_MODAL_TITLE: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_1: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_1_EMOJI: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_2: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_2_EMOJI: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_3: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_3_EMOJI: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_SUBTITLE: FM; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_SUBTITLE_TOOLTIP: FM; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_TITLE: string; GUILD_ONBOARDING_UPSELL_PREVIEW_CHANNELS_TITLE_TOOLTIP: string; GUILD_ONBOARDING_UPSELL_PREVIEW_LANDING_1: string; GUILD_ONBOARDING_UPSELL_PREVIEW_LANDING_2: string; GUILD_ONBOARDING_UPSELL_PREVIEW_LANDING_3: string; GUILD_ONBOARDING_UPSELL_PREVIEW_LANDING_4: string; GUILD_ONBOARDING_UPSELL_PREVIEW_VALUE_TITLE: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_1_CHANNEL: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_1_EMOJI: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_1_SUBTITLE: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_2_CHANNEL: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_2_EMOJI: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_2_SUBTITLE: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_3_CHANNEL: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_3_EMOJI: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_3_SUBTITLE: string; GUILD_ONBOARDING_UPSELL_PREVIEW_WELCOMECARD_TITLE: string; GUILD_ONBOARDING_UPSELL_SAFETY_TITLE: string; GUILD_ONBOARDING_UPSELL_SAFETY_TITLE_TOOLTIP: string; GUILD_OWNER: string; GUILD_PARTNERED: string; GUILD_POPOUT_ACTIVITY_EMBEDDED_ACTIVITY_CARD_ARIA: FM<"channelName" | "gameName" | "users", false>; GUILD_POPOUT_ACTIVITY_EVENT_CARD_ARIA: FM<"eventName", false>; GUILD_POPOUT_ACTIVITY_EVENT_CREATED_BY: FM<"creatorName", false>; GUILD_POPOUT_ACTIVITY_EVENT_LOCATION: string; GUILD_POPOUT_ACTIVITY_EVENT_LOCATION_A11Y: FM<"location", false>; GUILD_POPOUT_ACTIVITY_HANGOUT_CARD_ARIA: FM<"channelName" | "users", false>; GUILD_POPOUT_ACTIVITY_STREAMER: FM<"username", false>; GUILD_POPOUT_ACTIVITY_STREAMERS: FM<"streamerCount", false>; GUILD_POPOUT_EMPTY_PROMPT_ARIA: FM<"channelName", false>; GUILD_POPOUT_EMPTY_PROMPT_BODY: string; GUILD_POPOUT_EMPTY_PROMPT_HEADER: string; GUILD_POPOUT_INVITES_PAUSED: FM; GUILD_POPOUT_JOINED: string; GUILD_POPOUT_UNAVAILABLE_FLAVOR: string; GUILD_POPOUT_UNAVAILABLE_HEADER: string; GUILD_POPOUT_USER_IN_VOICE: FM<"username", false>; GUILD_POPOUT_USER_ON_VIDEO: FM<"username", false>; GUILD_POPOUT_USERS_IN_VOICE: FM<"count" | "username", false>; GUILD_POPOUT_USERS_ON_VIDEO: FM<"count" | "username", false>; GUILD_POPOUT_USERS_STREAMING: FM<"count" | "username", false>; GUILD_POPOUT_VIEW_SERVER_BUTTON: string; GUILD_POPOUT_VIEWING_AS_ROLES: FM; GUILD_PREMIUM: string; GUILD_PRODUCT_BILLING_CONTACT_SUPPORT: string; GUILD_PRODUCT_BILLING_SERVER_NAME: string; GUILD_PRODUCT_CARD_DOWNLOAD: string; GUILD_PRODUCT_CARD_PURCHASE_BUTTON: string; GUILD_PRODUCT_CARD_TYPE_ROLE: string; GUILD_PRODUCT_EARNINGS_TABLE_PRICE_COLUMN_TITLE: string; GUILD_PRODUCT_EDIT_MODAL_DESCRIPTION_LABEL: string; GUILD_PRODUCT_EDIT_MODAL_NAME_LABEL: string; GUILD_PRODUCT_EDIT_MODAL_PRICE_LABEL: string; GUILD_PRODUCT_EDIT_MODAL_PUBLISH_BUTTON: string; GUILD_PRODUCT_EDIT_MODAL_SAVE_CHANGES_BUTTON: string; GUILD_PRODUCT_EDIT_NOTICE_BAR_DISMISS: string; GUILD_PRODUCT_PUBLISH_REQUIRES_SAVE: string; GUILD_PRODUCT_PURCHASE_MODAL_CTA: string; GUILD_PRODUCT_SETTINGS_ADD_ROLE_HEADER: string; GUILD_PRODUCT_SETTINGS_CREATE_ROLE_SELECT_COLOR_ARIA: string; GUILD_PRODUCT_SETTINGS_REMOVE_ROLE_MODAL_REMOVE_CLOSE_LABEL: string; GUILD_PRODUCT_SETTINGS_WARNING_MODAL_TITLE: string; GUILD_PRODUCT_STATUS_BADGE_PUBLISHED: string; GUILD_PRODUCT_TWO_FA_NOT_ENABLED_ERROR_TITLE: string; GUILD_PRODUCTS_BASIC_INFO_SECTION: string; GUILD_PRODUCTS_DELETE_ERROR_TEXT: string; GUILD_PRODUCTS_PAYMENT_HEADER: string; GUILD_PRODUCTS_PAYMENT_SECTION: string; GUILD_PROFILE_JOIN_SERVER_BUTTON: string; GUILD_PROGRESS_CTA: string; GUILD_PROGRESS_CURRENT_STEP: FM<"currStep" | "step" | "total", false>; GUILD_PROGRESS_DISMISS: string; GUILD_PROGRESS_FINISH: string; GUILD_PROGRESS_SKIP: string; GUILD_PROGRESS_STEPS: FM<["numFinished" | "total", "stepsHook"], true>; GUILD_PROGRESS_TITLE: string; GUILD_RAID_REPORT_NOTIFICATION: FM<"guildName" | "username", false>; GUILD_RAID_REPORT_SYSTEM_MESSAGE: FM<["guildName" | "username", "usernameHook"], true>; GUILD_RAID_REPORT_SYSTEM_MESSAGE_MOBILE: FM<"guildName" | "username", true>; GUILD_RAID_REPORT_SYSTEM_MESSAGE_SHORT: FM<["guildName" | "username", "usernameHook"], true>; GUILD_REPORT_FALSE_ALARM_SYSTEM_MESSAGE: FM<["guildName" | "username", "usernameHook"], true>; GUILD_REPORT_FALSE_ALARM_SYSTEM_MESSAGE_MOBILE: FM<"guildName" | "username", true>; GUILD_REPORT_FALSE_ALARM_SYSTEM_MESSAGE_MOBILE_SHORT: FM<"username", true>; GUILD_REPORT_FALSE_ALARM_SYSTEM_MESSAGE_SHORT: FM<["username", "usernameHook"], true>; GUILD_REPORT_RAID_BUTTON_TITLE: string; GUILD_REPORT_RAID_MODAL_CHOICE_DM_SPAM: string; GUILD_REPORT_RAID_MODAL_CHOICE_MENTION_SPAM: string; GUILD_REPORT_RAID_MODAL_CHOICE_MESSAGE_SPAM: string; GUILD_REPORT_RAID_MODAL_CHOICE_SETTINGS_SPAM: string; GUILD_REPORT_RAID_MODAL_CHOICE_SUSPICIOUS_USERS: string; GUILD_REPORT_RAID_MODAL_DESCRIPTION: FM<"helpArticle", true>; GUILD_REPORT_RAID_MODAL_DESCRIPTION_CLICKABLE: FM; GUILD_REPORT_RAID_MODAL_TITLE: string; GUILD_ROLE_ACTIONS_MENU_LABEL: string; GUILD_ROLE_CANCEL_ARE_YOU_SURE: string; GUILD_ROLE_CANCEL_NAMED_SUBSCRIPTION_MODAL_TITLE: FM<"guildName", false>; GUILD_ROLE_CANCEL_SUBSCRIPTION_CONFIRMATION: FM<"endDate", false>; GUILD_ROLE_CANCEL_SUBSCRIPTION_DELETE_MUTATION_CTA: string; GUILD_ROLE_CANCEL_SUBSCRIPTION_DELETE_MUTATION_DESCRIPTION: FM<"changeDate" | "currentListing" | "nextListing", true>; GUILD_ROLE_CANCEL_SUBSCRIPTION_MODAL_CANCEL_CTA: string; GUILD_ROLE_CANCEL_SUBSCRIPTION_MODAL_CANCEL_SUBSCRIPTION_CTA: string; GUILD_ROLE_CANCEL_SUBSCRIPTION_MODAL_DESCRIPTION: FM<"numAdditionalBenefits" | "numChannels" | "subscriptionEndDate", false>; GUILD_ROLE_CANCEL_SUBSCRIPTION_MODAL_NEVERMIND_CTA: string; GUILD_ROLE_CANCEL_SUBSCRIPTION_MODAL_TITLE: string; GUILD_ROLE_CANCEL_WHAT_YOU_LOSE: FM<"numChannels" | "numEmojis" | "numIntangibles", false>; GUILD_ROLE_CANCEL_WHEN_YOU_LOSE: FM<"subscriptionEndDate", true>; GUILD_ROLE_CANCEL_YOURE_GIVING_UP: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_CANCELLED: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_CHANGE_PAYMENT_ONLY_ON_DESKTOP: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_INFO_CANNOT_RESUBSCRIBE_TO_TRIAL: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_INFO_MEMBER_SINCE: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_INFO_MEMBERSHIP_ENDS: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_INFO_NEXT_RENEWAL: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_INFO_PRICE: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_IOS_PLATFORM: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_IOS_PLATFORM_TOOLTIP: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_MANAGE_OPTIONS_CANCEL: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_MANAGE_OPTIONS_CHANGE_TIER: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_MANAGE_OPTIONS_LABEL: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_MANAGE_OPTIONS_RESTART_SUBSCRIPTION: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_PAGE_DESCRIPTION: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_PAST_DUE: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_PAST_DUE_DESCRIPTION: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_PAST_DUE_MOBILE: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_PAYMENT_METHOD_LABEL: string; GUILD_ROLE_MANAGE_SUBSCRIPTION_UPDATE_PAYMENT_METHOD: string; GUILD_ROLE_SUB_TYPE_BODY: FM; GUILD_ROLE_SUB_TYPE_BODY_AFTER_CONSOLIDATION: string; GUILD_ROLE_SUBSCRIPTION_AMOUNT_PER_PERIOD: FM<"period", false>; GUILD_ROLE_SUBSCRIPTION_BENEFIT: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_CHANNEL_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_CHANNEL_MODAL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_CHANNEL_MODAL_WARNING: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_CHANNEL_SELECT_CREATE_LABEL: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_EDIT_ARIA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_EMOJI_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_IMPORT_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_IMPORT_HEADER_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_IMPORT_HEADER_TITLE: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_IMPORT_NUM_BENEFITS: FM<"benefits" | "channels", false>; GUILD_ROLE_SUBSCRIPTION_BENEFIT_IMPORT_SELECT_ROLE: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_IMPORT_SELECT_ROLE_EMPTY: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_INTANGIBLE_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_INTANGIBLE_MODAL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_INTANGIBLE_NAME_TITLE: string; GUILD_ROLE_SUBSCRIPTION_BENEFIT_VISUAL_FLAIR: string; GUILD_ROLE_SUBSCRIPTION_BENEFITS_FOR_CREATORS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_CARD_CHANNELS_HEADER: FM<"numChannels", false>; GUILD_ROLE_SUBSCRIPTION_CARD_EMOJI_HEADER: FM<"numEmojis", false>; GUILD_ROLE_SUBSCRIPTION_CARD_INTANGIBLES_HEADER: FM<"numIntangibles", false>; GUILD_ROLE_SUBSCRIPTION_CARD_ROLE_AND_ICON_HEADER: string; GUILD_ROLE_SUBSCRIPTION_CHANGE_TIER_DISABLED_IF_IAP: string; GUILD_ROLE_SUBSCRIPTION_CHANGE_TIER_DISABLED_IN_TRIAL: string; GUILD_ROLE_SUBSCRIPTION_CHANNEL_BENEFIT_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_HEADER: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_INFO_COVER_IMAGE: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_INFO_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_INFO_FORMAT: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_LEARN_MORE_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_LINK_CASE_STUDIES: FM<"caseStudiesUrl", true>; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_LINK_PROMO_PAGE: FM<"promoPageGuideUrl", true>; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_LINK_SUBSCRIPTION_OFFERING: FM<"subscriptionOfferingGuideUrl", true>; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_LINK_TIER_STRUCTURE: FM<"tierStructureGuideUrl", true>; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_PAYMENT_ENABLE: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_TIER_BASICS: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_TIER_FLAIR: string; GUILD_ROLE_SUBSCRIPTION_CHECKLIST_TIER_PERKS: string; GUILD_ROLE_SUBSCRIPTION_COMMUNITY_REQUIREMENT_CTA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_BENEFITS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_CHANNEL_BENEFITS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_CHANNEL_BENEFITS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_CONFIRMATION_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_CONFIRMATION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_CONTINUE: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_DESIGN_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_DESIGN_TITLE: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_DETAILS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_DETAILS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_INTANGIBLE_BENEFITS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_CREATE_TIER_INTANGIBLE_BENEFITS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_CREATOR_BENEFIT_1_GRID_ARIA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_CREATOR_BENEFIT_1_PREVIEW_IMG_ALT: string; GUILD_ROLE_SUBSCRIPTION_CREATOR_BENEFIT_2: string; GUILD_ROLE_SUBSCRIPTION_CREATOR_BENEFIT_2_IMG_1_ALT: string; GUILD_ROLE_SUBSCRIPTION_CREATOR_BENEFIT_2_IMG_2_ALT: string; GUILD_ROLE_SUBSCRIPTION_CREATOR_BENEFIT_3: string; GUILD_ROLE_SUBSCRIPTION_CREATOR_BENEFIT_3_IMG_ALT: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_A11Y_TOGGLE_TRANSACTION_PERIOD: FM<"transactionPeriod", false>; GUILD_ROLE_SUBSCRIPTION_EARNINGS_EARNINGS_HISTORY_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_EARNINGS_HISTORY_EMPTY: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_EARNINGS_HISTORY_HEADER: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_EDIT_PAYMENT_METHOD_LINK: FM<"url", true>; GUILD_ROLE_SUBSCRIPTION_EARNINGS_EDIT_PAYOUT: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_HEADER: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_INCLUDE_PREVIOUS_OWNER_NOTICE_TEXT: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_INSIGHTS_NOTICE_TEXT: FM<"insightsURL", true>; GUILD_ROLE_SUBSCRIPTION_EARNINGS_METRIC_NEXT_PAYMENT: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_METRIC_NEXT_PAYMENT_DISCLAIMER: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_METRIC_REVENUE: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_METRIC_SUBSCRIBERS: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_METRIC_TREND_DESCRIPTION: FM<"value", false>; GUILD_ROLE_SUBSCRIPTION_EARNINGS_METRIC_TREND_EMPTY_TEXT: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_AMOUNT: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_AMOUNT_DISCLAIMER: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_MEMBERS: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_PERIOD: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_PRICE: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_CANCELLED: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_DEFERRED: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_ERROR: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_PAID: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_PENDING: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_PENDING_OR_SCHEDULED_WITH_DATE: FM<"payoutDate", false>; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_REJECTED: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_RISK_REVIEW: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_STATUS_SCHEDULED: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_TIER_DELETED: string; GUILD_ROLE_SUBSCRIPTION_EARNINGS_TABLE_TIERS: string; GUILD_ROLE_SUBSCRIPTION_EMOJI: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_ADD_MODAL_DESCRIPTION: FM; GUILD_ROLE_SUBSCRIPTION_EMOJI_ADD_MODAL_HEADER: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_ADD_MODAL_SAVE_BUTTON: FM<"totalEmoji", false>; GUILD_ROLE_SUBSCRIPTION_EMOJI_DELETE_MODAL_BODY: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_DELETE_MODAL_DELETE_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_DELETE_MODAL_HEADER: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_PICKER_PURCHASE_UPSELL_DESCRIPTION: FM<"serverName", false>; GUILD_ROLE_SUBSCRIPTION_EMOJI_PICKER_UPGRADE_UPSELL_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_PICKER_UPSELL_PURCHASE_CTA: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_PICKER_UPSELL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_PICKER_UPSELL_UPGRADE_CTA: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_SELECT_ROLE_ACTION_SHEET_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_SELECT_ROLE_ACTION_SHEET_TITLE: string; GUILD_ROLE_SUBSCRIPTION_EMOJI_SETTINGS_MANAGE_PREMIUM_TEXT: FM; GUILD_ROLE_SUBSCRIPTION_EMPTY_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_EMPTY_PERK_1_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_EMPTY_PERK_1_TITLE: string; GUILD_ROLE_SUBSCRIPTION_EMPTY_PERK_2_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_EMPTY_PERK_2_TITLE: string; GUILD_ROLE_SUBSCRIPTION_EMPTY_PERK_3_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_EMPTY_PERK_3_TITLE: string; GUILD_ROLE_SUBSCRIPTION_EMPTY_TITLE: string; GUILD_ROLE_SUBSCRIPTION_ENABLE_MONETIZATION_UNAVAILABLE_MOBILE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_ENABLE_MONETIZATION_UNAVAILABLE_MOBILE_TITLE: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_ALL_CHANNELS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_ALL_CHANNELS_DIALOG_TEXT: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_ALL_CHANNELS_DIALOG_TITLE: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_ALL_CHANNELS_NAME: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_SOME_CHANNELS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_SOME_CHANNELS_NAME: string; GUILD_ROLE_SUBSCRIPTION_FORMAT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_HAS_PENDING_MUTATION: string; GUILD_ROLE_SUBSCRIPTION_HAS_PENDING_MUTATION_TO_CURRENT_LISTING: FM<"changeDate", false>; GUILD_ROLE_SUBSCRIPTION_HOW_IT_WORKS_FOOTER: FM<"creatorPortalUrl", true>; GUILD_ROLE_SUBSCRIPTION_HOW_IT_WORKS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_IAP_CANCEL_MODAL_CTA: string; GUILD_ROLE_SUBSCRIPTION_IAP_CANCEL_MODAL_DESCRIPTION: FM<["activeListingName" | "billingEndDate" | "changeToListingName", "emphasisHook"], true>; GUILD_ROLE_SUBSCRIPTION_IAP_CANCEL_MODAL_DESCRIPTION_CONTINUED: FM<[never, "emphasisHook"], true>; GUILD_ROLE_SUBSCRIPTION_IAP_CANCEL_MODAL_TITLE: FM<"activeListingName", false>; GUILD_ROLE_SUBSCRIPTION_IAP_COMPLETE_ONBOARDING_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_IAP_COMPLETE_ONBOARDING_DIALOG_BODY: string; GUILD_ROLE_SUBSCRIPTION_IAP_SWITCH_TIERS_BUTTON_CTA: string; GUILD_ROLE_SUBSCRIPTION_IAP_SWITCH_TIERS_BUTTON_LABEL: FM<["activeListingName" | "billingEndDate", "emphasisHook"], true>; GUILD_ROLE_SUBSCRIPTION_IAP_UPSELL_BODY: string; GUILD_ROLE_SUBSCRIPTION_IAP_UPSELL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_IMAGE_CTA_DEFAULT_FILENAME: string; GUILD_ROLE_SUBSCRIPTION_IMPORT_BENEFITS_CONFIRM_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_IMPORT_BENEFITS_FROM_ROLE_CONFIRM_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_IMPORT_BENEFITS_FROM_ROLE_MODAL_HEADER_1: string; GUILD_ROLE_SUBSCRIPTION_IMPORT_BENEFITS_FROM_ROLE_MODAL_HEADER_2: FM<"roleName", true>; GUILD_ROLE_SUBSCRIPTION_IMPORT_BENEFITS_MODAL_HEADER: FM<"tierName", false>; GUILD_ROLE_SUBSCRIPTION_IMPORT_BENEFITS_SELECT_ALL_CHANNEL_BENEFITS: string; GUILD_ROLE_SUBSCRIPTION_IMPORT_BENEFITS_SELECT_ALL_INTANGIBLE_BENEFITS: string; GUILD_ROLE_SUBSCRIPTION_INELIGIBLE_TRIAL_DISCLAIMER: string; GUILD_ROLE_SUBSCRIPTION_INTANGIBLE_BENEFIT_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_LISTINGS_SCROLLABLE_NOTICE: string; GUILD_ROLE_SUBSCRIPTION_MANAGE_SUBSCRIPTION_PAGE_TRIAL_PRICE_INFO: string; GUILD_ROLE_SUBSCRIPTION_MOBILE_SUBCRIBE_CTA_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_MOBILE_SUBCRIBE_CTA_TITLE: string; GUILD_ROLE_SUBSCRIPTION_NAGBAR_TEXT: string; GUILD_ROLE_SUBSCRIPTION_OTHER_CREATOR_CARD_PREMIUM_EMOJI_TITLE: string; GUILD_ROLE_SUBSCRIPTION_OTHER_CREATOR_GUILD_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_OTHER_CREATOR_NEXT_CARD_ARIA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_OTHER_CREATOR_PREVIOUS_CARD_ARIA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_OTHER_CREATOR_QUOTE_ATTRIBUTION: FM<"attributionName" | "attributionTitle", false>; GUILD_ROLE_SUBSCRIPTION_OTHER_CREATOR_VIEW_SERVER_CTA: string; GUILD_ROLE_SUBSCRIPTION_PAYMENT_ANALYTICS_UNAVAILABLE_MOBILE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_PAYMENT_ANALYTICS_UNAVAILABLE_MOBILE_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PLAN_FINISH: string; GUILD_ROLE_SUBSCRIPTION_PLAN_SETUP_COVER_PHOTO_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_PLAN_SETUP_COVER_PHOTO_LABEL: string; GUILD_ROLE_SUBSCRIPTION_PLAN_SETUP_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_PLAN_SETUP_DETAILS_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_PLAN_SETUP_DETAILS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PLAN_SETUP_FORMAT_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_PLAN_SETUP_FORMAT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PREMIUM_ROLE_ICON_LABEL: string; GUILD_ROLE_SUBSCRIPTION_PRICE_PER_INTERVAL: FM<"interval" | "price", false>; GUILD_ROLE_SUBSCRIPTION_PROMO_PAGE_UPSELL_BODY: string; GUILD_ROLE_SUBSCRIPTION_PROMO_PAGE_UPSELL_HEADER: string; GUILD_ROLE_SUBSCRIPTION_PUBLISH_TIER_CTA: string; GUILD_ROLE_SUBSCRIPTION_PUBLISH_TIER_DIALOG_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_PUBLISH_TIER_DIALOG_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_CARD_CHANNEL_BENEFIT_TITLE: FM<"numChannels", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_CARD_EMOJI_BENEFIT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_CARD_INTANGIBLE_BENEFIT_TITLE: FM<"numBenefits", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_CARD_SHOW_ALL_PERKS: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_CARD_UNLOCK: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_ERROR_PAGE_GUILD_NOT_ELIGIBLE_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_ERROR_PAGE_GUILD_NOT_ELIGIBLE_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_ERROR_PAGE_NOT_GUILD_MEMBER_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_ERROR_PAGE_NOT_GUILD_MEMBER_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_LEGAL_DISCLAIMER: FM<"paidURL" | "termsURL", true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_CHANNEL_PREVIEW: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_DONE_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_BENEFITS_SUBTITLE: FM<"benefitCount", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_DONE_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_EMOJI_SUBTITLE: FM<"emojiCount", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_EXCLUSIVE_CHANNELS_SUBTITLE: FM<"channelCount", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_OPEN_DISCORD_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_SUBTITLE: FM<"benefits", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_LITE_TITLE: FM<"serverName" | "tierName", true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_PREMIUM_EMOJI_BENEFIT_DESCRIPTION: FM<"count", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_PREMIUM_EMOJI_BENEFIT_TEXT: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_PREMIUM_EMOJI_PREVIEW_TITLE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_SUBTITLE: FM<"tier", true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_MODAL_CONFIRMATION_TITLE: FM<"serverName", true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_CHOOSE_SUBSCRIPTION_CTA: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_CHOOSE_SUBSCRIPTION_FOR_GATED_CHANNEL_CTA: FM<[never, "unlockHook"], true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_DESCRIPTION_SEE_LESS: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_DESCRIPTION_SEE_MORE: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_GROUP_CTA: FM<"serverName", true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_GROUP_CTA_HOOK: FM<["serverName", "serverNameHook"], true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_PARTNER_SERVER_LABEL: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_TITLE: FM<"serverName", false>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_UNAVAILABLE_CTA_HOOK: FM<["serverName", "serverNameHook"], true>; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_UNAVAILABLE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_PAGE_WATCH_TRAILER: string; GUILD_ROLE_SUBSCRIPTION_PURCHASE_UPSELL_PAGE_CTA: FM<"channelName" | "serverName", true>; GUILD_ROLE_SUBSCRIPTION_RESTARTED_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_RESTARTED_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SEARCH_CHANNELS_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_SERVER_NAME_UNAVAILABLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_2MFA_ELIGIBILITY_CTA: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_2FA_DESCRIPTION: FM<[never, "enableMFAHook"], true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_2FA_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_2FA_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_AGE_DESCRIPTION: FM<"minimumAge", false>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_AGE_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_AGE_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_COMMUNICATORS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_COMMUNICATORS_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_COMMUNICATORS_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_MEMBERS_DESCRIPTION: FM<"minimumSize", false>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_MEMBERS_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_MEMBERS_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_NSFW_CONTENT_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_NSFW_CONTENT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_NSFW_CONTENT_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_OWNER_AGE_DESCRIPTION: FM<"minimumOwnerAgeInYears", false>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_OWNER_AGE_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_OWNER_AGE_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_RETENTION_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_RETENTION_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_RETENTION_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_VIOLATIONS_DESCRIPTION: FM<"communityGuidelinesUrl", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_VIOLATIONS_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBILITY_REQUIREMENT_VIOLATIONS_NOT_ELIGIBLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ELIGIBLE_MESSAGE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_CTA: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_OWNERS_ONLY_NOTICE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_PENDING_DESCRIPTION: FM<"faqUrl", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_PENDING: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_RECEIVED_AND_PENDING: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_REJECTED: FM<"requestCooldownDuration", false>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_REJECTED_HIGH_HARM: FM<"communityGuidelineUrl", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_REJECTED_HIGH_HARM_ALT: FM<"communityGuidelineUrl", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_REJECTED_STATIC: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_REJECTED_STATIC_V2: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_REJECTED_V2: FM<"creatorRevenuePolicyUrl" | "requestCooldownDuration", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_RESUBMIT: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUEST_RESUBMIT_V2: FM; GUILD_ROLE_SUBSCRIPTION_SETTINGS_ENABLE_REQUIREMENTS_DESCRIPTION: FM<"faqUrl", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_NO_PUBLISHED_TIERS: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_NOT_ELIGIBLE_MESSAGE: FM<[never, "doesNotHook"], true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_NOT_ELIGIBLE_TITLE_V2: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_CHANGE_TEAM_CTA: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_DESCRIPTION: FM<"teamName", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_MFA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_MFA_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_SELECT_TEAM_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_SELECT_TEAM_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_SELECT_TEAM_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_SELECT_TEAM_TO_TRANSFER_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_MODAL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_NO_TEAM_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_SELECT_TEAM_CTA: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_TEAM_CHANGE_WARNING: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_TEAM_CHANGE_WARNING_HEADING: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYMENT_TEAM_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_PAYOUTS_PROBLEM_WARNING: FM<"url", true>; GUILD_ROLE_SUBSCRIPTION_SETTINGS_READ_ONLY_FOR_PENDING_NEW_OWNER_PENDING_NOTICE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_RECENT_VIOLATION_ELIGIBILITY_CTA: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_ADVANCED: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_BASIC_INFO: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_BASIC_INFO_NEEDS_APPLICATION: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_EMOJI: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_EMOJI_MOBILE: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_PAYMENT: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_PREVIEW: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_PREVIEW_DISABLED: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SECTION_TIERS: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SUBMIT_APPEAL_CTA: string; GUILD_ROLE_SUBSCRIPTION_SETTINGS_SUBSCRIBERS_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETUP_CHANNEL_BENEFITS_ADD_BUTTON_TEXT: string; GUILD_ROLE_SUBSCRIPTION_SETUP_CHANNEL_BENEFITS_CHANNELS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_CHANNEL_BENEFITS_CHANNELS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_EMOJI_ADD_BUTTON_TEXT: string; GUILD_ROLE_SUBSCRIPTION_SETUP_EMOJI_DESCRIPTION: FM<"premiumEmojiMaximum", false>; GUILD_ROLE_SUBSCRIPTION_SETUP_EMOJI_MANAGE_LINK: FM; GUILD_ROLE_SUBSCRIPTION_SETUP_EMOJI_REMOVE_BUTTON_ARIA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETUP_EMOJI_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_ENABLE_FREE_TRIAL_CTA: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FLAIR_BADGE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FLAIR_BADGE_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FLAIR_COLOR_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FLAIR_PREVIEW_MESSAGE_TEXT: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FREE_TRIAL_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FREE_TRIAL_DISABLED: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FREE_TRIAL_TIME_LIMIT_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FREE_TRIAL_TIME_LIMIT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_FREE_TRIAL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_COVER_IMAGE_CTA_EDIT: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_COVER_IMAGE_CTA_EDIT_A11Y: FM<"filename", false>; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_COVER_IMAGE_CTA_UPLOAD: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_COVER_IMAGE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_COVER_IMAGE_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_DESCRIPTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INFO_FULL_OUT_ALL_INFO: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INITIAL_TIER_NAME: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INTANGIBLE_BENEFITS_ADD_BUTTON_TEXT: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INTANGIBLE_BENEFITS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_INTANGIBLE_BENEFITS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_MOBILE_TIER_EMOJI_EDIT_BUTTON_TEXT: string; GUILD_ROLE_SUBSCRIPTION_SETUP_MOBILE_TIER_EMOJI_EDIT_CONFIRM_ALERT_BODY: FM<"numberOfEmojiSlatedForDeletion", false>; GUILD_ROLE_SUBSCRIPTION_SETUP_MOBILE_TIER_EMOJI_EDIT_CONFIRM_ALERT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_MOBILE_TIER_EMOJI_EDIT_INLINE_MESSAGE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_MOBILE_TIER_EMOJI_EDIT_INLINE_WARNING: string; GUILD_ROLE_SUBSCRIPTION_SETUP_MOBILE_TIER_EMOJI_EDIT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ACTIVE_TRIAL_USER_LIMIT_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ACTIVE_TRIAL_USER_LIMIT_NONE_OPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ACTIVE_TRIAL_USER_LIMIT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ADVANCE_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ARCHIVE_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ARCHIVE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ARCHIVE_HEADER: FM<"tierName", false>; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_ARCHIVE_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_BASIC_INFO_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_BENEFITS_HEADER_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_BENEFITS_HEADER_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DELETE_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DELETE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DELETE_HEADER: FM<"tierName", false>; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DELETE_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DELETE_TOOLTIP: FM<"listingMemberCount", false>; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DELETE_UNSAVED_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DELETED_CHANNEL_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DESCRIPTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DRAFT_BANNER_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_DRAFT_BANNER_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_EDIT_LABEL: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_FLAIR_HEADER_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_FLAIR_HEADER_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_NAME_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_NAME_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_PRICE_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_PRICE_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_REMOVAL_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_SAVE_BEFORE_PUBLISH_TOOLTIP: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_SYMBOL_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_SYMBOL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_SETUP_TIER_TRIAL_TIME_LIMIT_DEFAULT_OPTION: FM<"defaultLimit", false>; GUILD_ROLE_SUBSCRIPTION_START_EARNING_CTA: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_ACCENT_COLOR_BUTTON_PREVIEW: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_ACCENT_COLOR_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_ACCENT_COLOR_TITLE: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_DISPLAY_OPTIONS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_DISPLAY_OPTIONS_PREMIUM_MEMBER_COUNT: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_DISPLAY_OPTIONS_PREMIUM_MEMBER_COUNT_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_DISPLAY_OPTIONS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_ENABLE: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_GO_TO_PAGE: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_PRIMARY_TOGGLE_DISABLED_TOOLTIP: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_PROMO_URL: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_TRAILER_BAD_LINK: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_TRAILER_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_TRAILER_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_STORE_PAGE_SETTINGS_TRAILER_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TEMPLATE_PREVIEW_CHANNEL_UPSELL_BODY: string; GUILD_ROLE_SUBSCRIPTION_TEMPLATE_PREVIEW_CHANNEL_UPSELL_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_TEMPLATE_PREVIEW_CHANNEL_UPSELL_HEADER: string; GUILD_ROLE_SUBSCRIPTION_TIER_ADDITIONAL_BENEFIT_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_ADDITIONAL_BENEFITS_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_ARCHIVE_CONFIRMATION_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_ARCHIVE_CONFIRMATION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_ARCHIVE_CTA: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_ADD_BENEFIT_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_ADD_CHANNEL_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_CHANNEL_NAME_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_CREATE_A_CHANNEL_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_EMOJI_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_INCLUDE_ALL_CHANNELS_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_INTANGIBLE_NAME_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_REMOVE_FROM_TIER_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_BENEFITS_SELECT_CHANNELS_MANUALLY_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DELETE_CONFIRMATION_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_DELETE_CONFIRMATION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_DELETE_CTA: string; GUILD_ROLE_SUBSCRIPTION_TIER_DESIGN_MEMBER_BADGE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_DESIGN_MEMBER_BADGE_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DESIGN_MEMBER_COLOR_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DESIGN_MEMBER_PREVIEW_PLACEHOLDER_MESSAGE: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_CUSTOM_IMAGE_A11Y_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_CUSTOM_IMAGE_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_CUSTOM_IMAGE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_CUSTOM_IMAGE_EDIT_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_CUSTOM_IMAGE_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_DESCRIPTION_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_DESCRIPTION_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_NAME_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_NAME_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_PRICE_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_DETAIL_PRICE_PLACEHOLDER: string; GUILD_ROLE_SUBSCRIPTION_TIER_EMOJI_SECTION_TITLE: FM<"count", false>; GUILD_ROLE_SUBSCRIPTION_TIER_EXCLUSIVE_CHANNEL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_EXCLUSIVE_CHANNELS_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_MANAGEMENT_ARCHIVED_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_MANAGEMENT_DRAFT_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_MANAGEMENT_UNSAVED_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_REVIEW_CANCELED_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_REVIEW_ENTIRE_SERVER_ACCESS_BENEFIT: string; GUILD_ROLE_SUBSCRIPTION_TIER_REVIEW_EXCLUSIVE_CHANNEL_HEADER: FM<"count", false>; GUILD_ROLE_SUBSCRIPTION_TIER_REVIEW_INTANGIBLE_BENEFITS_HEADER: FM<"count", false>; GUILD_ROLE_SUBSCRIPTION_TIER_REVIEW_MEMBER_PREVIEW: string; GUILD_ROLE_SUBSCRIPTION_TIER_REVIEW_SUBSCRIBE_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_REVIEW_SUBSCRIBED_LABEL: string; GUILD_ROLE_SUBSCRIPTION_TIER_SHOW_LESS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_SHOW_MORE_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_SHOW_MORE_DESCRIPTION_WITH_ITEMS: FM<"numTruncated", false>; GUILD_ROLE_SUBSCRIPTION_TIER_SUBSCRIBE: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_DEEPLINK_MODAL_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_BENEFITS: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_CHANNELS: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_PERKS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_ROLE_ICON: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_START_FROM_SCRATCH: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_TEMPLATE_SELECTED_CLOSE: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_TEMPLATE_SELECTED_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_TEMPLATE_SELECTED_HEADER: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MOBILE_VIEW_ENTIRE_TEMPLATE: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_BODY: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_CREATE_FROM_SCRATCH_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_CREATE_FROM_SCRATCH_PROMPT: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_CREATOR_PORTAL_LINK: FM<"creatorPortalUrl", true>; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_EXCLUSIVE_BENEFITS_HEADER: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_EXCLUSIVE_CHANNELS_HEADER: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_HEADER: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_PERKS_HEADER: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_PRICE_RESELECTION_BODY: FM<"price", false>; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_PRICE_RESELECTION_GO_BACK: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_PRICE_RESELECTION_HEADER: FM<"tierName", false>; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_MODAL_SELECT_TEMPLATE_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_UPSELL_BODY: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_UPSELL_CTA: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_UPSELL_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_VIEW_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE_VIEW_TITLE: string; GUILD_ROLE_SUBSCRIPTION_TRIAL_DISCLAIMER: FM<"activeTrialUserLimit", false>; GUILD_ROLE_SUBSCRIPTION_TRIAL_PERIOD: FM<"trialPeriodDuration", false>; GUILD_ROLE_SUBSCRIPTION_TRIAL_RENEWAL_FOOTER: FM<"contactLink" | "days" | "helpdeskArticle" | "trialInterval", true>; GUILD_ROLE_SUBSCRIPTION_TRIAL_RENEWAL_FOOTER_V2: FM<"buttonText" | "cancelSubscriptionArticle" | "contactLink" | "days" | "helpdeskArticle" | "interval" | "paidServiceTermsArticle" | "tierName", true>; GUILD_ROLE_SUBSCRIPTION_UPSELL_BODY: string; GUILD_ROLE_SUBSCRIPTION_UPSELL_HEADER: string; GUILD_ROLE_SUBSCRIPTION_UPSELL_IMG_ALT: string; GUILD_ROLE_SUBSCRIPTION_USER_SUBSCRIPTION_PAST_DUE_CTA: string; GUILD_ROLE_SUBSCRIPTION_USER_SUBSCRIPTION_PAST_DUE_WARNING: string; GUILD_ROLE_SUBSCRIPTION_WAITLIST_CTA_LABEL: string; GUILD_ROLE_SUBSCRIPTION_WAITLIST_NOTICE: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_ACCEPT_TERMS_CHECKBOX: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_ACCEPT_TERMS_DESCRIPTION: FM<"fullTermsUrl", true>; GUILD_ROLE_SUBSCRIPTION_WELCOME_ACCEPT_TERMS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_DESKTOP_V2_TITLE: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_GET_STARTED_BUTTON: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_GET_STARTED_BUTTON_DISABLED_TOOLTIP: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_GET_STARTED_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_GET_STARTED_TITLE: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_HERO_BANNER_ALT: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_SETUP_TIERS_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_SETUP_TIERS_TITLE: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_TITLE: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_V2_ACCEPT_TERMS_CHECKBOX: FM<"creatorRevenuePolicyUrl" | "fullTermsUrl", true>; GUILD_ROLE_SUBSCRIPTION_WELCOME_V2_SUBTITLE: string; GUILD_ROLE_SUBSCRIPTION_WELCOME_V2_TITLE: string; GUILD_ROLE_SUBSCRIPTIONS_ACTION_MENU_LABEL: string; GUILD_ROLE_SUBSCRIPTIONS_ACTIVE_USER_SUBSCRIPTIONS_DESCRIPTION: FM<"numSubscriptions", true>; GUILD_ROLE_SUBSCRIPTIONS_DELETE_CHANNEL_BODY: FM<"channelName" | "numGuildRoleSubscriptionMembers", true>; GUILD_ROLE_SUBSCRIPTIONS_EDIT_SETTINGS: string; GUILD_ROLE_SUBSCRIPTIONS_FINISH_SETTING_UP_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_EMOJI_SECTION_TITLE: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_ROLES_MODAL_ARCHIVED_BADGE: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_ROLES_MODAL_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_ROLES_MODAL_HEADER: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_ROLES_MODAL_NEEDS_ONE_ROLE: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_ROLES_MODAL_SELECT_ALL_LABEL: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_UPLOAD_CTA: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_UPLOAD_DESCRIPTION: FM<"maxSlots", false>; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_EMOJI_UPLOAD_TITLE: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_SUBSCRIPTIONS_BUTTON: string; GUILD_ROLE_SUBSCRIPTIONS_MANAGE_SUBSCRIPTIONS_PAGE_BACK_BUTTON_CTA: string; GUILD_ROLE_SUBSCRIPTIONS_ONBOARDING_DESCRIPTION: string; GUILD_ROLE_SUBSCRIPTIONS_REQUIRE_APPROVED_MEMBER: string; GUILD_ROLE_SUBSCRIPTIONS_TITLE: string; GUILD_ROLE_SUBSCRIPTIONS_TOGGLE_SECTION_LABEL: string; GUILD_ROLE_SUBSCRIPTIONS_UPSELL_CTA: string; GUILD_ROLE_SUBSCRIPTIONS_USER_SUBSCRIPTIONS_DESCRIPTION: string; GUILD_ROLE_SUSBCRIPTION_TIER_MANAGEMENT_TITLE: string; GUILD_RULES_EDIT_LINK: string; GUILD_RULES_HEADER: string; GUILD_RULES_INVALID_CHANNEL: string; GUILD_RULES_SUBHEADER: string; GUILD_SCHEDULED_EVENT_EXTERNAL_START_BODY: FM<"topic", false>; GUILD_SCHEDULED_EVENT_JOIN_LIVE: string; GUILD_SCHEDULED_EVENT_LIVE: string; GUILD_SCHEDULED_EVENT_RECURRENCE_RULE: FM<"recurrenceRule", false>; GUILD_SCHEDULED_EVENT_REPEATS: string; GUILD_SCHEDULED_EVENT_REPEATS_BIWEEKLY: FM<"weekday", false>; GUILD_SCHEDULED_EVENT_REPEATS_MONTHLY: FM<"nth" | "weekday", false>; GUILD_SCHEDULED_EVENT_REPEATS_WEEKDAYS: string; GUILD_SCHEDULED_EVENT_REPEATS_WEEKENDS: string; GUILD_SCHEDULED_EVENT_REPEATS_WEEKLY: FM<"weekday", false>; GUILD_SCHEDULED_EVENT_REPEATS_YEARLY: FM<"date", false>; GUILD_SCHEDULED_EVENT_RSVP_PICKER_HEADER_INTERESTED: string; GUILD_SCHEDULED_EVENT_RSVP_PICKER_HEADER_UNINTERESTED: string; GUILD_SCHEDULED_EVENT_RSVP_PICKER_OPTION_RECURRENCE: string; GUILD_SCHEDULED_EVENT_RSVP_PICKER_OPTION_SERIES: string; GUILD_SCHEDULED_EVENT_STAGE_START_BODY: FM<"topic" | "username", false>; GUILD_SCHEDULED_EVENT_STAGE_START_TITLE: FM<"guildName", false>; GUILD_SCHEDULED_EVENT_VIEW_DETAIL: string; GUILD_SCHEDULED_EVENT_VIEW_MORE_RECURRENCES: string; GUILD_SEARCH_HEADING: FM<"guildName", false>; GUILD_SECURITY_REQ_MFA_BODY: FM; GUILD_SECURITY_REQ_MFA_ENABLE: FM; GUILD_SECURITY_REQ_MFA_GUILD_DISABLE: string; GUILD_SECURITY_REQ_MFA_GUILD_ENABLE: string; GUILD_SECURITY_REQ_MFA_LABEL: string; GUILD_SECURITY_REQ_MFA_TURN_OFF: string; GUILD_SECURITY_REQ_MFA_TURN_ON: string; GUILD_SECURITY_REQ_OWNER_ONLY: string; GUILD_SELECT: string; GUILD_SERVER_LOCKDOWN_CONTEXT_MENU_LOCK: string; GUILD_SERVER_LOCKDOWN_CONTEXT_MENU_UNLOCK: string; GUILD_SERVER_LOCKDOWN_DISABLED_NOTIFICATION: FM<"guildName" | "username", false>; GUILD_SERVER_LOCKDOWN_DISABLED_SYSTEM_MESSAGE: FM<["username", "usernameHook"], true>; GUILD_SERVER_LOCKDOWN_DISABLED_SYSTEM_MESSAGE_MOBILE: FM<"username", true>; GUILD_SERVER_LOCKDOWN_DURATION_12_HOURS: string; GUILD_SERVER_LOCKDOWN_DURATION_1_HOUR: string; GUILD_SERVER_LOCKDOWN_DURATION_24_HOURS: string; GUILD_SERVER_LOCKDOWN_DURATION_2_HOURS: string; GUILD_SERVER_LOCKDOWN_DURATION_4_HOURS: string; GUILD_SERVER_LOCKDOWN_DURATION_6_HOURS: string; GUILD_SERVER_LOCKDOWN_DURATION_PLACEHOLDER: string; GUILD_SERVER_LOCKDOWN_ENABLED_NOTIFICATION: FM<"guildName" | "time" | "username", false>; GUILD_SERVER_LOCKDOWN_ENABLED_SYSTEM_MESSAGE: FM<["guildName" | "time" | "username", "usernameHook"], true>; GUILD_SERVER_LOCKDOWN_ENABLED_SYSTEM_MESSAGE_MOBILE: FM<"guildName" | "time" | "username", true>; GUILD_SERVER_LOCKDOWN_ENABLED_SYSTEM_MESSAGE_MOBILE_SHORT: FM<"time" | "username", true>; GUILD_SERVER_LOCKDOWN_ENABLED_SYSTEM_MESSAGE_SHORT: FM<["time" | "username", "usernameHook"], true>; GUILD_SERVER_LOCKDOWN_FEEDBACK_DESCRIPTION: string; GUILD_SERVER_LOCKDOWN_MODAL_CTA: string; GUILD_SERVER_LOCKDOWN_TITLE: string; GUILD_SERVER_RAID_ALERT_NOTIFICATION: FM<"guildName", false>; GUILD_SETTINGS_ACTION_FILTER_APPLICATION_COMMAND_PERMISSION_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_AUTO_MODERATION_BLOCK_MESSAGE: string; GUILD_SETTINGS_ACTION_FILTER_AUTO_MODERATION_FLAG_TO_CHANNEL: string; GUILD_SETTINGS_ACTION_FILTER_AUTO_MODERATION_QUARANTINE: string; GUILD_SETTINGS_ACTION_FILTER_AUTO_MODERATION_TIMEOUT: string; GUILD_SETTINGS_ACTION_FILTER_AUTOMOD_RULE_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_AUTOMOD_RULE_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_AUTOMOD_RULE_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_BOT_ADD: string; GUILD_SETTINGS_ACTION_FILTER_CHANNEL_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_CHANNEL_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_CHANNEL_OVERWRITE_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_CHANNEL_OVERWRITE_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_CHANNEL_OVERWRITE_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_CHANNEL_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_CLYDE_AI_PROFIE_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_EMOJI_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_EMOJI_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_EMOJI_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_GUILD_HOME_FEATURE_ITEM: string; GUILD_SETTINGS_ACTION_FILTER_GUILD_HOME_REMOVE_ITEM: string; GUILD_SETTINGS_ACTION_FILTER_GUILD_SCHEDULED_EVENT_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_GUILD_SCHEDULED_EVENT_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_GUILD_SCHEDULED_EVENT_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_GUILD_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_HOME_SETTINGS_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_HOME_SETTINGS_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_INTEGRATION_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_INTEGRATION_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_INTEGRATION_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_INVITE_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_INVITE_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_INVITE_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_BAN_ADD: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_BAN_REMOVE: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_DISCONNECT: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_KICK: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_MOVE: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_PRUNE: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_ROLE_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_MEMBER_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_MESSAGE_BULK_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_MESSAGE_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_MESSAGE_PIN: string; GUILD_SETTINGS_ACTION_FILTER_MESSAGE_UNPIN: string; GUILD_SETTINGS_ACTION_FILTER_ONBOARDING_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_ONBOARDING_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_ROLE_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_ROLE_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_ROLE_PROMPT_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_ROLE_PROMPT_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_ROLE_PROMPT_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_ROLE_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_SOUNDBOARD_SOUND_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_SOUNDBOARD_SOUND_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_SOUNDBOARD_SOUND_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_STAGE_INSTANCE_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_STAGE_INSTANCE_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_STAGE_INSTANCE_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_STICKER_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_STICKER_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_STICKER_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_THREAD_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_THREAD_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_THREAD_UPDATE: string; GUILD_SETTINGS_ACTION_FILTER_WEBHOOK_CREATE: string; GUILD_SETTINGS_ACTION_FILTER_WEBHOOK_DELETE: string; GUILD_SETTINGS_ACTION_FILTER_WEBHOOK_UPDATE: string; GUILD_SETTINGS_ANIMATED_BANNER_TRY_IT: FM; GUILD_SETTINGS_ANIMATED_BANNER_TRY_IT_MOBILE: FM; GUILD_SETTINGS_ANIMATED_BANNER_UPSELL: FM; GUILD_SETTINGS_ANIMATED_BANNER_UPSELL_MOBILE_BOOST_CTA: string; GUILD_SETTINGS_ANIMATED_BANNER_UPSELL_TRY_IT_CTA: string; GUILD_SETTINGS_AUDIT_LOG_ACTIVE_CHANNELS_REMOVE_CHANNEL: string; GUILD_SETTINGS_AUDIT_LOG_ACTIVE_CHANNELS_UNREMOVE_CHANNEL: string; GUILD_SETTINGS_AUDIT_LOG_ANNOUNCEMENT_THREAD_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_AUTO_MODERATION_BLOCK_MESSAGE: FM<["channel" | "target", "channelHook" | "targetHook"], true>; GUILD_SETTINGS_AUDIT_LOG_AUTO_MODERATION_FLAG_TO_CHANNEL_MESSAGE: FM<["channel" | "target", "channelHook" | "targetHook"], true>; GUILD_SETTINGS_AUDIT_LOG_AUTO_MODERATION_TRIGGERED_RULE_NAME_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTO_MODERATION_USER_COMMUNICATION_DISABLED_MESSAGE: FM<["channel" | "target", "channelHook" | "targetHook"], true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_ACTIONS_UPDATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_ADD_ALLOW_LIST: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_ADD_KEYWORDS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_ADD_REGEX_PATTERNS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_DISABLED_UPDATE: string; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_ENABLED_UPDATE: string; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_EVENT_TYPE_UPDATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_EXEMPT_CHANNELS_UPDATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_EXEMPT_ROLES_UPDATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_KEYWORDS_ADD: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_KEYWORDS_REMOVED: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_NAME_UPDATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_NONE: string; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_REMOVE_ALLOW_LIST: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_REMOVE_KEYWORDS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_REMOVE_REGEX_PATTERNS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_TRIGGER_METADATA_KEYWORDS_UPDATE: FM<"newValue", false>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_TRIGGER_METADATA_UPDATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_TRIGGER_TYPE_UPDATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_AUTOMOD_RULE_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_BOT_ADD: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_AVAILABLE_TAGS_ADD: FM<[never, "newTagHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_AVAILABLE_TAGS_DELETE: FM<[never, "newTagHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_AVAILABLE_TAGS_UPDATE: FM<[never, "newTagHook" | "oldTagHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_BITRATE_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_BITRATE_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_CATEGORY_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_DEFAULT_AUTO_ARCHIVE_DURATION_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_DEFAULT_AUTO_ARCHIVE_DURATION_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_FLAGS_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_NAME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_NSFW_DISABLED: string; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_NSFW_ENABLED: string; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_OVERWRITE_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_OVERWRITE_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_OVERWRITE_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_PERMISSION_OVERRIDES_DENIED: FM<"count" | "subtarget", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_PERMISSION_OVERRIDES_GRANTED: FM<"count" | "subtarget", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_PERMISSION_OVERRIDES_RESET: FM<"count" | "subtarget", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_POSITION_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_POSITION_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_RATE_LIMIT_PER_USER_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_RATE_LIMIT_PER_USER_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_RTC_REGION_OVERRIDE_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_RTC_REGION_OVERRIDE_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_RTC_REGION_OVERRIDE_DELETE: string; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_STAGE_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_TEXT_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_TOPIC_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_TOPIC_CLEAR: FM; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_TOPIC_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_TYPE_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_TYPE_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_USER_LIMIT_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_USER_LIMIT_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_VIDEO_QUALITY_MODE_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_VIDEO_QUALITY_MODE_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_CHANNEL_VOICE_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_COMMAND_PERMISSION_DENIED: FM<"subtarget", true>; GUILD_SETTINGS_AUDIT_LOG_COMMAND_PERMISSION_GRANTED: FM<"subtarget", true>; GUILD_SETTINGS_AUDIT_LOG_COMMAND_PERMISSION_REMOVED: FM<"subtarget", true>; GUILD_SETTINGS_AUDIT_LOG_COMMAND_PERMISSION_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_COMMON_REASON: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_COMMUNICATION_DISABLED_UNTIL: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_COMMUNICATION_DISABLED_UNTIL_REMOVED: string; GUILD_SETTINGS_AUDIT_LOG_DESCRIPTION_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_DESCRIPTION_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_EMOJI_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_EMOJI_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_EMOJI_NAME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_EMOJI_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_EMOJI_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_AFK_CHANNEL_ID_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_AFK_CHANNEL_ID_CLEAR: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_AFK_TIMEOUT_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_BANNER_HASH_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_GUILD_BANNER_HASH_REMOVE: string; GUILD_SETTINGS_AUDIT_LOG_GUILD_DEFAULT_MESSAGE_NOTIFICATIONS_CHANGE_ALL_MESSAGES: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_DEFAULT_MESSAGE_NOTIFICATIONS_CHANGE_ONLY_MENTIONS: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_DESCRIPTION_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_DESCRIPTION_CLEAR: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_DISCOVERY_SPLASH_HASH_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_GUILD_EXPLICIT_CONTENT_FILTER_ALL_MEMBERS: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_EXPLICIT_CONTENT_FILTER_DISABLE: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_EXPLICIT_CONTENT_FILTER_MEMBERS_WITHOUT_ROLES: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_FEATURE_FORUM_POST: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_FEATURE_ITEM: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_FEATURE_MESSAGE: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_REMOVE_CHANNEL: string; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_REMOVE_FORUM_POST: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_REMOVE_ITEM: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_REMOVE_MESSAGE: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_HOME_UNREMOVE_CHANNEL: string; GUILD_SETTINGS_AUDIT_LOG_GUILD_ICON_HASH_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_GUILD_INVITE_GUEST_INVITE: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_MFA_LEVEL_DISABLED: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_MFA_LEVEL_ENABLED: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_NAME_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_OWNER_ID_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_PREFERRED_LOCALE_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_PREMIUM_PROGRESS_BAR_ENABLED_DISABLED: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_PREMIUM_PROGRESS_BAR_ENABLED_ENABLED: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_REGION_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_RULES_CHANNEL_ID_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_RULES_CHANNEL_ID_CLEAR: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_CREATED: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_DELETED: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_EMOJI_ID_CREATE: FM<[never, "newEmojiHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_EMOJI_ID_REMOVE: FM<[never, "oldEmojiHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_EMOJI_ID_REPLACE: FM<[never, "newEmojiHook" | "oldEmojiHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_EMOJI_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_EMOJI_NAME_REMOVE: FM<"oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_EMOJI_NAME_REPLACE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_NAME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_UPDATED: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_VOLUME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SOUNDBOARD_SOUND_VOLUME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SPLASH_HASH_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_GUILD_SYSTEM_CHANNEL_FLAGS_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SYSTEM_CHANNEL_ID_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SYSTEM_CHANNEL_ID_DISABLE: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_SYSTEM_CHANNEL_JOIN_NOTIFICATION_REPLIES: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SYSTEM_CHANNEL_JOIN_NOTIFICATIONS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SYSTEM_CHANNEL_PREMIUM_SUBSCRIPTIONS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_SYSTEM_CHANNEL_REMINDER_NOTIFICATIONS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_UPDATES_CHANNEL_ID_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_UPDATES_CHANNEL_ID_CLEAR: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_VANITY_URL_CODE_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_VANITY_URL_CODE_DELETE: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_VERIFICATION_LEVEL_CHANGE_HIGH: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_VERIFICATION_LEVEL_CHANGE_LOW: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_VERIFICATION_LEVEL_CHANGE_MEDIUM: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_VERIFICATION_LEVEL_CHANGE_NONE: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_VERIFICATION_LEVEL_CHANGE_VERY_HIGH: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_WIDGET_CHANNEL_ID_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_GUILD_WIDGET_CHANNEL_ID_DELETE: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_WIDGET_DISABLED: FM; GUILD_SETTINGS_AUDIT_LOG_GUILD_WIDGET_ENABLED: FM; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_AUTHOR_CHANGE: FM<"newUser" | "oldUser", true>; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_CHANGED_NEW_MEMBER_ACTIONS: string; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_CHANGED_RESOURCE_CHANNELS: string; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_CHANGED_WELCOME_MESSAGE: string; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_CREATE: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_MESSAGE_CHANGE: FM<"newMessage" | "oldMessage", true>; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_NEW_MEMBER_ACTION_ADDED: FM<"name", true>; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_NEW_MEMBER_ACTION_REMOVED: FM<"name", true>; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_RESOURCE_CHANNEL_ADDED: FM<"name", true>; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_RESOURCE_CHANNEL_REMOVED: FM<"name", true>; GUILD_SETTINGS_AUDIT_LOG_HOME_SETTINGS_UPDATE: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_ENABLE_EMOTICONS_OFF: string; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_ENABLE_EMOTICONS_ON: string; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_EXPIRE_BEHAVIOR_KICK_FROM_SERVER: FM; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_EXPIRE_BEHAVIOR_REMOVE_SYNCED_ROLE: FM; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_EXPIRE_GRACE_PERIOD: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_INTEGRATION_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_INVITE_CHANNEL_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_INVITE_CODE_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_INVITE_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_INVITE_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_INVITE_MAX_AGE_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_INVITE_MAX_AGE_CREATE_INFINITE: FM; GUILD_SETTINGS_AUDIT_LOG_INVITE_MAX_USES_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_INVITE_MAX_USES_CREATE_INFINITE: FM; GUILD_SETTINGS_AUDIT_LOG_INVITE_TEMPORARY_OFF: FM; GUILD_SETTINGS_AUDIT_LOG_INVITE_TEMPORARY_ON: FM; GUILD_SETTINGS_AUDIT_LOG_INVITE_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_LOAD_MORE: string; GUILD_SETTINGS_AUDIT_LOG_MEMBER_BAN_ADD: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_BAN_REMOVE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_BYPASSES_VERIFICATION_OFF: string; GUILD_SETTINGS_AUDIT_LOG_MEMBER_BYPASSES_VERIFICATION_ON: string; GUILD_SETTINGS_AUDIT_LOG_MEMBER_DEAF_OFF: FM; GUILD_SETTINGS_AUDIT_LOG_MEMBER_DEAF_ON: FM; GUILD_SETTINGS_AUDIT_LOG_MEMBER_DISCONNECT: FM<["count" | "user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_KICK: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_MOVE: FM<["channel" | "count" | "user", "channelHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_MUTE_OFF: FM; GUILD_SETTINGS_AUDIT_LOG_MEMBER_MUTE_ON: FM; GUILD_SETTINGS_AUDIT_LOG_MEMBER_NICK_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_NICK_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_NICK_DELETE: FM<"oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_PRUNE: FM<["count" | "user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_PRUNE_DELETE_DAYS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_ROLE_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_ROLES_ADD: FM<"count", true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_ROLES_REMOVE: FM<"count", true>; GUILD_SETTINGS_AUDIT_LOG_MEMBER_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MESSAGE_BULK_DELETE: FM<["count" | "target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MESSAGE_DELETE: FM<["channel" | "count" | "target" | "user", "channelHook" | "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MESSAGE_PIN: FM<["channel" | "target" | "user", "channelHook" | "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_MESSAGE_UNPIN: FM<["channel" | "target" | "user", "channelHook" | "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_NAME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_CREATE: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_DEFAULT_CHANNEL_IDS: FM<"count", false>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_DISABLE: string; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_DISABLE_DEFAULT_CHANNELS: string; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_DISABLE_PROMPTS: string; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_ENABLE: string; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_ENABLE_DEFAULT_CHANNELS: string; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_ENABLE_PROMPTS: string; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_ADD_CHANNELS: FM<"channels", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_ADD_ROLES: FM<"roles", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_CHANGED_OPTIONS: string; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_CREATED_OPTION: FM<"title", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_DELETED_OPTION: FM<"title", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_REMOVE_CHANNELS: FM<"channels", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_REMOVE_ROLES: FM<"roles", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_UPDATED_OPTION: FM<"title", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_VALUE_CHANGE: FM<"key" | "newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_WITH_CHANNELS: FM<"channels", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_PROMPT_WITH_ROLES: FM<"roles", true>; GUILD_SETTINGS_AUDIT_LOG_ONBOARDING_UPDATE: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_PRIVATE_THREAD_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_COLOR: FM<["newValue", "newColorHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_COLOR_IOS: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_COLOR_NONE: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_HOIST_OFF: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_HOIST_ON: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_ICON_HASH_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_MENTIONABLE_OFF: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_MENTIONABLE_ON: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_NAME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PERMISSIONS_DENIED: FM<"count", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PERMISSIONS_GRANTED: FM<"count", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_CREATE: FM<["user", "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_DESCRIPTION_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_DESCRIPTION_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_EMPTY_VALUE: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_MULTI_SELECT: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_OPTIONAL: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_REQUIRED: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_SINGLE_SELECT: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_TITLE_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_TITLE_CREATE: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_PROMPT_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_ROLE_UNICODE_EMOJI_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_ROLE_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_CHANNEL: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_CHANNEL_CLEAR: string; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_DESCRIPTION_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_ENTITY_TYPE_EXTERNAL: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_ENTITY_TYPE_NONE: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_ENTITY_TYPE_STAGE_INSTANCE: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_ENTITY_TYPE_VOICE: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_IMAGE_HASH_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_IMAGE_HASH_REMOVE: string; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_LOCATION: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_LOCATION_CLEAR: string; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_STATUS_ACTIVE: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_STATUS_CANCELED: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_STATUS_COMPLETED: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_STATUS_SCHEDULED: FM; GUILD_SETTINGS_AUDIT_LOG_SCHEDULED_EVENT_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_STAGE_INSTANCE_CREATE: FM<["channel" | "user", "channelHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_STAGE_INSTANCE_DELETE: FM<["channel" | "user", "channelHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_STAGE_INSTANCE_DELETE_NO_USER: FM<["channel", "channelHook"], true>; GUILD_SETTINGS_AUDIT_LOG_STAGE_INSTANCE_PRIVACY_LEVEL_GUILD_ONLY: FM; GUILD_SETTINGS_AUDIT_LOG_STAGE_INSTANCE_PRIVACY_LEVEL_PUBLIC: FM; GUILD_SETTINGS_AUDIT_LOG_STAGE_INSTANCE_UPDATE: FM<["channel" | "user", "channelHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_STICKER_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_STICKER_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_STICKER_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_TAGS_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_TAGS_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_THREAD_ARCHIVED: string; GUILD_SETTINGS_AUDIT_LOG_THREAD_AUTO_ARCHIVE_DURATION_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_THREAD_AUTO_ARCHIVE_DURATION_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_THREAD_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_THREAD_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_THREAD_FLAGS_CHANGE: string; GUILD_SETTINGS_AUDIT_LOG_THREAD_INVITABLE_DISABLED: string; GUILD_SETTINGS_AUDIT_LOG_THREAD_INVITABLE_ENABLED: string; GUILD_SETTINGS_AUDIT_LOG_THREAD_LOCKED: string; GUILD_SETTINGS_AUDIT_LOG_THREAD_NAME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_THREAD_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_THREAD_UNARCHIVED: string; GUILD_SETTINGS_AUDIT_LOG_THREAD_UNLOCKED: string; GUILD_SETTINGS_AUDIT_LOG_THREAD_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_TIME_AT_ANDROID: FM<"date" | "time", false>; GUILD_SETTINGS_AUDIT_LOG_UNKNOWN_ACTION: string; GUILD_SETTINGS_AUDIT_LOG_VOICE_CHANNEL_STATUS_CREATED: FM<["channel" | "user", "channelHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_VOICE_CHANNEL_STATUS_DELETED: FM<["channel" | "user", "channelHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_VOICE_CHANNEL_STATUS_STATUS_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_AVATAR: string; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_CHANNEL_CHANGE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_CHANNEL_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_CREATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_DELETE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_NAME_CHANGE: FM<"newValue" | "oldValue", true>; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_NAME_CREATE: FM<"newValue", true>; GUILD_SETTINGS_AUDIT_LOG_WEBHOOK_UPDATE: FM<["target" | "user", "targetHook" | "userHook"], true>; GUILD_SETTINGS_AUTOMOD_CONTENT_CATEGORY_TITLE: string; GUILD_SETTINGS_AUTOMOD_DESCRIPTION: string; GUILD_SETTINGS_AUTOMOD_MEMBER_CATEGORY_TITLE: string; GUILD_SETTINGS_AUTOMOD_MESSAGE_FILTER_DESCRIPTION: string; GUILD_SETTINGS_AUTOMOD_MESSAGE_FILTER_DESCRIPTION_HEADER: string; GUILD_SETTINGS_AUTOMOD_MESSAGE_FILTER_TITLE: string; GUILD_SETTINGS_AUTOMOD_TITLE: string; GUILD_SETTINGS_BANNER_RECOMMEND: FM<"articleURL", true>; GUILD_SETTINGS_CHANNEL_SETTINGS: string; GUILD_SETTINGS_COMMUNITY: string; GUILD_SETTINGS_COMMUNITY_ADMINISTRATOR_ONLY: string; GUILD_SETTINGS_COMMUNITY_DISABLE_COMMUNITY: string; GUILD_SETTINGS_COMMUNITY_DISABLE_COMMUNITY_DIALOG_MESSAGE: string; GUILD_SETTINGS_COMMUNITY_DISABLE_COMMUNITY_DIALOG_TITLE: string; GUILD_SETTINGS_COMMUNITY_DISABLE_MEMBER_VERIFICATION: string; GUILD_SETTINGS_COMMUNITY_DISABLE_MEMBER_VERIFICATION_CONFIRM: string; GUILD_SETTINGS_COMMUNITY_DISABLE_PUBLIC_CONFIRM_DEFAULT_TITLE: string; GUILD_SETTINGS_COMMUNITY_ENABLE_COMMUNITY: string; GUILD_SETTINGS_COMMUNITY_INTRO_BODY: string; GUILD_SETTINGS_COMMUNITY_INTRO_BODY_WITH_HELP_ARTICLE: FM<"helpdeskArticle", true>; GUILD_SETTINGS_COMMUNITY_INTRO_DETAILS: string; GUILD_SETTINGS_COMMUNITY_INTRO_DETAILS_MOBILE: string; GUILD_SETTINGS_COMMUNITY_INTRO_HEADER: string; GUILD_SETTINGS_COMMUNITY_INTRO_LEARN_MORE: FM<"helpdeskArticle", true>; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_ANALYTICS_BODY: FM<[never, "featureHook" | "infoHook"], true>; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_ANALYTICS_BODY_MOBILE: FM<[never, "featureHook"], true>; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_ANALYTICS_HEADER: string; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_ANALYTICS_TOOLTIP: string; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_DISCOVERY_BODY: FM<[never, "featureHook"], true>; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_DISCOVERY_HEADER: string; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_STAY_INFORMED_BODY: string; GUILD_SETTINGS_COMMUNITY_INTRO_UPSELL_STAY_INFORMED_HEADER: string; GUILD_SETTINGS_COMMUNITY_LOCALE_HELP: string; GUILD_SETTINGS_COMMUNITY_MOD_CHANNEL_HELP: string; GUILD_SETTINGS_COMMUNITY_MOD_CHANNEL_SELECTOR_TITLE: string; GUILD_SETTINGS_COMMUNITY_MOD_CHANNEL_TITLE: string; GUILD_SETTINGS_COMMUNITY_RULES_CHANNEL_HELP: string; GUILD_SETTINGS_COMMUNITY_RULES_CHANNEL_HELP_MOBILE: string; GUILD_SETTINGS_COMMUNITY_UPSELL_BODY: string; GUILD_SETTINGS_COMMUNITY_UPSELL_BUTTON_ADMIN_SERVER: string; GUILD_SETTINGS_COMMUNITY_UPSELL_BUTTON_ANALYTICS: string; GUILD_SETTINGS_COMMUNITY_UPSELL_BUTTON_DISCOVERY: string; GUILD_SETTINGS_COMMUNITY_UPSELL_BUTTON_WELCOME_SCREEN: string; GUILD_SETTINGS_COMMUNITY_UPSELL_HEADER: string; GUILD_SETTINGS_DEFAULT_CHANNELS: string; GUILD_SETTINGS_DEFAULT_CHANNELS_ADVANCED: string; GUILD_SETTINGS_DEFAULT_CHANNELS_SUBHEADER: string; GUILD_SETTINGS_DEFAULT_NOTIFICATION_SETTINGS_INTRO: string; GUILD_SETTINGS_DEFAULT_NOTIFICATION_SETTINGS_TIP: string; GUILD_SETTINGS_DEFAULT_NOTIFICATIONS_LARGE_GUILD_NOTIFY_ALL: string; GUILD_SETTINGS_DEPRIVATE_CHANNEL_COUNT: FM<"count", false>; GUILD_SETTINGS_DEPRIVATE_EXPLAINER_1: FM<[never, "emphasisHook"], true>; GUILD_SETTINGS_DEPRIVATE_EXPLAINER_2: FM<[never, "emphasisHook"], true>; GUILD_SETTINGS_DEPRIVATE_EXPLAINER_3: FM<[never, "emphasisHook"], true>; GUILD_SETTINGS_DEPRIVATE_EXPLAINER_4: FM<[never, "brandHook" | "emphasisHook"], true>; GUILD_SETTINGS_DEPRIVATE_MODAL_HEADER: string; GUILD_SETTINGS_DEPRIVATE_SUBTITLE: string; GUILD_SETTINGS_DEPRIVATE_TITLE: string; GUILD_SETTINGS_DISABLE_DISCOVERABLE: string; GUILD_SETTINGS_DISABLE_DISCOVERABLE_PERMINENTLY: string; GUILD_SETTINGS_DISABLE_MEMBER_VERIFICATION_DESCRIPTION: string; GUILD_SETTINGS_DISABLE_MEMBER_VERIFICATION_TITLE: string; GUILD_SETTINGS_DISCOVERY_ADMIN_ONLY: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_2FA_DESCRIPTION: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_2FA_DESCRIPTION_FAILING: FM; GUILD_SETTINGS_DISCOVERY_CHECKLIST_2FA_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_AGE: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_AGE_DESCRIPTION: FM<"minimumGuildAge", false>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_AGE_DESCRIPTION_FAILING: FM<"minimumGuildAge" | "passDate", false>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_AGE_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_CHANGE_CHANNEL_NAMES_2: FM<[never, "channelHook"], true>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_CHANGE_DESCRIPTION: FM<[never, "descriptionHook"], true>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_CHANGE_NAME: FM<[never, "nameHook"], true>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_COMMUNICATOR_FAILING_ACTION: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_COMMUNICATOR_FAILING_ACTION_DETAILS: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_COMMUNICATOR_PROGRESS_LABEL: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_DOES_NOT_PASS: FM<[never, "doesNotHook"], true>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_ENGAGEMENT_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_GOOD_STANDING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTH_DEFINITIONS_INTRO: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTH_VIEW_DETAILS: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTHY: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTHY_DESCRIPTION: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTHY_DESCRIPTION_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTHY_DESCRIPTION_PENDING: FM<[never, "checkBackHook"], true>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTHY_DESCRIPTION_PENDING_SIZE: FM<"minMembers", false>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTHY_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_HEALTHY_PENDING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_LOADING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_NSFW: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_NSFW_DESCRIPTION: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_NSFW_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_PROGRESS_REQUIREMENT_LABEL: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_RETENTION_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_RETENTION_FAILING_ACTION: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_RETENTION_FAILING_ACTION_DETAILS_UPDATED: FM; GUILD_SETTINGS_DISCOVERY_CHECKLIST_RETENTION_PROGRESS_LABEL: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SAFE: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SAFE_DESCRIPTION: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SAFE_DESCRIPTION_FAILING_GUIDELINES: FM<"guidelinesURL" | "termsURL", true>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SAFE_FAILING: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SCORE_EXPLAIN: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SIZE: FM<"minMembers", false>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SIZE_DESCRIPTION_FAIL: FM<"minMembers", false>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SIZE_DESCRIPTION_FAILING_PARTNERS: FM<"minMembers", false>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_SIZE_FAIL: FM<"minMembers", false>; GUILD_SETTINGS_DISCOVERY_CHECKLIST_VISITOR_FAILING_ACTION: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_VISITOR_FAILING_ACTION_DETAILS: string; GUILD_SETTINGS_DISCOVERY_CHECKLIST_VISITOR_PROGRESS_LABEL: string; GUILD_SETTINGS_DISCOVERY_DISABLE_PUBLIC_CONFIRM_TEXT: string; GUILD_SETTINGS_DISCOVERY_DISQUALIFIED: string; GUILD_SETTINGS_DISCOVERY_DISQUALIFIED_DESCRIPTION: FM; GUILD_SETTINGS_DISCOVERY_EMOJI_DISCOVERABILITY_DESCRIPTION: string; GUILD_SETTINGS_DISCOVERY_EMOJI_DISCOVERABILITY_DISABLE: string; GUILD_SETTINGS_DISCOVERY_EMOJI_DISCOVERABILITY_ENABLE: string; GUILD_SETTINGS_DISCOVERY_EMOJI_DISCOVERABILITY_TITLE: string; GUILD_SETTINGS_DISCOVERY_HEADER: string; GUILD_SETTINGS_DISCOVERY_LOCALE_HELP: string; GUILD_SETTINGS_DISCOVERY_PAGE_DESCRIPTION: FM; GUILD_SETTINGS_DISCOVERY_PAGE_DESCRIPTION_SUBHEADING: FM; GUILD_SETTINGS_DISCOVERY_PENDING_HEALTHY: string; GUILD_SETTINGS_DISCOVERY_PREVIEW_DESCRIPTION: string; GUILD_SETTINGS_DISCOVERY_PRIMARY_CATEGORY_DESCRIPTION: string; GUILD_SETTINGS_DISCOVERY_PRIMARY_CATEGORY_TITLE: string; GUILD_SETTINGS_DISCOVERY_REQUIREMENTS_NOT_MET: string; GUILD_SETTINGS_DISCOVERY_SEARCH_KEYWORDS_DESCRIPTION: FM; GUILD_SETTINGS_DISCOVERY_SEARCH_KEYWORDS_TITLE: string; GUILD_SETTINGS_DISCOVERY_SUBCATEGORY_TITLE: string; GUILD_SETTINGS_EDIT_PROFILE_GENERIC_ERROR: string; GUILD_SETTINGS_EMOJI_ALIAS: string; GUILD_SETTINGS_EMOJI_ALIAS_PLACEHOLDER: string; GUILD_SETTINGS_EMOJI_IMAGE: string; GUILD_SETTINGS_EMOJI_NAME: string; GUILD_SETTINGS_EMOJI_UPLOAD_HEADING: string; GUILD_SETTINGS_EMOJI_UPLOAD_REQUIREMENTS_1: string; GUILD_SETTINGS_EMOJI_UPLOAD_REQUIREMENTS_2: FM<"maxSize", false>; GUILD_SETTINGS_EMOJI_UPLOAD_REQUIREMENTS_3: string; GUILD_SETTINGS_EMOJI_UPLOAD_REQUIREMENTS_4: string; GUILD_SETTINGS_EMOJI_UPLOAD_TO_SERVER_DESCRIPTION: FM<"count", false>; GUILD_SETTINGS_EMOJI_UPLOAD_TO_SERVER_MESSAGE: FM<"count" | "maxSize", false>; GUILD_SETTINGS_EMOJIS_UPSELL_BANNER_TEXT: FM<"level", false>; GUILD_SETTINGS_EMOJIS_UPSELL_BANNER_TOO_MANY_EMOJIS_HEADER: FM<"level", false>; GUILD_SETTINGS_EMOJIS_UPSELL_BANNER_TOO_MANY_EMOJIS_TEXT: FM<"level", false>; GUILD_SETTINGS_ENABLE_DISCOVERABLE: string; GUILD_SETTINGS_ENABLE_MONETIZATION_TAB_TITLE: string; GUILD_SETTINGS_EXAMPLE_TOOLTIP: string; GUILD_SETTINGS_FILTER_ACTION: string; GUILD_SETTINGS_FILTER_ALL: string; GUILD_SETTINGS_FILTER_ALL_ACTIONS: string; GUILD_SETTINGS_FILTER_ALL_USERS: string; GUILD_SETTINGS_FILTER_USER: string; GUILD_SETTINGS_FILTERED_ACTION: string; GUILD_SETTINGS_FILTERED_USER: string; GUILD_SETTINGS_FOLLOWER_ANALYTICS_TOOLTIP: FM<"subscribersGained" | "subscribersLost", false>; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_1_ANIMATED_GUILD_ICON: FM; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_1_AUDIO_QUALITY: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_1_EMOJI: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_1_SOUNDBOARD: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_1_SPLASH: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_1_STICKER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_1_STREAMING: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_AUDIO_QUALITY: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_BANNER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_CUSTOM_ROLE_ICONS: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_EMOJI: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_SOUNDBOARD: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_STICKER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_STREAMING: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_THREAD_PRIVATE: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_2_UPLOAD_LIMIT: FM; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_ANIMATED_BANNER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_ANIMATED_GUILD_BANNER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_AUDIO_QUALITY: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_EMOJI: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_SOUNDBOARD: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_STICKER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_UPLOAD_LIMIT: FM; GUILD_SETTINGS_GUILD_PREMIUM_PERK_DESCRIPTION_TIER_3_VANITY_URL: FM<"helpdeskArticle", true>; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_1_ANIMATED_GUILD_ICON: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_1_SPLASH: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_1_STREAMING: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_2_BANNER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_2_CUSTOM_ROLE_ICONS: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_2_STREAMING: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_2_THREAD_PRIVATE: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_3_ANIMATED_BANNER: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_3_VANITY_URL: string; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_ANY_AUDIO_QUALITY: FM<"bitrate", false>; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_ANY_EMOJI: FM<"adding" | "total", false>; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_ANY_STICKER: FM<"adding" | "total", false>; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_TIER_ANY_UPLOAD_LIMIT: FM<"fileSize", false>; GUILD_SETTINGS_GUILD_PREMIUM_PERK_TITLE_VIDEO_STAGE: FM<"limit", false>; GUILD_SETTINGS_GUILD_PREMIUM_PERKS_BASE_PERKS: string; GUILD_SETTINGS_GUILD_PREMIUM_PERKS_DESCRIPTION_NONE: string; GUILD_SETTINGS_GUILD_PREMIUM_PERKS_PREVIOUS_PERKS: string; GUILD_SETTINGS_GUILD_PREMIUM_PERKS_TITLE_NONE: string; GUILD_SETTINGS_GUILD_PREMIUM_PERKS_TITLE_TIER_1: string; GUILD_SETTINGS_GUILD_PREMIUM_PERKS_TITLE_TIER_2: string; GUILD_SETTINGS_GUILD_PREMIUM_PERKS_TITLE_TIER_3: string; GUILD_SETTINGS_HOME_HEADER: string; GUILD_SETTINGS_HOME_HEADER_DESCRIPTION: string; GUILD_SETTINGS_HOME_HEADER_RECOMMEND: string; GUILD_SETTINGS_ICON_RECOMMEND: string; GUILD_SETTINGS_KEEP_STARTED_APPLICATIONS_DESCRIPTION: string; GUILD_SETTINGS_KICK_STARTED_APPLICATIONS_DESCRIPTION: string; GUILD_SETTINGS_LABEL_AUDIT_LOG: string; GUILD_SETTINGS_LABEL_AUDIT_LOG_EMPTY_BODY: string; GUILD_SETTINGS_LABEL_AUDIT_LOG_EMPTY_TITLE: string; GUILD_SETTINGS_LABEL_AUDIT_LOG_ERROR_BODY: string; GUILD_SETTINGS_LABEL_AUDIT_LOG_ERROR_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_ACTIONED_BY: FM<"date" | "discriminator" | "username", true>; GUILD_SETTINGS_MEMBER_VERIFICATION_ACTIONED_BY_HOOK: FM<["date", "usernameHook"], true>; GUILD_SETTINGS_MEMBER_VERIFICATION_APPLICATION_SUBMITTED_TIME: FM<"date", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_APPLICATIONS_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_APPROVE_APPLICATION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_APPROVED: string; GUILD_SETTINGS_MEMBER_VERIFICATION_APPROVED_COUNT_HYPEN: FM<"count", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_AUTO_APPROVAL: string; GUILD_SETTINGS_MEMBER_VERIFICATION_AUTO_APPROVAL_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_AUTOMATIC_APPROVAL_DIVIDER: string; GUILD_SETTINGS_MEMBER_VERIFICATION_AUTOMATIC_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_BAN_USER: string; GUILD_SETTINGS_MEMBER_VERIFICATION_BANNED: string; GUILD_SETTINGS_MEMBER_VERIFICATION_CONTINUE_EDITING: string; GUILD_SETTINGS_MEMBER_VERIFICATION_DENIED: string; GUILD_SETTINGS_MEMBER_VERIFICATION_DENY_AND_BAN_APPLICATION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_DENY_APPLICATION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_DENY_MODAL_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_DESCRIPTION_PLACEHOLDER: string; GUILD_SETTINGS_MEMBER_VERIFICATION_DESCRIPTION_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EDIT_WARNING_DESCRIPTIONG: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EDIT_WARNING_TITLE: FM<"count", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_EMPTY_APPROVED_APPLICATIONS_BODY: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EMPTY_APPROVED_APPLICATIONS_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EMPTY_PENDING_APPLICATIONS_BODY: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EMPTY_PENDING_APPLICATIONS_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EMPTY_REJECTED_APPLICATIONS_BODY: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EMPTY_REJECTED_APPLICATIONS_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_ENABLE_REMINDER: string; GUILD_SETTINGS_MEMBER_VERIFICATION_ENABLED: string; GUILD_SETTINGS_MEMBER_VERIFICATION_ENABLED_SECOND_LINE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_EXAMPLE_GUILD_NAME: string; GUILD_SETTINGS_MEMBER_VERIFICATION_INTRO_BUTTON: string; GUILD_SETTINGS_MEMBER_VERIFICATION_LIST_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_APPROVAL: string; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_APPROVAL_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_APPROVAL_DIVIDER: string; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_APPROVAL_REQUIRED: string; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_WARNING_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_WARNING_EXPLANATION: FM; GUILD_SETTINGS_MEMBER_VERIFICATION_MANUAL_WARNING_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_PARAGRAPH_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_PENDING: string; GUILD_SETTINGS_MEMBER_VERIFICATION_PENDING_COUNT: FM<"count", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_PENDING_COUNT_HYPEN: FM<"count", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_PREVIEW: string; GUILD_SETTINGS_MEMBER_VERIFICATION_PREVIEW_DESCRIPTION: FM<"helpdeskArticle", true>; GUILD_SETTINGS_MEMBER_VERIFICATION_PREVIEW_ENABLED_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_PROGRESS_WILL_SAVE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_QUESTION_LIMIT: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REASON_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REJECTED: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REJECTED_COUNT_HYPEN: FM<"count", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_REQUIREMENTS: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REQUIREMENTS_INTRO_BUTTON: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REVIEW_APPLICATION_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REVIEW_APPLICATION_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REVIEW_PENDING_APPLICATIONS: FM<"count", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_REVIEW_WARNING_DESCRIPTION: string; GUILD_SETTINGS_MEMBER_VERIFICATION_REVIEW_WARNING_TITLE: FM<"count", false>; GUILD_SETTINGS_MEMBER_VERIFICATION_SCREEN_TITLE: string; GUILD_SETTINGS_MEMBER_VERIFICATION_SORT_NEWEST: string; GUILD_SETTINGS_MEMBER_VERIFICATION_SORT_OLDEST: string; GUILD_SETTINGS_MEMBERS_ADD_ROLE: string; GUILD_SETTINGS_MEMBERS_DISPLAY_ROLE: string; GUILD_SETTINGS_MEMBERS_REMOVE_ROLE: FM<"roleName", false>; GUILD_SETTINGS_MEMBERS_SERVER_MEMBERS: string; GUILD_SETTINGS_MONETIZATION: string; GUILD_SETTINGS_ONBOARDING: string; GUILD_SETTINGS_ONBOARDING_ACTION_CHANNEL: string; GUILD_SETTINGS_ONBOARDING_ACTION_CHANNEL_EXPLAINER: string; GUILD_SETTINGS_ONBOARDING_ACTION_ICON: string; GUILD_SETTINGS_ONBOARDING_ACTION_ICON_EMOJI: string; GUILD_SETTINGS_ONBOARDING_ACTION_ICON_EXPLAINER: string; GUILD_SETTINGS_ONBOARDING_ACTION_ICON_REMOVE: string; GUILD_SETTINGS_ONBOARDING_ACTION_ICON_UPLOAD: string; GUILD_SETTINGS_ONBOARDING_ACTION_TALK: string; GUILD_SETTINGS_ONBOARDING_ACTION_TALK_IN_FORUM: string; GUILD_SETTINGS_ONBOARDING_ACTION_TALK_IN_MEDIA_CHANNEL: string; GUILD_SETTINGS_ONBOARDING_ACTION_TITLE: string; GUILD_SETTINGS_ONBOARDING_ACTION_TITLE_PLACEHOLDER: string; GUILD_SETTINGS_ONBOARDING_ACTION_TYPE: string; GUILD_SETTINGS_ONBOARDING_ACTION_VIEW: string; GUILD_SETTINGS_ONBOARDING_ADD_A_RESOURCE: string; GUILD_SETTINGS_ONBOARDING_ADD_A_TASK: string; GUILD_SETTINGS_ONBOARDING_CUSTOMIZE_ACTION: string; GUILD_SETTINGS_ONBOARDING_HOME_BANNER: string; GUILD_SETTINGS_ONBOARDING_HOME_BANNER_EXPLAINER_1: string; GUILD_SETTINGS_ONBOARDING_HOME_BANNER_EXPLAINER_2: FM<[never, "learnMoreHook"], true>; GUILD_SETTINGS_ONBOARDING_HOME_EXISTING_MEMBER_EXAMPLE: string; GUILD_SETTINGS_ONBOARDING_HOME_GUIDE_EXAMPLE_ALT: string; GUILD_SETTINGS_ONBOARDING_HOME_NEW_MEMBER_EXAMPLE: string; GUILD_SETTINGS_ONBOARDING_HOME_REVIEW_DESCRIPTION: string; GUILD_SETTINGS_ONBOARDING_HOME_REVIEW_INVALID_DESCRIPTION: string; GUILD_SETTINGS_ONBOARDING_HOME_REVIEW_NOT_STARTED_DESCRIPTION: string; GUILD_SETTINGS_ONBOARDING_HOME_REVIEW_TITLE: string; GUILD_SETTINGS_ONBOARDING_HOME_SAVE_FAILED: string; GUILD_SETTINGS_ONBOARDING_HOME_SAVE_FAILED_INVALID: string; GUILD_SETTINGS_ONBOARDING_HOME_SAVE_FAILED_INVALID_WITH_DETAILS: FM<"errorMessage", true>; GUILD_SETTINGS_ONBOARDING_HOME_SAVE_FAILED_REASON: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_INVALID_ACTION_CHANNEL: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_INVALID_ACTION_CHANNEL_EMOJI: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_INVALID_RESOURCE_CHANNEL: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESOURCE_BULLET_1: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESOURCE_BULLET_2: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESOURCE_BULLET_3: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESOURCE_EXISTING_USER: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESOURCE_NEW_USER: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESOURCES_DESCRIPTION: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_RESOURCES_TITLE: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_SETUP_WELCOME: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_TODOS_BAD_EXAMPLE_CHANNEL: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_TODOS_BAD_EXAMPLE_REASON: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_TODOS_BAD_EXAMPLE_TITLE: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_TODOS_DESCRIPTION: FM; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_TODOS_RULES: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_TODOS_TITLE: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_WELCOME_AUTHOR_EXPLAINER: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_WELCOME_AUTHOR_TITLE: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_WELCOME_DESCRIPTION: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_WELCOME_DESCRIPTION_TIP: FM; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_WELCOME_MESSAGE_INPUT_HEADER: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_WELCOME_PLACEHOLDER: string; GUILD_SETTINGS_ONBOARDING_HOME_SETTINGS_WELCOME_TITLE: string; GUILD_SETTINGS_ONBOARDING_PROMPT_INVALID_EMOJI: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_CHANNEL: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_CHANNEL_EDIT_TITLE: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_CHANNEL_EXPLAINER: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_DESCRIPTION: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_DESCRIPTION_PLACEHOLDER: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_TITLE: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_TITLE_PLACEHOLDER: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_UPLOAD: string; GUILD_SETTINGS_ONBOARDING_RESOURCE_UPLOAD_EXPLAINER: string; GUILD_SETTINGS_ONBOARDING_RULES_ACTION: string; GUILD_SETTINGS_ONBOARDING_SUGGESTED_RESOURCES_DISMISS: string; GUILD_SETTINGS_ONBOARDING_SUGGESTED_RESOURCES_EXPLAINER: string; GUILD_SETTINGS_OVERVIEW_BOOST_UNLOCK: FM<"boosts", false>; GUILD_SETTINGS_OVERVIEW_BOOST_UNLOCKED: FM<"tier", false>; GUILD_SETTINGS_OVERVIEW_TIER_INFO: FM<"tier" | "tierStatusUrl", true>; GUILD_SETTINGS_OWNER_MUST_ENABLE_MONETIZATION_DESCRIPTION: string; GUILD_SETTINGS_OWNER_MUST_ENABLE_MONETIZATION_TITLE: string; GUILD_SETTINGS_PARTNER_AND_DISCOVERY_DISABLE_PUBLIC_CONFIRM_TEXT: string; GUILD_SETTINGS_PARTNER_BUTTON_TOOLTIP_PAUSED: string; GUILD_SETTINGS_PARTNER_CHECKLIST_AGE_DESCRIPTION: FM<"minimumGuildAge", false>; GUILD_SETTINGS_PARTNER_CHECKLIST_AGE_DESCRIPTION_FAILING: FM<"minimumGuildAge" | "passDate", false>; GUILD_SETTINGS_PARTNER_CHECKLIST_FAILING_HEADER: string; GUILD_SETTINGS_PARTNER_CHECKLIST_FAILING_SUBHEADER: FM<[never, "warningHook"], true>; GUILD_SETTINGS_PARTNER_CHECKLIST_HEALTH_VIEW_DETAILS: string; GUILD_SETTINGS_PARTNER_CHECKLIST_HEALTHY_DESCRIPTION: string; GUILD_SETTINGS_PARTNER_CHECKLIST_HEALTHY_DESCRIPTION_FAILING: string; GUILD_SETTINGS_PARTNER_CHECKLIST_HEALTHY_DESCRIPTION_PENDING: FM<[never, "checkBackHook"], true>; GUILD_SETTINGS_PARTNER_CHECKLIST_HEALTHY_DESCRIPTION_PENDING_SIZE: FM<"minMembers", false>; GUILD_SETTINGS_PARTNER_CHECKLIST_ONBOARDING_DESCRIPTION: FM; GUILD_SETTINGS_PARTNER_CHECKLIST_ONBOARDING_NAME: string; GUILD_SETTINGS_PARTNER_CHECKLIST_PASSING_HEADER: string; GUILD_SETTINGS_PARTNER_CHECKLIST_PASSING_SUBHEADER: string; GUILD_SETTINGS_PARTNER_CHECKLIST_SIZE: FM<"minMembers", false>; GUILD_SETTINGS_PARTNER_CHECKLIST_SIZE_DESCRIPTION: FM<"minMembers", false>; GUILD_SETTINGS_PARTNER_CHECKLIST_SIZE_DESCRIPTION_FAILING: FM<"minMembers", false>; GUILD_SETTINGS_PARTNER_CHECKLIST_SIZE_FAILING: string; GUILD_SETTINGS_PARTNER_DISABLE_PUBLIC_CONFIRM_TEXT: string; GUILD_SETTINGS_PARTNER_INTRO_APPLY_BUTTON: string; GUILD_SETTINGS_PARTNER_INTRO_APPLY_BUTTON_TOOLTIP_ONLY_OWNER: string; GUILD_SETTINGS_PARTNER_INTRO_APPLY_BUTTON_TOOLTIP_PENDING: string; GUILD_SETTINGS_PARTNER_INTRO_APPLY_BUTTON_TOOLTIP_REJECTED: string; GUILD_SETTINGS_PARTNER_INTRO_APPLY_DETAILS: FM<"helpdeskArticle", true>; GUILD_SETTINGS_PARTNER_INTRO_BODY: FM<"helpdeskArticle", true>; GUILD_SETTINGS_PARTNER_INTRO_COOLDOWN: string; GUILD_SETTINGS_PARTNER_INTRO_COOLDOWN_COUNTER: FM<"numDays", false>; GUILD_SETTINGS_PARTNER_INTRO_HEADER: string; GUILD_SETTINGS_PARTNER_INTRO_PENDING: FM<[never, "pendingHook"], true>; GUILD_SETTINGS_PARTNER_INTRO_REJECTED: FM<[never, "warningHook"], true>; GUILD_SETTINGS_PARTNER_INTRO_UPSELL_BRANDING_BODY: string; GUILD_SETTINGS_PARTNER_INTRO_UPSELL_BRANDING_HEADER: string; GUILD_SETTINGS_PARTNER_INTRO_UPSELL_PERKS_BODY: string; GUILD_SETTINGS_PARTNER_INTRO_UPSELL_PERKS_HEADER: string; GUILD_SETTINGS_PARTNER_INTRO_UPSELL_RECOGNITION_BODY: string; GUILD_SETTINGS_PARTNER_INTRO_UPSELL_RECOGNITION_HEADER: string; GUILD_SETTINGS_PARTNER_NOT_VERIFIED: string; GUILD_SETTINGS_PARTNER_PAUSED_INTRO_HEADER: string; GUILD_SETTINGS_PICKER_DEFAULT_CREATE_DESCRIPTION: string; GUILD_SETTINGS_PICKER_DEFAULT_DESCRIPTION: string; GUILD_SETTINGS_PICKER_DEFAULT_TITLE: string; GUILD_SETTINGS_PRE_JOIN_QUESTIONS_HEADER: string; GUILD_SETTINGS_PRE_JOIN_QUESTIONS_SUBHEADER: string; GUILD_SETTINGS_PREMIUM_GUILD_BLURB: FM<"helpdeskArticle", true>; GUILD_SETTINGS_PREMIUM_GUILD_CLOSE_HINT: FM<"numLeft", false>; GUILD_SETTINGS_PREMIUM_GUILD_COUNT_SUBSCRIBERS: FM<"count", true>; GUILD_SETTINGS_PREMIUM_GUILD_TIER_REQUIREMENT: FM<"required", false>; GUILD_SETTINGS_PREMIUM_GUILD_TIER_REQUIREMENT_A11Y_LABEL: FM<"required", false>; GUILD_SETTINGS_PREMIUM_GUILD_TITLE: string; GUILD_SETTINGS_PREMIUM_GUILD_UNLOCKED: string; GUILD_SETTINGS_PREMIUM_PROGRESS_BAR_DESCRIPTION: string; GUILD_SETTINGS_PREMIUM_PROGRESS_BAR_IMG_ALT: string; GUILD_SETTINGS_PREMIUM_PROGRESS_BAR_TITLE: string; GUILD_SETTINGS_PREMIUM_UPSELL_BODY_PERK_GUILD_SUBSCRIPTION_DISCOUNT: FM<"discountPercentage", false>; GUILD_SETTINGS_PREMIUM_UPSELL_BODY_PERK_NO_FREE_GUILD_SUBSCRIPTIONS: FM<"numFreeGuildSubscriptions", false>; GUILD_SETTINGS_PREMIUM_UPSELL_BODY_PERK_NUM_GUILD_SUBSCRIPTIONS: FM<"numFreeGuildSubscriptions", false>; GUILD_SETTINGS_PREMIUM_UPSELL_HEADING_PRIMARY: string; GUILD_SETTINGS_PREMIUM_UPSELL_HEADING_SECONDARY: string; GUILD_SETTINGS_PREMIUM_UPSELL_HEADING_SECONDARY_PREMIUM_USER: string; GUILD_SETTINGS_PREMIUM_UPSELL_HEADING_TERTIARY_PREMIUM_USER: FM<"numFreeGuildSubscriptions", false>; GUILD_SETTINGS_PREMIUM_UPSELL_LEARN_MORE: string; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING: FM<"price", true>; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING_EXTRA_ANDROID: FM<["originalPrice" | "price", "originalPriceHook"], true>; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING_EXTRA_IOS: FM<["originalPrice" | "price", "originalPriceHook"], true>; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING_EXTRA_IOS_VOICEOVER_LABEL: FM<"originalPrice" | "price", false>; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING_TIER_1: FM<["discountPercent" | "originalPrice" | "price", "originalPriceHook"], true>; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING_TIER_1_MOBILE: FM<"discountPercent", false>; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING_TIER_2: FM<["discountPercent" | "freeSubscriptionCount" | "originalPrice" | "price", "originalPriceHook"], true>; GUILD_SETTINGS_PREMIUM_UPSELL_SUBHEADING_TIER_2_MOBILE: FM<"discountPercent" | "freeSubscriptionCount", false>; GUILD_SETTINGS_PUBLIC_NO_OPTION_SELECTED: string; GUILD_SETTINGS_PUBLIC_UPDATE_FAILED: string; GUILD_SETTINGS_PUBLIC_WELCOME: string; GUILD_SETTINGS_PUBLIC_WELCOME_ADD_RECOMMENDED_CHANNEL: string; GUILD_SETTINGS_PUBLIC_WELCOME_CHANNEL_DELETE: string; GUILD_SETTINGS_PUBLIC_WELCOME_CHANNEL_DESCRIPTION_PLACEHOLDER: string; GUILD_SETTINGS_PUBLIC_WELCOME_CHANNEL_EDIT: string; GUILD_SETTINGS_PUBLIC_WELCOME_CHANNEL_MOVE_DOWN: string; GUILD_SETTINGS_PUBLIC_WELCOME_CHANNEL_MOVE_UP: string; GUILD_SETTINGS_PUBLIC_WELCOME_DESCRIPTION_PLACEHOLDER: string; GUILD_SETTINGS_PUBLIC_WELCOME_ENABLED: string; GUILD_SETTINGS_PUBLIC_WELCOME_ENABLED_SECOND_LINE: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_CHANNEL_DESCRIPTION_1: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_CHANNEL_DESCRIPTION_2: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_CHANNEL_DESCRIPTION_3: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_CHANNEL_NAME_1: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_CHANNEL_NAME_2: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_CHANNEL_NAME_3: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_DESCRIPTION: string; GUILD_SETTINGS_PUBLIC_WELCOME_EXAMPLE_TITLE: FM; GUILD_SETTINGS_PUBLIC_WELCOME_INTRO_BUTTON: string; GUILD_SETTINGS_PUBLIC_WELCOME_INTRO_TEXT: FM; GUILD_SETTINGS_PUBLIC_WELCOME_INVALID_CHANNEL: string; GUILD_SETTINGS_PUBLIC_WELCOME_ONLY_VIEWABLE_CHANNELS: string; GUILD_SETTINGS_PUBLIC_WELCOME_PICK_CHANNEL: string; GUILD_SETTINGS_PUBLIC_WELCOME_PICK_EMOJI: string; GUILD_SETTINGS_PUBLIC_WELCOME_PICK_EMOJI_UPSELL: string; GUILD_SETTINGS_PUBLIC_WELCOME_PREVIEW: string; GUILD_SETTINGS_PUBLIC_WELCOME_PROGRESS_WILL_SAVE: string; GUILD_SETTINGS_PUBLIC_WELCOME_RECOMMENDED_CHANNEL_MODAL_ADD: string; GUILD_SETTINGS_PUBLIC_WELCOME_RECOMMENDED_CHANNEL_MODAL_EDIT: string; GUILD_SETTINGS_PUBLIC_WELCOME_RECOMMENDED_CHANNELS_DESCRIPTION: string; GUILD_SETTINGS_PUBLIC_WELCOME_RECOMMENDED_CHANNELS_TITLE: string; GUILD_SETTINGS_PUBLIC_WELCOME_SELECT_A_CHANNEL: string; GUILD_SETTINGS_PUBLIC_WELCOME_SET_DESCRIPTION: string; GUILD_SETTINGS_PUBLIC_WELCOME_SETTINGS_TEXT: string; GUILD_SETTINGS_PUBLIC_WELCOME_UPDATE_FAILURE: string; GUILD_SETTINGS_REQ_MFA_BODY: string; GUILD_SETTINGS_REQ_MFA_LABEL: string; GUILD_SETTINGS_REQ_MFA_TOOLTIP: FM; GUILD_SETTINGS_REVIEW_PERMISSIONS: string; GUILD_SETTINGS_ROLE_ICON_SIDEBAR_NEW_ARIA_LABEL: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIER_CARD_CREATE: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIER_EDIT_BENEFITS_TITLE: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIER_EDIT_DESIGN_TITLE: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIER_EDIT_DETAILS_TITLE: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIER_EDIT_PUBLISH_DRAFT_CTA: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIER_EDIT_PUBLISH_DRAFT_DESCRIPTION: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIER_EDIT_SUBTITLE: string; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIERS_TAB_DESCRIPTION: FM<"maxTiers", false>; GUILD_SETTINGS_ROLE_SUBSCRIPTION_TIERS_TAB_TITLE: string; GUILD_SETTINGS_ROLE_SUBSCRIPTIONS_STORE_PAGE: string; GUILD_SETTINGS_SAFETY_CAPTCHA_RAID_PROTECTION: string; GUILD_SETTINGS_SAFETY_DM_SPAM_PROTECTION: string; GUILD_SETTINGS_SAFETY_ENABLE_MODERATION_EXPERIENCE: string; GUILD_SETTINGS_SAFETY_ENABLE_MODERATION_EXPERIENCE_DESCRIPTION: string; GUILD_SETTINGS_SAFETY_EVERYONE_RISKY_PERMISSIONS: string; GUILD_SETTINGS_SAFETY_EVERYONE_RISKY_PERMISSIONS_DETAILS: FM<"numPerms", false>; GUILD_SETTINGS_SAFETY_MFA_BODY: string; GUILD_SETTINGS_SAFETY_MFA_DISCOVERABLE_DISABLED_TOOLTIP: string; GUILD_SETTINGS_SAFETY_MFA_NON_OWNER_DETAIL: string; GUILD_SETTINGS_SAFETY_MFA_NON_OWNER_TOOLTIP: string; GUILD_SETTINGS_SAFETY_MFA_OWNER_DETAIL: FM; GUILD_SETTINGS_SAFETY_MFA_OWNER_TOOLTIP: string; GUILD_SETTINGS_SAFETY_MODERATION_EXPERIENCE_IN_COMMUNITY: string; GUILD_SETTINGS_SAFETY_NOTIFICATIONS_CHANNEL_DESCRIPTION: string; GUILD_SETTINGS_SAFETY_ON_BY_DEFAULT: string; GUILD_SETTINGS_SAFETY_OVERVIEW_NUM_ENABLED: FM<"enabled" | "total", false>; GUILD_SETTINGS_SAFETY_PERMISSIONS_TITLE: string; GUILD_SETTINGS_SAFETY_RAID_ALERTS_DESCRIPTION: string; GUILD_SETTINGS_SAFETY_RAID_ALERTS_TITLE: string; GUILD_SETTINGS_SAFETY_RAID_CAPTCH_RAID: string; GUILD_SETTINGS_SAFETY_RAID_CAPTCHA: string; GUILD_SETTINGS_SAFETY_RULES_EDIT_SUBTITLE: string; GUILD_SETTINGS_SAFETY_RULES_FORM_PILL: string; GUILD_SETTINGS_SAFETY_RULES_SCREENING: string; GUILD_SETTINGS_SAFETY_SETUP_HEADER: string; GUILD_SETTINGS_SAFETY_SPAM_DM_NON_FRIENDS: string; GUILD_SETTINGS_SAFETY_SPAM_DM_NON_FRIENDS_DESCRIPTION: string; GUILD_SETTINGS_SAFETY_SPAM_DM_SUSPCIOUS_MESSAGES: string; GUILD_SETTINGS_SAFETY_SPAM_SUSPICIOUS_DMS: string; GUILD_SETTINGS_SAFETY_SPAM_SUSPICIOUS_DMS_DESCRIPTION: string; GUILD_SETTINGS_SAFETY_SPAM_SUSPICIOUS_LINKS: string; GUILD_SETTINGS_SAFETY_UPDATES_HEADER: string; GUILD_SETTINGS_SAFETY_UPDATES_ITEM_1: string; GUILD_SETTINGS_SAFETY_UPDATES_ITEM_2: string; GUILD_SETTINGS_SAFETY_UPDATES_ITEM_3: string; GUILD_SETTINGS_SAFETY_UPDATES_ITEM_4: string; GUILD_SETTINGS_SAFETY_UPDATES_LINE_1: string; GUILD_SETTINGS_SAFETY_UPDATES_LINE_2: string; GUILD_SETTINGS_SAFETY_VERIFICATION_DESCRIPTION: string; GUILD_SETTINGS_SECTION_GROW_YOUR_SERVER: string; GUILD_SETTINGS_SECTION_SERVER_DISCOVERY: string; GUILD_SETTINGS_SECTION_TITLE_ADD_FUN_STUFF: string; GUILD_SETTINGS_SECTION_TITLE_KEEP_IT_SAFE: string; GUILD_SETTINGS_SECTION_TITLE_MANAGE_USERS: string; GUILD_SETTINGS_SERVER_BANNER_BACKGROUND: string; GUILD_SETTINGS_SERVER_INVITE_BACKGROUND: string; GUILD_SETTINGS_SET_UP_DISCOVERY: string; GUILD_SETTINGS_SOUND_LIST_HEADER: FM<"slots", false>; GUILD_SETTINGS_SOUND_LIST_SOUNDS_AVAILABLE: FM<"slots" | "totalSlots", false>; GUILD_SETTINGS_SOUND_LIST_SOUNDS_AVAILABLE_BOOST_LEVEL: FM<"boostLevel" | "slots" | "totalSlots", false>; GUILD_SETTINGS_SOUND_NAME_COLUMN: string; GUILD_SETTINGS_SOUND_UPLOADER_COLUMN: string; GUILD_SETTINGS_SOUNDBOARD: string; GUILD_SETTINGS_SOUNDBOARD_BOOST_LEVEL: FM<"currentBoostLevel", false>; GUILD_SETTINGS_SOUNDBOARD_CTA: string; GUILD_SETTINGS_SOUNDBOARD_DELETE_SOUND_BODY: FM<"soundName", true>; GUILD_SETTINGS_SOUNDBOARD_DELETE_SOUND_TITLE: FM<"soundName", false>; GUILD_SETTINGS_SOUNDBOARD_DESCRIPTION: string; GUILD_SETTINGS_SOUNDBOARD_DESCRIPTION_WITH_COUNT: FM<"maxSounds", false>; GUILD_SETTINGS_SOUNDBOARD_UPLOAD_SOUND: string; GUILD_SETTINGS_SOUNDBOARD_UPLOAD_SOUND_NOT_SUPPORTED: FM; GUILD_SETTINGS_SOUNDBOARD_UPSELL_BANNER_TEXT: FM<"level" | "numAdditional", false>; GUILD_SETTINGS_SPLASH_DESCRIPTION: string; GUILD_SETTINGS_SPLASH_INFO: string; GUILD_SETTINGS_SPLASH_RECOMMEND: FM<"articleURL", true>; GUILD_SETTINGS_STICKERS: string; GUILD_SETTINGS_STICKERS_BOOST_SERVER: string; GUILD_SETTINGS_STICKERS_FREE_SLOTS_HEADER: string; GUILD_SETTINGS_STICKERS_UPLOAD_AUTO_RESIZE_HEADING: string; GUILD_SETTINGS_STICKERS_UPLOAD_AUTO_RESIZE_HELP: FM<"articleUrl", true>; GUILD_SETTINGS_STICKERS_UPSELL_BANNER_TEXT: FM<"level" | "numAdditional", false>; GUILD_SETTINGS_STICKERS_UPSELL_BANNER_TOO_MANY_STICKERS_HEADER: FM<"level", false>; GUILD_SETTINGS_STICKERS_UPSELL_BANNER_TOO_MANY_STICKERS_TEXT: FM<"level", false>; GUILD_SETTINGS_STICKERS_UPSELL_DESCRIPTION: string; GUILD_SETTINGS_STICKERS_UPSELL_DESCRIPTION_FREE_SLOTS: string; GUILD_SETTINGS_STICKERS_UPSELL_TITLE: string; GUILD_SETTINGS_TITLE_SERVER_WIDGET: string; GUILD_SETTINGS_UPDATE_PERMISSIONS: string; GUILD_SETTINGS_WIDGET_EMBED_HELP: FM; GUILD_SETTINGS_WIDGET_ENABLE_WIDGET: string; GUILD_SHOP_CHANNEL_LABEL: string; GUILD_SHOP_LISTING_CARD_A11Y_LABEL: FM<"productName", false>; GUILD_SHOP_PAGE_PREVIEW_NOTICE_LABEL: string; GUILD_SHOP_PREVIEW_CTA_BUTTON: string; GUILD_SHOP_PRODUCT_TYPE_BODY: string; GUILD_SHOP_PRODUCT_TYPE_SELECTOR_TITLE: string; GUILD_SHOP_PRODUCTS_A11Y_LABEL: string; GUILD_SHOP_REMOVE_PREVIEW_PAGE_BUTTON: string; GUILD_SHOP_REMOVE_PREVIEW_TAB_BUTTON: string; GUILD_SHOP_SUPPORT_SERVER_HEADER: string; GUILD_SHOP_TAB_PREVIEW_NOTICE_LABEL: string; GUILD_SIDEBAR_A11Y_LABEL: FM<"guildName", false>; GUILD_SIDEBAR_ACTIONS_BUTTON: FM<"guildName", false>; GUILD_SIDEBAR_ACTIVE_VOICE_CHANNEL_A11Y_HINT: string; GUILD_SIDEBAR_ACTIVE_VOICE_CHANNEL_A11Y_LABEL: FM<"channelCount", false>; GUILD_SIDEBAR_ANNOUNCEMENT_CHANNEL_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_ANNOUNCEMENT_CHANNEL_A11Y_LABEL_WITH_MENTIONS: FM<"channelName" | "mentionCount", false>; GUILD_SIDEBAR_ANNOUNCEMENT_CHANNEL_A11Y_LABEL_WITH_UNREADS: FM<"channelName", false>; GUILD_SIDEBAR_CHANNEL_A11Y_LABEL_ACTIVITIES: FM<"activitiesCount", false>; GUILD_SIDEBAR_CHANNEL_A11Y_LABEL_LIMIT: FM<"limit" | "userCount", false>; GUILD_SIDEBAR_CHANNEL_A11Y_LABEL_MENTIONS: FM<"mentionCount", false>; GUILD_SIDEBAR_CHANNEL_A11Y_LABEL_PREMIUM_LOCKED: string; GUILD_SIDEBAR_CHANNEL_A11Y_LABEL_PREMIUM_UNLOCKED: string; GUILD_SIDEBAR_CHANNEL_A11Y_LABEL_UNREAD: string; GUILD_SIDEBAR_CHANNEL_BROWSER: string; GUILD_SIDEBAR_CUSTOMIZE_COMMUNITY: string; GUILD_SIDEBAR_DEFAULT_CHANNEL_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_DEFAULT_CHANNEL_A11Y_LABEL_WITH_MENTIONS: FM<"channelName" | "mentionCount", false>; GUILD_SIDEBAR_DEFAULT_CHANNEL_A11Y_LABEL_WITH_UNREADS: FM<"channelName", false>; GUILD_SIDEBAR_DIRECTORY_CHANNEL_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_DO_NOT_SHOW_AGAIN: string; GUILD_SIDEBAR_HEADER_MOBILE_A11Y_HINT: string; GUILD_SIDEBAR_REORDER_CONFIRM: string; GUILD_SIDEBAR_REORDER_DESCRIPTION: FM; GUILD_SIDEBAR_REORDER_DIALOG_TITLE: string; GUILD_SIDEBAR_STAGE_CHANNEL_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_STAGE_CHANNEL_A11Y_LABEL_WITH_LIMIT: FM<"channelName" | "limit" | "userCount", false>; GUILD_SIDEBAR_STAGE_CHANNEL_A11Y_LABEL_WITH_USERS: FM<"channelName" | "userCount", false>; GUILD_SIDEBAR_STORE_CHANNEL_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_THREAD_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_THREAD_A11Y_LABEL_WITH_MENTIONS: FM<"channelName" | "mentionCount", false>; GUILD_SIDEBAR_THREAD_A11Y_LABEL_WITH_UNREADS: FM<"channelName", false>; GUILD_SIDEBAR_UNKNOWN_CHANNEL_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_VOICE_CHANNEL_A11Y_LABEL: FM<"channelName", false>; GUILD_SIDEBAR_VOICE_CHANNEL_A11Y_LABEL_USERS: FM<"userCount", false>; GUILD_SIDEBAR_VOICE_CHANNEL_A11Y_LABEL_WITH_LIMIT: FM<"channelName" | "limit" | "userCount", false>; GUILD_SIDEBAR_VOICE_CHANNEL_A11Y_LABEL_WITH_LIMIT_WITH_MENTIONS: FM<"channelName" | "limit" | "mentionCount" | "userCount", false>; GUILD_SIDEBAR_VOICE_CHANNEL_A11Y_LABEL_WITH_MENTIONS: FM<"channelName" | "mentionCount", false>; GUILD_SIDEBAR_VOICE_CHANNEL_A11Y_LABEL_WITH_USERS: FM<"channelName" | "userCount", false>; GUILD_SIDEBAR_VOICE_CHANNEL_A11Y_LABEL_WITH_USERS_WITH_MENTIONS: FM<"channelName" | "mentionCount" | "userCount", false>; GUILD_SIDEBAR_VOICE_CHANNEL_DESCRIBED_BY_LABEL_ACTIVITIES: FM<"activeActivities", false>; GUILD_STAGES_CANT_START_EVENT_YET: FM<"startDate" | "startTime", false>; GUILD_STICKER_A11Y_REMOVE_STICKER: FM<"name", false>; GUILD_STICKER_FILE_TOO_BIG: FM<"maxSize", false>; GUILD_STICKER_GRID_UPLOAD_LABEL: string; GUILD_STICKER_INVALID_STICKER: string; GUILD_STICKER_PREVIEW_IMG_ALT_DARK: string; GUILD_STICKER_PREVIEW_IMG_ALT_LIGHT: string; GUILD_STICKER_SETTINGS_ADDITIONAL_SLOTS: FM<"numAdditional" | "numTotal", false>; GUILD_STICKER_SETTINGS_ADDITIONAL_SLOTS_WITHOUT_TOTAL: FM<"numAdditional", false>; GUILD_STICKER_SETTINGS_BUY_LEVEL: string; GUILD_STICKER_SETTINGS_ICON_ALT_TEXT: string; GUILD_STICKER_SETTINGS_PLACEHOLDER_ALT_TEXT: string; GUILD_STICKER_SETTINGS_REMAINING_SLOTS_AVAILABLE: FM<"numAvailable" | "numTotal", false>; GUILD_STICKER_SETTINGS_UNLOCK_SLOTS: string; GUILD_STICKER_UNKNOWN_MIME_TYPE: string; GUILD_STICKER_UNSUPPORTED_MIME_TYPE: FM<"articleURL", true>; GUILD_STICKER_UNUSED_TIER: string; GUILD_STICKER_UPLOAD_DESCRIPTION_PLACEHOLDER: string; GUILD_STICKER_UPLOAD_DESCRIPTION_TITLE: string; GUILD_STICKER_UPLOAD_DESCRIPTION_TOOLTIP: string; GUILD_STICKER_UPLOAD_FILE_BUTTON: string; GUILD_STICKER_UPLOAD_FILE_PLACEHOLDER: string; GUILD_STICKER_UPLOAD_FILE_TITLE: string; GUILD_STICKER_UPLOAD_FILE_TITLE_BLOCKED: string; GUILD_STICKER_UPLOAD_NAME_PLACEHOLDER: string; GUILD_STICKER_UPLOAD_NAME_TITLE: string; GUILD_STICKER_UPLOAD_PREVIEW_TITLE: string; GUILD_STICKER_UPLOAD_RELATED_EMOJI_PLACEHOLDER: string; GUILD_STICKER_UPLOAD_RELATED_EMOJI_TITLE: string; GUILD_STICKER_UPLOAD_TITLE: string; GUILD_STICKERS_UPDATE: string; GUILD_STORE_HERO_SHOW_MORE_DESCRIPTION_LABEL: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_ACTIVATED_CLOSE_BUTTON: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_ACTIVATED_DESCRIPTION_GENERIC_GUILD: FM<"guildSubscriptionQuantity", true>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_ACTIVATED_DESCRIPTION_MOBILE1: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_ACTIVATED_DESCRIPTION_NO_APPLICATION: FM<"guildSubscriptionQuantity", true>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_COUNTER: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_EXTERNAL: FM<"paymentGatewayName", false>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_FOOTER_DISCOUNT: FM<"planName", true>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_FOOTER_UPSELL: FM<"discountPercentage" | "freeSubscriptionCount", true>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_FOOTER_UPSELL_TRIAL: FM<"discountPercentage" | "freeSubscriptionCount", true>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_FOOTER_UPSELL_TRIAL_VARIANT: FM<"discountPercentage" | "freeSubscriptionCount", true>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_INVOICE_ROW_CONTENT: FM<"numGuildSubscriptions" | "planName", false>; GUILD_SUBSCRIPTION_PURCHASE_MODAL_PAYMENT_SOURCE_TOOLTIP: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_PURCHASE_DETAILS_HEADER: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_STEP_SELECT_DESCRIPTION: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_SUBMIT: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_SUBTOTAL: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_TRANSFERRED_DESCRIPTION_GENERIC_GUILD: FM; GUILD_SUBSCRIPTION_PURCHASE_MODAL_TRANSFERRED_DESCRIPTION_MOBILE1: string; GUILD_SUBSCRIPTION_PURCHASE_MODAL_UNUSED_SLOT_NOTICE: FM<"slotCount", false>; GUILD_TEMPLATE_BASED_ON: string; GUILD_TEMPLATE_CREATE_DISCORD: string; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_CAMPUS_CLUBS: FM<"username", false>; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_CLASSROOM: FM<"username", false>; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_CREATE_FROM_SCRATCH: FM<"username", false>; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_CREATORS_HOBBIES: FM<"username", false>; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_FRIENDS_FAMILY: FM<"username", false>; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_GLOBAL_COMMUNITIES: FM<"username", false>; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_LOCAL_COMMUNITIES: FM<"username", false>; GUILD_TEMPLATE_DEFAULT_SERVER_NAME_STUDY_GROUPS: FM<"username", false>; GUILD_TEMPLATE_EMBED_VIEW_IN_APP: string; GUILD_TEMPLATE_HEADER_CLASS: string; GUILD_TEMPLATE_HEADER_CLUBS: string; GUILD_TEMPLATE_HEADER_COMMUNITY: string; GUILD_TEMPLATE_HEADER_CREATE: string; GUILD_TEMPLATE_HEADER_CREATOR: string; GUILD_TEMPLATE_HEADER_DORM: string; GUILD_TEMPLATE_HEADER_FRIEND: string; GUILD_TEMPLATE_HEADER_GAMING: string; GUILD_TEMPLATE_HEADER_MAJOR: string; GUILD_TEMPLATE_HEADER_SCHOOL_CLUB: string; GUILD_TEMPLATE_HEADER_SOCIAL: string; GUILD_TEMPLATE_HEADER_STUDY: string; GUILD_TEMPLATE_INVALID_SUBTITLE: string; GUILD_TEMPLATE_INVALID_TITLE: string; GUILD_TEMPLATE_MOBILE_INVALID_CTA: string; GUILD_TEMPLATE_MOBILE_INVALID_ERROR: string; GUILD_TEMPLATE_MODAL_CHANNELS_DESCRIPTIONS: string; GUILD_TEMPLATE_MODAL_CHANNELS_HEADER: string; GUILD_TEMPLATE_MODAL_CHANNELS_TIP: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_CAMPUS_CLUBS: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_CLASSROOM: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_CREATE_FROM_SCRATCH: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_CREATORS_HOBBIES: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_FRIENDS_FAMILY: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_GITHUB_HACKATHON: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_GLOBAL_COMMUNITIES: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_LEAGUE_CLUBS: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_LOCAL_COMMUNITIES: string; GUILD_TEMPLATE_MODAL_DESCRIPTION_STUDY_GROUPS: string; GUILD_TEMPLATE_MODAL_ROLES_DESCRIPTION: string; GUILD_TEMPLATE_MODAL_ROLES_HEADER: string; GUILD_TEMPLATE_MODAL_ROLES_HEADER2: string; GUILD_TEMPLATE_MODAL_TITLE: string; GUILD_TEMPLATE_MODAL_TITLE_CAMPUS_CLUBS: string; GUILD_TEMPLATE_MODAL_TITLE_CLASSROOM: string; GUILD_TEMPLATE_MODAL_TITLE_CREATE_FROM_SCRATCH: string; GUILD_TEMPLATE_MODAL_TITLE_CREATORS_HOBBIES: string; GUILD_TEMPLATE_MODAL_TITLE_FRIENDS_FAMILY: string; GUILD_TEMPLATE_MODAL_TITLE_GITHUB_HACKATHON: string; GUILD_TEMPLATE_MODAL_TITLE_GLOBAL_COMMUNITIES: string; GUILD_TEMPLATE_MODAL_TITLE_LEAGUE_CLUBS: string; GUILD_TEMPLATE_MODAL_TITLE_LOCAL_COMMUNITIES: string; GUILD_TEMPLATE_MODAL_TITLE_STUDY_GROUPS: string; GUILD_TEMPLATE_NAME_ANNOUNCEMENTS: string; GUILD_TEMPLATE_NAME_ASSIGNMENTS: string; GUILD_TEMPLATE_NAME_CATEGORY_CHAT: string; GUILD_TEMPLATE_NAME_CATEGORY_INFO: string; GUILD_TEMPLATE_NAME_CATEGORY_INFORMATION: string; GUILD_TEMPLATE_NAME_CATEGORY_TEXT: string; GUILD_TEMPLATE_NAME_CATEGORY_VOICE: string; GUILD_TEMPLATE_NAME_CLIPS_AND_HIGHLIGHTS: string; GUILD_TEMPLATE_NAME_DORM_NEWS: string; GUILD_TEMPLATE_NAME_EVENTS: string; GUILD_TEMPLATE_NAME_GAME: string; GUILD_TEMPLATE_NAME_GENERAL: string; GUILD_TEMPLATE_NAME_HELP_QUESTIONS: string; GUILD_TEMPLATE_NAME_HOMEWORK_HELP: string; GUILD_TEMPLATE_NAME_IDEAS_AND_FEEDBACK: string; GUILD_TEMPLATE_NAME_INTRODUCTIONS: string; GUILD_TEMPLATE_NAME_MEETING_PLANS: string; GUILD_TEMPLATE_NAME_MEETUPS: string; GUILD_TEMPLATE_NAME_MUSIC: string; GUILD_TEMPLATE_NAME_NOTES_RESOURCES: string; GUILD_TEMPLATE_NAME_OFF_TOPIC: string; GUILD_TEMPLATE_NAME_RESOURCES: string; GUILD_TEMPLATE_NAME_SESSION_PLANNING: string; GUILD_TEMPLATE_NAME_VOICE_COMMUNITY_HANGOUT: string; GUILD_TEMPLATE_NAME_VOICE_COUCHES: string; GUILD_TEMPLATE_NAME_VOICE_GAMING: string; GUILD_TEMPLATE_NAME_VOICE_LOBBY: string; GUILD_TEMPLATE_NAME_VOICE_LOUNGE: string; GUILD_TEMPLATE_NAME_VOICE_MEETING_ROOM: string; GUILD_TEMPLATE_NAME_VOICE_MEETING_ROOM_1: string; GUILD_TEMPLATE_NAME_VOICE_MEETING_ROOM_2: string; GUILD_TEMPLATE_NAME_VOICE_MOVIE_ROOM: string; GUILD_TEMPLATE_NAME_VOICE_STREAM_ROOM: string; GUILD_TEMPLATE_NAME_VOICE_STUDY_ROOM: FM<"number", false>; GUILD_TEMPLATE_NAME_VOICE_UNNUMBERED_STUDY_ROOM: string; GUILD_TEMPLATE_NAME_WELCOME_AND_RULES: string; GUILD_TEMPLATE_OPEN: string; GUILD_TEMPLATE_RESOLVED_EMBED_TITLE: string; GUILD_TEMPLATE_RESOLVING_TITLE: string; GUILD_TEMPLATE_SELECTOR_DESCRIPTION: string; GUILD_TEMPLATE_SELECTOR_OPTION_HEADER: string; GUILD_TEMPLATE_SELECTOR_TITLE: string; GUILD_TEMPLATE_SETTINGS_DESCRIPTION: FM; GUILD_TEMPLATE_SETUP_DISCORD: string; GUILD_TEMPLATE_USAGES: FM<"usageCount", true>; GUILD_TEMPLATE_USAGES_BY_CREATOR2: FM<["creator" | "usageCount", "creatorHook"], true>; GUILD_TEMPLATE_USAGES_NO_BOLD: FM<"usageCount", false>; GUILD_TEMPLATES: string; GUILD_TEMPLATES_CREATE_LINK: string; GUILD_TEMPLATES_DELETE_DESCRIPTION: string; GUILD_TEMPLATES_DELETE_TEMPLATE: string; GUILD_TEMPLATES_FORM_DESCRIPTION_CHANNELS: string; GUILD_TEMPLATES_FORM_DESCRIPTION_MEMBERS: string; GUILD_TEMPLATES_FORM_DESCRIPTION_MESSAGES: string; GUILD_TEMPLATES_FORM_DESCRIPTION_PERKS: string; GUILD_TEMPLATES_FORM_DESCRIPTION_ROLES: string; GUILD_TEMPLATES_FORM_DESCRIPTION_SETTINGS: string; GUILD_TEMPLATES_FORM_DESCRIPTION_WILL_COPY: string; GUILD_TEMPLATES_FORM_DESCRIPTION_WONT_COPY: string; GUILD_TEMPLATES_FORM_LABEL_DESCRIPTION: string; GUILD_TEMPLATES_FORM_LABEL_LINK: string; GUILD_TEMPLATES_FORM_LABEL_NAME: string; GUILD_TEMPLATES_FORM_LABEL_SERVER_NAME_CLASSROOM: string; GUILD_TEMPLATES_FORM_LABEL_SERVER_NAME_CREATE_FROM_SCRATCH: string; GUILD_TEMPLATES_FORM_LABEL_SERVER_NAME_CREATORS_HOBBIES: string; GUILD_TEMPLATES_FORM_LABEL_SERVER_NAME_FRIENDS_FAMILY: string; GUILD_TEMPLATES_FORM_LABEL_SERVER_NAME_GLOBAL_COMMUNITIES: string; GUILD_TEMPLATES_FORM_LABEL_SERVER_NAME_LOCAL_COMMUNITIES: string; GUILD_TEMPLATES_FORM_LABEL_SERVER_NAME_STUDY_GROUPS: string; GUILD_TEMPLATES_FORM_PLACEHOLDER_DESCRIPTION: string; GUILD_TEMPLATES_FORM_PLACEHOLDER_NAME: string; GUILD_TEMPLATES_LAST_SYNC: FM<"timestamp", false>; GUILD_TEMPLATES_PREVIEW_TEMPLATE: string; GUILD_TEMPLATES_SYNC_TEMPLATE: string; GUILD_TEMPLATES_UNSYNCED_TOOLTIP: string; GUILD_TEMPLATES_UNSYNCED_WARNING: string; GUILD_TOOLTIP_A11Y_LABEL: FM<"guildName" | "mentions", false>; GUILD_TOOLTIP_A11Y_LABEL_UNREADS: FM<"guildName", false>; GUILD_UNAVAILABLE_BODY: string; GUILD_UNAVAILABLE_HEADER: string; GUILD_UNAVAILABLE_TITLE: string; GUILD_VERIFICATION_TEXT_ACCOUNT_AGE: FM<"min", false>; GUILD_VERIFICATION_TEXT_MEMBER_AGE: FM<"min", false>; GUILD_VERIFICATION_TEXT_NOT_CLAIMED: string; GUILD_VERIFICATION_TEXT_NOT_PHONE_VERIFIED: string; GUILD_VERIFICATION_TEXT_NOT_VERIFIED: string; GUILD_VERIFICATION_VOICE_ACCOUNT_AGE: FM<"min", false>; GUILD_VERIFICATION_VOICE_HEADER: string; GUILD_VERIFICATION_VOICE_MEMBER_AGE: FM<"min", false>; GUILD_VERIFICATION_VOICE_NOT_CLAIMED: string; GUILD_VERIFICATION_VOICE_NOT_PHONE_VERIFIED: string; GUILD_VERIFICATION_VOICE_NOT_VERIFIED: string; GUILD_VERIFIED: string; GUILD_VERIFIED_AND_PARTNERED: string; GUILD_VOICE_CHANNEL_EMPTY_BODY_MOBILE: string; GUILD_VOICE_CHAT_EMPTY_STATE_SUBTITLE: string; GUILD_VOICE_CHAT_EMPTY_STATE_TITLE: string; GUILD_WARS_DROPS_COMPLETION_TOOLTIP: FM<"streamLengthRequirement", false>; GUILD_WARS_DROPS_ELIGIBILITY_ENROLLMENT_TOOLTIP: FM<"streamLengthRequirement", false>; GUILD_WARS_GO_LIVE_TASK: FM<"streamLengthRequirement", false>; GUILD_WARS_REDEMPTION_TIP: FM<"learnMoreUrl", true>; GUILD_WEB_PAGE_VANITY_URL_CANNOT_BE_MODIFIED: string; GUILDS_BAR_A11Y_LABEL: string; HALLOWEEN_LOADING_TEXT_1: string; HALLOWEEN_LOADING_TEXT_2: string; HALLOWEEN_LOADING_TEXT_3: string; HALLOWEEN_LOADING_TEXT_4: string; HALLOWEEN_LOADING_TEXT_5: string; HALLOWEEN_LOADING_TEXT_6: string; HALLOWEEN_LOADING_TEXT_7: string; HALLOWEEN_LOADING_TEXT_8: string; HALLOWEEN_LOADING_TEXT_9: string; HANG_STATUS: string; HANG_STATUS_HELP: string; HANG_STATUS_LOCATION: FM<"guildName", false>; HANG_STATUS_MOBILE_SET_ROW: string; HANG_STATUS_SET_CUSTOM_STATUS_PLACEHOLDER: string; HANG_STATUS_VC_ROW_ADD: string; HANGOUT_OVER_RECEIVER: string; HANGOUT_OVER_SENDER: string; HAPPENING_NOW: string; HARDWARE_ACCELERATION: string; HARDWARE_ACCELERATION_HELP_TEXT: string; HARMFUL_LINK_MESSAGE_BLOCKED_ERROR: FM<"helpUrl", false>; HARVEST_BACKEND_ACTIVITIES: string; HARVEST_BACKEND_ANALYTICS: string; HARVEST_BACKEND_GUILDS: string; HARVEST_BACKEND_HUBSPOT: string; HARVEST_BACKEND_MESSAGES: string; HARVEST_BACKEND_USERS: string; HD_VIDEO_STREAMING_DESCRIPTION: string; HD_VIDEO_STREAMING_SIDEBAR_TITLE: string; HELP: string; HELP_CLEAR_PERMISSIONS: string; HELP_DESK: string; HELP_MISSING_MANAGE_ROLES_PERMISSION: string; HELP_MISSING_PERMISSION: string; HELP_ROLE_LOCKED: string; HELP_ROLE_LOCKED_MINE: string; HELP_ROLES_DESCRIPTION: FM; HELP_SINGULAR_PERMISSION: string; hi: string; HIDDEN_SPAM_MESSAGE_COUNT: FM<"count", false>; HIDE: string; HIDE_CHAT: string; HIDE_INSTANT_INVITES_DESCRIPTION: string; HIDE_INSTANT_INVITES_LABEL: string; HIDE_MUTED_CHANNELS: string; HIDE_NAVIGATION: string; HIDE_PERSONAL_INFORMATION_DESCRIPTION: string; HIDE_PERSONAL_INFORMATION_LABEL: string; HIDE_SELF_STREAM_CONFIRMATION_BODY: string; HIDE_SELF_STREAM_CONFIRMATION_HEADER: string; HIDE_SELF_VIDEO_CONFIRMATION_BODY: string; HIDE_SELF_VIDEO_CONFIRMATION_HEADER: string; HIDE_USER_PROFILE: string; HIDE_WINDOW_FROM_STREAM_DESCRIPTION: string; HIDE_WINDOW_FROM_STREAM_LABEL: string; HIGHLIGHT: string; HIGHLIGHTS_AND_MENTIONS: string; HIGHLIGHTS_LEARN_MORE: string; HIGHLIGHTS_NOTE_SUBTEXT: string; HIGHLIGHTS_SERVER_TOO_LARGE: string; HOLD_UP: string; HOLIDAY_PREMIUM_MARKETING_FEATURE_HEADER: string; HOME: string; HOME_ACTIONS_MENU_LABEL: string; HOW_TO_INVITE_OTHERS: FM<"invitePeople", false>; HOW_YOU_SIGN_IN: string; hr: string; hu: string; HUB_ADD_GUILD_CATEGORY_PLACEHOLDER: string; HUB_ADD_GUILD_CATEGORY_TITLE: string; HUB_ADD_GUILD_DESCRIPTION_HELP: string; HUB_ADD_GUILD_DESCRIPTION_PLACEHOLDER: string; HUB_ADD_GUILD_DESCRIPTION_TITLE: string; HUB_ADD_OR_CREATE_SERVER_CONFIRMATION_TITLE: string; HUB_ADD_SERVER_CONFIRMATION_BUTTON: string; HUB_ADD_SERVER_CONFIRMATION_SUBTITLE: FM<"guildName", false>; HUB_ADD_SERVER_CTA: string; HUB_ADD_STUDENT_SERVER_CTA: string; HUB_CHAT_INPUT_BACK: string; HUB_CHOOSE_GUILD_ADDED_EMPTY: string; HUB_CHOOSE_GUILD_ADDED_TAB: string; HUB_CHOOSE_GUILD_CHOOSE_TAB: string; HUB_CHOOSE_GUILD_EMPTY: string; HUB_CHOOSE_GUILD_SUBTITLE: string; HUB_CHOOSE_GUILD_TITLE: FM<"guildName", false>; HUB_CREATE_DESCRIPTION: string; HUB_CREATE_GUILD_CTA: string; HUB_CREATE_GUILD_LABEL: string; HUB_CREATE_OR_ADD_GUILD_SUBTITLE: string; HUB_CREATE_OR_ADD_GUILD_TITLE: FM<"guildName", false>; HUB_CREATE_SERVER_CONFIRMATION_GO: string; HUB_CREATE_SERVER_CONFIRMATION_STAY: string; HUB_CREATE_SERVER_CONFIRMATION_SUBTITLE: FM<"guildName", false>; HUB_CREATE_TITLE: string; HUB_CUSTOMIZE_EXISTING_GUILD_TITLE: FM<"guildName", false>; HUB_CUSTOMIZE_GUILD_SUBTITLE: string; HUB_CUSTOMIZE_GUILD_TITLE: string; HUB_CUSTOMIZE_NEW_GUILD_SUBTITLE: string; HUB_DIRECTORY_CARD_JOINED_GUILD_BUTTON: string; HUB_DIRECTORY_CHANNEL_EMPTY_ADD_SERVER: string; HUB_DIRECTORY_CHANNEL_EMPTY_INVITE: string; HUB_DIRECTORY_CHANNEL_EMPTY_SUBTITLE: string; HUB_DIRECTORY_CHANNEL_EMPTY_TITLE: FM<"guildName", false>; HUB_DIRECTORY_CHANNEL_TITLE: FM<"guildName", false>; HUB_DIRECTORY_SEARCH_SUBTITLE: string; HUB_DIRECTORY_SEARCH_TITLE: string; HUB_DISCORD_HUB: string; HUB_DISCORD_HUBS: string; HUB_DISCOVERY_FOOTER_DESCRIPTION: string; HUB_EDIT_PROFILE: string; HUB_EMAIL_CONFIRMATION_DIFFERENT_EMAIL: string; HUB_EMAIL_CONNECTION_ADD_DESCRIPTION: string; HUB_EMAIL_CONNECTION_ADD_HEADER: string; HUB_EMAIL_CONNECTION_CANCEL: string; HUB_EMAIL_CONNECTION_CONTENT_BUTTON: string; HUB_EMAIL_CONNECTION_CONTENT_CANCEL_BUTTON: string; HUB_EMAIL_CONNECTION_CONTENT_DESCRIPTION: string; HUB_EMAIL_CONNECTION_CONTENT_HEADER: string; HUB_EMAIL_CONNECTION_CONTENT_INPUT_DESCRIPTION: string; HUB_EMAIL_CONNECTION_CONTENT_INPUT_HEADER: string; HUB_EMAIL_CONNECTION_CONTENT_INPUT_HEADER_MOBILE: string; HUB_EMAIL_CONNECTION_CONTENT_INPUT_PLACEHOLDER: string; HUB_EMAIL_CONNECTION_CONTENT_TOS_AND_PP: FM<"privacyURL" | "termsURL", true>; HUB_EMAIL_CONNECTION_GUILD_SELECT_HEADER: string; HUB_EMAIL_CONNECTION_GUILD_SELECT_MISSING_SCHOOL: string; HUB_EMAIL_CONNECTION_GUILD_SELECT_NO_RESULTS_HEADER: string; HUB_EMAIL_CONNECTION_GUILD_SELECT_NO_RESULTS_SUBHEADER: FM; HUB_EMAIL_CONNECTION_GUILD_SELECT_SUBHEADER: FM; HUB_EMAIL_CONNECTION_INVITE_HEADER: FM<"count" | "guildName", false>; HUB_EMAIL_CONNECTION_JOIN_ANOTHER: string; HUB_EMAIL_CONNECTION_JOIN_CARD_DESCRIPTION: string; HUB_EMAIL_CONNECTION_JOIN_DESCRIPTION: string; HUB_EMAIL_CONNECTION_JOIN_HEADER: string; HUB_EMAIL_CONNECTION_JOIN_MY_SCHOOOL: string; HUB_EMAIL_CONNECTION_NUX_CONTENT_DESCRIPTION: string; HUB_EMAIL_CONNECTION_NUX_HEADER: string; HUB_EMAIL_CONNECTION_SCHOOL_SUBMIT_DESCRIPTION: string; HUB_EMAIL_CONNECTION_SCHOOL_SUBMIT_HEADER: string; HUB_EMAIL_CONNECTION_SCHOOL_SUBMIT_INPUT_HEADER: string; HUB_EMAIL_CONNECTION_SCHOOL_SUBMIT_INPUT_PLACEHOLDER: string; HUB_EMAIL_CONNECTION_SIDEBAR_DESCRIPTION: FM; HUB_EMAIL_CONNECTION_SIDEBAR_HEADER: string; HUB_EMAIL_CONNECTION_SIDEBAR_LEARN_MORE_HEADER: string; HUB_ENTER_PIN: string; HUB_ENTRY_REMOVE: string; HUB_ENTRY_REMOVE_BODY: FM<"guildName", false>; HUB_ENTRY_UPDATE: string; HUB_ENTRY_UPDATE_DESCRIPTION_TITLE: FM<"guildName", false>; HUB_EVENTS_FOOTER_BUTTON_TEXT: string; HUB_EVENTS_FOOTER_DESCRIPTION: string; HUB_EVENTS_FOOTER_TITLE: string; HUB_EVENTS_GO_TO_GUILD: string; HUB_EVENTS_HEADER_DESCRIPTION: string; HUB_EVENTS_HEADER_TITLE: string; HUB_EVENTS_JOIN_GUILD: FM<"guildName", false>; HUB_EVENTS_SHARE_CHANNEL_EVERYONE_VIEWABLE_WARNING: string; HUB_EVENTS_SHARE_DESCRIPTION: string; HUB_EVENTS_SHARE_TITLE: string; HUB_EXTRA_DESCRIPTION: string; HUB_INVITE_ANOTHER_SCHOOL_LINK: FM; HUB_INVITE_BUTTON_TITLE_INVITED: string; HUB_INVITE_BUTTON_TITLE_INVITER: string; HUB_INVITE_HEADER: string; HUB_INVITE_SUBHEADER: string; HUB_LINK_CHANNEL_NOTICE_BODY: string; HUB_ONBOARDING_STUDENT_PROMPT_HEADER: string; HUB_ONBOARDING_STUDENT_PROMPT_NO_LABEL: string; HUB_ONBOARDING_STUDENT_PROMPT_YES_LABEL: string; HUB_ONBOARDING_STUDENT_PROMPT_YES_SUBLABEL: string; HUB_ONBOARDING_VALUE_PROP_HEADER: string; HUB_ONBOARDING_VALUE_PROP_SUBHEADER: string; HUB_ONBOARDING_VALUE_PROP_TITLE_1: string; HUB_ONBOARDING_VALUE_PROP_TITLE_2: string; HUB_ONBOARDING_VALUE_PROP_TITLE_3: string; HUB_PIN_DESCRIPTION: FM<"email", true>; HUB_PRIVACY_SETTINGS: string; HUB_PRIVACY_SETTINGS_TOOLTIP: string; HUB_PRIVACY_SETTINGS_TOOLTIP_MOBILE: string; HUB_PROGRESS_INVITE_USER: string; HUB_PROGRESS_JOIN_GUILD: string; HUB_PROGRESS_STEP_SUBTITLE: FM<"number" | "total", false>; HUB_PROGRESS_SYNC_CONTACTS: string; HUB_PROGRESS_TITLE: string; HUB_PROGRESS_TITLE_FINISHED: string; HUB_REAL_NAME_CTA: string; HUB_REAL_NAME_MODAL_FORM_PLACEHOLDER: string; HUB_REAL_NAME_MODAL_FORM_TITLE: string; HUB_REAL_NAME_MODAL_HEADER: FM<"guildName", false>; HUB_REAL_NAME_MODAL_SUBHEADER: string; HUB_RESEND: string; HUB_RESEND_ERROR: string; HUB_SCHOOL_HUBS: string; HUB_SIDEBAR_ADD_SERVERS: string; HUB_SIDEBAR_INVITE_MEMBERS: string; HUB_SIDEBAR_JOIN_SERVERS: string; HUB_STUDY_ROOM_NOTICE_CTA: string; HUB_STUDY_ROOM_NOTICE_DESCRIPTION: string; HUB_STUDY_ROOM_NOTICE_TITLE: string; HUB_STUDY_ROOM_NOTICE_VOICE_CTA: string; HUB_STUDY_ROOM_SUPPRESS_DESCRIPTION: string; HUB_STUDY_ROOM_SUPPRESS_TITLE: string; HUB_STUDY_ROOM_VOICE_CHANNEL_TOOLTIP: string; HUB_UNAVAILABLE_SCHOOL: string; HUB_VERIFIED_DISCORD_HUB: string; HUB_VERIFY_EMAIL_ADDRESS: string; HUB_WAITLIST_MODAL_FORM_DESCRIPTION: string; HUB_WAITLIST_MODAL_FORM_PLACEHOLDER: string; HUB_WAITLIST_MODAL_FORM_TITLE: string; HUB_WAITLIST_MODAL_JOIN_HEADER: string; HUB_WAITLIST_MODAL_JOIN_SUBHEADER: string; HUB_WAITLIST_MODAL_JOINED_DESCRIPTION: FM<"school", false>; HUB_WAITLIST_MODAL_JOINED_HEADER: string; HUF_NAME: string; HUMANIZE_DURATION_A_FEW_SECONDS: string; HUMANIZE_DURATION_DAYS: FM<"time", false>; HUMANIZE_DURATION_HOURS: FM<"time", false>; HUMANIZE_DURATION_MINUTES: FM<"time", false>; HUMANIZE_DURATION_SECONDS: FM<"time", false>; HYPESQUAD_DESCRIPTION_HOUSE_1: string; HYPESQUAD_DESCRIPTION_HOUSE_2: string; HYPESQUAD_DESCRIPTION_HOUSE_3: string; HYPESQUAD_ERROR_BODY: FM<"emailAddress" | "emailAddressLink", true>; HYPESQUAD_ERROR_HEADING: string; HYPESQUAD_HEADING: string; HYPESQUAD_HEADING_EXISTING_MEMBER: string; HYPESQUAD_HOUSE_1: string; HYPESQUAD_HOUSE_2: string; HYPESQUAD_HOUSE_3: string; HYPESQUAD_JOIN: string; HYPESQUAD_LEAVE_ACTION: string; HYPESQUAD_LEAVE_ERROR: string; HYPESQUAD_LEAVE_PROMPT: string; HYPESQUAD_MEMBERSHIP_HEADING: FM<"houseName", false>; HYPESQUAD_NEWSLETTER_WARNING: string; HYPESQUAD_PERK_DESCRIPTION_NEWSLETTER: string; HYPESQUAD_PERK_DESCRIPTION_PROFILE_BADGE: string; HYPESQUAD_PERK_DESCRIPTION_SQUAD_CHALLENGES: string; HYPESQUAD_PERK_TITLE_NEWSLETTER: string; HYPESQUAD_PERK_TITLE_PROFILE_BADGE: string; HYPESQUAD_PERK_TITLE_SQUAD_CHALLENGES: string; HYPESQUAD_PERKS_HEADING: string; HYPESQUAD_QUESTION_0_PROMPT: string; HYPESQUAD_QUESTION_0_RESPONSE_A: string; HYPESQUAD_QUESTION_0_RESPONSE_B: string; HYPESQUAD_QUESTION_0_RESPONSE_C: string; HYPESQUAD_QUESTION_0_RESPONSE_D: string; HYPESQUAD_QUESTION_10_PROMPT: string; HYPESQUAD_QUESTION_10_RESPONSE_A: string; HYPESQUAD_QUESTION_10_RESPONSE_B: string; HYPESQUAD_QUESTION_10_RESPONSE_C: string; HYPESQUAD_QUESTION_10_RESPONSE_D: string; HYPESQUAD_QUESTION_11_PROMPT: string; HYPESQUAD_QUESTION_11_RESPONSE_A: string; HYPESQUAD_QUESTION_11_RESPONSE_B: string; HYPESQUAD_QUESTION_11_RESPONSE_C: string; HYPESQUAD_QUESTION_11_RESPONSE_D: string; HYPESQUAD_QUESTION_12_PROMPT: string; HYPESQUAD_QUESTION_12_RESPONSE_A: string; HYPESQUAD_QUESTION_12_RESPONSE_B: string; HYPESQUAD_QUESTION_12_RESPONSE_C: string; HYPESQUAD_QUESTION_12_RESPONSE_D: string; HYPESQUAD_QUESTION_13_PROMPT: string; HYPESQUAD_QUESTION_13_RESPONSE_A: string; HYPESQUAD_QUESTION_13_RESPONSE_B: string; HYPESQUAD_QUESTION_13_RESPONSE_C: string; HYPESQUAD_QUESTION_13_RESPONSE_D: string; HYPESQUAD_QUESTION_14_PROMPT: string; HYPESQUAD_QUESTION_14_RESPONSE_A: string; HYPESQUAD_QUESTION_14_RESPONSE_B: string; HYPESQUAD_QUESTION_14_RESPONSE_C: string; HYPESQUAD_QUESTION_14_RESPONSE_D: string; HYPESQUAD_QUESTION_1_PROMPT: string; HYPESQUAD_QUESTION_1_RESPONSE_A: string; HYPESQUAD_QUESTION_1_RESPONSE_B: string; HYPESQUAD_QUESTION_1_RESPONSE_C: string; HYPESQUAD_QUESTION_1_RESPONSE_D: string; HYPESQUAD_QUESTION_2_PROMPT: string; HYPESQUAD_QUESTION_2_RESPONSE_A: string; HYPESQUAD_QUESTION_2_RESPONSE_B: string; HYPESQUAD_QUESTION_2_RESPONSE_C: string; HYPESQUAD_QUESTION_2_RESPONSE_D: string; HYPESQUAD_QUESTION_3_PROMPT: string; HYPESQUAD_QUESTION_3_RESPONSE_A: string; HYPESQUAD_QUESTION_3_RESPONSE_B: string; HYPESQUAD_QUESTION_3_RESPONSE_C: string; HYPESQUAD_QUESTION_3_RESPONSE_D: string; HYPESQUAD_QUESTION_4_PROMPT: string; HYPESQUAD_QUESTION_4_RESPONSE_A: string; HYPESQUAD_QUESTION_4_RESPONSE_B: string; HYPESQUAD_QUESTION_4_RESPONSE_C: string; HYPESQUAD_QUESTION_4_RESPONSE_D: string; HYPESQUAD_QUESTION_5_PROMPT: string; HYPESQUAD_QUESTION_5_RESPONSE_A: string; HYPESQUAD_QUESTION_5_RESPONSE_B: string; HYPESQUAD_QUESTION_5_RESPONSE_C: string; HYPESQUAD_QUESTION_5_RESPONSE_D: string; HYPESQUAD_QUESTION_6_PROMPT: string; HYPESQUAD_QUESTION_6_RESPONSE_A: string; HYPESQUAD_QUESTION_6_RESPONSE_B: string; HYPESQUAD_QUESTION_6_RESPONSE_C: string; HYPESQUAD_QUESTION_6_RESPONSE_D: string; HYPESQUAD_QUESTION_7_PROMPT: string; HYPESQUAD_QUESTION_7_RESPONSE_A: string; HYPESQUAD_QUESTION_7_RESPONSE_B: string; HYPESQUAD_QUESTION_7_RESPONSE_C: string; HYPESQUAD_QUESTION_7_RESPONSE_D: string; HYPESQUAD_QUESTION_8_PROMPT: string; HYPESQUAD_QUESTION_8_RESPONSE_A: string; HYPESQUAD_QUESTION_8_RESPONSE_B: string; HYPESQUAD_QUESTION_8_RESPONSE_C: string; HYPESQUAD_QUESTION_8_RESPONSE_D: string; HYPESQUAD_QUESTION_9_PROMPT: string; HYPESQUAD_QUESTION_9_RESPONSE_A: string; HYPESQUAD_QUESTION_9_RESPONSE_B: string; HYPESQUAD_QUESTION_9_RESPONSE_C: string; HYPESQUAD_QUESTION_9_RESPONSE_D: string; HYPESQUAD_QUIZ_BODY_HOUSE_1: string; HYPESQUAD_QUIZ_BODY_HOUSE_2: string; HYPESQUAD_QUIZ_BODY_HOUSE_3: string; HYPESQUAD_QUIZ_CANCEL: string; HYPESQUAD_QUIZ_CLOSE: string; HYPESQUAD_QUIZ_COMPLETED_MODAL_TITLE: string; HYPESQUAD_QUIZ_ERROR_MODAL_TITLE: string; HYPESQUAD_QUIZ_NEXT_QUESTION: string; HYPESQUAD_QUIZ_ONGOING_MODAL_TITLE: FM<"currentQuestion" | "questionCount", false>; HYPESQUAD_QUIZ_RETRY: string; HYPESQUAD_QUIZ_SELECT_ANSWER: string; HYPESQUAD_QUIZ_SHOW_MY_HOUSE: string; HYPESQUAD_QUIZ_TITLE: FM<"house", false>; HYPESQUAD_READY_TO_REP: string; HYPESQUAD_SUBHEADING: string; HYPESQUAD_SWITCH_HOUSES_ACTION: string; HYPESQUAD_SWITCH_HOUSES_PROMPT: string; HYPESQUAD_UNCLAIMED_ACCOUNT_NOTICE: string; HYPESQUAD_UNVERIFIED_EMAIL_NOTICE: string; HYPESQUAD_YOUR_HOUSE: string; I18N_LOCALE_LOADING_ERROR: FM<"locale", false>; IAP_RESUBSCRIBE_BUTTON: string; IAR_FEEDBACK_PROBLEM_CONFUSING_LANGUAGE: string; IAR_FEEDBACK_PROBLEM_COULD_NOT_FIND: string; IAR_FEEDBACK_PROMPT: string; IAR_FEEDBACK_TITLE: string; IAR_UPSELLS_APPLIED_BUTTON: string; IAR_UPSELLS_APPLY_BUTTON: string; IAR_UPSELLS_BLOCK_BUTTON: string; IAR_UPSELLS_BLOCK_DESCRIPTION: string; IAR_UPSELLS_BLOCK_TITLE: FM<"username", false>; IAR_UPSELLS_BLOCKED_BUTTON: string; IAR_UPSELLS_DELETE_MESSAGE_BUTTON: string; IAR_UPSELLS_DELETE_MESSAGE_DESCRIPTION: string; IAR_UPSELLS_DELETE_MESSAGE_TITLE: string; IAR_UPSELLS_DELETED_MESSAGE_BUTTON: string; IAR_UPSELLS_DM_SPAM_FILTER_DESCRIPTION: string; IAR_UPSELLS_DM_SPAM_FILTER_TITLE: string; IAR_UPSELLS_GO_TO_SAFETY_SETTINGS: string; IAR_UPSELLS_LANGUAGE_FILTER_DESCRIPTION: string; IAR_UPSELLS_LANGUAGE_FILTER_TITLE: string; IAR_UPSELLS_LEAVE_SERVER_BUTTON: string; IAR_UPSELLS_LEAVE_SERVER_DESCRIPTION: FM<"guildName", false>; IAR_UPSELLS_LEAVE_SERVER_TITLE: string; IAR_UPSELLS_LEFT_SERVER_BUTTON: string; IAR_UPSELLS_MUTE_BUTTON: string; IAR_UPSELLS_MUTE_DESCRIPTION: string; IAR_UPSELLS_MUTE_TITLE: FM<"username", false>; IAR_UPSELLS_MUTED_BUTTON: string; IAR_UPSELLS_SECTION_TITLE: string; IAR_UPSELLS_SENSITIVE_MEDIA_DESCRIPTION: string; IAR_UPSELLS_SENSITIVE_MEDIA_TITLE: string; IDR_NAME: string; IGNORE_FRIEND_REQUEST: string; IMAGE: string; IMAGE_ACTIONS_MENU_LABEL: string; IMAGE_ALT: string; IMAGE_COMPRESSION: string; IMAGE_COMPRESSION_LABEL: string; IMAGE_COMPRESSION_NITRO_UPSELL: FM<"nitroLink", true>; IMAGE_DESCRIPTION: string; IMAGE_DESCRIPTION_HELP: string; IMAGES: string; IMG_ALT_ATTACHMENT_FILE_TYPE: FM<"fileType", false>; IMG_ALT_EMOJI: FM<"name", false>; IMG_ALT_ICON: FM<"name", false>; IMG_ALT_LOGO: FM<"name", false>; IN_APP_EDUCATION_CHANNEL_HEADER: string; IN_APP_EDUCATION_CHANNEL_SUBHEADER: string; IN_APP_EDUCATION_DM_HEADER: string; IN_APP_EDUCATION_DM_SUBHEADER: string; IN_APP_EDUCATION_MORE_HELP_HEADER: string; IN_APP_EDUCATION_MORE_HELP_SUBHEADER: FM<"helpCenterUrl", true>; IN_APP_EDUCATION_SERVER_HEADER: string; IN_APP_EDUCATION_SERVER_SUBHEADER: string; IN_APP_REPORTING_SUBMIT_VALIDATION_ERROR: string; IN_CATEGORY: FM<"categoryName", false>; IN_CHANNEL: FM<"channelName", false>; IN_GAME_VOICE_SETTINGS: string; IN_THE_VOICE_CHANNEL: string; INACCESSIBLE_CHANNEL_LINK_SUBTITLE: string; INACCESSIBLE_CHANNEL_LINK_TITLE: string; INACCESSIBLE_USER_LINK_SUBTITLE: string; INAPPROPRIATE_CONVERSATION_ACTION_CONTACT_CTL: string; INAPPROPRIATE_CONVERSATION_ACTION_REPORT: string; INAPPROPRIATE_CONVERSATION_ACTION_REPORTED: string; INAPPROPRIATE_CONVERSATION_BANNER_BLOCK_BUTTON: string; INAPPROPRIATE_CONVERSATION_BANNER_DESCRIPTION: string; INAPPROPRIATE_CONVERSATION_BANNER_HEADER: string; INAPPROPRIATE_CONVERSATION_BANNER_OPEN_SAFETY_TOOLS_BUTTON: string; INAPPROPRIATE_CONVERSATION_BLOCK_MODAL_BLOCK_AND_REPORT_BUTTON: string; INAPPROPRIATE_CONVERSATION_BLOCK_MODAL_BLOCK_BUTTON: string; INAPPROPRIATE_CONVERSATION_BLOCK_MODAL_CANCEL_BUTTON: string; INAPPROPRIATE_CONVERSATION_BLOCK_MODAL_DESCRIPTION: string; INAPPROPRIATE_CONVERSATION_BLOCK_THEM: string; INAPPROPRIATE_CONVERSATION_BLOCK_TOAST: string; INAPPROPRIATE_CONVERSATION_ERROR_GENERIC_TOAST: string; INAPPROPRIATE_CONVERSATION_INITIAL_TOOLTIP: string; INAPPROPRIATE_CONVERSATION_INITIAL_TOOLTIP_ANNOUNCEMENT: string; INAPPROPRIATE_CONVERSATION_READ_SAFETY_TIPS: string; INAPPROPRIATE_CONVERSATION_REPORT_TOAST: string; INAPPROPRIATE_CONVERSATION_SAFETY_TIPS_ALT: string; INAPPROPRIATE_CONVERSATION_SAFETY_TIPS_HEADER: string; INAPPROPRIATE_CONVERSATION_SAFETY_TOOLTIP: string; INAPPROPRIATE_CONVERSATION_SAFETY_TOOLTIP_ANNOUNCEMENT: string; INAPPROPRIATE_CONVERSATION_TAKE_ACTION: string; INAPPROPRIATE_CONVERSATION_TAKE_ACTION_DESCRIPTION: string; INAPPROPRIATE_CONVERSATION_TAKE_ACTION_HEADER: string; INAPPROPRIATE_CONVERSATION_TAKEOVER_DESCRIPTION: FM<"username", false>; INAPPROPRIATE_CONVERSATION_TAKEOVER_HEADER: string; INAPPROPRIATE_CONVERSATION_UNBLOCK: string; INAPPROPRIATE_CONVERSATION_UNBLOCK_TOAST: string; INAPPROPRIATE_CONVERSATION_VIBING_WUMPUS_ALT: string; INAPPROPRIATE_CONVERSATION_VIBING_WUMPUS_DESCRIPTION: string; INAPPROPRIATE_CONVERSATION_VIBING_WUMPUS_HEADER: string; INAPPROPRIATE_CONVERSATION_VIBING_WUMPUS_RETURN: string; INAPPROPRIATE_CONVERSATION_WUMPUS_EXCLAMATION_ALT: string; INAPPROPRIATE_CONVERSATION_WUMPUS_LIGHTBULB_ALT: string; INBOX: string; INCLUDE_STICKER_RESULTS_IN_AUTOCOMPLETE: string; INCLUDED: string; INCOMING_CALL: string; INCOMING_CALL_ELLIPSIS: string; INCOMING_CALL_PREVIEW_CAMERA: string; INCOMING_CALLS: string; INCOMING_FRIEND_REQUEST: string; INCOMING_FRIEND_REQUEST_ACCEPTED_SUBLABEL: string; INCOMING_FRIEND_REQUEST_ACCEPTED_SUBLABEL_A11Y: FM<"name", false>; INCOMING_FRIEND_REQUEST_FROM: FM<"name", false>; INCOMING_FRIEND_REQUESTS: string; INCOMING_FRIEND_REQUESTS_COUNT: FM<"count", false>; INCOMING_VIDEO_CALL: string; INCOMING_VIDEO_CALL_ELLIPSIS: string; INCOMPATIBLE_BROWSER: FM<"supportedBrowserURL", true>; INDICATE_RSVP: string; INIVTE_MODAL_NO_THANKS: string; INLINE_ATTACHMENT_MEDIA: string; INLINE_ATTACHMENT_MEDIA_HELP: FM<"maxSize", false>; INLINE_EMBED_MEDIA: string; INLINE_MEDIA_LABEL: string; INPUT_DEVICE: string; INPUT_MODE_PTT: string; INPUT_MODE_PTT_LIMITED: string; INPUT_MODE_PTT_RELEASE_DELAY: string; INPUT_MODE_VAD: string; INPUT_SEARCH_TERM_MICROPHONE: string; INSTAGRAM: string; INSTALL_LOCATION_MAIN: string; INSTANT_INVITE: string; INSTANT_INVITE_ACCEPT: string; INSTANT_INVITE_ACCEPT_STAGE: string; INSTANT_INVITE_ACCEPTING: string; INSTANT_INVITE_ASK_FOR_NEW_INVITE: string; INSTANT_INVITE_ASK_USER_FOR_NEW_INVITE: FM<"username", false>; INSTANT_INVITE_BANNED: string; INSTANT_INVITE_BANNED_INFO: string; INSTANT_INVITE_DIRECT_FRIEND_DESCRIPTION: FM<"username", true>; INSTANT_INVITE_DIRECT_FRIEND_DESCRIPTION_REGISTER: FM<"username", true>; INSTANT_INVITE_DISABLED_ALERT_SUBTITLE: string; INSTANT_INVITE_DISABLED_ALERT_TITLE: string; INSTANT_INVITE_DOWNLOAD_THE_ANDROID_APP: string; INSTANT_INVITE_DOWNLOAD_THE_APP: string; INSTANT_INVITE_DOWNLOAD_THE_IOS_APP: string; INSTANT_INVITE_EXPIRED: string; INSTANT_INVITE_EXPIRES: string; INSTANT_INVITE_FAILED_TO_GENERATE: string; INSTANT_INVITE_FRIENDS: string; INSTANT_INVITE_FRIENDS_COUNT: FM<"count", true>; INSTANT_INVITE_GUILD_BY_USER: FM<["guild" | "username", "guildNameHook"], true>; INSTANT_INVITE_GUILD_MEMBERS_ONLINE: FM<"membersOnline", false>; INSTANT_INVITE_GUILD_MEMBERS_RATIO: FM<"offline" | "online", false>; INSTANT_INVITE_GUILD_MEMBERS_TOTAL: FM<"count", false>; INSTANT_INVITE_HIDDEN: string; INSTANT_INVITE_INVALID_CHANNEL: string; INSTANT_INVITE_INVITE_CODE: string; INSTANT_INVITE_INVITER: string; INSTANT_INVITE_NOT_ALLOWED: string; INSTANT_INVITE_PRE_REGISTRATION_SUBTITLE: FM<"guildName", true>; INSTANT_INVITE_REDIRECTING: string; INSTANT_INVITE_REGISTER_SUCCESS: FM<"guildName", true>; INSTANT_INVITE_RESOLVED_TITLE: string; INSTANT_INVITE_RESOLVING: string; INSTANT_INVITE_SEE_MESSAGES: string; INSTANT_INVITE_USES: string; INSTANT_INVITE_YOU_ARE_ALREADY_A_MEMBER_OF: string; INSTANT_INVITE_YOU_HAVE_BEEN_INVITED_TO_CHAT: FM<"username", false>; INSTANT_INVITE_YOU_HAVE_BEEN_INVITED_TO_CHAT_WITH: string; INSTANT_INVITE_YOU_HAVE_BEEN_INVITED_TO_JOIN: string; INSTANT_INVITE_YOU_HAVE_BEEN_INVITED_TO_JOIN_BY_USER: FM<"username", true>; INSTANT_INVITE_YOU_HAVE_BEEN_INVITED_TO_JOIN_GROUP_DM: string; INSTANT_INVITE_YOU_HAVE_JOINED: string; INSTANT_INVITES: string; INTEGRATION_ADDED_DATE: FM<"timestamp", false>; INTEGRATION_ADDED_USER: FM<"user", false>; INTEGRATION_ADDED_USER_DATE: FM<"timestamp" | "user", false>; INTEGRATION_CREATED_DATE: FM<"timestamp", false>; INTEGRATION_CREATED_USER_DATE: FM<"timestamp" | "user", false>; INTEGRATION_SETTINGS: string; INTEGRATIONS: string; INTEGRATIONS_ACCOUNT_DESCRIPTION: FM<"accountUrl" | "accountUrlText" | "serviceName", true>; INTEGRATIONS_APPLICATION_ALL_CHANNELS: string; INTEGRATIONS_APPLICATION_APPLICATION_WEBHOOK_PERMISSIONS: string; INTEGRATIONS_APPLICATION_BOT: string; INTEGRATIONS_APPLICATION_BOT_NAME: FM<"user", false>; INTEGRATIONS_APPLICATION_BUTTON: string; INTEGRATIONS_APPLICATION_COMMAND_CHANNEL_ADD_BUTTON: string; INTEGRATIONS_APPLICATION_COMMAND_CHANNEL_SEARCH_PLACEHOLDER: string; INTEGRATIONS_APPLICATION_COMMAND_DEFAULT_MEMBER_PERMISSIONS_MODAL_ARIA_LABEL: string; INTEGRATIONS_APPLICATION_COMMAND_DEFAULT_MEMBER_PERMISSIONS_MODAL_HEADER: string; INTEGRATIONS_APPLICATION_COMMAND_DEFAULT_MEMBER_PERMISSIONS_SECTION_DESCRIPTION: FM; INTEGRATIONS_APPLICATION_COMMAND_DEFAULT_MEMBER_PERMISSIONS_SECTION_HEADER: string; INTEGRATIONS_APPLICATION_COMMAND_OVERRIDE_SECTION_CHANNEL_HEADER: string; INTEGRATIONS_APPLICATION_COMMAND_OVERRIDE_SECTION_CHANNEL_NO_ENTRIES: string; INTEGRATIONS_APPLICATION_COMMAND_OVERRIDE_SECTION_ROLE_MEMBER_HEADER: string; INTEGRATIONS_APPLICATION_COMMAND_OVERRIDE_SECTION_ROLE_MEMBER_NO_ENTRIES: string; INTEGRATIONS_APPLICATION_COMMAND_PERMISSIONS: string; INTEGRATIONS_APPLICATION_COMMAND_PERMISSIONS_DESCRIPTION: string; INTEGRATIONS_APPLICATION_COMMAND_PERMISSIONS_MODIFY: string; INTEGRATIONS_APPLICATION_COMMAND_ROLE_MEMBER_ADD: string; INTEGRATIONS_APPLICATION_COMMAND_ROLE_MEMBER_ADD_BUTTON: string; INTEGRATIONS_APPLICATION_COMMAND_ROLE_MEMBER_SEARCH_PLACEHOLDER: string; INTEGRATIONS_APPLICATION_COMMAND_STATUS_HAS_OVERRIDES: string; INTEGRATIONS_APPLICATION_DENIED_PERMISSIONS: string; INTEGRATIONS_APPLICATION_GRANTED_PERMISSIONS: string; INTEGRATIONS_APPLICATION_NO_BOT: string; INTEGRATIONS_APPLICATION_NO_COMMANDS: string; INTEGRATIONS_APPLICATION_NO_WEBHOOKS: string; INTEGRATIONS_APPLICATION_PERMISSION_ENTRY_REMOVE_ARIA_LABEL: string; INTEGRATIONS_APPLICATION_PERMISSIONS_LOCKED_APPLICATION: string; INTEGRATIONS_APPLICATION_PERMISSIONS_LOCKED_COMMAND: string; INTEGRATIONS_APPLICATION_PERMISSIONS_LOCKED_ROLE: string; INTEGRATIONS_APPLICATION_PERMISSIONS_LOCKED_USER_OTHER: string; INTEGRATIONS_APPLICATION_PERMISSIONS_LOCKED_USER_SELF: string; INTEGRATIONS_APPLICATION_PERMISSIONS_MAX: string; INTEGRATIONS_APPLICATION_PERMISSIONS_NOTICE_TEXT: FM<"removeCount", false>; INTEGRATIONS_APPLICATION_PERMISSIONS_SELF_DENY_MODAL_MESSAGE_DENY_ROLE: FM<"name", true>; INTEGRATIONS_APPLICATION_PERMISSIONS_SELF_DENY_MODAL_MESSAGE_REMOVE_ROLE: FM<"name", true>; INTEGRATIONS_APPLICATION_PERMISSIONS_SELF_DENY_MODAL_MESSAGE_REMOVE_SELF: FM; INTEGRATIONS_APPLICATION_REMOVE: string; INTEGRATIONS_APPLICATION_REMOVE_BODY: FM<"applicationName", true>; INTEGRATIONS_APPLICATION_REMOVE_ERROR: string; INTEGRATIONS_APPLICATION_REMOVE_ERROR_TITLE: string; INTEGRATIONS_APPLICATION_REMOVE_NO_PERMISSIONS: string; INTEGRATIONS_APPLICATION_REMOVE_SUMMARY: string; INTEGRATIONS_APPLICATION_REMOVE_TITLE: FM<"applicationName", false>; INTEGRATIONS_APPLICATION_SECTION: string; INTEGRATIONS_APPLICATION_SUBSCRIPTION_TIERS: string; INTEGRATIONS_APPLICATION_VERIFIED_BOT: string; INTEGRATIONS_APPLICATION_WEBHOOKS: string; INTEGRATIONS_CHANNEL_FOLLOWING: string; INTEGRATIONS_CHANNEL_FOLLOWING_BUTTON: string; INTEGRATIONS_CHANNEL_FOLLOWING_DESCRIPTION: FM<"helpdeskArticle", true>; INTEGRATIONS_CHANNEL_FOLLOWING_EMPTY: string; INTEGRATIONS_CHANNEL_FOLLOWING_EMPTY_BUTTON: string; INTEGRATIONS_CHANNEL_FOLLOWING_SECTION: FM<[never, "channelHook"], true>; INTEGRATIONS_CHANNEL_FOLLOWING_SUMMARY: FM<"count", false>; INTEGRATIONS_DISABLE: string; INTEGRATIONS_ENABLE: string; INTEGRATIONS_FOLLOWED_CHANNEL_DELETE: string; INTEGRATIONS_FOLLOWED_CHANNEL_DELETE_BODY: string; INTEGRATIONS_FOLLOWED_CHANNEL_DELETE_TITLE: FM<"name", false>; INTEGRATIONS_FOLLOWED_CHANNEL_DEST_CHANNEL: string; INTEGRATIONS_FOLLOWED_CHANNEL_ERROR_DELETING: string; INTEGRATIONS_FOLLOWED_CHANNEL_GUILD_SOURCE: FM<[never, "guildHook"], true>; INTEGRATIONS_FOLLOWED_CHANNEL_NAME: string; INTEGRATIONS_LAST_SYNC: FM<"datetime", false>; INTEGRATIONS_OVERVIEW: string; INTEGRATIONS_OVERVIEW_DESCRIPTION_CHANNEL: FM<"helpdeskArticle", true>; INTEGRATIONS_OVERVIEW_DESCRIPTION_GUILD: FM<"helpdeskArticle", true>; INTEGRATIONS_OVERVIEW_NO_APPLICATIONS: string; INTEGRATIONS_OVERVIEW_NO_APPLICATIONS_APP_DIRECTORY_CTA: FM; INTEGRATIONS_SEARCH: string; INTEGRATIONS_SEARCH_NO_MATCH: string; INTEGRATIONS_TWITCH: string; INTEGRATIONS_TWITCH_BUTTON: string; INTEGRATIONS_TWITCH_DESCRIPTION: string; INTEGRATIONS_TWITCH_EMPTY_BUTTON: string; INTEGRATIONS_TWITCH_EMPTY_SUMMARY: string; INTEGRATIONS_TWITCH_HELP: FM<"helpdeskArticle", true>; INTEGRATIONS_TWITCH_SUMMARY: FM<"count", false>; INTEGRATIONS_WEBHOOK_COPIED_URL: string; INTEGRATIONS_WEBHOOK_COPY_URL: string; INTEGRATIONS_WEBHOOK_DELETE: string; INTEGRATIONS_WEBHOOKS: string; INTEGRATIONS_WEBHOOKS_BUTTON: string; INTEGRATIONS_WEBHOOKS_CREATE: string; INTEGRATIONS_WEBHOOKS_DESCRIPTION: FM<"developersArticle" | "helpdeskArticle", true>; INTEGRATIONS_WEBHOOKS_EMPTY: string; INTEGRATIONS_WEBHOOKS_EMPTY_BUTTON: string; INTEGRATIONS_WEBHOOKS_SUMMARY: FM<"count", false>; INTEGRATIONS_YOUTUBE: string; INTEGRATIONS_YOUTUBE_BUTTON: string; INTEGRATIONS_YOUTUBE_DESCRIPTION: string; INTEGRATIONS_YOUTUBE_EMPTY_BUTTON: string; INTEGRATIONS_YOUTUBE_EMPTY_SUMMARY: string; INTEGRATIONS_YOUTUBE_HELP: FM<"helpdeskArticle", true>; INTEGRATIONS_YOUTUBE_SUMMARY: FM<"count", false>; INTERACTION_FORM_SUBMISSION_APPLICATION: FM<"applicationName", true>; INTERACTION_FORM_SUBMISSION_FAILED: string; INTERACTION_PREMIUM_BUTTON_CTA: FM<"price" | "skuName", false>; INTERACTION_PREMIUM_BUTTON_UNAVAILABLE: string; INTERACTION_PREMIUM_UNAVAILABLE_ALERT_BODY: string; INTERACTION_PREMIUM_UNAVAILABLE_ALERT_TITLE: string; INTERACTION_RATE_LIMITED: string; INTERACTION_REQUIRED_BODY: string; INTERACTION_REQUIRED_TITLE: string; INTERACTION_RESPONSE_CONTEXT_INSTALLED_BY: FM<"application", false>; INTERACTION_RESPONSE_CONTEXT_TRIGGERED_BY: string; INTERNAL_EMPLOYEE_ONLY: string; INTERNAL_SERVER_ERROR: string; INVALID_ANIMATED_EMOJI_BODY: string; INVALID_ANIMATED_EMOJI_BODY_UPGRADE: string; INVALID_ATTACHMENTS_FAILURE: string; INVALID_CANNOT_FRIEND_SELF: string; INVALID_COUNTRY_CODE: string; INVALID_EXTERNAL_EMOJI_BODY: string; INVALID_EXTERNAL_EMOJI_BODY_UPGRADE: string; INVALID_INVITE_LINK_ERROR: string; INVALID_PAYMENT_METHOD_BANNER: string; INVALID_TEXT_CHANNEL: string; INVALID_VOICE_CHANNEL: string; INVENTORY_EMOJI_DETAILS_V2: string; INVITE_A_FRIEND: string; INVITE_A_GUEST: string; INVITE_A_GUEST_EXPLANATION: string; INVITE_A_GUEST_SELECT_VOICE_CHANNEL: string; INVITE_A_GUEST_STEP_1: string; INVITE_A_GUEST_STEP_2: string; INVITE_A_GUEST_VOICE_ONLY: string; INVITE_APP_EMAIL: string; INVITE_APP_MESSAGES: string; INVITE_BUTTON_ADD_FRIEND: string; INVITE_BUTTON_ALREADY_FRIENDS: string; INVITE_BUTTON_BODY_IN_GUILD: FM<"guildName", false>; INVITE_BUTTON_EXPIRED: string; INVITE_BUTTON_INVALID: string; INVITE_BUTTON_INVALID_OWNER: string; INVITE_BUTTON_RESOLVING: string; INVITE_BUTTON_STREAM_ENDED: FM<"name", false>; INVITE_BUTTON_STREAM_ENDED_STREAMER: string; INVITE_BUTTON_STREAM_WATCHING: string; INVITE_BUTTON_STREAMER: string; INVITE_BUTTON_STREAMING: FM<"name", false>; INVITE_BUTTON_STREAMING_SUBTEXT: FM<"guildName", false>; INVITE_BUTTON_TITLE_INVITED: string; INVITE_BUTTON_TITLE_INVITED_FRIEND: string; INVITE_BUTTON_TITLE_INVITED_GROUP_DM: string; INVITE_BUTTON_TITLE_INVITED_HUB: string; INVITE_BUTTON_TITLE_INVITED_INVALID: string; INVITE_BUTTON_TITLE_INVITED_STAGE_CHANNEL: string; INVITE_BUTTON_TITLE_INVITED_STREAM: string; INVITE_BUTTON_TITLE_INVITED_TO_PLAY: string; INVITE_BUTTON_TITLE_INVITED_VOICE_CHANNEL: string; INVITE_BUTTON_TITLE_INVITER: string; INVITE_BUTTON_TITLE_INVITER_FRIEND: string; INVITE_BUTTON_TITLE_INVITER_GROUP_DM: string; INVITE_BUTTON_TITLE_INVITER_HUB: string; INVITE_BUTTON_TITLE_INVITER_INVALID: string; INVITE_BUTTON_TITLE_INVITER_STAGE_CHANNEL: string; INVITE_BUTTON_TITLE_INVITER_STREAM: string; INVITE_BUTTON_TITLE_INVITER_VOICE_CHANNEL: string; INVITE_BUTTON_TITLE_STREAMING: string; INVITE_CONTACT_BUTTON: string; INVITE_CONTACT_MESSAGE_PLACEHOLDER: FM<"link", false>; INVITE_CONTACTS_ADD_FRIEND_BY_USERNAME: string; INVITE_CONTACTS_BODY_NOTIFICATION: string; INVITE_CONTACTS_DM_SUBHEADER: string; INVITE_CONTACTS_EMPTY_BODY: string; INVITE_CONTACTS_EMPTY_CTA: string; INVITE_CONTACTS_EMPTY_TITLE: string; INVITE_CONTACTS_FOOTER: FM<[never, "learnMoreHook"], true>; INVITE_CONTACTS_HEADER: FM<"count", false>; INVITE_CONTACTS_INNER_CONTACTS_COUNT: FM<"numFriends", false>; INVITE_CONTACTS_NO_SUGGESTIONS_BODY: string; INVITE_CONTACTS_NO_SUGGESTIONS_TITLE: string; INVITE_CONTACTS_SEE_ALL: string; INVITE_CONTACTS_SHARE_FRIEND_LINK: string; INVITE_CONTACTS_TO_GUILD_CONTACTS_SECTION_TITLE: string; INVITE_CONTACTS_TO_GUILD_FRIENDS_SECTION_TITLE: string; INVITE_COPIED: string; INVITE_COPY_INVITE_LINK_HEADER_MOBILE: string; INVITE_EDIT_LINK: string; INVITE_EMBED_ASK_TO_JOIN: string; INVITE_EMBED_FULL_GROUP: string; INVITE_EMBED_GAME_HAS_ENDED: string; INVITE_EMBED_GAME_INVITE: string; INVITE_EMBED_IN_GROUP: string; INVITE_EMBED_INVITE_TO_JOIN: string; INVITE_EMBED_INVITE_TO_JOIN_GROUP: string; INVITE_EMBED_INVITE_TO_LISTEN: FM<"name", false>; INVITE_EMBED_INVITE_TO_WATCH: FM<"name", false>; INVITE_EMBED_JOIN_VIA_ANDROID: string; INVITE_EMBED_JOIN_VIA_DESKTOP_APP: string; INVITE_EMBED_JOIN_VIA_IOS: string; INVITE_EMBED_JOIN_VIA_XBOX: string; INVITE_EMBED_JOINED: string; INVITE_EMBED_LISTEN_HAS_ENDED: string; INVITE_EMBED_LISTENING_INVITE: string; INVITE_EMBED_NUM_OPEN_SLOTS: FM<"number", false>; INVITE_EMBED_SEND_INVITE: string; INVITE_EMBED_WATCH_HAS_ENDED: string; INVITE_EMPTY_BODY: string; INVITE_EMPTY_TITLE: string; INVITE_EXPIRED_SUBTEXT_MOBILE: FM<"maxAge", false>; INVITE_EXPIRES_DAYS_OR_USES_PLURAL: FM<"numDays" | "numUses", false>; INVITE_EXPIRES_DAYS_PLURAL: FM<"numDays", false>; INVITE_EXPIRES_HOURS: FM<"numHours", false>; INVITE_EXPIRES_HOURS_OR_USES: FM<"numHours" | "numUses", false>; INVITE_EXPIRES_MINUTES: string; INVITE_EXPIRES_MINUTES_OR_USES: FM<"numUses", false>; INVITE_EXPIRES_NEVER: string; INVITE_EXPIRES_USES: FM<"numUses", false>; INVITE_FOOTER_LINK_HEADER: string; INVITE_FRIEND_MODAL_BOOSTING_UPSELL: string; INVITE_FRIEND_MODAL_INVITE: string; INVITE_FRIEND_MODAL_LOADING: string; INVITE_FRIEND_MODAL_NO_RESULTS: string; INVITE_FRIEND_MODAL_RETRY: string; INVITE_FRIEND_MODAL_SENT: string; INVITE_FRIEND_MODAL_TITLE: string; INVITE_FRIENDS: string; INVITE_GUILD_CONTACT_MESSAGE_PLACEHOLDER: FM<"link", false>; INVITE_INVALID_CTA: string; INVITE_INVALID_ERROR: string; INVITE_LINK_COPIED: string; INVITE_LINKS: string; INVITE_LINKS_EXPIRE_AFTER_DEFAULT: FM<"days", false>; INVITE_MEMBERS: string; INVITE_MODAL_BUTTON: FM<"guildName", true>; INVITE_MODAL_ERROR_BUTTON_TEXT: string; INVITE_MODAL_ERROR_DEFAULT: string; INVITE_MODAL_ERROR_INVALID_BODY: string; INVITE_MODAL_ERROR_INVALID_TITLE: string; INVITE_MODAL_ERROR_TITLE: string; INVITE_MORE_FRIENDS: string; INVITE_NO_THANKS: string; INVITE_NOTICE_MESSAGE: string; INVITE_NOTICE_MESSAGE_PART_2: string; INVITE_PEOPLE: string; INVITE_PERMISSION_MODAL_TEXT: string; INVITE_PERMISSION_MODAL_TITLE: string; INVITE_PRIVATE_CALL_HEADS_UP: string; INVITE_PRIVATE_CHANNEL_WARNING: string; INVITE_SEARCH_FOR_FRIENDS: string; INVITE_SENDING: string; INVITE_SENT: string; INVITE_SENT_EXCLAMATION: string; INVITE_SETTINGS_DESCRIPTION_NO_EXPIRATION: FM<"maxAge" | "maxUses", false>; INVITE_SETTINGS_EXPIRED_DESCRIPTION: FM<"maxAge" | "maxUses", false>; INVITE_SETTINGS_TITLE: string; INVITE_SHARE_LINK_OWN_SERVER: string; INVITE_SHARE_LINK_TO_STREAM: string; INVITE_SPLASH_GUILD_HEADER_TOOLTIP_CONTENT: FM; INVITE_SPLASH_GUILD_HEADER_TOOLTIP_CONTENT_LOCKED: FM<"boostCount", false>; INVITE_SPLASH_GUILD_HEADER_TOOLTIP_CTA_PRIMARY_ROLE_SETTINGS: string; INVITE_SPLASH_GUILD_HEADER_TOOLTIP_CTA_SECONDARY: string; INVITE_SPLASH_GUILD_HEADER_TOOLTIP_TITLE: string; INVITE_STREAM_FOOTER_LINK_HEADER: string; INVITE_STREAM_HEADER: string; INVITE_TAP_TO_INVITE: string; INVITE_TO_SERVER: string; INVITE_TO_SERVER_NAME: FM<"name", true>; INVITE_URL: string; INVITE_VANITY_USED: string; INVITE_VOICE_CHANNEL_JOIN: string; INVITE_WELCOME_HEADING: string; INVITE_WELCOME_SUBHEADING: string; INVITE_YOUR_CONTACTS_HEADER: string; INVITE_YOUR_FRIENDS_CHANNEL_MOBILE: FM<"channelName", false>; INVITE_YOUR_FRIENDS_HEADER_MOBILE: string; INVITES: string; INVITES_DISABLED_ARTICLE_LABEL: string; INVITES_DISABLED_CONFIRMATION: string; INVITES_DISABLED_DESCRIPTION: FM<"helpArticleUrl", true>; INVITES_DISABLED_DESCRIPTION_MOBILE: FM<"helpArticleUrl", true>; INVITES_DISABLED_EMBED_DESCRIPTION: string; INVITES_DISABLED_EMBED_HEADER: string; INVITES_DISABLED_EMBED_TITLE: string; INVITES_DISABLED_GUILD_NAME_DEFAULT: string; INVITES_DISABLED_MODAL_DESCRIPTION: FM<"articleLink", true>; INVITES_DISABLED_MODAL_TITLE: string; INVITES_DISABLED_TIP: string; INVITES_DISABLED_TOOLTIP: string; IOS_GUILD_DELETE_FEEDBACK_HEADER: string; IOS_IAP_ERROR_TITLE: string; IOS_IAP_GENERIC_BILLING_ERROR: string; IOS_IAP_ITUNES_ERROR: string; IOS_IAP_MANAGE_PREMIUM_GUILD_BUTTON: string; IOS_IAP_MANAGE_SUBSCRIPTION_BUTTON: string; IOS_IAP_RESTORE_SUBSCRIPTION_ERROR: string; IOS_IAP_RESTORE_SUBSCRIPTION_NONE_DESCRIPTION: string; IOS_IAP_RESTORE_SUBSCRIPTION_NONE_TITLE: string; IOS_IAP_RESTORE_SUBSCRIPTION_SUCCESS: string; IOS_IAP_SWITCH_PLANS_BUTTON: string; IOS_IAP_TESTFLIGHT_ERROR: string; IOS_MEDIA_KEYBOARD_BROWSE_PHOTO: string; IOS_MEDIA_KEYBOARD_ENABLE_IN_SETTINGS: string; IOS_MEDIA_KEYBOARD_MORE_PHOTOS: string; IOS_MEDIA_KEYBOARD_NO_PERMISSION: string; IOS_MEDIA_KEYBOARD_NO_PHOTOS: string; IOS_NOTIFICATION_SEE_FULL: string; IOS_PREMIUM_TRIAL_DISCLAIMER: FM<"cancelURL" | "interval" | "paidURL", true>; IOS_PROFILE_IN_VOICE_CALL: string; IOS_PROFILE_OPEN_VOICE_CHANNEL: string; IOS_SHARE_SUGGESTIONS_HINT: string; IOS_SHARE_SUGGESTIONS_TOGGLE: string; IOS_STREAM_PARTICIPANTS_HIDDEN: string; IOS_STREAM_SHOW_NON_VIDEO: string; IOS_TRIAL_PAYMENT_FLOW_CTA: string; IOS_VIEW_ALL: string; IP_AUTHORIZATION_SUCCEEDED: string; IPAD_NO_SCREENSHARE_DIALOG_BODY: string; IPAD_NO_SCREENSHARE_DIALOG_TITLE: string; it: string; ITEM_REMOVED_FROM_LIST_A11Y_LABEL: FM<"text", false>; ITEM_SELECTED_FROM_LIST_A11Y_LABEL: FM<"text", false>; ja: string; JOIN: string; JOIN_ACTIVITY: string; JOIN_AFK_CHANNEL_BODY: string; JOIN_CALL: string; JOIN_EXISTING_SERVER: string; JOIN_FORUM_POST: string; JOIN_GUILD: string; JOIN_GUILD_CONNECT: FM; JOIN_HANGOUT: string; JOIN_MUTED: string; JOIN_ON_XBOX: string; JOIN_SERVER_BUTTON_CTA: string; JOIN_SERVER_BUTTON_CTA_MOBILE: string; JOIN_SERVER_DESCRIPTION_MOBILE_REFRESH: string; JOIN_SERVER_DESCRIPTION_NUF: string; JOIN_SERVER_EXAMPLES: FM<"examples", false>; JOIN_SERVER_INVITE_EXAMPLES_HEADER: string; JOIN_SERVER_INVITE_EXAMPLES_MOBILE_REFRESH: FM<["example1" | "example2" | "example3", "exampleHook"], true>; JOIN_SERVER_TITLE: string; JOIN_SERVER_TITLE_MOBILE_REFRESH: string; JOIN_STREAM: string; JOIN_STUDENT_HUB: string; JOIN_THREAD: string; JOIN_VIDEO_CALL: string; JOIN_VIDEO_CHANNEL: string; JOIN_VOICE: string; JOIN_VOICE_CALL: string; JOIN_VOICE_CHANNEL: string; JOIN_VOICE_CHANNEL_CTA: string; JOIN_WAITLIST: string; JOIN_WITH_INVITE_LINK: string; JOINED_GUILD: string; JOINING_GUILD: string; JOINING_VOICE_CALL_WILL_END_CURRENT_CALL_BODY: string; JOINING_WILL_END_CURRENT_CALL_TITLE: string; JPY_NAME: string; JUMP: string; JUMP_BAR_VIEWING_REPLY: string; JUMP_TO_BOTTOM: string; JUMP_TO_CHANNEL: string; JUMP_TO_LAST_UNREAD_MESSAGE: string; JUMP_TO_MESSAGE: string; JUMP_TO_ORIGINAL_MESSAGE: string; JUMP_TO_PRESENT: string; JUMP_TO_PRESENT_BUTTON_LABEL: string; JUMP_TO_REPLY: string; JUMP_TO_TOP: string; KEEP_PERMISSIONS: string; KEYBIND_ACTIVATE_OVERLAY_CHAT: string; KEYBIND_CONFLICT: string; KEYBIND_DESCRIPTION_MODAL_CALL_ACCEPT: string; KEYBIND_DESCRIPTION_MODAL_CALL_DECLINE: string; KEYBIND_DESCRIPTION_MODAL_CALL_START: string; KEYBIND_DESCRIPTION_MODAL_CREATE_DM_GROUP: string; KEYBIND_DESCRIPTION_MODAL_CREATE_GUILD: string; KEYBIND_DESCRIPTION_MODAL_EASTER_EGG: string; KEYBIND_DESCRIPTION_MODAL_FOCUS_TEXT_AREA: string; KEYBIND_DESCRIPTION_MODAL_FORWARD_MESSAGE: string; KEYBIND_DESCRIPTION_MODAL_JUMP_TO_FIRST_UNREAD: string; KEYBIND_DESCRIPTION_MODAL_MARK_CHANNEL_READ: string; KEYBIND_DESCRIPTION_MODAL_MARK_SERVER_READ: string; KEYBIND_DESCRIPTION_MODAL_MARK_TOP_INBOX_CHANNEL_READ: string; KEYBIND_DESCRIPTION_MODAL_NAVIGATE_BACK_FORWARD: string; KEYBIND_DESCRIPTION_MODAL_NAVIGATE_CHANNELS: string; KEYBIND_DESCRIPTION_MODAL_NAVIGATE_SERVERS: string; KEYBIND_DESCRIPTION_MODAL_NAVIGATE_TO_CALL: string; KEYBIND_DESCRIPTION_MODAL_QUICKSWITCHER: string; KEYBIND_DESCRIPTION_MODAL_SCROLL_CHAT: string; KEYBIND_DESCRIPTION_MODAL_SEARCH: string; KEYBIND_DESCRIPTION_MODAL_SEARCH_EMOJIS: string; KEYBIND_DESCRIPTION_MODAL_SEARCH_GIFS: string; KEYBIND_DESCRIPTION_MODAL_SEARCH_SOUNDBOARD: string; KEYBIND_DESCRIPTION_MODAL_SEARCH_STICKERS: string; KEYBIND_DESCRIPTION_MODAL_SUBTITLE: string; KEYBIND_DESCRIPTION_MODAL_TITLE: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_DEAFEN: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_FOR_LATER: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_HELP: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_INBOX: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_MUTE: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_PINS: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_PREVIOUS_GUILD: string; KEYBIND_DESCRIPTION_MODAL_TOGGLE_USERS: string; KEYBIND_DESCRIPTION_MODAL_UNREAD_CHANNELS: string; KEYBIND_DESCRIPTION_MODAL_UNREAD_MENTION_CHANNELS: string; KEYBIND_DESCRIPTION_MODAL_UPLOAD_FILE: string; KEYBIND_DESCRIPTION_NAVIGATE_BACK: string; KEYBIND_DESCRIPTION_NAVIGATE_FORWARD: string; KEYBIND_DESCRIPTION_PUSH_TO_MUTE: string; KEYBIND_DESCRIPTION_PUSH_TO_TALK: string; KEYBIND_DESCRIPTION_PUSH_TO_TALK_PRIORITY: string; KEYBIND_DESCRIPTION_SOUNDBOARD: string; KEYBIND_DESCRIPTION_SOUNDBOARD_GLOBAL: string; KEYBIND_DESCRIPTION_SOUNDBOARD_HOLD: string; KEYBIND_DESCRIPTION_SOUNDBOARD_HOLD_GLOBAL: string; KEYBIND_DESCRIPTION_SOUNDBOARD_HOLD_NO_POPOUT_WHEEL_SUPPORT: string; KEYBIND_DESCRIPTION_SOUNDBOARD_NO_POPOUT_WHEEL_SUPPORT: string; KEYBIND_DESCRIPTION_TOGGLE_DEAFEN: string; KEYBIND_DESCRIPTION_TOGGLE_GO_LIVE_STREAMING: string; KEYBIND_DESCRIPTION_TOGGLE_MUTE: string; KEYBIND_DESCRIPTION_TOGGLE_OVERLAY: string; KEYBIND_DESCRIPTION_TOGGLE_OVERLAY_INPUT_LOCK: string; KEYBIND_DESCRIPTION_TOGGLE_STREAMER_MODE: string; KEYBIND_DESCRIPTION_TOGGLE_VOICE_MODE: string; KEYBIND_DESCRIPTION_UNASSIGNED: string; KEYBIND_IN_BROSWER_NOTICE: FM<"downloadLink", true>; KEYBIND_NAVIGATE_BACK: string; KEYBIND_NAVIGATE_FORWARD: string; KEYBIND_NAVIGATION_CONFLICT: FM<"keyboardNavArticle", true>; KEYBIND_PUSH_TO_MUTE: string; KEYBIND_PUSH_TO_TALK: string; KEYBIND_PUSH_TO_TALK_PRIORITY: string; KEYBIND_SOUNDBOARD: string; KEYBIND_SOUNDBOARD_HOLD: string; KEYBIND_TOGGLE_DEAFEN: string; KEYBIND_TOGGLE_GO_LIVE_STREAMING: string; KEYBIND_TOGGLE_MUTE: string; KEYBIND_TOGGLE_OVERLAY: string; KEYBIND_TOGGLE_OVERLAY_INPUT_LOCK: string; KEYBIND_TOGGLE_STREAM_MODE: string; KEYBIND_TOGGLE_VOICE_MODE: string; KEYBIND_UNASSIGNED: string; KEYBINDS: string; KEYBOARD_BEHAVIOR_MOBILE_HEADER: string; KEYBOARD_BEHAVIOR_MOBILE_SHIFT_ENTER_TO_SEND: string; KEYBOARD_BEHAVIOR_MOBILE_SHIFT_ENTER_TO_SEND_HINT: string; KEYBOARD_SHORTCUTS_EXPLAINER_HELP_CENTER_LINK: FM<"link", true>; KEYBOARD_SHORTCUTS_EXPLAINER_LIST_SHORTCUT: string; KEYBOARD_SHORTCUTS_EXPLAINER_MODAL_BODY: string; KEYBOARD_SHORTCUTS_EXPLAINER_MODAL_TITLE: FM<[never, "tab"], true>; KEYBOARD_SHORTCUTS_EXPLAINER_QUICKSWITCHER_SHORTCUT: string; KICK: string; KICK_FROM_SERVER: string; KICK_MEMBERS: string; KICK_MEMBERS_AND_REVIEW_APPLICATIONS: string; KICK_USER: FM<"user", false>; KICK_USER_BODY: FM<"user", false>; KICK_USER_CONFIRMED: FM<"user", false>; KICK_USER_ERROR_GENERIC: FM<"user", false>; KICK_USER_FROM_SERVER: FM<"user", false>; KICK_USER_TITLE: FM<"user", false>; ko: string; KRW_NAME: string; LABEL_WITH_ONLINE_STATUS: FM<"label" | "status", false>; LANGUAGE: string; LANGUAGE_SELECT: string; LANGUAGE_UPDATED: string; LANGUAGES: string; LARGE_GUILD_NOTIFY_ALL_MESSAGES_DESCRIPTION: string; LARGE_MESSAGE_UPLOAD_SUBTITLE: string; LARGE_MESSAGE_UPLOAD_TITLE_MAX_LENGTH: FM<"maxLength", false>; LARGER_FILE_UPLOAD_DESCRIPTION: string; LARGER_FILE_UPLOAD_DESCRIPTION_INCREASE: FM<"premiumMaxSize", false>; LARGER_FILE_UPLOAD_SIDEBAR_TITLE: string; LAST_SEEN: FM<"days", false>; LAST_SYNC: FM<"datetime", false>; LAUNCH: string; LAUNCH_APP: FM<"app", false>; LAUNCH_PAD: string; LAUNCH_PAD_DESCRIPTION: string; LAUNCH_PAD_DISABLED_RADIO: string; LAUNCH_PAD_DISABLED_RADIO_DESCRIPTION: string; LAUNCH_PAD_HISTORY_SHOW_LESS: string; LAUNCH_PAD_HISTORY_SHOW_MORE: string; LAUNCH_PAD_NUX_SUBTITLE: string; LAUNCH_PAD_NUX_TITLE: string; LAUNCH_PAD_PULL_TAB_RADIO: string; LAUNCH_PAD_PULL_TAB_RADIO_DESCRIPTION: string; LAUNCH_PAD_UNREAD_CHANNELS_GUILD: FM<"guildName", false>; LEARN_MORE: string; LEARN_MORE_ALT: string; LEARN_MORE_CLICK: FM; LEARN_MORE_LINK: FM<"helpdeskArticle", true>; LEAVE: string; LEAVE_CALL: string; LEAVE_FORUM_POST: string; LEAVE_GROUP_DM: string; LEAVE_GROUP_DM_BODY: FM<"name", true>; LEAVE_GROUP_DM_ERROR: string; LEAVE_GROUP_DM_MANAGED_BODY: FM<"name", true>; LEAVE_GROUP_DM_MANAGED_TITLE: FM<"name", false>; LEAVE_GROUP_DM_SILENTLY: string; LEAVE_GROUP_DM_SILENTLY_COMMAND_OPTION: string; LEAVE_GROUP_DM_TITLE: FM<"name", false>; LEAVE_HUB: string; LEAVE_HUB_BODY: FM<"name", true>; LEAVE_SERVER: string; LEAVE_SERVER_BODY: FM<"name", true>; LEAVE_SERVER_BODY_MOBILE: FM<"name", false>; LEAVE_SERVER_TITLE: FM<"name", false>; LEAVE_THREAD: string; LEAVE_VIDEO_OFF: string; LEGACY_CHAT_INPUT: string; LEGACY_CHAT_INPUT_DESCRIPTION: string; LETS_GO: string; LIBRARY: string; LIGHT_BLUE: string; LIGHT_GREEN: string; LIGHT_GREY: string; LIGHTNING_CHECKOUT_GENERIC_ERROR_CTA: string; LIGHTNING_CHECKOUT_GENERIC_ERROR_DESCRIPTION: string; LIGHTNING_CHECKOUT_GENERIC_ERROR_TITLE: string; LIGHTNING_CHECKOUT_NON_REFUNDABLE_DISCLAIMER: FM<"paidURL", true>; LIGHTNING_CHECKOUT_PAY_CTA: FM<"price", false>; LIGHTNING_CHECKOUT_REVIEW_PURCHASE: string; LIMITED_ACCESS_DM_BAR_SUBTEXT: FM<"appealLink", true>; LIMITED_ACCESS_INFO_MODAL_APPEAL: FM<"appealLink", true>; LIMITED_ACCESS_INFO_MODAL_DESCRIPTION: string; LIMITED_ACCESS_INFO_MODAL_HEADING: string; LIMITED_ACCESS_NAG_BAR_APPEAL: string; LIMITED_ACCESS_NAG_BAR_NOTICE: string; LIMITED_TIME: string; LINK_COPIED: string; LINK_NOT_DISCORD_WARNING_BODY: FM<"url", true>; LINK_NOT_DISCORD_WARNING_CANCEL: string; LINK_NOT_DISCORD_WARNING_CONTINUE: string; LINK_NOT_DISCORD_WARNING_TITLE: string; LINK_SETTINGS: string; LINK_YOUR_DISCORD_ACCOUNT: string; LINK_YOUR_XBOX_ACCOUNT_1: string; LINK_YOUR_XBOX_ACCOUNT_2: string; LINKED_ROLES_ADMIN_NUX_CONTENT: string; LINKED_ROLES_ADMIN_NUX_TITLE: string; LINUX: string; LIST_SUMMARY_LABEL_ONE: FM<"first", false>; LIST_SUMMARY_LABEL_THREE: FM<"first" | "second" | "third", false>; LIST_SUMMARY_LABEL_THREE_AND_OTHERS: FM<"count" | "first" | "second" | "third", false>; LIST_SUMMARY_LABEL_TWO: FM<"first" | "second", false>; LISTEN_ON_SPOTIFY: string; LISTENING_COUNT: FM<"count", false>; LISTENING_TO: FM<"name", true>; LIVE: string; LIVE_EVENT: string; LOAD_IMAGE_ERROR: string; LOAD_MORE_MESSAGES: string; LOAD_REACTIONS_ERROR: string; LOADING: string; LOADING_DID_YOU_KNOW: string; LOADING_KEYBIND_TIP_1: FM<[never, "quickSwitcherHook"], true>; LOADING_KEYBIND_TIP_2: FM<[never, "markUnreadHook"], true>; LOADING_KEYBIND_TIP_3: FM<[never, "markServerUnreadHook"], true>; LOADING_KEYBIND_TIP_4: FM<[never, "downHook" | "navigateUnreadHook"], true>; LOADING_KEYBIND_TIP_5: FM<[never, "keyboardShortcutsHook"], true>; LOADING_KEYBIND_TIP_6: FM<[never, "messageNewlineHook"], true>; LOADING_KEYBIND_TIP_7: FM<[never, "shiftHook"], true>; LOADING_KEYBIND_TIP_8: FM<[never, "upHook"], true>; LOADING_LINE_1: string; LOADING_LINE_10: string; LOADING_LINE_11: string; LOADING_LINE_12: string; LOADING_LINE_13: string; LOADING_LINE_14: string; LOADING_LINE_15: string; LOADING_LINE_2: string; LOADING_LINE_4: string; LOADING_LINE_5: string; LOADING_LINE_6: string; LOADING_LINE_7: string; LOADING_LINE_8: string; LOADING_LINE_9: string; LOADING_MESSAGES_A11Y_LABEL: string; LOADING_NOTE: string; LOADING_TIP_1: string; LOADING_TIP_10: string; LOADING_TIP_11: string; LOADING_TIP_12: string; LOADING_TIP_13: string; LOADING_TIP_14: string; LOADING_TIP_15: string; LOADING_TIP_16: string; LOADING_TIP_17: string; LOADING_TIP_18: string; LOADING_TIP_19: string; LOADING_TIP_2: string; LOADING_TIP_20: string; LOADING_TIP_21: string; LOADING_TIP_22: string; LOADING_TIP_23: string; LOADING_TIP_24: string; LOADING_TIP_25: string; LOADING_TIP_26: string; LOADING_TIP_27: FM<"asterisks", true>; LOADING_TIP_3: string; LOADING_TIP_4: string; LOADING_TIP_5: string; LOADING_TIP_6: string; LOADING_TIP_7: string; LOADING_TIP_8: string; LOADING_TIP_9: string; LOADING_YOUR_PIN: string; LOCAL_MUTED: string; LOCAL_PUSH_NOTIFICATION_GUILD_VERIFICATION_BODY: string; LOCAL_PUSH_NOTIFICATION_SCREENSHARE_NOT_SUPPORTED: string; LOCAL_VIDEO_DISABLED: string; LOCALE: string; LOCALE_SELECTOR_TITLE: string; LOCALE_SUBTITLE: string; LOCALE_TITLE: string; LOCALIZED_PRICING_BANNER_BODY_EXISTING_CURRENCY: FM<"helpCenterLink" | "localizedPriceWithCurrencySymbol", true>; LOCALIZED_PRICING_BANNER_BODY_NEW_CURRENCY: FM<"currencyISOCode" | "helpCenterLink" | "localizedPriceWithCurrencySymbol", true>; LOCALIZED_PRICING_BANNER_BODY_NEW_CURRENCY_WITH_AMBIGUOUS_SYMBOL: FM<"currencyISOCode" | "helpCenterLink" | "localizedPriceWithCurrencySymbol", true>; LOCALIZED_PRICING_BANNER_BODY_WITHOUT_PRICE: FM<"currencyISOCode" | "helpCenterLink", true>; LOCALIZED_PRICING_BANNER_HEADER: FM<"country", false>; LOCALIZED_PRICING_BANNER_LINK_ONLY: FM<"helpCenterLink", true>; LOCALIZED_PRICING_BANNER_NO_LOWERED_PRICE: FM<"currencyISOCode" | "helpCenterLink", true>; LOCALIZED_PRICING_BANNER_NO_LOWERED_PRICE_SINGLE_STRING: FM<"country" | "currencyISOCode" | "helpCenterLink", true>; LOCALIZED_PRICING_BANNER_SUB_NOTIF: string; LOCALIZED_PRICING_GENERALIZED_PAYMENT_METHODS_PROMO: FM<"country" | "helpCenterLink", true>; LOCALIZED_PRICING_HRK_EURO_WARNING: FM<"kunaPriceWithCurrency", false>; LOCALIZED_PRICING_LEGACY_PRICING_BOOST_WARNING: FM<"helpCenterLink", true>; LOCALIZED_PRICING_LEGACY_PRICING_WARNING: FM<"helpCenterLink", true>; LOCALIZED_PRICING_LEGACY_PRICING_WARNING_NO_HELP_CENTER_LINK: FM; LOCALIZED_PRICING_MOBILE_PRICE_CHANGE_NOTICE_HAS_SUB: FM<"country" | "helpCenterLink" | "newPrice", true>; LOCALIZED_PRICING_MOBILE_PRICE_CHANGE_NOTICE_HAS_SUB_AU: FM<"helpCenterLink", true>; LOCALIZED_PRICING_MOBILE_PRICE_CHANGE_NOTICE_NO_SUB: FM<"country" | "helpCenterLink" | "newPrice", true>; LOCALIZED_PRICING_MOBILE_PRICE_CHANGE_NOTICE_NO_SUB_AU: FM<"helpCenterLink", true>; LOCALIZED_PRICING_MORE_NEW_WAYS_TO_PAY: string; LOCALIZED_PRICING_NOTICE: FM<"country", false>; LOCALIZED_PRICING_NOTICE_GENERALIZED_PAYMENT_METHODS_PROMO: FM<"country", false>; LOCALIZED_PRICING_NOTICE_NO_LOWERED_PRICE: FM<"currencyISOCode", false>; LOCALIZED_PRICING_ON_CHANGE_PAYMENT_METHOD: FM<"helpCenterLink" | "newCurrencyAndPrice", true>; LOCALIZED_PRICING_PAYMENT_METHODS_PROMO: FM<"helpCenterLink" | "paymentMethods", true>; LOCALIZED_PRICING_PLN_LEGACY_PRICING_BOOST_WARNING: FM<"helpCenterLink", true>; LOCALIZED_PRICING_PLN_LEGACY_PRICING_WARNING: FM<"helpCenterLink", true>; LOCALIZED_PRICING_PLN_LEGACY_PRICING_WARNING_NO_HELP_CENTER_LINK: FM; LOCALIZED_PRICING_TRY_LEGACY_PRICING_BOOST_WARNING: FM<"helpCenterLink", true>; LOCALIZED_PRICING_TRY_LEGACY_PRICING_WARNING: FM<"helpCenterLink", true>; LOCALIZED_PRICING_TRY_LEGACY_PRICING_WARNING_NO_HELP_CENTER_LINK: FM; LOCK_FORUM_POST: string; LOCK_THREAD: string; LOG_IN_WITH_APP: string; LOGIN: string; LOGIN_AS: FM<"username", false>; LOGIN_REQUIRED: string; LOGIN_STAGE: string; LOGIN_TITLE: string; LOGIN_WITH_QR: string; LOGIN_WITH_QR_DESCRIPTION: FM; LOGIN_WITH_QR_ERROR_SUBTITLE: string; LOGIN_WITH_QR_LOADING_FINISHED_LABEL: string; LOGIN_WITH_QR_LOADING_LABEL: string; LOGOUT: string; LOW_QUALITY_IMAGE_MODE: string; LOW_QUALITY_IMAGE_MODE_HELP: string; lt: string; LURKER_MODE_CHAT_INPUT_BUTTON: string; LURKER_MODE_CHAT_INPUT_MESSAGE: string; LURKER_MODE_CHAT_INPUT_MESSAGE_IOS: string; LURKER_MODE_NAG_BAR_BUTTON: FM<"guild", false>; LURKER_MODE_NAG_BAR_HEADER: string; LURKER_MODE_POPOUT_CANCEL: string; LURKER_MODE_POPOUT_CHAT_HEADER: string; LURKER_MODE_POPOUT_JOIN: string; LURKER_MODE_POPOUT_REACTIONS_HEADER: string; LURKER_MODE_POPOUT_SUCCESS_BODY: string; LURKER_MODE_POPOUT_SUCCESS_BUTTON: string; LURKER_MODE_POPOUT_SUCCESS_HEADER: FM<"guild", false>; LURKER_MODE_POPOUT_UPSELL_BODY: string; LURKER_MODE_VIEW_GUILD: string; MACOS: string; MACOS_DEPRECATED_WARNING: FM<"helpCenterLink", true>; MAGENTA: string; MAIN_TAB_FEEDBACK_ISSUE_SECTION_HEADER: string; MAIN_TAB_FEEDBACK_OPTION_BUG: string; MAIN_TAB_FEEDBACK_OPTION_CRASH: string; MAIN_TAB_FEEDBACK_OPTION_INFORMATION: string; MAIN_TAB_FEEDBACK_OPTION_LAYOUT: string; MAIN_TAB_FEEDBACK_OPTION_MISSING_FEATURE: string; MAIN_TAB_FEEDBACK_OPTION_NAVIGATION: string; MAIN_TAB_FEEDBACK_OPTION_NOTIFICATIONS: string; MAIN_TAB_FEEDBACK_OPTION_OTHER: string; MAIN_TAB_FEEDBACK_OPTION_PERFORMANCE: string; MAIN_TAB_FEEDBACK_OPTION_SERVERS: string; MAIN_TAB_FEEDBACK_OPTION_SOCIAL: string; MAIN_TAB_FEEDBACK_OPTION_VIBE: string; MAIN_TAB_FEEDBACK_PROMPT: string; MAIN_TAB_FEEDBACK_SHEET_TITLE: string; MALFORMED_LINK_BODY: FM<"url", true>; MALFORMED_LINK_BODY_NO_URL: string; MANAGE_AUTHORIZED_APP: string; MANAGE_CHANNEL: string; MANAGE_CHANNEL_DESCRIPTION: string; MANAGE_CHANNELS: string; MANAGE_CHANNELS_DESCRIPTION: string; MANAGE_EVENTS: string; MANAGE_EXPRESSIONS: string; MANAGE_FORUM_POSTS: string; MANAGE_INTEGRATION: string; MANAGE_MESSAGES: string; MANAGE_MESSAGES_DESCRIPTION: string; MANAGE_NICKNAMES: string; MANAGE_NICKNAMES_DESCRIPTION: string; MANAGE_PERMISSIONS: string; MANAGE_PERMISSIONS_DESCRIPTION: string; MANAGE_PREMIUM_GUILD_SUBSCRIPTION: string; MANAGE_ROLES: string; MANAGE_ROLES_DESCRIPTION: string; MANAGE_SERVER: string; MANAGE_SERVER_DESCRIPTION: string; MANAGE_THREADS: string; MANAGE_THREADS_AND_FORUM_POSTS: string; MANAGE_USER: string; MANAGE_USER_SHORTHAND: string; MANAGE_WEBHOOKS: string; MANAGE_WEBHOOKS_DESCRIPTION: string; MANAGED_ROLE_EXPLAINATION: string; MANAGED_ROLE_GUILD_CONNECTIONS_EXPLANATION: string; MANAGED_ROLE_INTEGRATION_LINKED_EXPLANATION: FM<["name", "integrationNameHook"], true>; MANAGED_ROLE_PREMIUM_SUBSCRIBER_EXPLANATION: string; MANUALLY_UNVERIFY_MEMBER: string; MANUALLY_VERIFY_MEMBER: string; MARK_ALL_AS_READ: string; MARK_AS_READ: string; MARK_GUILD_AS_READ: string; MARK_UNREAD: string; MARKED_AS_READ: string; MARKETING_PAGE_CAROUSEL_TITLE: string; MARKETING_PAGE_CHOOSE_PLAN_SUBTITLE: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_1_PERK_LIST_LESS: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_1_PERK_LIST_STREAMING: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_1_PERK_LIST_UPLOADS: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_BADGE: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_BOOSTS: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_EMOJIS: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_MESSAGES: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_PROFILES: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_SERVERS: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_STREAMING: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_UPLOADS: string; MARKETING_PAGE_CHOOSE_PLAN_TIER_2_PERK_LIST_UPLOADS_INCREASE: FM<"premiumMaxSize", false>; MARKETING_PAGE_CHOOSE_PLAN_TITLE: string; MARKETING_PAGE_COMPARISON_TABLE_CLIENT_THEME_V2: string; MARKETING_PAGE_COMPARISON_TABLE_CUSTOM_EMOJI_V2: string; MARKETING_PAGE_COMPARISON_TABLE_CUSTOM_SOUNDS_V2: string; MARKETING_PAGE_COMPARISON_TABLE_EARLY_ACCESS: string; MARKETING_PAGE_COMPARISON_TABLE_ENTRANCE_SOUNDS_V2: string; MARKETING_PAGE_COMPARISON_TABLE_NO_LIMIT_ALL_FUN_SECTION_V2: string; MARKETING_PAGE_COMPARISON_TABLE_PROFILE_THEMES_V2: string; MARKETING_PAGE_COMPARISON_TABLE_SERVER_PROFILES_V2: string; MARKETING_PAGE_COMPARISON_TABLE_SHOW_OFF_YOUR_STYLE_SECTION_V2: string; MARKETING_PAGE_COMPARISON_TABLE_YOUR_SPACE_SECTION_V2: string; MARKETING_PAGE_CTA_BUY_NOW: string; MARKETING_PAGE_CTA_GET_FREE_TRIAL: string; MARKETING_PAGE_CTA_GET_NITRO: string; MARKETING_PAGE_CTA_START_FREE_TRIAL: string; MARKETING_PAGE_CTA_SWITCH_PLANS: string; MARKETING_PAGE_CTA_TIER_1: FM<"price", false>; MARKETING_PAGE_CTA_TIER_2: FM<"price", false>; MARKETING_PAGE_CTA_TRY_1_MONTH_FREE: string; MARKETING_PAGE_CTA_UPGRADE_NITRO: string; MARKETING_PAGE_CTA_UPGRADE_NOW: string; MARKETING_PAGE_HEADLINE_JOIN_NITRO_HAVE_FUN_YOUR_WAY: string; MARKETING_PAGE_HEADLINE_MAKE_DISCORD_YOURS: string; MARKETING_PAGE_HEADLINE_MAKE_DISCORD_YOURS_WITH_NITRO: string; MARKETING_PAGE_HEADLINE_UPGRADE_YOUR_DISCORD: string; MARKETING_PAGE_HEADLINE_UPGRADE_YOUR_DISCORD_WITH_NITRO: string; MARKETING_PAGE_PERK_CARD_BOOSTS_HEADER: string; MARKETING_PAGE_PERK_CARD_BOOSTS_SUBHEADER: string; MARKETING_PAGE_PERK_CARD_EMOJIS_HEADER: string; MARKETING_PAGE_PERK_CARD_EMOJIS_SUBHEADER: FM; MARKETING_PAGE_PERK_CARD_PROFILE_HEADER: string; MARKETING_PAGE_PERK_CARD_PROFILE_SUBHEADER: string; MARKETING_PAGE_PERK_CARD_UPLOADS_HEADER: string; MARKETING_PAGE_PERK_CARD_UPLOADS_SUBHEADER: string; MARKETING_PAGE_PERK_CARD_UPLOADS_SUBHEADER_INCREASE: FM<"premiumMaxSize", false>; MARKETING_REFRESH_PREMIUM_FEATURES_GO_LIVE_INFO: string; MARKETING_REFRESH_PREMIUM_TIER_1_CTA_DESCRIPTION_WITH_PRICE_NO_INFO_HOOK: FM<"discountPercentage" | "monthlyPrice" | "yearlyPrice", true>; MARKETING_REFRESH_PREMIUM_TIER_2_CTA_SUBTITLE: string; MARKETING_REFRESH_PREMIUM_TIER_2_CTA_TITLE: string; MARKETING_TIER_1_PERK_LIST_BOOST_DISCOUNT: string; MASKED_LINK_ALERT_V2_CONFIRM_PROTOCOL: string; MASKED_LINK_ALERT_V2_CONFIRM_WEBSITE: string; MASKED_LINK_ALERT_V2_HEADER: string; MASKED_LINK_ALERT_V2_TRUST_PROTOCOL: FM<"protocol", true>; MASKED_LINK_ALERT_V2_TRUST_WEBSITE: FM<"domain", true>; MASKED_LINK_ALERT_V2_WARNING_PROTOCOL: FM; MASKED_LINK_ALERT_V2_WARNING_WEBSITE: string; MATURE_LISTING_ACCEPT: string; MATURE_LISTING_DECLINE: string; MATURE_LISTING_DESCRIPTION: string; MATURE_LISTING_TITLE: FM<"name", false>; MAX_AGE_NEVER: string; MAX_AGE_NEVER_DESCRIPTION_MOBILE: string; MAX_GUILD_MEMBERS_REACHED_ERROR: string; MAX_NUMBER_OF_USES: string; MAX_USES: FM<"maxUses", false>; MAX_USES_DESCRIPTION_MOBILE: FM<"maxUses", false>; MAX_USES_DESCRIPTION_UNLIMITED_USES: string; MAXIMUM_LENGTH: FM<"maxLength", false>; MAXIMUM_LENGTH_ERROR: FM<"maxLength", false>; MAYBE_LATER: string; ME: string; MEDIA_CHANNEL: string; MEDIA_CHANNEL_ADMIN_EDUCATION_HIDE: string; MEDIA_CHANNEL_ADMIN_EDUCATION_SHOW: string; MEDIA_CHANNEL_ATTACHMENTS_SECTION_DESCRIPTION: string; MEDIA_CHANNEL_ATTACHMENTS_SECTION_TITLE: string; MEDIA_CHANNEL_CHANGE_THUMBNAIL_LABEL: string; MEDIA_CHANNEL_HIDE_MEDIA_DOWNLOAD_OPTIONS_TOGGLE_DESCRIPTION: string; MEDIA_CHANNEL_HIDE_MEDIA_DOWNLOAD_OPTIONS_TOGGLE_LABEL: string; MEDIA_CHANNEL_LEARN_MORE: FM<"hcArticleUrl", true>; MEDIA_CHANNEL_ONBOARDING_CHECKLIST_FIRST_POST_DESCRIPTION: string; MEDIA_CHANNEL_SET_AS_THUMBNAIL_LABEL: string; MEDIA_CHANNEL_SORT: string; MEDIA_CHANNEL_SORT_A11Y_LABEL: string; MEDIA_CHANNEL_TYPE: string; MEDIA_CHANNEL_UPLOAD_THUMBNAIL_LABEL: string; MEDIA_CHANNEL_UPSELL_BODY: string; MEDIA_CHANNEL_UPSELL_CREATE_NOW_CTA: string; MEDIA_CHANNEL_UPSELL_NON_MONETIZING_GUILD_BODY: string; MEDIA_CHANNEL_UPSELL_NON_MONETIZING_GUILD_TITLE: string; MEDIA_CHANNEL_UPSELL_TITLE: string; MEDIA_KEYBOARD_BROWSE: string; MEDIA_KEYBOARD_GIFT: string; MEDIA_KEYBOARD_MAX_SELECTION_INFO: FM<"max", false>; MEDIA_KEYBOARD_NUM_SELECTED: FM<"num", false>; MEDIA_MOSAIC_ALT_TEXT_CTA: string; MEDIA_MOSAIC_ALT_TEXT_POPOUT_TITLE: string; MEDIA_POST_ADMIN_EDUCATION_ABOUT_MONETIZING_SUBTITLE: string; MEDIA_POST_ADMIN_EDUCATION_ABOUT_MONETIZING_TITLE: string; MEDIA_POST_ADMIN_EDUCATION_ABOUT_NON_MONETIZING_SUBTITLE: string; MEDIA_POST_ADMIN_EDUCATION_ABOUT_NON_MONETIZING_TITLE: string; MEDIA_POST_ADMIN_EDUCATION_BEHIND_THE_SCENES_TAG: string; MEDIA_POST_ADMIN_EDUCATION_DESK_SETUP_TAG: string; MEDIA_POST_ADMIN_EDUCATION_EXCLUSIVE_ART_TAG: string; MEDIA_POST_ADMIN_EDUCATION_FAN_ART_TAG: string; MEDIA_POST_ADMIN_EDUCATION_HAS_TIERS_CTA: string; MEDIA_POST_ADMIN_EDUCATION_HELP_CENTER: string; MEDIA_POST_ADMIN_EDUCATION_HOUSEPLANTS_TAG: string; MEDIA_POST_ADMIN_EDUCATION_NO_TIERS_CTA: string; MEDIA_POST_ADMIN_EDUCATION_PETS_TAG: string; MEDIA_POST_ADMIN_EDUCATION_PRERELEASES_TAG: string; MEDIA_POST_ADMIN_EDUCATION_PREVIEW_TIMESTAMP: string; MEDIA_POST_ADMIN_EDUCATION_PREVIEW_TITLE_ONE: string; MEDIA_POST_ADMIN_EDUCATION_PREVIEW_TITLE_THREE: string; MEDIA_POST_ADMIN_EDUCATION_PREVIEW_TITLE_TWO: string; MEDIA_POST_ADMIN_EDUCATION_PREVIEW_USERNAME_ONE: string; MEDIA_POST_ADMIN_EDUCATION_PREVIEW_USERNAME_THREE: string; MEDIA_POST_ADMIN_EDUCATION_PREVIEW_USERNAME_TWO: string; MEDIA_POST_ADMIN_EDUCATION_SERVER_SUB_PILL: string; MEDIA_POST_ADMIN_EDUCATION_SHARE_SUBTITLE: string; MEDIA_POST_ADMIN_EDUCATION_SHARE_TITLE: string; MEDIA_POST_ADMIN_EDUCATION_TUTORIALS_TAG: string; MEDIA_POST_EMBED_AUTHOR_AVATAR_ALT: string; MEDIA_POST_EMBED_BLURRED_THUMBNAIL_TEXT: string; MEDIA_POST_EMBED_CHANNEL_ICON_ALT: string; MEDIA_POST_EMBED_FOOTER: FM<"guildName", true>; MEDIA_POST_EMBED_FOOTER_WEB: FM<["authorName", "authorNameHook"], true>; MEDIA_POST_EMBED_FOOTER_WITH_AUTHOR_AND_CHANNEL: FM<"channelName" | "username", true>; MEDIA_POST_EMBED_SUBSCRIBE_CTA: string; MEDIA_POST_EMBED_SUBSCRIBED_CTA: string; MEDIA_POST_EMBED_THUMBNAIL_ALT: string; MEDIA_POST_MULTIPLE_THUMBNAIL_NOTICE_DESCRIPTION: string; MEDIA_POST_MULTIPLE_THUMBNAIL_NOTICE_TITLE: string; MEDIA_POST_SHARE_PROMPT_CTA: string; MEDIA_POST_SHARE_PROMPT_SUBTITLE: FM<"helpArticleUrl", true>; MEDIA_POST_SHARE_PROMPT_SUBTITLE_MOBILE: FM; MEDIA_POST_SHARE_PROMPT_TITLE: string; MEDIA_VIEWER_ALT_TEXT_CTA: string; MEDIA_VIEWER_ALT_TEXT_FULL_TITLE: string; MEDIA_VIEWER_ALT_TEXT_PARTIAL_TITLE: string; MEDIA_VIEWER_REACTION_LABEL: string; MEMBER: string; MEMBER_ACTION_CHAT: string; MEMBER_ACTION_COMPLETE_EMPTY_STATE: string; MEMBER_ACTION_COMPLETE_EMPTY_STATE_CTA: string; MEMBER_ACTION_COMPLETE_MODAL_TEXT: string; MEMBER_ACTION_COMPLETE_MODAL_TEXT_WITH_COUNT: FM<"count", false>; MEMBER_ACTIONS_NEXT_STEP: FM<"step", false>; MEMBER_ACTIONS_READ_RULES_FIRST: FM<[never, "rulesHook"], true>; MEMBER_LIST: string; MEMBER_LIST_CONTENT_FEED_FIRST_TIME: string; MEMBER_LIST_CONTENT_FEED_LISTENED_TO_MEDIA: FM<"media", true>; MEMBER_LIST_CONTENT_FEED_LISTENING_TO_MEDIA: FM<"media", true>; MEMBER_LIST_CONTENT_FEED_MARATHON: string; MEMBER_LIST_CONTENT_FEED_MARATHON_TIME: FM<"hours", false>; MEMBER_LIST_CONTENT_FEED_NEW_RELEASE: string; MEMBER_LIST_CONTENT_FEED_PLAYED_GAME: FM<"gameName", true>; MEMBER_LIST_CONTENT_FEED_PLAYING_GAME: FM<"gameName", true>; MEMBER_LIST_CONTENT_FEED_RESURRECTED: string; MEMBER_LIST_CONTENT_FEED_RESURRECTED_AFTER: FM<"days" | "months" | "weeks", false>; MEMBER_LIST_CONTENT_FEED_STREAK_DAYS: FM<"days", false>; MEMBER_LIST_CONTENT_FEED_STREAK_TOOLTIP: FM<"days", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_ACTIVE: FM<"hours" | "minutes" | "seconds", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_DAYS_AGO: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_FOR_DAYS: FM<"days", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_FOR_HOURS: FM<"hours", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_HOURS: FM<"hours", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_HOURS_AGO: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_HOURS_THIS_WEEK: FM<"hours", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_MINUTES_AGO: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_MONTHS_AGO: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_SECONDS_AGO: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TIMESTAMP_WEEKS_AGO: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TOP_ARTIST_TRACKS_THIS_WEEK: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TOP_ARTIST_WEEK: FM<"artistName" | "userName", true>; MEMBER_LIST_CONTENT_FEED_TOP_ARTIST_WEEK_POPOUT: FM<"artist" | "userName", true>; MEMBER_LIST_CONTENT_FEED_TOP_GAME: string; MEMBER_LIST_CONTENT_FEED_TOP_GAME_WEEK_POPOUT: FM<"gameName" | "userName", true>; MEMBER_LIST_CONTENT_FEED_TRACKS_THIS_WEEK: FM<"count", false>; MEMBER_LIST_CONTENT_FEED_TRENDING: string; MEMBER_LIST_CONTENT_FEED_USER_IS_PLAYING_GAME: FM<"gameName" | "userName", true>; MEMBER_LIST_CONTENT_FEED_USER_IS_PLAYING_NEW_GAME: FM<"gameName" | "userName", true>; MEMBER_LIST_CONTENT_FEED_USER_LISTENING_TO_MEDIA_ARTIST: FM<"artist" | "media" | "userName", true>; MEMBER_LIST_CONTENT_FEED_USER_PLAYED_GAME: FM<"gameName" | "userName", true>; MEMBER_LIST_CONTENT_FEED_USER_PLAYED_NEW_GAME: FM<"gameName" | "userName", true>; MEMBER_LIST_CONTENT_FEED_USER_WATCHED_MEDIA: FM<"episodeDescription" | "mediaTitle" | "userName", true>; MEMBER_LIST_CONTENT_FEED_WATCH_SEASON_EPISODE: FM<"episodeNum" | "seasonNum", false>; MEMBER_LIST_CONTENT_FEED_WATCHED_MEDIA: FM<"mediaTitle", true>; MEMBER_LIST_CONTENT_POPOUT_BLOCKED_USER_WARNING: string; MEMBER_LIST_CONTENT_POPOUT_PREVIEW_VOICE_CHANNEL: string; MEMBER_LIST_HIDDEN: string; MEMBER_LIST_PRIVATE_THREAD_INSTRUCTIONS: string; MEMBER_LIST_SERVER_OWNER_HELP: string; MEMBER_LIST_SHOWN: string; MEMBER_SAFETY_ACCOUNT_AGE_LABEL: string; MEMBER_SAFETY_ACTION_NOTICE_BAN_ACTION: string; MEMBER_SAFETY_BANNER_HEADER: string; MEMBER_SAFETY_BANNER_SUBHEADER: string; MEMBER_SAFETY_CHANNEL_TITLE: string; MEMBER_SAFETY_COACHMARK_CTA: string; MEMBER_SAFETY_COACHMARK_DESCRIPTION: string; MEMBER_SAFETY_COACHMARK_TITLE: string; MEMBER_SAFETY_COMMUNICATION_DISABLED: string; MEMBER_SAFETY_COMMUNICATION_DISABLED_TOOLTIP: string; MEMBER_SAFETY_DATE_OPTION_AFTER: string; MEMBER_SAFETY_DATE_OPTION_AFTER_ONLY: FM<"date", false>; MEMBER_SAFETY_DATE_OPTION_BEFORE: string; MEMBER_SAFETY_DATE_OPTION_BEFORE_ONLY: FM<"date", false>; MEMBER_SAFETY_DATE_OPTION_LABEL_1_HOUR: string; MEMBER_SAFETY_DATE_OPTION_LABEL_24_HOURS: string; MEMBER_SAFETY_DATE_OPTION_LABEL_2_WEEKS: string; MEMBER_SAFETY_DATE_OPTION_LABEL_3_MONTHS: string; MEMBER_SAFETY_DATE_OPTION_LABEL_4_WEEKS: string; MEMBER_SAFETY_DATE_OPTION_LABEL_7_DAYS: string; MEMBER_SAFETY_DATE_OPTION_LABEL_ALL: string; MEMBER_SAFETY_DATE_OPTION_LABEL_CUSTOM: string; MEMBER_SAFETY_DM_AND_INVITES_PAUSED_HEADER: string; MEMBER_SAFETY_DM_PAUSED_HEADER: string; MEMBER_SAFETY_DM_RAID_ALERT_HEADER: string; MEMBER_SAFETY_GUILD_JOINED_AT_ASC: string; MEMBER_SAFETY_GUILD_JOINED_AT_DESC: string; MEMBER_SAFETY_INTEGRATION_TYPE_DISCORD: string; MEMBER_SAFETY_INTEGRATION_TYPE_GUILD_SUBSCRIPTION: string; MEMBER_SAFETY_INTEGRATION_TYPE_TWITCH: string; MEMBER_SAFETY_INTEGRATION_TYPE_YOUTUBE: string; MEMBER_SAFETY_INVITE_CODE_: string; MEMBER_SAFETY_INVITE_CODE_SEARCH_PLACEHOLDER: string; MEMBER_SAFETY_INVITES_PAUSED_HEADER: string; MEMBER_SAFETY_JOIN_METHOD_LABEL: string; MEMBER_SAFETY_JOIN_RAID_ALERT_HEADER: string; MEMBER_SAFETY_JOIN_TYPE_BOT_LABEL_NAME: string; MEMBER_SAFETY_JOIN_TYPE_DISCOVERY: string; MEMBER_SAFETY_JOIN_TYPE_FILTER_NAME: string; MEMBER_SAFETY_JOIN_TYPE_HIDDEN: string; MEMBER_SAFETY_JOIN_TYPE_HIDDEN_TOOLTIP: string; MEMBER_SAFETY_JOIN_TYPE_HUB: string; MEMBER_SAFETY_JOIN_TYPE_HUB_LABEL_NAME: string; MEMBER_SAFETY_JOIN_TYPE_INVITE: string; MEMBER_SAFETY_JOIN_TYPE_LABEL_NAME: string; MEMBER_SAFETY_JOIN_TYPE_MANUAL_VERIFICATION: string; MEMBER_SAFETY_JOIN_TYPE_MANUAL_VERIFICATION_CODE: FM<"code", false>; MEMBER_SAFETY_JOIN_TYPE_UNKNOWN: string; MEMBER_SAFETY_JOIN_TYPE_VANITY: string; MEMBER_SAFETY_JOIN_TYPE_VANITY_URL: string; MEMBER_SAFETY_JOIN_TYPE_VANITY_URL_LABEL_NAME: FM<"vanityUrl", false>; MEMBER_SAFETY_JOINED_DATE_LABEL: string; MEMBER_SAFETY_LOCKDOWN_SUBHEADER: string; MEMBER_SAFETY_MEMBER_ROW_ARIA_LABEL: FM<"name", false>; MEMBER_SAFETY_MORE_ROLES_TOOLTIP: string; MEMBER_SAFETY_QUARANTINED_USER_TOOLTIP: string; MEMBER_SAFETY_RAID_ALERT_SUBHEADER: FM<"dateTime", false>; MEMBER_SAFETY_RESOLVE_RAID_ALERT_BUTTON: string; MEMBER_SAFETY_SIGNALS_DESCRIPTION: string; MEMBER_SAFETY_TABLE_ADD_ROLES_TOOLTIP: string; MEMBER_SAFETY_TABLE_FLAGS_POPOUT_TITLE: string; MEMBER_SAFETY_TABLE_HEADER_ACCOUNT_AGE: string; MEMBER_SAFETY_TABLE_HEADER_FLAGS: string; MEMBER_SAFETY_TABLE_HEADER_JOINED_AT: string; MEMBER_SAFETY_TABLE_HEADER_NAME: string; MEMBER_SAFETY_TABLE_HEADER_ROLES: string; MEMBER_SAFETY_TABLE_MOD_VIEW_TOOLTIP: string; MEMBER_SAFETY_TABLE_NEW_MEMBER_NOTICE_ACTION: string; MEMBER_SAFETY_TABLE_NEW_MEMBER_NOTICE_LABEL: FM<"count" | "date", false>; MEMBER_SAFETY_TABLE_NO_RESULTS: string; MEMBER_SAFETY_TABLE_OVERFLOW_TOOLTIP: string; MEMBER_SAFETY_TABLE_PAGINATION_ADVANCED_LABEL: FM<"pageRange" | "total", true>; MEMBER_SAFETY_TABLE_PAGINATION_LABEL: FM<"count", true>; MEMBER_SAFETY_TABLE_PAGINATION_NO_PAGE_NUMBERS_LABEL: FM<"count", true>; MEMBER_SAFETY_TABLE_PAGINATION_PRE_LABEL: string; MEMBER_SAFETY_TABLE_PAGINATION_TOOLTIP: string; MEMBER_SAFETY_TABLE_PROFILE_TOOLTIP: string; MEMBER_SAFETY_TABLE_SEARCH_PLACEHOLDER: string; MEMBER_SAFETY_TABLE_TITLE: string; MEMBER_SAFETY_TABLE_TITLE_SEARCH: string; MEMBER_SAFETY_UNUSUAL_ACCOUNT_ACTIVITY_TOOLTIP: string; MEMBER_SAFETY_UNUSUAL_DM_ACTIVITY: string; MEMBER_SAFETY_UNUSUAL_DM_ACTIVITY_TOOLTIP: string; MEMBER_SAFETY_USER_JOINED_AT_ASC: string; MEMBER_SAFETY_USER_JOINED_AT_DESC: string; MEMBER_VERIFICATION_ACCOUNT_VERIFIED: string; MEMBER_VERIFICATION_ADD_QUESTION: string; MEMBER_VERIFICATION_ADD_QUESTIONS: string; MEMBER_VERIFICATION_ADD_QUESTIONS_DESCRIPTION: string; MEMBER_VERIFICATION_ADD_RULE: string; MEMBER_VERIFICATION_AGREED_TO_RULES: string; MEMBER_VERIFICATION_APPLICATION_CONFIRMATION_SUBTITLE: string; MEMBER_VERIFICATION_APPLICATION_CONFIRMATION_TITLE: string; MEMBER_VERIFICATION_APPLICATION_CONFIRMATION_TITLE_WITH_GUILD_NAME: FM<"guildName", false>; MEMBER_VERIFICATION_APPLICATION_REAPPLY: string; MEMBER_VERIFICATION_APPLICATION_REJECTED_ICON: string; MEMBER_VERIFICATION_APPLICATION_REJECTED_NOTICE_TITLE: string; MEMBER_VERIFICATION_APPLICATION_REJECTED_REASON: string; MEMBER_VERIFICATION_APPLICATION_REJECTED_TITLE: string; MEMBER_VERIFICATION_APPLICATION_REJECTED_TITLE_WITH_GUILD_NAME: FM<"guildName", false>; MEMBER_VERIFICATION_APPROVED_APPLICATION_MODAL_CONFIRM: string; MEMBER_VERIFICATION_APPROVED_APPLICATION_MODAL_DESC: string; MEMBER_VERIFICATION_APPROVED_APPLICATION_MODAL_TITLE: FM<"guildName", false>; MEMBER_VERIFICATION_AUTOMATIC_DISABLED: string; MEMBER_VERIFICATION_AUTOMATIC_ENABLED: string; MEMBER_VERIFICATION_AUTOMATIC_WARNING: string; MEMBER_VERIFICATION_CANCEL_APPLICATION: string; MEMBER_VERIFICATION_CANCEL_APPLICATION_SUBTITLE: string; MEMBER_VERIFICATION_CANCEL_PENDING_APPLICATION_MODAL_DESC: string; MEMBER_VERIFICATION_CANCEL_PENDING_APPLICATION_MODAL_TITLE: string; MEMBER_VERIFICATION_CHAT_BLOCKER_TEXT: string; MEMBER_VERIFICATION_CHOICES_REQUIRED_ERROR: string; MEMBER_VERIFICATION_CLAIM_ACCOUNT_ICON: string; MEMBER_VERIFICATION_CLAIM_ACCOUNT_INFO: string; MEMBER_VERIFICATION_CLAIM_ACCOUNT_SUBTITLE: string; MEMBER_VERIFICATION_CLAIM_ACCOUNT_TITLE: string; MEMBER_VERIFICATION_CONFIRM_APPROVE_ALL_AND_DISABLE: string; MEMBER_VERIFICATION_CONFIRM_LEAVE_TITLE: string; MEMBER_VERIFICATION_DELETE_FIELD_CONFIRM_TEXT: string; MEMBER_VERIFICATION_DELETE_FIELD_CONFIRM_TITLE: string; MEMBER_VERIFICATION_DISABLE_CONFIRM_APPROVE_ALL: string; MEMBER_VERIFICATION_DISABLE_CONFIRM_BODY: string; MEMBER_VERIFICATION_DISABLE_CONFIRM_KICK_ALL: string; MEMBER_VERIFICATION_DISABLE_CONFIRM_TITLE: string; MEMBER_VERIFICATION_EMAIL_CONFIRMATION_SUBTITLE: string; MEMBER_VERIFICATION_EMAIL_CONFIRMATION_TITLE: FM<"email", false>; MEMBER_VERIFICATION_EMAIL_RESEND: string; MEMBER_VERIFICATION_EMAIL_VERIFICATION_EMAIL_SENT: string; MEMBER_VERIFICATION_EMAIL_VERIFICATION_ENABLED: string; MEMBER_VERIFICATION_EMAIL_VERIFICATION_RESEND_EMAIL: string; MEMBER_VERIFICATION_EMAIL_VERIFIED: string; MEMBER_VERIFICATION_EXAMPLE_RULES: string; MEMBER_VERIFICATION_EXAMPLE_RULES_SUBTITLE: string; MEMBER_VERIFICATION_FIELD_QUESTION: string; MEMBER_VERIFICATION_FIELD_QUESTION_REQUIRED_ERROR: string; MEMBER_VERIFICATION_FOLDER_NAME: string; MEMBER_VERIFICATION_FORM_FIELDS_LIMIT: FM<"number", false>; MEMBER_VERIFICATION_FORM_INCOMPLETE: string; MEMBER_VERIFICATION_FORM_ITEM_COMING_SOON: string; MEMBER_VERIFICATION_FORM_ITEM_EMAIL_VERIFICATION_LABEL: string; MEMBER_VERIFICATION_FORM_ITEM_EMAIL_VERIFICATION_LABEL_VERIFIED: string; MEMBER_VERIFICATION_FORM_ITEM_EMAIL_VERIFICATION_SETTINGS_LABEL: string; MEMBER_VERIFICATION_FORM_ITEM_MULTIPLE_CHOICE: string; MEMBER_VERIFICATION_FORM_ITEM_PARAGRAPH: string; MEMBER_VERIFICATION_FORM_ITEM_PHONE_VERIFICATION_LABEL: string; MEMBER_VERIFICATION_FORM_ITEM_PHONE_VERIFICATION_LABEL_VERIFIED: string; MEMBER_VERIFICATION_FORM_ITEM_PHONE_VERIFICATION_SETTINGS_LABEL: string; MEMBER_VERIFICATION_FORM_ITEM_RULES: string; MEMBER_VERIFICATION_FORM_ITEM_TEXT_INPUT: string; MEMBER_VERIFICATION_FORM_ITEM_VERIFICATION: string; MEMBER_VERIFICATION_FORM_PASSED_REQUIREMENTS: string; MEMBER_VERIFICATION_FORM_REQUIRED_ITEM: string; MEMBER_VERIFICATION_FORM_RULES_LABEL: string; MEMBER_VERIFICATION_FORM_VERIFICATION_SETTINGS: FM; MEMBER_VERIFICATION_GET_STARTED_BUTTON: string; MEMBER_VERIFICATION_GET_STARTED_DESCRIPTION: string; MEMBER_VERIFICATION_GET_STARTED_SUBTITLE: string; MEMBER_VERIFICATION_GET_STARTED_TITLE: string; MEMBER_VERIFICATION_GUILD_VERIFICATION_LEVEL: FM<[never, "verificationLevelHook"], true>; MEMBER_VERIFICATION_ICON_DESC: string; MEMBER_VERIFICATION_LEARN_MORE: string; MEMBER_VERIFICATION_LEAVE_APPLICATION_COMPLETE_LATER: string; MEMBER_VERIFICATION_LEAVE_APPLICATION_DESC: string; MEMBER_VERIFICATION_LEAVE_APPLICATION_TITLE: string; MEMBER_VERIFICATION_MANUAL: string; MEMBER_VERIFICATION_MEMBER_APPLICATION: string; MEMBER_VERIFICATION_MEMBER_APPLICATION_SETUP: string; MEMBER_VERIFICATION_MEMBER_APPLICATIONS: string; MEMBER_VERIFICATION_MODAL_PRIVACY_DESCRIPTION: string; MEMBER_VERIFICATION_MODAL_PRIVACY_DESCRIPTION_EMAIL: string; MEMBER_VERIFICATION_MODAL_SUBTITLE: string; MEMBER_VERIFICATION_MODAL_TITLE: string; MEMBER_VERIFICATION_MODAL_TITLE_WITH_GUILD_NAME: FM<"guildName", false>; MEMBER_VERIFICATION_MULTIPLE_CHOICE_ADD: string; MEMBER_VERIFICATION_MULTIPLE_CHOICE_PLACEHOLDER: FM<"index", false>; MEMBER_VERIFICATION_MUST_READ_RULES: string; MEMBER_VERIFICATION_NEED_RULES_CHANNEL_PERMS: string; MEMBER_VERIFICATION_NOTICE_CTA: string; MEMBER_VERIFICATION_NOTICE_TEXT: string; MEMBER_VERIFICATION_NUM_EMOJIS: FM<"emojis", false>; MEMBER_VERIFICATION_NUM_MEMBERS: FM<"members", false>; MEMBER_VERIFICATION_NUM_ONLINE: FM<"membersOnline", false>; MEMBER_VERIFICATION_OFF: string; MEMBER_VERIFICATION_ON: string; MEMBER_VERIFICATION_OTHER_RULES: FM<"count", false>; MEMBER_VERIFICATION_PENDING_APPLICATION_CANCEL_MODAL_TITLE: string; MEMBER_VERIFICATION_PENDING_APPLICATION_ICON: string; MEMBER_VERIFICATION_PENDING_APPLICATION_LEAVE_SERVER_MODAL_DESC: string; MEMBER_VERIFICATION_PENDING_APPLICATION_LEAVE_SERVER_MODAL_TITLE: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_CANCEL: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_CONFIRM: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_DESC: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_DISMISS: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_LEAVE: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_REAPPLY: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_TITLE: string; MEMBER_VERIFICATION_PENDING_APPLICATION_MODAL_WITHDRAW_AND_LEAVE: string; MEMBER_VERIFICATION_PENDING_APPLICATION_NOTICE_TITLE: string; MEMBER_VERIFICATION_PHONE_VERIFICATION_ENABLED: string; MEMBER_VERIFICATION_PHONE_VERIFIED: string; MEMBER_VERIFICATION_PREVIEW_APPLICATION: string; MEMBER_VERIFICATION_PREVIEW_DISABLED_MARKDOWN_WARNING: string; MEMBER_VERIFICATION_PROGRESS_LOST_CONTINUE: string; MEMBER_VERIFICATION_PROGRESS_LOST_TITLE: string; MEMBER_VERIFICATION_READ_AGREE_RULES: string; MEMBER_VERIFICATION_READ_RULES: string; MEMBER_VERIFICATION_REJECTED_TITLE: string; MEMBER_VERIFICATION_RULE_BE_RESPECTFUL: string; MEMBER_VERIFICATION_RULE_BE_RESPECTFUL_FULL: string; MEMBER_VERIFICATION_RULE_INDEX: FM<"ruleIndex", false>; MEMBER_VERIFICATION_RULE_LIMIT: FM<"number", false>; MEMBER_VERIFICATION_RULE_NO_NSFW: string; MEMBER_VERIFICATION_RULE_NO_NSFW_FULL: string; MEMBER_VERIFICATION_RULE_NO_SPAM: string; MEMBER_VERIFICATION_RULE_NO_SPAM_FULL: string; MEMBER_VERIFICATION_RULE_PLACEHOLDER: string; MEMBER_VERIFICATION_RULE_SAFE: string; MEMBER_VERIFICATION_RULE_SAFE_FULL: string; MEMBER_VERIFICATION_RULE_TOOLTIP: string; MEMBER_VERIFICATION_RULES_REQUIRED_ERROR: string; MEMBER_VERIFICATION_VERIFICATION_FIELD_SETTINGS_TOOLTIP: string; MEMBER_VERIFICATION_VERIFICATION_ICON: string; MEMBER_VERIFICATION_VERIFIED: string; MEMBER_VERIFICATION_VERIFY_EMAIL_ICON: string; MEMBER_VERIFICATION_VERSION_MISMATCH_ERROR: string; MEMBER_VERIFICATION_WARNING: string; MEMBER_VERIFICATION_WARNING_CANCEL: string; MEMBER_VERIFICATION_WARNING_CONFIRM: string; MEMBER_VERIFICATION_WARNING_DESCRIPTION: string; MEMBER_VERIFICATION_WARNING_DESCRIPTION_AND_FIELDS: string; MEMBER_VERIFICATION_WARNING_FIELDS: string; MEMBER_VERIFICATION_WARNING_TITLE: string; MEMBER_VERIFICATION_WARNING_UPDATE: string; MEMBER_VERIFICATION_WARNING_UPDATE_MODAL_DESC: string; MEMBER_VERIFICATION_WARNING_UPDATE_MODAL_TITLE: string; MEMBER_VERIFICATION_WITHDRAW_APPLICATION_CONFIRMATION: FM<"name", true>; MEMBERS: string; MEMBERS_HEADER: FM<"members", false>; MEMBERS_LIST_LANDMARK_LABEL: FM<"channel", false>; MEMBERS_MATCHING: FM<"prefix", true>; MEMBERS_SAFETY_UNKNOWN_INVITE_CODE: string; MEMBERS_SEARCH_PLACEHOLDER: string; MEMBERS_TABLE_ACCOUNT_AGE_TIMESTAMP_DAYS: FM<"count", false>; MEMBERS_TABLE_ACCOUNT_AGE_TIMESTAMP_HOURS: string; MEMBERS_TABLE_ACCOUNT_AGE_TIMESTAMP_MORE_THAN_MONTH: FM<"count", false>; MEMBERS_TABLE_ACCOUNT_AGE_TIMESTAMP_MORE_THAN_YEAR: FM<"count", false>; MEMBERS_TABLE_JOINED_AT_TIMESTAMP_DAYS: FM<"count", false>; MEMBERS_TABLE_JOINED_AT_TIMESTAMP_HOURS: FM<"count", false>; MEMBERS_TABLE_JOINED_AT_TIMESTAMP_MINUTES: FM<"count", false>; MEMBERS_TABLE_JOINED_AT_TIMESTAMP_MORE_THAN_MONTH: FM<"count", false>; MEMBERS_TABLE_JOINED_AT_TIMESTAMP_MORE_THAN_YEAR: FM<"count", false>; MEMBERS_TABLE_JOINED_AT_TIMESTAMP_SECONDS: string; MEMBERS_TABLE_MEMBER_SEARCH_LOADING: string; MEMBERS_TABLE_NEW_MEMBER_TIMESTAMP_REFRESH_MODAL_DESCRIPTION: string; MEMBERS_TABLE_NEW_MEMBER_TIMESTAMP_REFRESH_MODAL_TITLE: string; MEMBERS_TABLE_ROLE_SELECTION_CANCEL: string; MEMBERS_TABLE_ROLE_SELECTION_CONFIRM: string; MEMBERS_TABLE_ROLE_SELECTION_PLACEHOLDER: string; MENTION: string; MENTION_EVERYONE: string; MENTION_EVERYONE_ANDROID: string; MENTION_EVERYONE_AUTOCOMPLETE_DESCRIPTION: string; MENTION_EVERYONE_AUTOCOMPLETE_DESCRIPTION_MOBILE: string; MENTION_EVERYONE_AUTOCOMPLETE_DESCRIPTION_THREADS: string; MENTION_EVERYONE_CHANNEL_DESCRIPTION: FM; MENTION_EVERYONE_DESCRIPTION: string; MENTION_EVERYONE_STAGE: string; MENTION_HERE_AUTOCOMPLETE_DESCRIPTION: string; MENTION_HERE_AUTOCOMPLETE_DESCRIPTION_MOBILE: string; MENTION_HERE_AUTOCOMPLETE_DESCRIPTION_THREADS: string; MENTION_ROLE_AUTOCOMPLETE_DESCRIPTION_MOBILE: string; MENTION_USER: FM<"username", false>; MENTION_USERS_WITH_ROLE: string; MENTIONS: string; MENTIONS_AND_QUICKSWITCHER: string; MENTIONS_COUNT: FM<"count", false>; MERCHANDISE: string; MESSAGE_A11Y_ROLE_DESCRIPTION: string; MESSAGE_ACTION_FORWARD: string; MESSAGE_ACTION_FORWARD_EMBED_A11Y: string; MESSAGE_ACTION_FORWARD_MEDIA_A11Y: string; MESSAGE_ACTION_FORWARD_TO: string; MESSAGE_ACTION_REPLY: string; MESSAGE_ACTIONS_MENU_LABEL: string; MESSAGE_ATTACHMENT_A11Y_LABEL: FM<"name", false>; MESSAGE_ATTACHMENT_MOBILE_A11Y_HINT: string; MESSAGE_ATTACHMENTS: string; MESSAGE_BOOKMARKS_CREATE_FAIL: string; MESSAGE_BOOKMARKS_EMPTY: string; MESSAGE_BOOKMARKS_EMPTY_TIP: string; MESSAGE_BOOKMARKS_HEADER: string; MESSAGE_BUTTON_COMPONENT_LINK_CONTEXT_MENU_COPY: string; MESSAGE_BUTTON_COMPONENT_LINK_CONTEXT_MENU_NAME: string; MESSAGE_CHANNEL_ATTACHMENTS_DISABLED: string; MESSAGE_CHANNEL_EMBEDS_DISABLED: string; MESSAGE_CHANNEL_EXTERNAL_STICKERS_DISABLED: string; MESSAGE_DISPLAY_MODE_LABEL: string; MESSAGE_EDITED: string; MESSAGE_EDITED_TIMESTAMP_A11Y_LABEL: FM<"timeFormatted", false>; MESSAGE_FORWARD_FAILED: string; MESSAGE_FORWARD_FAILED_BODY: FM<"count", false>; MESSAGE_FORWARD_FOOTER_A11Y: FM<"timestamp", false>; MESSAGE_FORWARD_FOOTER_WITH_ORIGIN_A11Y: FM<"origin" | "timestamp", false>; MESSAGE_FORWARD_MESSAGE_PLACEHOLDER: string; MESSAGE_FORWARD_STAFF_NON_STAFF_CONFIRM: string; MESSAGE_FORWARD_STAFF_NON_STAFF_CONTENT: string; MESSAGE_FORWARD_STAFF_NON_STAFF_TITLE: string; MESSAGE_FORWARD_SUBTITLE: string; MESSAGE_FORWARD_SUCCESS: string; MESSAGE_FORWARDED: string; MESSAGE_FORWARDED_NOTIFICATION_BODY: string; MESSAGE_FORWARDING_NSFW_NOT_ALLOWED: string; MESSAGE_GAME_ICON_TOOLTIP: string; MESSAGE_HOVER_BAR_REACTION_SUGGESTION_ADD: string; MESSAGE_HOVER_BAR_REACTION_SUGGESTION_ADD_ALLY: FM<"emojiName", false>; MESSAGE_HOVER_BAR_REACTION_SUGGESTION_REMOVE: string; MESSAGE_HOVER_BAR_REACTION_SUGGESTION_REMOVE_ALLY: FM<"emojiName", false>; MESSAGE_PINNED: string; MESSAGE_PREVIEW: string; MESSAGE_PUBLISHED: string; MESSAGE_RATE_LIMITED_BODY: string; MESSAGE_RATE_LIMITED_BUTTON: string; MESSAGE_RATE_LIMITED_HEADER: string; MESSAGE_REMINDER_NOTIFICATION_BODY: FM<"message" | "username", false>; MESSAGE_REMINDER_NOTIFICATION_TITLE: string; MESSAGE_REMINDERS_CREATE: string; MESSAGE_REMINDERS_CUSTOM_DUE: string; MESSAGE_REMINDERS_DUE_IN: FM<"duration", false>; MESSAGE_REMINDERS_EDIT: string; MESSAGE_REMINDERS_HEADER: string; MESSAGE_REMINDERS_HEADER_ALL: string; MESSAGE_REMINDERS_HEADER_MOBILE: string; MESSAGE_REMINDERS_HEADER_OVERDUE: string; MESSAGE_REMINDERS_HEADER_SHOW_ALL: FM<"count", false>; MESSAGE_REMINDERS_HEADER_SHOW_OVERDUE: FM<"count", false>; MESSAGE_REMINDERS_IN_FOUR_HOURS: string; MESSAGE_REMINDERS_IN_ONE_DAY: string; MESSAGE_REMINDERS_IN_ONE_HOUR: string; MESSAGE_REMINDERS_IN_ONE_WEEK: string; MESSAGE_REMINDERS_IN_THIRTY_MIN: string; MESSAGE_REMINDERS_IN_TWO_HOURS: string; MESSAGE_REMINDERS_MARK_AS_DONE: string; MESSAGE_REMINDERS_MARK_COMPLETE: string; MESSAGE_REMINDERS_NEVER: string; MESSAGE_REMINDERS_OVERDUE: FM<"duration", false>; MESSAGE_REMINDERS_REMIND_ME: string; MESSAGE_REMINDERS_SET_CUSTOM: string; MESSAGE_REMINDERS_SNOOZE: string; MESSAGE_REMINDERS_SNOOZE_FOR: FM<"duration", false>; MESSAGE_REQUEST_ACCEPT: string; MESSAGE_REQUEST_ACCEPT_CONFIRMATION_BODY: string; MESSAGE_REQUEST_ACCEPT_CONFIRMATION_TITLE: string; MESSAGE_REQUEST_BANNER_SUBTITLE: string; MESSAGE_REQUEST_BANNER_TITLE: string; MESSAGE_REQUEST_BLOCK_ON_REJECT_CONFIRMATION_BODY: string; MESSAGE_REQUEST_BLOCK_ON_REJECT_CONFIRMATION_TITLE: string; MESSAGE_REQUEST_IGNORE: string; MESSAGE_REQUEST_INCOMING: string; MESSAGE_REQUEST_PREVIEW: string; MESSAGE_REQUEST_REQUEST_ERROR_ALERT_TITLE: string; MESSAGE_REQUEST_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_ACCEPT: string; MESSAGE_REQUEST_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_IGNORE: string; MESSAGE_REQUEST_ROW_SELECT_ACCESSIBILITY_LABEL: string; MESSAGE_REQUEST_SECTION_HEADER: FM<"pendingRequestNumber", false>; MESSAGE_REQUESTS: string; MESSAGE_REQUESTS_BLOCKED_MESSAGE: string; MESSAGE_REQUESTS_CHANNEL_SIDEBAR_HAM_BUTTON: string; MESSAGE_REQUESTS_CHANNEL_SIDEBAR_HAM_HEADER: string; MESSAGE_REQUESTS_CLEAR_ALL: string; MESSAGE_REQUESTS_COACHMARK_CONFIRM: string; MESSAGE_REQUESTS_COACHMARK_CONTENT: string; MESSAGE_REQUESTS_COACHMARK_CONTENT_TEENS: string; MESSAGE_REQUESTS_COACHMARK_DISMISS: string; MESSAGE_REQUESTS_COACHMARK_TITLE: string; MESSAGE_REQUESTS_CONTEXT_MENU_CLEAR: string; MESSAGE_REQUESTS_CONTEXT_MENU_MOVE_TO: string; MESSAGE_REQUESTS_DELETED_MESSAGE: string; MESSAGE_REQUESTS_EMPTY_STATE_BODY: string; MESSAGE_REQUESTS_ERROR_LOADING_PREVIEW: string; MESSAGE_REQUESTS_HAM_ACTIONSHEET_TOGGLE_TEXT: string; MESSAGE_REQUESTS_NO_TEXT_CONTENT_MOBILE: string; MESSAGE_REQUESTS_PAGE_TITLE: string; MESSAGE_REQUESTS_PAGE_TITLE_WITH_COUNT: FM<"count", false>; MESSAGE_REQUESTS_REQUESTS_TAB_TITLE: string; MESSAGE_REQUESTS_SETTING_GENERAL_CAPTION: FM<"helpdeskArticle", true>; MESSAGE_REQUESTS_SETTING_GENERAL_HEADER: string; MESSAGE_REQUESTS_SETTING_GENERAL_MODAL_DESCRIPTION: string; MESSAGE_REQUESTS_SETTING_GENERAL_MODAL_HEADER: string; MESSAGE_REQUESTS_SPAM_ACCEPT: string; MESSAGE_REQUESTS_SPAM_BOTTOMSHEET_HEADER: string; MESSAGE_REQUESTS_SPAM_EMPTY_STATE_BODY: string; MESSAGE_REQUESTS_SPAM_ERROR_ALERT_TITLE: string; MESSAGE_REQUESTS_SPAM_HAM: string; MESSAGE_REQUESTS_SPAM_HAM_MODAL_HEADER: string; MESSAGE_REQUESTS_SPAM_HAM_MODAL_SUBHEADER: string; MESSAGE_REQUESTS_SPAM_HAM_OPT_OUT: string; MESSAGE_REQUESTS_SPAM_HAM_TOGGLE: string; MESSAGE_REQUESTS_SPAM_HEADER: FM<"count", false>; MESSAGE_REQUESTS_SPAM_IGNORE: string; MESSAGE_REQUESTS_SPAM_MOBILE_HEADER: FM<"count", false>; MESSAGE_REQUESTS_SPAM_REPORT: string; MESSAGE_REQUESTS_SPAM_REQUEST_BOTTOMSHEET_ACCEPT: string; MESSAGE_REQUESTS_SPAM_REQUEST_BOTTOMSHEET_HEADER: string; MESSAGE_REQUESTS_SPAM_REQUEST_BOTTOMSHEET_SUBHEADER: string; MESSAGE_REQUESTS_SPAM_REQUEST_ERROR_ALERT_TITLE: string; MESSAGE_REQUESTS_SPAM_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_ACCEPT: string; MESSAGE_REQUESTS_SPAM_ROW_ACTION_BUTTON_ACCESSIBILITY_LABEL_IGNORE: string; MESSAGE_REQUESTS_SPAM_ROW_SELECT_ACCESSIBILITY_LABEL: string; MESSAGE_REQUESTS_SPAM_TAB_TITLE: string; MESSAGE_REQUESTS_SPAM_TAB_TITLE_WITH_COUNT: FM<"count", false>; MESSAGE_REQUESTS_STICKER_MOBILE: string; MESSAGE_REQUESTS_UNABLE_TO_RENDER_PREVIEW: string; MESSAGE_SELECT_COMPONENT_DEFAULT_PLACEHOLDER: string; MESSAGE_SELECT_COMPONENT_MAX_SELECT_REQUIREMENT: FM<"count", false>; MESSAGE_SELECT_COMPONENT_SELECT_REQUIREMENT: FM<"count", false>; MESSAGE_SENDING_TIMESTAMP: string; MESSAGE_TOO_LONG_BODY_TEXT: FM<"currentLength" | "maxLength", false>; MESSAGE_TOO_LONG_HEADER: string; MESSAGE_TTS: FM<"body" | "username", false>; MESSAGE_TTS_DELETED_ROLE: string; MESSAGE_TTS_REPLY: FM<"body" | "replyUsername" | "username", false>; MESSAGE_UNPINNED: string; MESSAGE_UNSUPPORTED: string; MESSAGE_UTILITIES_A11Y_LABEL: string; MESSAGES: string; MESSAGES_FAILED_TO_LOAD: string; MESSAGES_FAILED_TO_LOAD_TRY_AGAIN: string; MESSAGES_FORWARD_MAX_DESTINATION_COUNT: FM<"count", false>; MESSAGES_SEND_SEPARATELY: FM<"count", false>; MFA_SMS_ADD_PHONE: string; MFA_SMS_ALREADY_ENABLED: string; MFA_SMS_AUTH: string; MFA_SMS_AUTH_CURRENT_PHONE: FM<"phoneNumber", false>; MFA_SMS_AUTH_SALES_PITCH: string; MFA_SMS_CONFIRM_REMOVE_ACTION: string; MFA_SMS_CONFIRM_REMOVE_BODY: string; MFA_SMS_DISABLED_NO_EMAIL: string; MFA_SMS_DISABLED_PARTNER: string; MFA_SMS_ENABLE: string; MFA_SMS_ENABLE_SHOULD_DO: FM; MFA_SMS_PHONE_NUMBER_HIDE: string; MFA_SMS_PHONE_NUMBER_REVEAL: string; MFA_SMS_RECEIVE_CODE: string; MFA_SMS_REMOVE: string; MFA_SMS_RESEND: string; MFA_V2_BACKUP: string; MFA_V2_BACKUP_NAME: string; MFA_V2_CANCELED: string; MFA_V2_CHOOSE: string; MFA_V2_CHOOSE_DESCRIPTION: string; MFA_V2_DESCRIPTION: string; MFA_V2_GO_TO_SELECT: string; MFA_V2_HEADER: string; MFA_V2_INVALID_CODE: string; MFA_V2_INVALID_PASSWORD: string; MFA_V2_INVALID_WEBAUTHN: string; MFA_V2_PASSKEY_ANDROID_CTA: string; MFA_V2_PASSWORD: string; MFA_V2_PASSWORD_NAME: string; MFA_V2_SELECT_HEADER: string; MFA_V2_SMS_NAME: string; MFA_V2_SMS_RESEND: string; MFA_V2_TOTP: string; MFA_V2_TOTP_NAME: string; MFA_V2_WEBAUTHN_ANDROID_CTA: string; MFA_V2_WEBAUTHN_CTA: string; MFA_V2_WEBAUTHN_GENERIC_ERROR: string; MFA_V2_WEBAUTHN_NAME: string; MIC_TEST_VOICE_CHANNEL_WARNING: string; MINIMUM_LENGTH: FM<"minLength", false>; MINIMUM_LENGTH_ERROR: FM<"minLength", false>; MINIMUM_SIZE: FM<"size", true>; MISSED_CALL: string; MISSING_ENTITLEMENT_MODAL_BODY: FM<"applicationName" | "supportArticleURL", true>; MISSING_ENTITLEMENT_MODAL_BODY_UNKNOWN_APPLICATION: FM<"supportArticleURL", true>; MISSING_ENTITLEMENT_MODAL_HEADER: FM<"applicationName", false>; MISSING_ENTITLEMENT_MODAL_HEADER_UNKNOWN_APPLICATION: string; MISSING_PAYMENT_METHOD_BANNER: string; MJ_CHATBAR_BODY: FM<[never, "commandHook"], true>; MOBILE_ADVANCED_VOICE_ACTIVITY_CPU_OVERUSE: string; MOBILE_AUTOMATIC_THEME: string; MOBILE_AUTOMATIC_THEME_SHORT: string; MOBILE_CLIENT_THEMES_UPSELL_BODY: string; MOBILE_CUSTOM_GIFT_DURATION_AVATAR_LABEL: FM<"username", false>; MOBILE_CUSTOM_GIFT_DURATION_LABEL: string; MOBILE_CUSTOM_GIFT_DURATION_SELECTION_MONTH: FM<"count" | "nitroTierName", false>; MOBILE_CUSTOM_GIFT_DURATION_SELECTION_MONTH_WITH_USERNAME: FM<"count" | "nitroTierName" | "username", false>; MOBILE_CUSTOM_GIFT_DURATION_SELECTION_YEAR: FM<"count" | "nitroTierName", false>; MOBILE_CUSTOM_GIFT_DURATION_SELECTION_YEAR_WITH_USERNAME: FM<"count" | "nitroTierName" | "username", false>; MOBILE_CUSTOM_GIFT_PAID_SERVICE_TERMS_AGREEMENT: FM<"paidURL", true>; MOBILE_CUSTOM_GIFT_PLAN_SELECTION_BODY: string; MOBILE_CUSTOM_GIFT_PLAN_SELECTION_CARD_HEADER: string; MOBILE_CUSTOM_GIFT_PLAN_SELECTION_CHOOSE_MONTHLY_OR_YEARLY_V2: FM<"monthlyPrice" | "yearlyPrice", false>; MOBILE_CUSTOM_GIFT_PLAN_SELECTION_HEADER: FM<"username", false>; MOBILE_CUSTOM_GIFT_PLAN_SELECTION_HEADER_NO_USERNAME: string; MOBILE_CUSTOM_GIFT_SUCCESS_BODY: string; MOBILE_CUSTOM_GIFT_SUCCESS_HEADER: string; MOBILE_CUSTOM_GIFT_TITLE_WITH_PLAN: FM<"nitroTierName", false>; MOBILE_DESIGNATE_OTHER_CHANNEL: FM; MOBILE_ENABLE_HARDWARE_SCALING: string; MOBILE_ENABLE_HARDWARE_SCALING_DESC: string; MOBILE_GUILD_LIST_CONTEXT_MENU_ACTION_BUTTON_A11Y_LABEL: string; MOBILE_GUILD_LIST_CONTEXT_MENU_ADD_A_SERVER: string; MOBILE_GUILD_LIST_CONTEXT_MENU_CUSTOMIZE: string; MOBILE_GUILD_LIST_CONTEXT_MENU_GRID_VIEW: string; MOBILE_GUILD_LIST_CONTEXT_MENU_LIST_VIEW: string; MOBILE_HUB_EMAIL_CONNECTION_CONTENT_DESCRIPTION: FM; MOBILE_HUB_EMAIL_CONNECTION_SIDEBAR_DESCRIPTION_1: string; MOBILE_HUB_EMAIL_CONNECTION_SIDEBAR_DESCRIPTION_2: string; MOBILE_HUB_EMAIL_CONNECTION_SIDEBAR_DESCRIPTION_3: string; MOBILE_HUB_EMAIL_CONNECTION_SIDEBAR_DESCRIPTION_4: string; MOBILE_MANAGE_SUBSCRIPTION_DESKTOP: FM<"mobilePlatform", false>; MOBILE_MANAGE_SUBSCRIPTION_EXTERNAL: FM<"externalPaymentGateway" | "mobilePlatform", false>; MOBILE_NOISE_CANCELLATION_CPU_OVERUSE: string; MOBILE_NOISE_CANCELLATION_FAILED: string; MOBILE_NOISE_CANCELLATION_POPOUT_DESCRIPTION: string; MOBILE_NOISE_CANCELLATION_POPOUT_TITLE: string; MOBILE_OUTBOUND_PROMOTION_CARD_CLAIMED_BODY: FM<"endDate", false>; MOBILE_OUTBOUND_PROMOTION_CARD_UNCLAIMED_BODY: FM<"endDate", false>; MOBILE_REPLY_PREVIEW_A11Y_LABEL: string; MOBILE_REPLYING_TO: FM<"username", true>; MOBILE_REPLYING_TO_A11Y_LABEL: FM<"username", false>; MOBILE_REPORTS_BLOCK_AND_MUTE_ELEMENT_DESCRIPTION: string; MOBILE_REPORTS_BLOCK_ELEMENT_DESCRIPTION: string; MOBILE_REPORTS_BLOCK_ELEMENT_HEADER: string; MOBILE_REPORTS_BREADCRUMBS_TITLE: string; MOBILE_REPORTS_DELETE_MESSAGE_ELEMENT_DESCRIPTION: string; MOBILE_REPORTS_EVENT_PREVIEW_TITLE: string; MOBILE_REPORTS_LEAVE_ELEMENT_DESCRIPTION: string; MOBILE_REPORTS_LEFT_SERVER: string; MOBILE_REPORTS_MESSAGE_PREVIEW_TITLE: string; MOBILE_REPORTS_MUTE_ELEMENT_DESCRIPTION: string; MOBILE_REPORTS_STAGE_CHANNEL_PREVIEW_TITLE: string; MOBILE_REPORTS_SUBMIT_FAILED: string; MOBILE_REPORTS_SUBMIT_INFO_TEXT: FM; MOBILE_REPORTS_SUBMIT_REPORT: string; MOBILE_SCROLL_TO_MESSAGE_ACTION_A11Y_LABEL: string; MOBILE_STREAM_ACTIVE_BODY: string; MOBILE_STREAM_ACTIVE_HEADER: string; MOBILE_STREAM_ACTIVE_SOUNDSHARE_WARNING_ANDROID: string; MOBILE_STREAM_PARTICIPANTS_HIDDEN: string; MOBILE_STREAM_SCREEN_SHARE: string; MOBILE_STREAM_SCREEN_SHARING: string; MOBILE_STREAM_STOP_SHARING: string; MOBILE_WEB_GET_APP_UPSELL: string; MOBILE_WEB_GET_APP_UPSELL_HALFSHEET_BUTTON_TEXT: string; MOBILE_WEB_GET_APP_UPSELL_HALFSHEET_HEADER: string; MOBILE_WEB_GET_APP_UPSELL_HALFSHEET_SUBHEADER: string; MOBILE_WEB_HANDOFF_BUTTON_TEXT: string; MOBILE_WEB_HANDOFF_ERROR_NO_TRY_AGAIN: string; MOBILE_WEB_HANDOFF_ERROR_TRY_AGAIN: string; MOBILE_WEB_HANDOFF_EXPLANATION_TEXT_LINE_1: string; MOBILE_WEB_HANDOFF_EXPLANATION_TEXT_LINE_2: string; MODERATE_MEMBER: string; MODERATE_MEMBERS_PERMISSION_INTERNAL: string; MODERATION: string; MODERATOR_ALLOW_EVERYONE_RAISE_HAND: string; MODERATOR_RAISE_OWN_HAND: string; MODERATOR_VIEW: string; MODERATOR_VIEW_DESCRIPTION: string; MODERATOR_VIEW_TOOLTIP: string; MODERATOR_VIEW_TOOLTIP_MOBILE: string; MODIFY_FOLLOWED_NEWS_HEADER: string; MONETIZATION: string; MONTHLY: string; MONTHLY_APPLICATION_SUBSCRIPTION_V2: FM<"tier", false>; MONTHLY_GUILD_SUBSCRIPTION: FM<"planName", false>; MORE: string; MORE_APPLICATION_SUBSCRIPTION_EXPIRATION_CHANNEL_NOTICE_CONTENT: string; MORE_DETAILS: string; MORE_OPTIONS: string; MOST_POPULAR: string; MOVE_FROM_CATEGORY_TO: FM<"categoryName", false>; MOVE_ME_TO_AUDIENCE: string; MOVE_MEMBERS: string; MOVE_MEMBERS_DESCRIPTION: string; MOVE_TO: string; MOVE_TO_SUCCESS: string; MULTI_ACCOUNT_ANNOUNCEMENT_SUBTITLE: FM<"maxAltAccounts", false>; MULTI_ACCOUNT_ANNOUNCEMENT_TOOLTIP_TITLE: string; MULTI_ACCOUNT_CHANGE_ACCOUNT_A11Y_HINT: string; MULTI_ACCOUNT_GOODBYE_BUTTON: string; MULTI_ACCOUNT_GOODBYE_SUBTITLE: string; MULTI_ACCOUNT_GOODBYE_THANKS: string; MULTI_ACCOUNT_GOODBYE_TITLE: string; MULTI_ACCOUNT_LOGGED_OUT: FM<"username", false>; MULTI_ACCOUNT_LOGIN_SUBTITLE: string; MULTI_ACCOUNT_LOGIN_TITLE: string; MULTI_ACCOUNT_MAX_ACCOUNTS_ALERT_BODY: FM<"maxNumAccounts", false>; MULTI_ACCOUNT_MAX_ACCOUNTS_ALERT_TITLE: string; MULTI_ACCOUNT_MAX_ACCOUNTS_ERROR: FM<"maxNumAccounts", false>; MULTI_ACCOUNT_MENU_LABEL: string; MULTI_ACCOUNT_REMOVE_ACCOUNT_ALERT_BODY: FM<"username", false>; MULTI_ACCOUNT_REMOVE_ACCOUNT_ALERT_TITLE: string; MULTI_ACCOUNT_SERVER_INVITE_JOINING_AS: string; MULTI_ACCOUNT_SWITCHING_ACCOUNTS: string; MULTI_ACCOUNT_TAB_A11Y_ACTION: string; MULTI_MONTHS: FM<"intervalCount", false>; MULTI_MONTHS_GUILD_SUBSCRIPTION: FM<"intervalCount" | "planName", false>; MULTIPLE_ACTIVITIES_IN_CHANNEL: FM<"numActivities", false>; MULTIPLE_GAMES_IN_CHANNEL: FM<"numGames", false>; MUTE: string; MUTE_ALT: string; MUTE_CATEGORY: string; MUTE_CHANNEL: FM<"name", true>; MUTE_CHANNEL_GENERIC: string; MUTE_CONVERSATION: string; MUTE_DURATION_15_MINUTES: string; MUTE_DURATION_1_HOUR: string; MUTE_DURATION_24_HOURS: string; MUTE_DURATION_30_MINUTES: string; MUTE_DURATION_3_HOURS: string; MUTE_DURATION_8_HOURS: string; MUTE_DURATION_ALWAYS: string; MUTE_FEEDBACK_ANNOYING: string; MUTE_FEEDBACK_BODY: FM<"username", false>; MUTE_FEEDBACK_HEADER: string; MUTE_FEEDBACK_OTHER: string; MUTE_FEEDBACK_SPAM: string; MUTE_FEEDBACK_TEMPORARY_BREAK: string; MUTE_FEEDBACK_TEXTAREA_HINT: string; MUTE_FEEDBACK_THANKS: string; MUTE_FEEDBACK_TOO_MANY_NOTIFICATIONS: string; MUTE_FEEDBACK_UNSAFE: string; MUTE_FORUM_POST: string; MUTE_GROUP_DM: FM<"name", true>; MUTE_MEMBERS: string; MUTE_SERVER: string; MUTE_SETTINGS_MUTE_CATEGORY: string; MUTE_SETTINGS_MUTE_CHANNEL: string; MUTE_SETTINGS_MUTE_POST: string; MUTE_SETTINGS_MUTE_SERVER: string; MUTE_SETTINGS_MUTE_THIS_CONVERSATION: string; MUTE_SETTINGS_MUTE_THREAD: string; MUTE_SOUNDBOARD: string; MUTE_THEM: string; MUTE_THREAD: string; MUTE_UNTIL: string; MUTED: string; MUTED_UNTIL_TIME: FM<"endTime", false>; MUTUAL_FRIENDS: string; MUTUAL_FRIENDS_COUNT: FM<"count", false>; MUTUAL_GUILDS: string; MUTUAL_GUILDS_COUNT: FM<"count", false>; MXN_NAME: string; MY_GAMES: string; MYR_NAME: string; N_DAYS: FM<"days", false>; NAVIGATE_TO_GUILD: string; NEARBY_SCAN: string; NEARBY_SCAN_CTA_TITLE: string; NEARBY_SCAN_SUBTITLE: string; NEED_ACCOUNT: string; NETWORK_ERROR_BAD_REQUEST: string; NETWORK_ERROR_CLOUDFLARE_INTERMITTENT: string; NETWORK_ERROR_CLOUDFLARE_UNAUTHORIZED: string; NETWORK_ERROR_CONNECTION: string; NETWORK_ERROR_FORBIDDEN: string; NETWORK_ERROR_REQUEST_TOO_LARGE: string; NETWORK_ERROR_REST_REQUEST: string; NETWORK_ERROR_SSL: string; NETWORK_ERROR_UNAUTHORIZED: string; NETWORK_ERROR_UNKNOWN: string; NETWORK_OFFLINE: string; NETWORK_OFFLINE_AIRPLANE_MODE: string; NEVERMIND: string; NEW: string; NEW_ADDITIONS: string; NEW_ARRIVALS: string; NEW_DM: string; NEW_DROP: string; NEW_EVENT: string; NEW_FOLDER: string; NEW_FORUM_POST: string; NEW_FORUM_POST_COUNT: FM<"count", false>; NEW_FORUM_POST_NEW: string; NEW_GROUP: string; NEW_GROUP_DM: string; NEW_GROUP_DM_CREATE_WITH: FM<"recipient", false>; NEW_GUILD_EVENTS_ACCESSIBILITY_LABEL: string; NEW_GUILDS_DM_ALLOWED: string; NEW_LAYOUT_ANNOUNCEMENT_ACTIVITY_CARDS: string; NEW_LAYOUT_ANNOUNCEMENT_CTA: string; NEW_LAYOUT_ANNOUNCEMENT_HELP: FM; NEW_LAYOUT_ANNOUNCEMENT_MESSAGES: string; NEW_LAYOUT_ANNOUNCEMENT_SERVERS: string; NEW_LAYOUT_ANNOUNCEMENT_TEXT: string; NEW_LAYOUT_ANNOUNCEMNT_TITLE: string; NEW_LAYOUT_FEEDBACK_TEXT: string; NEW_LAYOUT_LEARN_MORE: string; NEW_LAYOUT_TOGGLE_TEXT: string; NEW_MEMBER_ACTION_CHANNEL: FM<"channelName", false>; NEW_MEMBER_ACTION_VALIDATION_ERROR_TITLE_REQUIRED: FM<"minLength", false>; NEW_MEMBER_ACTION_VALIDATION_ERROR_TYPE_CHAT_INVALID_FOR_CHANNEL: string; NEW_MEMBER_ACTION_VALIDATION_ERROR_TYPE_VIEW_INVALID_FOR_CHANNEL: string; NEW_MEMBER_BADGE_POPOUT_TEXT: string; NEW_MEMBER_BADGE_TOOLTIP_TEXT: string; NEW_MEMBER_RETENTION_INFO: string; NEW_MENTIONS: string; NEW_MENTIONS_COUNT: FM<"count", false>; NEW_MESSAGE: string; NEW_MESSAGE_COMPOSER_ADD_USER_A11Y_LABEL: string; NEW_MESSAGE_COMPOSER_BACK_TO_CHAT: string; NEW_MESSAGE_COMPOSER_SEARCH_EMPTY_SUBTITLE: string; NEW_MESSAGE_COMPOSER_SEARCH_EMPTY_TITLE: string; NEW_MESSAGES: FM<"count" | "timestamp", false>; NEW_MESSAGES_DIVIDER: string; NEW_MESSAGES_ESTIMATED: FM<"count" | "timestamp", false>; NEW_MESSAGES_ESTIMATED_SUMMARIES: FM<"count", false>; NEW_MESSAGES_ESTIMATED_WITH_DATE: FM<"count" | "timestamp", false>; NEW_MESSAGES_PILL: FM<"count", false>; NEW_MESSAGES_PILL_ESTIMATED: FM<"count", false>; NEW_MESSAGES_SUMMARIES: FM<"count", false>; NEW_MESSAGES_WITH_DATE: FM<"count" | "timestamp", false>; NEW_OVERRIDE: string; NEW_PERMISSION: string; NEW_ROLE: string; NEW_SUMMARIES: FM<"count", false>; NEW_TERMS_ACK: string; NEW_TERMS_CONTINUE: string; NEW_TERMS_DESCRIPTION: string; NEW_TERMS_TITLE: string; NEW_THREAD: string; NEW_UNREADS: string; NEWLY_ADDED_GUILD_EMOJI_BADGE: string; NEWS_CHANNEL: string; NEWS_CHANNEL_DESC: string; NEWS_CHANNEL_PUBLISH: string; NEWS_CHANNEL_PUBLISH_BUMP: string; NEWS_CHANNEL_PUBLISH_BUMP_HIDE_PERMANENTLY: string; NEWS_CHANNEL_PUBLISHED: string; NEWS_CHANNEL_TYPE: string; NEXT: string; NICKNAME: string; NICKNAME_CHANGED: FM<"nickname", false>; NICKNAME_CLEARED: string; NITRO_AFFINITY_UPSELL: FM<"numFriends" | "username", false>; NITRO_BADGE_TEXT: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_CANT_AFFORD: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_DIDNT_FEEL_WORTH: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_DONT_LIKE_MONTHLY_SUBS: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_DONT_NEED_SPECIFIC_FEAT: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_DONT_UNDERSTAND_NITRO: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_DONT_USE_DISCORD_OFTEN: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_NO_LONGER_SUPPORT_DISCORD: string; NITRO_CHURN_SURVEY_ANSWER_CHOICE_WANT_TO_SWITCH_TIERS: string; NITRO_CHURN_SURVEY_ANSWER_OTHER: string; NITRO_CHURN_SURVEY_OTHER_PLACEHOLDER: string; NITRO_CHURN_SURVEY_QUESTION: FM<"subscriptionName", false>; NITRO_CHURN_SURVEY_SUBTITLE: FM<"subscriptionName", false>; NITRO_CHURN_SURVEY_TITLE: FM<"subscriptionName", false>; NITRO_CONFIRMATION: string; NITRO_HOME_ALL_YOUR_NITRO_PERKS: string; NITRO_HOME_CARD_CHOOSE_CUSTOM_EMOJI: string; NITRO_HOME_CARD_CUSTOM_SOUNDS_EVERYWHERE: string; NITRO_HOME_CARD_INCLUDED_WITH_BASIC_AND_NITRO: string; NITRO_HOME_CARD_INCLUDED_WITH_ONLY_NITRO: string; NITRO_HOME_CARD_UPLOAD_POWER: string; NITRO_HOME_CARD_USE_CUSTOM_SOUNDS: string; NITRO_HOME_CARD_USE_CUSTOM_SOUNDS_V2: string; NITRO_HOME_CATEGORY_FAVORITES: string; NITRO_HOME_EARLY_ACCESS_DESCRIPTION: string; NITRO_HOME_ENJOY_UPDATED_DISCORD: string; NITRO_HOME_ENTRANCE_SOUNDS_BENEFIT: string; NITRO_HOME_FILE_UPLOADS: string; NITRO_HOME_GET_THIS_SUBSCRIBER_BADGE: string; NITRO_HOME_REWARDING_FREE_BOOST_LOCKED_STATE_SUBTITLE_1_MONTH_VARIANT: string; NITRO_HOME_REWARDING_FREE_BOOST_LOCKED_STATE_SUBTITLE_3_MONTHS_VARIANT: string; NITRO_HOME_REWARDING_FREE_BOOST_REDEEMABLE_STATE_SUBTITLE_1_MONTH_VARIANT: string; NITRO_HOME_REWARDING_FREE_BOOST_REDEEMABLE_STATE_SUBTITLE_3_MONTHS_VARIANT: string; NITRO_HOME_REWARDING_FREE_BOOST_REDEEMABLE_STATE_SUBTITLE_BACKFILL_VARIANT: string; NITRO_HOME_REWARDING_LOCKED_STATE_DESCRIPTION: string; NITRO_HOME_REWARDING_LOCKED_STATE_TITLE: string; NITRO_HOME_REWARDING_REDEEMABLE_STATE_TITLE: string; NITRO_HOME_REWARDING_REDEEMED_LABEL: string; NITRO_HOME_REWARDING_REDEEMED_STATE_DESCRIPTION: string; NITRO_HOME_REWARDING_REDEEMED_STATE_SUBTITLE: string; NITRO_HOME_REWARDING_TENURE_BOOST_AVAILABLE_DATE: FM<"days", false>; NITRO_HOME_REWARDING_TENURE_CONGRATULATIONS: string; NITRO_HOME_REWARDING_TENURE_DESCRIPTION: string; NITRO_HOME_REWARDING_TENURE_DISCLAIMER: string; NITRO_HOME_REWARDING_TENURE_FREE_BOOST: FM<"numFreeBoosts", false>; NITRO_HOME_REWARDING_TENURE_REDEEM_ACTION: string; NITRO_HOME_REWARDING_TENURE_REDEEM_BOOST: FM<"numDays", false>; NITRO_HOME_REWARDING_TENURE_REDEEM_YOUR_REWARD: string; NITRO_HOME_REWARDING_TENURE_REDEEMED_REWARD: string; NITRO_HOME_REWARDING_TENURE_REDEEMED_REWARD_DISLAIMER: string; NITRO_HOME_REWARDING_TENURE_REDEEMED_REWARD_GRATITUDE: string; NITRO_HOME_REWARDING_TENURE_REWARD: string; NITRO_HOME_SHOW_UP_HOW_YOU_WANT: string; NITRO_HOME_SHY_PROJECT_SUBTITLE: string; NITRO_HOME_SHY_PROJECT_TITLE: string; NITRO_HOME_SPECIAL_PRICING: string; NITRO_HOME_SPECIAL_PRICING_DESCRIPTION: string; NITRO_HOME_STREAM_UP_TO_4K: string; NITRO_HOME_SUBSCRIBER_BADGE: string; NITRO_HOME_SUBSCRIBER_BADGE_FOR_THE_COLLECTORS: string; NITRO_HOME_SUPER_REACTIONS: string; NITRO_HOME_SUPER_REACTIONS_DESCRIPTION: string; NITRO_HOME_TAB_NEW: string; NITRO_HOME_TAB_PERKS: string; NITRO_HOME_TIERED_TENURE_BADGES_EARNED_ON: FM<"date", false>; NITRO_HOME_TIERED_TENURE_BADGES_MODAL_HEADER: string; NITRO_HOME_TIERED_TENURE_BADGES_MODAL_SUB_HEADER: string; NITRO_HOME_TIERED_TENURE_BADGES_WHATS_NEW_CARD_HEADER: string; NITRO_HOME_UPLOAD_ALL_YOU_WANT: string; NITRO_MARKETING_BASIC_PERKS: string; NITRO_MARKETING_CARDS_BOOSTS_UPLOADS_AND_MORE: string; NITRO_MARKETING_CARDS_CUSTOM_PROFILES: string; NITRO_MARKETING_CARDS_SUPERCHARGE_YOUR_DISCORD: string; NITRO_MARKETING_CARDS_UNLIMITED_SUPER_REACTIONS: string; NITRO_MARKETING_JUST_THE_BASICS: string; NITRO_PERKS: string; NITRODUCTION_ONBOARDING_BODY_BOOSTING_GUILD_BANNER: string; NITRODUCTION_ONBOARDING_BODY_BOOSTING_GUILD_BANNER_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_BODY_BOOSTING_GUILD_MENU_ITEM: string; NITRODUCTION_ONBOARDING_BODY_BOOSTING_GUILD_MENU_ITEM_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_BODY_CUSTOM_EMOJI_ANIMATED_EMOJI: string; NITRODUCTION_ONBOARDING_BODY_CUSTOM_EMOJI_ANIMATED_EMOJI_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_BODY_CUSTOM_EMOJI_GENERAL2: FM; NITRODUCTION_ONBOARDING_BODY_CUSTOM_EMOJI_GENERAL_LIGHTWEIGHT: FM; NITRODUCTION_ONBOARDING_BODY_CUSTOM_EMOJI_GENERAL_UNFORMATTED: string; NITRODUCTION_ONBOARDING_BODY_CUSTOM_EMOJI_GENERAL_UNFORMATTED_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_AVATAR: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_AVATAR_DECORATIONS: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_AVATAR_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_BANNER: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_BANNER_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_GUILD_PROFILES: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_GUILD_PROFILES_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_THEME: string; NITRODUCTION_ONBOARDING_BODY_PROFILE_CUSTOMIZATION_THEME_LIGHTWEIGHT: string; NITRODUCTION_ONBOARDING_HEADING_BOOSTING_GUILD_BANNER: string; NITRODUCTION_ONBOARDING_HEADING_BOOSTING_GUILD_MENU_ITEM: string; NITRODUCTION_ONBOARDING_HEADING_CUSTOM_EMOJI_ANIMATED_EMOJI: string; NITRODUCTION_ONBOARDING_HEADING_CUSTOM_EMOJI_GENERAL: string; NITRODUCTION_ONBOARDING_HEADING_PROFILE_CUSTOMIZATION_AVATAR: string; NITRODUCTION_ONBOARDING_HEADING_PROFILE_CUSTOMIZATION_AVATAR_DECORATIONS: string; NITRODUCTION_ONBOARDING_HEADING_PROFILE_CUSTOMIZATION_BANNER: string; NITRODUCTION_ONBOARDING_HEADING_PROFILE_CUSTOMIZATION_GUILD_PROFILES: string; NITRODUCTION_ONBOARDING_HEADING_PROFILE_CUSTOMIZATION_THEME: string; nl: string; no: string; NO_ACCESS: string; NO_AFK_CHANNEL: string; NO_AUTHORIZED_APPS: string; NO_AUTHORIZED_APPS_NOTE: string; NO_BAN_REASON: string; NO_BANS: string; NO_CAMERA_ACCESS: string; NO_CAMERA_BODY: string; NO_CAMERA_TITLE: string; NO_CATEGORY: string; NO_CONTACTS_ACCESS: string; NO_EMBEDDED_ACTIVITY_PERMISSION_DIALOG_BODY: string; NO_EMBEDDED_ACTIVITY_PERMISSION_DIALOG_TITLE: string; NO_EMOJI: string; NO_EMOJI_BODY: string; NO_EMOJI_SEARCH_RESULTS: string; NO_EMOJI_TITLE: string; NO_GIF_FAVORITES_FLAVOR_FAVORITE_PLEASE: string; NO_GIF_FAVORITES_FLAVOR_STILL_HERE: string; NO_GIF_FAVORITES_GO_FAVORITE: string; NO_GIF_FAVORITES_HOW_TO_FAVORITE: string; NO_GIF_FAVORITES_WHERE_TO_FAVORITE: string; NO_GIF_SEARCH_RESULTS: string; NO_GIF_SEARCH_RESULTS_WITH_RELATED_SEARCH: string; NO_GIF_SEARCH_RESULTS_WITHOUT_RELATED_SEARCH: string; NO_GUILDS_HEADER: string; NO_GUILDS_SUBHEADER: string; NO_INPUT_DEVICES: string; NO_INPUT_MONITORING_ACCESS: string; NO_INSTANT_INVITE: string; NO_INTEGRATIONS_BODY: string; NO_INTEGRATIONS_LABEL: string; NO_INVITES_BODY: string; NO_INVITES_CAPTION: string; NO_INVITES_LABEL: string; NO_MIC_BODY: string; NO_MIC_TITLE: string; NO_MICRPHONE_ACCESS: string; NO_MUTUAL_FRIENDS: string; NO_MUTUAL_GUILDS: string; NO_OUTPUT_DEVICES: string; NO_PHOTOS_ACCESS: string; NO_PINS_IN_CHANNEL: string; NO_PINS_IN_DM: string; NO_REACTIONS_BODY: string; NO_REACTIONS_HEADER: string; NO_RECENT_MENTIONS: string; NO_RECENT_THREAD_MESSAGES: string; NO_RESULTS_FOUND: string; NO_SCREENSHARE_PERMISSION_DIALOG_BODY: string; NO_SCREENSHARE_PERMISSION_DIALOG_TITLE: string; NO_SELECT_PHOTO_ACCESS: string; NO_SEND_MESSAGES_PERMISSION_PLACEHOLDER: string; NO_SOUNDS: string; NO_SOUNDS_TITLE: string; NO_STICKER_SEARCH_RESULTS: string; NO_STICKER_SEARCH_RESULTS_WITH_SUGGESTIONS: string; NO_STICKERS_TO_SEARCH_THROUGH: string; NO_SYSTEM_CHANNEL: string; NO_TEXT: string; NO_THANKS: string; NO_THREAD_MESSAGES: string; NO_USER_LIMIT: string; NO_VIDEO_DEVICES: string; NO_VIDEO_PERMISSION_DIALOG_BODY: string; NO_VIDEO_PERMISSION_DIALOG_TITLE: string; NOISE_CANCELLATION_CPU_OVERUSE: string; NOISE_CANCELLATION_OFF: string; NOISE_CANCELLATION_ON: string; NOISE_CANCELLATION_POPOUT_DESCRIPTION: string; NOISE_CANCELLATION_POPOUT_FOOTER: string; NOISE_CANCELLATION_POPOUT_HEADER: string; NOISE_CANCELLATION_POPOUT_MIC_TEST_TITLE: string; NOISE_CANCELLATION_POPOUT_STOP: string; NOISE_CANCELLATION_POPOUT_TEST: string; NOISE_CANCELLATION_SEARCH_TERM_KRISP: string; NOISE_CANCELLATION_TOOLTIP: string; NOISE_SUPPRESSION: string; NONE: string; NOT_AVAILABLE: string; NOT_INCLUDED: string; NOT_NOW: string; NOTE: string; NOTE_PLACEHOLDER: string; NOTE_PLACEHOLDER_MOBILE: string; NOTICE_APPLICATION_TEST_MODE: FM<"applicationName", true>; NOTICE_APPLICATION_TEST_MODE_GO_TO_LISTING: string; NOTICE_CHANNEL_MAX_MEMBERS_CAP_REACHED_MESSAGE: FM<"maxMemberCount" | "maxMembersUrl", true>; NOTICE_CONNECT_PLAYSTATION: string; NOTICE_CONNECT_SPOTIFY: string; NOTICE_CONNECTION_CONFLICT: string; NOTICE_CORRUPT_INSTALLATION: string; NOTICE_CORRUPT_INSTALLATION_HELP_LINK_TEXT: string; NOTICE_DETECTED_OFF_PLATFORM_NO_PREMIUM_PERK_MESSAGE: FM<"applicationName" | "skuName", true>; NOTICE_DETECTED_OFF_PLATFORM_PREMIUM_PERK_BUTTON: string; NOTICE_DETECTED_OFF_PLATFORM_PREMIUM_PERK_MESSAGE: FM<"applicationName" | "skuName", true>; NOTICE_DISPATCH_API_ERROR: string; NOTICE_DISPATCH_APPLICATION_LOCK_FAILED: string; NOTICE_DISPATCH_ERROR: string; NOTICE_DISPATCH_ERROR_DISK_FULL: string; NOTICE_DISPATCH_ERROR_DISK_LOW: FM<"available" | "required", false>; NOTICE_DISPATCH_ERROR_FILE_NAME_TOO_LONG: string; NOTICE_DISPATCH_ERROR_INVALID_DRIVE: FM<"path", false>; NOTICE_DISPATCH_ERROR_IO_PERMISSION_DENIED: string; NOTICE_DISPATCH_ERROR_NO_MANIFESTS: string; NOTICE_DISPATCH_ERROR_NOT_ENTITLED: string; NOTICE_DISPATCH_ERROR_POST_INSTALL_CANCELLED: string; NOTICE_DISPATCH_ERROR_POST_INSTALL_FAILED: FM<"name", false>; NOTICE_DISPATCH_ERROR_UNWRITABLE: FM<"path", false>; NOTICE_DISPATCH_ERROR_WITH_CODE: FM<"code", false>; NOTICE_DISPATCH_INSTALL_SCRIPT_PROGRESS: FM<"progress" | "total", false>; NOTICE_DISPATCH_INSTALL_SCRIPT_PROGRESS_WITH_NAME: FM<"name" | "progress" | "total", false>; NOTICE_EMBEDDED_APPLICATION_TEST_MODE: FM<"applicationName", true>; NOTICE_ENABLE_PUBLIC_GUILD_UPSELL_MESSAGE: string; NOTICE_H264_DISABLED_SETTINGS: string; NOTICE_H264_DISABLED_SETTINGS_LINK_TEXT: string; NOTICE_HARDWARE_MUTE: FM<"modelName" | "vendorName", true>; NOTICE_MFA_SMS_BACKUP: string; NOTICE_MFA_SMS_BACKUP_BUTTON: string; NOTICE_NATIVE_APPS_2020_06: string; NOTICE_NITRO_PRICE_CHANGED: FM<"countryName", false>; NOTICE_NO_INPUT_DETECTED: string; NOTICE_NO_INPUT_DETECTED_HELP_LINK_TEXT: string; NOTICE_NO_INPUT_DETECTED_SETTINGS: string; NOTICE_NO_INPUT_DETECTED_SETTINGS_LINK_TEXT: string; NOTICE_PREMIUM_PROMO_ACTION: string; NOTICE_PREMIUM_PROMO_MESSAGE: string; NOTICE_PREMIUM_TIER_0_TRIAL_ENDING_CTA_VARIANT: string; NOTICE_PREMIUM_TIER_0_TRIAL_ENDING_DAYS_VARIANT: FM<"days", false>; NOTICE_PREMIUM_TIER_0_TRIAL_ENDING_HOURS_VARIANT: FM<"hours", false>; NOTICE_PREMIUM_TIER_0_TRIAL_ENDING_MINUTES_VARIANT: FM<"minutes", false>; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_CTA: string; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_CTA_VARIANT: string; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_DAYS: FM<"days", false>; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_DAYS_VARIANT: FM<"days", false>; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_HOURS: FM<"hours", false>; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_HOURS_VARIANT: FM<"hours", false>; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_MINUTES: FM<"minutes", false>; NOTICE_PREMIUM_TIER_2_TRIAL_ENDING_MINUTES_VARIANT: FM<"minutes", false>; NOTICE_SCHEDULED_MAINTENANCE: FM<"start", true>; NOTICE_SPOTIFY_AUTO_PAUSED: string; NOTICE_STREAMER_MODE_TEXT: string; NOTICE_UNCLAIMED_ACCOUNT: string; NOTICE_UNVERIFIED_ACCOUNT: string; NOTICE_USER_DISCONNECTED: string; NOTICE_WHATS_THIS: string; NOTIF_CENTER_ACTIVE_NOW: string; NOTIF_CENTER_V2_ACCEPT_FRIEND_REQUEST: string; NOTIF_CENTER_V2_ADD_FRIEND: string; NOTIF_CENTER_V2_ADD_FRIEND_REQUEST_SENT: FM<"user", false>; NOTIF_CENTER_V2_ADD_FRIEND_TOAST: string; NOTIF_CENTER_V2_ALL_CLEARED: string; NOTIF_CENTER_V2_FIND_FRIENDS: string; NOTIF_CENTER_V2_IGNORE_FRIEND_REQUEST: string; NOTIF_CENTER_V2_JOIN_EVENT: string; NOTIF_CENTER_V2_JOIN_STREAM: string; NOTIF_CENTER_V2_MESSAGE_PREVIEW_PLACEHOLDER: string; NOTIF_CENTER_V2_NO_NEW_NOTIFS: string; NOTIF_CENTER_V2_PAST_NOTIFICATIONS: string; NOTIF_CENTER_V2_SEND_MESSAGE: string; NOTIF_CENTER_V2_SEND_REPLY: string; NOTIF_CENTER_V2_UPDATE_AVATAR: string; NOTIF_MIGRATION_BACKUP: string; NOTIF_MIGRATION_CUSTOMIZE_SECTION1_SUBTITLE: string; NOTIF_MIGRATION_CUSTOMIZE_SECTION1_TITLE: string; NOTIF_MIGRATION_CUSTOMIZE_SECTION2_SUBTITLE: string; NOTIF_MIGRATION_CUSTOMIZE_SECTION2_TITLE: string; NOTIF_MIGRATION_CUSTOMIZE_SUB_TITLE: string; NOTIF_MIGRATION_CUSTOMIZE_TAB: string; NOTIF_MIGRATION_CUSTOMIZE_TITLE: string; NOTIF_MIGRATION_ERROR: string; NOTIF_MIGRATION_GUILD_TOOLTIP_ALITTLE: string; NOTIF_MIGRATION_GUILD_TOOLTIP_ALOT: string; NOTIF_MIGRATION_GUILD_TOOLTIP_BUSY: string; NOTIF_MIGRATION_GUILD_TOOLTIP_MUTED: string; NOTIF_MIGRATION_GUILD_TOOLTIP_NOT_MUTED: string; NOTIF_MIGRATION_GUILD_TOOLTIP_QUIET: string; NOTIF_MIGRATION_INTRO_AFTER: string; NOTIF_MIGRATION_INTRO_BEFORE: string; NOTIF_MIGRATION_INTRO_CHANNEL_1: string; NOTIF_MIGRATION_INTRO_CHANNEL_2: string; NOTIF_MIGRATION_INTRO_CHANNEL_3: string; NOTIF_MIGRATION_INTRO_CHANNEL_4: string; NOTIF_MIGRATION_INTRO_CHANNEL_5: string; NOTIF_MIGRATION_INTRO_CHANNEL_6: string; NOTIF_MIGRATION_INTRO_CHANNEL_7: string; NOTIF_MIGRATION_INTRO_SUB_TITLE: string; NOTIF_MIGRATION_INTRO_TAB: string; NOTIF_MIGRATION_INTRO_TIP_AFTER1: string; NOTIF_MIGRATION_INTRO_TIP_AFTER2: string; NOTIF_MIGRATION_INTRO_TIP_BEFORE1: string; NOTIF_MIGRATION_INTRO_TIP_BEFORE2: string; NOTIF_MIGRATION_INTRO_TITLE: string; NOTIF_MIGRATION_SETTINGS_CONFIRM_ACTION: string; NOTIF_MIGRATION_SETTINGS_CONFIRM_BODY: FM<"date", false>; NOTIF_MIGRATION_SETTINGS_SUBTITLE: string; NOTIF_MIGRATION_SETTINGS_TITLE: string; NOTIF_MIGRATION_TIPS_SUB_TITLE: string; NOTIF_MIGRATION_TIPS_TAB: string; NOTIF_MIGRATION_TIPS_TAB1: string; NOTIF_MIGRATION_TIPS_TAB1_TIP2: string; NOTIF_MIGRATION_TIPS_TAB2: string; NOTIF_MIGRATION_TIPS_TAB2_TIP1: string; NOTIF_MIGRATION_TIPS_TAB2_TIP2: string; NOTIF_MIGRATION_TIPS_TITLE: FM<"count", false>; NOTIFICATION_ACCEPTED_FRIEND_REQUEST: string; NOTIFICATION_BODY_ATTACHMENT: FM<"filename", false>; NOTIFICATION_BODY_DISCORD_HIDDEN: string; NOTIFICATION_BODY_START_GAME: FM<"gameName" | "username", false>; NOTIFICATION_CENTER_CONTACT_SYNC_BODY: string; NOTIFICATION_CENTER_CONTACT_SYNC_TITLE: string; NOTIFICATION_CENTER_DONE: string; NOTIFICATION_CENTER_FRIEND_ACCEPTED: string; NOTIFICATION_CENTER_FRIEND_DECLINED: string; NOTIFICATION_CENTER_FRIEND_REQUESTS_EMPTY_SUBTITLE: string; NOTIFICATION_CENTER_FRIEND_REQUESTS_EMPTY_TITLE: string; NOTIFICATION_CENTER_FRIEND_REQUESTS_TITLE: string; NOTIFICATION_CENTER_GUILD_SCHEDULED_EVENT_ENDED: FM<"event_name" | "guild_name", true>; NOTIFICATION_CENTER_INCOMING_FRIEND_REQUEST: FM<"username", false>; NOTIFICATION_CENTER_INCOMING_FRIEND_REQUEST_ACCEPTED: FM<"username", false>; NOTIFICATION_CENTER_INCOMING_FRIEND_REQUESTS: FM<"count" | "user" | "user2", true>; NOTIFICATION_CENTER_POLL_RESULT_NO_WINNER: FM<"questionText", false>; NOTIFICATION_CENTER_POLL_RESULT_TIE: FM<"percentage" | "questionText", false>; NOTIFICATION_CENTER_POLL_RESULT_WINNER: FM<"percentage" | "questionText" | "victorAnswerText", false>; NOTIFICATION_CENTER_SHOW_INDIRECT_MENTIONS: string; NOTIFICATION_CENTER_SHOW_INDIRECT_MENTIONS_SUBTITLE: string; NOTIFICATION_CENTER_SHOW_ROLE_MENTIONS: string; NOTIFICATION_CENTER_TODO: string; NOTIFICATION_DISMISS: string; NOTIFICATION_EMBED_BUTTON: FM; NOTIFICATION_EMBED_BUTTON_2: FM; NOTIFICATION_FRIEND_SUGGESTION_BODY: string; NOTIFICATION_FRIEND_SUGGESTION_CONTACT_TITLE: FM<"contact", false>; NOTIFICATION_FRIEND_SUGGESTION_TITLE: FM<"contact", false>; NOTIFICATION_MESSAGE_ACTIVITY_INSTANCE: FM<"user", false>; NOTIFICATION_MESSAGE_CREATE_DM_ACTIVITY_JOIN: FM<"game" | "user", false>; NOTIFICATION_MESSAGE_CREATE_DM_ACTIVITY_JOIN_REQUEST: FM<"game" | "user", false>; NOTIFICATION_MESSAGE_CREATE_DM_ACTIVITY_LISTEN: FM<"user", false>; NOTIFICATION_MESSAGE_CREATE_GROUP_DM_ACTIVITY_JOIN: FM<"game" | "user", false>; NOTIFICATION_MESSAGE_CREATE_GROUP_DM_ACTIVITY_LISTEN: FM<"user", false>; NOTIFICATION_MESSAGE_CREATE_GUILD_ACTIVITY_JOIN: FM<"game" | "user", false>; NOTIFICATION_MESSAGE_CREATE_GUILD_ACTIVITY_LISTEN: FM<"user", false>; NOTIFICATION_MESSAGE_SEND_FAILED_BODY: string; NOTIFICATION_MESSAGE_SEND_FAILED_TITLE: string; NOTIFICATION_MUTE_1_HOUR: string; NOTIFICATION_NOT_ENABLED_PROMPT_CTA: string; NOTIFICATION_OVERRIDES: string; NOTIFICATION_PENDING_FRIEND_REQUEST: string; NOTIFICATION_PRESET_1: string; NOTIFICATION_PRESET_2: string; NOTIFICATION_PRESET_3: string; NOTIFICATION_PRESET_CUSTOM: string; NOTIFICATION_PRESET_CUSTOM_DESCRIPTION: string; NOTIFICATION_REPLY: string; NOTIFICATION_REPLY_FAILED: FM<"recipient", false>; NOTIFICATION_REPLY_SUCCESS: FM<"recipient", false>; NOTIFICATION_REPORT_BODY: string; NOTIFICATION_REPORT_CONTENT: string; NOTIFICATION_REPORT_FEEDBACK: string; NOTIFICATION_REPORT_RELEVANT: string; NOTIFICATION_REPORT_TEXT: FM<"helpUrl", true>; NOTIFICATION_REPORT_TITLE: string; NOTIFICATION_REPORT_TOO_MANY: string; NOTIFICATION_SETTINGS: string; NOTIFICATION_SETTINGS_ADVANCED: string; NOTIFICATION_SETTINGS_CHANNELS_CUSTOM_MENU_ARIA_LABEL: string; NOTIFICATION_SETTINGS_CUSTOMIZE: string; NOTIFICATION_SETTINGS_MUTE_BANNER_CHANNEL_TITLE: string; NOTIFICATION_SETTINGS_MUTE_BANNER_GUILD_TITLE: string; NOTIFICATION_SETTINGS_MUTE_BANNER_SUBTITLE: string; NOTIFICATION_SETTINGS_MUTE_BANNER_SUBTITLE_UNTIL: FM<"endTime", false>; NOTIFICATION_SETTINGS_PRESETS_ALL_MESSAGES: string; NOTIFICATION_SETTINGS_PRESETS_NONE: string; NOTIFICATION_SETTINGS_PRESETS_NOTIFICATION_AUTHOR: string; NOTIFICATION_SETTINGS_PRESETS_NOTIFICATION_CHANNEL_SUBTITLE: string; NOTIFICATION_SETTINGS_PRESETS_NOTIFICATION_SUBTITLE: string; NOTIFICATION_SETTINGS_PRESETS_NOTIFICATION_TITLE: string; NOTIFICATION_SETTINGS_PRESETS_UNREAD_CHANNEL_1: string; NOTIFICATION_SETTINGS_PRESETS_UNREAD_CHANNEL_2: string; NOTIFICATION_SETTINGS_PRESETS_UNREAD_CHANNEL_3: string; NOTIFICATION_SETTINGS_PRESETS_UNREAD_SUBTITLE: string; NOTIFICATION_SETTINGS_PRESETS_UNREAD_TITLE: string; NOTIFICATION_SETTINGS_USE_PRESET: string; NOTIFICATION_TITLE_DISCORD: string; NOTIFICATION_TITLE_START_GAME: string; NOTIFICATIONS: string; NOTIFICATIONS_FOR_YOU: string; NOTIFICATIONS_MENTIONS: string; NOTIFICATIONS_MUTED: string; NOW_PLAYING_GDPR_BODY: FM; NOW_PLAYING_GDPR_HEADER: string; NSFW_ACCEPT: string; NSFW_CHANNEL_HEADER: string; NSFW_DECLINE: string; NSFW_DESCRIPTION: string; NSFW_DM_COMMANDS_CAPTION: string; NSFW_DM_COMMANDS_HEADER: string; NSFW_GUILD_CHANNEL_DESCRIPTION: string; NSFW_GUILD_CLOSE: string; NSFW_GUILD_DESCRIPTION: string; NSFW_GUILD_DESCRIPTION_MORE: FM<"helpURL", true>; NSFW_GUILD_EMOJI_UNAVAILABLE: string; NSFW_GUILD_HEADER: string; NSFW_GUILD_SIDEBAR_DESCRIPTION: FM<"helpURL", true>; NSFW_GUILD_SIDEBAR_HEADER: string; NSFW_GUILD_STICKERS_UNAVAILABLE: string; NSFW_GUILDS_TOGGLE_CAPTION: string; NSFW_GUILDS_TOGGLE_HEADER: string; NSFW_TITLE: string; NUF_AGE_GATE_BODY: FM<"helpURL", true>; NUF_ASK_FRIEND_SERVER_INVITE: string; NUF_BODY_05_24: string; NUF_BODY_MOBILE: string; NUF_BODY_REFRESH: string; NUF_CHANNEL_CHANNEL_NAME: string; NUF_CHANNEL_FIRST_MESSAGE_AUTHOR: string; NUF_CHANNEL_PROMPT_CHANNEL_TOPIC_TEMPLATE: FM<"topic", false>; NUF_CHANNEL_PROMPT_CTA: string; NUF_CHANNEL_PROMPT_SUBTITLE: string; NUF_CHANNEL_PROMPT_TITLE: string; NUF_CHANNEL_PROMPT_TOPIC: string; NUF_CHANNEL_PROMPT_TOPIC_PLACEHOLDER: string; NUF_CHANNEL_SECOND_MESSAGE: string; NUF_CHANNEL_SECOND_MESSAGE_AUTHOR: string; NUF_CHANNELS_CTA_LABEL: string; NUF_CHANNELS_DESCRIPTION: string; NUF_CHANNELS_TITLE: string; NUF_CHANNELS_TITLE_V2: string; NUF_COMPLETE_CTA: string; NUF_COMPLETE_SUBTITLE: string; NUF_COMPLETE_TITLE: string; NUF_CREATE_GUILD_CTA_DESCRIPTION: FM; NUF_CREATE_SERVER_BUTTON: string; NUF_CREATE_SERVER_CUSTOMIZE_HEADER: string; NUF_CREATE_SERVER_CUSTOMIZE_SUBHEADER: string; NUF_DESKTOP_TEMPLATES_SUBTITLE: string; NUF_DESKTOP_TEMPLATES_TITLE: string; NUF_DOWNLOAD_APP_BUTTON_PLATFORM: FM<"platform", false>; NUF_HAVE_AN_INVITE_ALREADY: string; NUF_JOIN_A_FRIEND: string; NUF_JOIN_SERVER_BUTTON: string; NUF_JOIN_SERVER_TITLE_2: string; NUF_TITLE_MOBILE: string; NUF_VOICE_CHANNELS_DESCRIPTION: string; NUF_VOICE_CHANNELS_TITLE: string; NUM_ATTACHMENTS: FM<"count", false>; NUM_CHANNELS: FM<"num", false>; NUM_IMAGES: FM<"count", false>; NUM_IMAGES_VIDEOS: FM<"image_count" | "video_count", false>; NUM_LINKS: FM<"count", false>; NUM_MEMBERS: FM<"subscribers", true>; NUM_SECURITY_KEYS: FM<"count", false>; NUM_SUBSCRIBERS: FM<"subscribers", true>; NUM_USERS: FM<"num", false>; NUM_VIDEOS: FM<"count", false>; NUMBER_ABBREVIATION_FULL: FM<"value", false>; NUMBER_ABBREVIATION_MILLIONS: FM<"value", false>; NUMBER_ABBREVIATION_THOUSANDS: FM<"value", false>; NUMBERS_ONLY: FM<"count", false>; NUX_NAVIGATION_HELP_CHANNELS: string; NUX_NAVIGATION_HELP_DMS: string; NUX_NAVIGATION_HELP_GUILD: string; NUX_NOTIFICATION_PERMISSION_ALERT_TITLE: string; NUX_NOTIFICATION_PERMISSION_PROMPT_SUBTITLE: string; NUX_NOTIFICATION_PERMISSION_PROMPT_TEXT: string; NUX_OVERLAY_DESCRIPTION: string; NUX_OVERLAY_ENABLE: string; NUX_OVERLAY_TITLE: string; NUX_POST_REG_JOIN_SERVER_DESCRIPTION: string; NUX_POST_REG_JOIN_SERVER_SKIP: string; NUX_POST_REG_JOIN_SERVER_TITLE: string; NUX_REDESIGN_NOTIFICATION_BODY: string; NUX_REDESIGN_NOTIFICATION_TITLE: string; NUX_SAMSUNG_GAME_PRESENCE_LINK_DESCRIPTION: string; NUX_SAMSUNG_GAME_PRESENCE_LINK_ENABLE: string; NUX_SAMSUNG_GAME_PRESENCE_LINK_TITLE: string; NUX_VALUE_PROPS_CAMERA_CARD_TITLE: string; NUX_VALUE_PROPS_CHAT_CARD_TITLE: string; NUX_VALUE_PROPS_HEADER_TITLE: string; NUX_VALUE_PROPS_NEXT_BUTTON: string; NUX_VALUE_PROPS_SERVERS_2_CARD_TITLE: string; NUX_VALUE_PROPS_SERVERS_CARD_TITLE: string; NUX_VALUE_PROPS_SUBTITLE: string; NUX_VALUE_PROPS_VOICE_CARD_TITLE: string; NUX_VALUE_PROPS_WELCOME_CARD_TITLE: string; OAUTH2_ADD_TO_GUILD: string; OAUTH2_ADD_TO_GUILD_DESCRIPTION: FM; OAUTH2_ADD_TO_GUILD_PLACEHOLDER: string; OAUTH2_ADD_WEBHOOK_INCOMING: string; OAUTH2_ADVERTISEMENTS_DISCLOSURE: string; OAUTH2_CAN_READ_NOTICE: FM; OAUTH2_CANNOT_READ_SEND_NOTICE: FM; OAUTH2_CONFIRM_BOT_PERMISSIONS: FM<"applicationName" | "guildName", true>; OAUTH2_CONNECT_TO_DISCORD: string; OAUTH2_DETAILS_CREATION_DATE: FM<"date", false>; OAUTH2_DETAILS_GUILDS: FM<"guildCount", false>; OAUTH2_DETAILS_PRIVACY_POLICY: FM<"application", false>; OAUTH2_DETAILS_PRIVACY_POLICY_WITH_LINKS: FM<"application" | "privacyPolicyURL" | "termsOfServiceURL", true>; OAUTH2_DETAILS_PRIVACY_POLICY_WITH_PRIVACY_POLICY_LINK: FM<"application" | "privacyPolicyURL", true>; OAUTH2_DETAILS_PRIVACY_POLICY_WITH_TERMS_OF_SERVICE_LINK: FM<"application" | "termsOfServiceURL", true>; OAUTH2_DISABLED_PERMISSIONS: FM<"applicationName", true>; OAUTH2_FAKE_SCOPE_1: string; OAUTH2_FAKE_SCOPE_2: string; OAUTH2_FAKE_SCOPE_3: string; OAUTH2_FAKE_SCOPE_4: string; OAUTH2_FAKE_SCOPE_5: string; OAUTH2_FAKE_SCOPE_6: string; OAUTH2_FAKE_SCOPE_7: string; OAUTH2_FAKE_SCOPE_8: string; OAUTH2_GO_TO_SERVER_DEFAULT_CTA: string; OAUTH2_GO_TO_SERVER_NAME_CTA: FM<"guildName", true>; OAUTH2_INTEGRATION_SELECT_GUILD: string; OAUTH2_INTEGRATION_SELECT_GUILD_SUBTITLE: string; OAUTH2_INTEGRATION_SELECT_USER: string; OAUTH2_INTEGRATION_SELECT_USER_SUBTITLE: string; OAUTH2_IP_LOCATION_DISCLOSURE: string; OAUTH2_KEEP_SCROLLING: string; OAUTH2_LOGOUT: string; OAUTH2_MESSAGE_CTA: string; OAUTH2_MISSED_FIELDS: string; OAUTH2_OPEN_APP_CTA: string; OAUTH2_REQUEST_INVALID_SCOPE: FM<"scope", true>; OAUTH2_REQUEST_MISSING_PARAM: FM<"param", true>; OAUTH2_REQUESTS_ACCOUNT_ACCESS: string; OAUTH2_REQUESTS_PRIVATE_CHANNEL_INTEGRATION: string; OAUTH2_SCOPES_LABEL: FM<"application", false>; OAUTH2_SCOPES_LABEL_TRUSTED_NAME: FM<"application", false>; OAUTH2_SCROLL_TO_READ_DISCLOSURES: string; OAUTH2_SIGNED_IN_AS: FM<[never, "userHook"], true>; OAUTH2_THIRD_PARTY_APPLICATION: string; OAUTH2_TITLE: string; OAUTH2_UNKNOWN_ERROR: string; OBSCURED_CONTENT_HIDE_CONTENT_ALT: string; OBSCURED_CONTENT_INFO_LINK_TEXT: string; OBSCURED_CONTENT_LEARN_MORE_DESCRIPTION_ADULT: string; OBSCURED_CONTENT_LEARN_MORE_DESCRIPTION_TEEN: string; OBSCURED_CONTENT_LEARN_MORE_DISMISS: string; OBSCURED_CONTENT_LEARN_MORE_FALSE_POSITIVE: FM; OBSCURED_CONTENT_LEARN_MORE_HEADER: string; OBSCURED_CONTENT_LEARN_MORE_HEADER_IMAGE_ALT: string; OBSCURED_CONTENT_LEARN_MORE_MESSAGE_LABEL: string; OBSCURED_CONTENT_LEARN_MORE_MODAL_LABEL: string; OBSCURED_CONTENT_MARK_FALSE_POSITIVE: string; OBSCURED_CONTENT_MARK_FALSE_POSITIVE_MODAL_DESCRIPTION: string; OBSCURED_CONTENT_MARK_FALSE_POSITIVE_MODAL_HEADER: string; OBSCURED_CONTENT_MARK_FALSE_POSITIVE_SUCCESS: string; OBSCURED_CONTENT_SEARCH_TERM_BLUR: string; OBSCURED_CONTENT_SEARCH_TERM_EXPLICIT: string; OBSCURED_CONTENT_SEARCH_TERM_FILTER: string; OBSCURED_CONTENT_SEARCH_TERM_SENSITIVE_CONTENT: string; OBSCURED_CONTENT_SETTING_FRIENDS: string; OBSCURED_CONTENT_SETTING_GUILDS: string; OBSCURED_CONTENT_SETTING_NON_FRIENDS: string; OBSCURED_CONTENT_SETTINGS_DESC: FM<"learnMoreLink", true>; OBSCURED_CONTENT_SETTINGS_HEADER: string; OBSCURED_CONTENT_SETTINGS_OPTION_BLOCK: string; OBSCURED_CONTENT_SETTINGS_OPTION_BLUR: string; OBSCURED_CONTENT_SETTINGS_OPTION_SHOW: string; OBSCURED_CONTENT_SHOW_CONTENT_ALT: string; OBSCURED_CONTENT_UPDATE_SETTINGS_CTA: string; OFFER_ENDS_IN: FM<"hours" | "minutes" | "seconds", false>; OFFER_ENDS_IN_DAYS: FM<"days", false>; OFFER_ENDS_ON_DATE: FM<"date", false>; OK: string; OKAY: string; ONBOARDING: string; ONBOARDING_ADVANCED_MODE_DESCRIPTION: string; ONBOARDING_ADVANCED_MODE_ENABLE: string; ONBOARDING_ADVANCED_MODE_HEADER: string; ONBOARDING_ADVANCED_MODE_TOGGLE: string; ONBOARDING_CHANNEL_THRESHOLD_WARNING: FM; ONBOARDING_CHANNEL_THRESHOLD_WARNING_MOBILE: FM; ONBOARDING_CHOOSE_ALL_OPTIONS: string; ONBOARDING_CHOOSE_ONE_OPTION: string; ONBOARDING_COVER_PRIVACY_POLICY: FM<"privacyLink", true>; ONBOARDING_COVER_WELCOME_SUBTITLE: string; ONBOARDING_COVER_WELCOME_TITLE: FM<"guildName" | "userName", false>; ONBOARDING_DEFAULT_MODE_DESCRIPTION: string; ONBOARDING_DEFAULT_MODE_HEADER: string; ONBOARDING_DEFAULT_MODE_TOGGLE: string; ONBOARDING_ERROR_PAGE_TEXT: string; ONBOARDING_HELP_TEXT_ADD_CHANNELS: FM<["channel1" | "count", "itemHook"], true>; ONBOARDING_HELP_TEXT_ADD_ROLES: FM<["count" | "role1", "itemHook"], true>; ONBOARDING_HELP_TEXT_ADD_ROLES_ALSO: FM<["count" | "role1", "itemHook"], true>; ONBOARDING_LANDING_SUBTITLE: string; ONBOARDING_LANDING_TITLE: string; ONBOARDING_MODAL_LANDING_SUBTITLE: FM<"guildName", false>; ONBOARDING_MODAL_LANDING_TITLE: string; ONBOARDING_NO_PROMPTS: string; ONBOARDING_OPTION_ROLE_COUNTS: FM<"memberCount", true>; ONBOARDING_PROMPT_ACCEPT_SERVER_RULES: string; ONBOARDING_PROMPT_ADD_OPTION: string; ONBOARDING_PROMPT_ADD_PROMPT: string; ONBOARDING_PROMPT_ALLOW_MULTIPLE_LABEL: string; ONBOARDING_PROMPT_ANSWER_REQUIRED: string; ONBOARDING_PROMPT_ANSWERS_NEW: FM<"count", false>; ONBOARDING_PROMPT_CHANNEL_COVERAGE: FM<["numChannels" | "numTotalChannels", "channelsHook"], true>; ONBOARDING_PROMPT_CHANNEL_COVERAGE_ADD_HELP: FM<"numChannels", false>; ONBOARDING_PROMPT_CHANNEL_COVERAGE_CHANNELS: string; ONBOARDING_PROMPT_CHANNEL_COVERAGE_HELP: FM<"numChannels" | "percent", false>; ONBOARDING_PROMPT_CHANNEL_COVERAGE_MISSING_CHANNELS: FM<"numChannelsMissing", false>; ONBOARDING_PROMPT_DEFAULT_TITLE: string; ONBOARDING_PROMPT_DELETE: string; ONBOARDING_PROMPT_DROPDOWN_OPTIONS_HEADER: FM<"count" | "total", false>; ONBOARDING_PROMPT_EXAMPLES_1: string; ONBOARDING_PROMPT_EXAMPLES_2: string; ONBOARDING_PROMPT_EXAMPLES_3: string; ONBOARDING_PROMPT_EXAMPLES_4: string; ONBOARDING_PROMPT_EXAMPLES_5: string; ONBOARDING_PROMPT_EXAMPLES_6: string; ONBOARDING_PROMPT_EXAMPLES_HEADER: string; ONBOARDING_PROMPT_INCLUDE_IN_ONBOARDING_LABEL: string; ONBOARDING_PROMPT_MEMBER_DESCRIPTION: string; ONBOARDING_PROMPT_NO_PRIVATE_CHANNELS: string; ONBOARDING_PROMPT_NO_PRIVATE_CHANNELS_SUBTEXT: string; ONBOARDING_PROMPT_OPTION_CHANNEL_ROLES_PLACEHOLDER: string; ONBOARDING_PROMPT_OPTION_DESCRIPTION_PLACEHOLDER: string; ONBOARDING_PROMPT_OPTION_EMOJI_HEADER: string; ONBOARDING_PROMPT_OPTION_EMOJI_SUBHEADER: string; ONBOARDING_PROMPT_OPTION_MODAL_TITLE: string; ONBOARDING_PROMPT_OPTION_NAME_HEADER: string; ONBOARDING_PROMPT_OPTION_QUESTION_NUMBER: FM<"index", false>; ONBOARDING_PROMPT_OPTION_ROLES_CHANNELS_FOOTER: string; ONBOARDING_PROMPT_OPTION_ROLES_CHANNELS_HEADER: string; ONBOARDING_PROMPT_OPTION_ROLES_REQUIRED: string; ONBOARDING_PROMPT_OPTION_TITLE_PLACEHOLDER: string; ONBOARDING_PROMPT_OPTION_TITLE_REQUIRED: string; ONBOARDING_PROMPT_OPTIONS_HEADER: FM<"count" | "total", false>; ONBOARDING_PROMPT_QUESTIONS_HEADER: FM<"count", false>; ONBOARDING_PROMPT_REQUIRED_DISABLED_TOOLTIP: string; ONBOARDING_PROMPT_REQUIRED_LABEL: string; ONBOARDING_PROMPT_REQUIRED_LABEL_WITH_COUNT: FM<"count", false>; ONBOARDING_PROMPT_SAVE_FAILED: string; ONBOARDING_PROMPT_SAVE_TOO_MANY_PROMPTS_IN_ONBOARDING: FM<"numQuestions", false>; ONBOARDING_PROMPT_SETTINGS_HEADER: string; ONBOARDING_PROMPT_SETTINGS_HEADER_ADVANCED: string; ONBOARDING_PROMPT_SETTINGS_SUBHEADER: string; ONBOARDING_PROMPT_SINGLE_SELECT_LABEL: string; ONBOARDING_PROMPT_SINGLE_SELECT_UNIQUE_ROLES: string; ONBOARDING_PROMPT_THRESHOLD_ALERT_DESCRIPTION: FM<"thresholdCount", false>; ONBOARDING_PROMPT_THRESHOLD_ALERT_TITLE: string; ONBOARDING_PROMPT_TITLE_PLACEHOLDER: string; ONBOARDING_PROMPT_TITLE_REQUIRED: string; ONBOARDING_PROMPT_TOGGLE: string; ONBOARDING_PROMPTS_INCOMPLETE: string; ONBOARDING_PROMPTS_WARNING: string; ONBOARDING_QUESTION_COUNT: FM<"currentQuestion" | "questionCount", false>; ONBOARDING_QUESTIONS_CANNOT_MOVE: string; ONBOARDING_QUESTIONS_POST_JOIN_HEADER: string; ONBOARDING_QUESTIONS_POST_JOIN_SUBHEADER: string; ONBOARDING_QUESTIONS_PRE_JOIN_HEADER: string; ONBOARDING_QUESTIONS_PRE_JOIN_SUBHEADER: string; ONBOARDING_QUESTIONS_SAVE_TOO_MANY_PROMPTS_IN_ONBOARDING: FM<"numQuestions", false>; ONBOARDING_REQUIRED_QUESTION: string; ONBOARDING_RULES_AGREE_AND_FINISH: string; ONBOARDING_RULES_STEP: string; ONBOARDING_RULES_TITLE: string; ONE_APPLICATION_SUBSCRIPTION_EXPIRATION_CHANNEL_NOTICE_CONTENT: FM<"a", false>; ONE_TIME_CHARGE: FM<"currencyAmount", false>; ONE_TIME_CHARGE_INFO: string; ONE_TIME_PURCHASE_REVIEW_STEP_PURCHASE_DETAILS_LABEL: string; ONE_USER_TYPING: FM<"a", true>; ONGOING_CALL: string; ONGOING_CALL_TAP_TO_JOIN: string; ONGOING_CALL_YOU_ARE_ALL_ALONE: string; ONLINE_STATUS: string; ONLY_YOU_CAN_SEE_AND_DELETE_THESE: FM<"count" | "countMessages", true>; OPEN: string; OPEN_CHANNEL_TOPIC: string; OPEN_CHAT: string; OPEN_CONNECTION_REPLAY: string; OPEN_IN_APP: string; OPEN_IN_BROWSER: string; OPEN_IN_FULL_VIEW: string; OPEN_IN_SPLIT_VIEW: string; OPEN_IN_THEATER: string; OPEN_LINK: string; OPEN_NAVIGATION: string; OPEN_ORIGIANL_IMAGE_BUTTON_A11Y_DESCRIPTION: string; OPEN_USER_PROFILE_A11Y_HINT: string; OPENED_GIFT_CONFIRMATION: string; OPT_IN_CHANNEL_NOTICE: string; OPT_IN_CHANNEL_NOTICE_CTA: string; OPT_IN_CHANNEL_NOTICE_MOBILE_CTA: string; OPT_IN_CHANNEL_NOTICE_VOICE: string; OPT_IN_GUILD_NOTICE_CTA: string; OPT_IN_GUILD_NOTICE_DESCRIPTION: FM; OPT_IN_GUILD_NOTICE_TITLE: string; OPT_IN_NUX_CHANNELS_DESCRIPTION: string; OPT_IN_NUX_CHANNELS_TITLE: string; OPT_IN_NUX_RECENTS_DESCRIPTION: string; OPT_IN_NUX_RECENTS_TITLE: string; OPT_IN_NUX_VOICE_DESCRIPTION: string; OPT_IN_NUX_VOICE_TITLE: string; OPTIONAL_APPLICATION_COMMAND_INDICATOR: string; OPTIONS: string; OPTIONS_MATCHING: FM<"prefix", true>; OR: string; ORANGE: string; ORIGINALLY_KNOWN_AS: FM<"legacyUsername", false>; OS_MIN_SCREENSHARE_DIALOG_BODY: string; OS_MIN_SCREENSHARE_DIALOG_TITLE: string; OTHER: string; OTHER_HIGH_PRIORITY: string; OTHER_OPTIONS: string; OTHER_REACTIONS: string; OTHER_SERVER_NOTIFICATIONS: string; OUT_OF_DATE_ACTION: string; OUT_OF_DATE_DESCRIPTION: string; OUT_OF_DATE_TITLE: string; OUTBOUND_PROMO_UPSELL_EXPERIMENT_GIFTS_DESCRIPTION: FM; OUTBOUND_PROMO_UPSELL_EXPERIMENT_NAG_BAR_TITLE: string; OUTBOUND_PROMO_UPSELL_EXPERIMENT_NAG_BAR_TITLE_V2: string; OUTBOUND_PROMOTION_CARD_CLAIMED_EXPANDED_BODY: FM<"endDate", true>; OUTBOUND_PROMOTION_CARD_CLAIMED_UNEXPANDED_BODY: FM<"endDate", true>; OUTBOUND_PROMOTION_CARD_UNCLAIMED_EXPANDED_BODY: FM<"endDate", true>; OUTBOUND_PROMOTION_CARD_UNCLAIMED_UNEXPANDED_BODY: FM<"endDate", true>; OUTBOUND_PROMOTION_CODE_CONFIRMATION_EMAIL: string; OUTBOUND_PROMOTION_MORE_DETAILS: FM; OUTBOUND_PROMOTION_NOTICE: string; OUTBOUND_PROMOTION_REDEMPTION_MODAL_TITLE: string; OUTBOUND_PROMOTION_SEE_CODE: string; OUTGOING_FRIEND_REQUEST: string; OUTGOING_FRIEND_REQUEST_DELETE_MSG: FM<"name", true>; OUTPUT_DEVICE: string; OUTPUT_SEARCH_TERM_HEADPHONES: string; OUTPUT_SEARCH_TERM_SPEAKERS: string; OVERLAY: string; OVERLAY_ACTIONS_MENU_LABEL: string; OVERLAY_CHANNEL_CHAT_HOTKEY: FM<"channelName" | "keybind", false>; OVERLAY_CLICK_TO_JUMP_TO_CHANNEL: string; OVERLAY_CLICK_TO_UNLOCK: string; OVERLAY_CRASHED_TITLE: string; OVERLAY_DISABLED_OLD_CLIENT: string; OVERLAY_EXPLANATION: FM<"supportURL", true>; OVERLAY_FRIEND_CALLING: FM<"name", false>; OVERLAY_IN_GAME_PREVIEW_HEADER: string; OVERLAY_LAUNCH_OPEN_TIP: FM<["keybind", "keybindHook"], true>; OVERLAY_LAUNCH_TITLE: string; OVERLAY_LINK_ALERT_BODY: string; OVERLAY_LINK_ALERT_SECONDARY: string; OVERLAY_LINK_ALERT_TITLE: string; OVERLAY_MENU_GET_INVITE: string; OVERLAY_MENU_OPEN_DISCORD: string; OVERLAY_MENU_SWITCH_CHANNELS: string; OVERLAY_MOBILE_REQUIRED: string; OVERLAY_MOBILE_TOGGLE_DESC: string; OVERLAY_MOBILE_TOGGLE_LABEL: string; OVERLAY_MOBILE_UNAUTHED: string; OVERLAY_NEWS_GO_LIVE_BODY: FM<"game" | "server", false>; OVERLAY_NEWS_GO_LIVE_CTA: string; OVERLAY_NO_RESULTS: string; OVERLAY_NOTIFICATION_INCOMING_CALL: string; OVERLAY_NOTIFICATION_SETTINGS_DISABLED: string; OVERLAY_NOTIFICATION_SETTINGS_POSITION: FM<"position", false>; OVERLAY_NOTIFICATIONS_BOTTOM_LEFT: string; OVERLAY_NOTIFICATIONS_BOTTOM_RIGHT: string; OVERLAY_NOTIFICATIONS_DISABLED: string; OVERLAY_NOTIFICATIONS_SETTINGS: string; OVERLAY_NOTIFICATIONS_TOP_LEFT: string; OVERLAY_NOTIFICATIONS_TOP_RIGHT: string; OVERLAY_RELOAD: string; OVERLAY_RESET_DEFAULT_LAYOUT: string; OVERLAY_SETTINGS_GENERAL_TAB: string; OVERLAY_SETTINGS_TITLE: string; OVERLAY_SETTINGS_VOICE_TAB: string; OVERLAY_TOO_SMALL: FM<"height" | "width", false>; OVERLAY_UNLOCK_TO_ANSWER: FM<["keybind", "keybindHook"], true>; OVERLAY_UNLOCK_TO_JOIN: FM<["keybind", "keybindHook"], true>; OVERLAY_USER_CHAT_HOTKEY: FM<"keybind", false>; OVERLAY_WIDGET_HIDE_IN_GAME: string; OVERLAY_WIDGET_SHOW_IN_GAME: string; OVERVIEW: string; OVERWRITE_AUTOCOMPLETE_A11Y_LABEL: string; OVERWRITE_AUTOCOMPLETE_LABEL: string; OVERWRITE_AUTOCOMPLETE_PLACEHOLDER: string; OVERWRITE_NO_ROLE_TO_ADD: string; PAGINATION_NEXT: string; PAGINATION_PAGE_LABEL: FM<"pageNumber", false>; PAGINATION_PAGE_OF: FM<"page" | "totalPages", false>; PAGINATION_PREVIOUS: string; PAGINATION_SLIDE_LABEL: FM<"pageNumber", false>; PAGINATOR_CURRENT_PAGE: FM<"currentPage", false>; PAGINATOR_OF_PAGES: FM<"currentPage" | "numPages", false>; PAID_SERVICE_TERMS_AGREEMENT: string; PAID_SERVICES_TERMS: FM<"url", true>; PARTIAL_OUTAGE: FM<"count", true>; PARTIAL_OUTAGE_A11Y: FM<"count", false>; PARTNER_PROMOTION_CLAIM: string; PARTNER_PROMOTION_ERROR_BODY: string; PARTNER_PROMOTION_ERROR_TITLE: string; PARTNER_PROMOTION_UNKNOWN_GIFT_ERROR_BODY: string; PASSKEY_AND_SECURITY_KEY_ADDED: string; PASSKEY_AND_SECURITY_KEY_CREATED_TITLE: string; PASSKEY_AND_SECURITY_KEY_NO_KEYS_TEXT: string; PASSKEY_AND_SECURITY_KEY_REMOVE_CANCEL_TEXT: string; PASSKEY_AND_SECURITY_KEY_REMOVE_CONFIRMATION_SUBTITLE: string; PASSKEY_AND_SECURITY_KEY_REMOVE_CONFIRMATION_TEXT: string; PASSKEY_AND_SECURITY_KEY_REMOVE_KEY: FM<"keyName", false>; PASSKEY_AND_SECURITY_KEY_REMOVED: string; PASSKEY_AND_SECURITY_KEY_RENAME_TITLE: string; PASSKEY_AND_SECURITY_KEY_TITLE: string; PASSKEY_AND_SECURITY_KEY_UPDATED: string; PASSKEY_MODAL_ONBOARDING_FIRST_SECURITY_KEY_NAME: string; PASSKEY_MODAL_ONBOARDING_UPSELL_CANCEL_TEXT: string; PASSKEY_MODAL_ONBOARDING_UPSELL_GENERIC_BODY: string; PASSKEY_MODAL_ONBOARDING_UPSELL_GENERIC_VALUE_TWO: string; PASSKEY_MODAL_ONBOARDING_UPSELL_HEADER: string; PASSKEY_MODAL_ONBOARDING_UPSELL_IOS_BODY: string; PASSKEY_MODAL_ONBOARDING_UPSELL_IOS_VALUE_TWO: string; PASSKEY_MODAL_ONBOARDING_UPSELL_LEARN_MORE_LINK: FM<"learnMoreLink", true>; PASSKEY_MODAL_ONBOARDING_UPSELL_REGISTER_TEXT: string; PASSKEY_MODAL_ONBOARDING_UPSELL_VALUE_ONE: string; PASSWORD_LENGTH_ERROR: string; PASSWORD_MANAGER: string; PASSWORD_MANAGER_INFO_ANDROID: string; PASSWORD_MANAGER_OPEN_SETTINGS: string; PASSWORD_MANAGER_OPEN_SETTINGS_ERROR: string; PASSWORD_MANAGER_USE: string; PASSWORD_RECOVERY_EXTERNAL_LINK_DESCRIPTION: string; PASSWORD_RECOVERY_TITLE: string; PASSWORD_RECOVERY_VERIFY_PHONE_SUBTITLE: string; PASSWORD_RECOVERY_VERIFY_PHONE_SUBTITLE_RESEND: FM; PASSWORD_RECOVERY_VERIFY_PHONE_TITLE: string; PASSWORD_REQUIRED: string; PASSWORD_REQUIREMENTS_CHARACTER_TYPES: string; PASSWORD_REQUIREMENTS_EMPTY: string; PASSWORD_REQUIREMENTS_MIN_LENGTH: string; PASSWORDLESS_ENTER_PASSWORD_DESCRIPTION_EMAIL: FM<"email", false>; PASSWORDLESS_ENTER_PASSWORD_DESCRIPTION_PHONE: FM<"phone", false>; PASSWORDLESS_ENTER_PASSWORD_TITLE: string; PASSWORDLESS_SETTINGS_UPSELL_BODY: string; PASSWORDLESS_SETTINGS_UPSELL_BUTTON_TEXT: string; PASSWORDLESS_SETTINGS_UPSELL_HEADER: string; PASTE: string; PAUSE: string; PAYMENT_ACCOUNT_VERIFYING: string; PAYMENT_AUTH_EXPIRED_SUGGESTION: string; PAYMENT_AUTH_SUCCEEDED_SUGGESTION: string; PAYMENT_AUTHENTICATION_MODAL_BUTTON: string; PAYMENT_AUTHENTICATION_MODAL_BUTTON_CANCEL_PAYMENT: string; PAYMENT_AUTHENTICATION_MODAL_CANCELED: FM<"item", true>; PAYMENT_AUTHENTICATION_MODAL_FAIL: string; PAYMENT_AUTHENTICATION_MODAL_START: FM<"item" | "price", true>; PAYMENT_AUTHENTICATION_MODAL_SUCCESS: string; PAYMENT_AUTHENTICATION_MODAL_TITLE: string; PAYMENT_AUTHENTICATION_MODAL_TITLE_CANCELED: string; PAYMENT_AUTHENTICATION_MODAL_TITLE_FAIL: string; PAYMENT_AUTHENTICATION_MODAL_TITLE_SUCCESS: string; PAYMENT_AUTHORIZATION_EXPIRED: string; PAYMENT_AUTHORIZATION_SUCCEEDED: string; PAYMENT_AUTHORIZED_SUCCEEDED_SUGGESTION: string; PAYMENT_AUTHORIZING: string; PAYMENT_CURRENCY: string; PAYMENT_CURRENCY_PAYING_IN: string; PAYMENT_METHOD_CONFIRMATION_ERROR: string; PAYMENT_METHOD_INFO: string; PAYMENT_METHOD_SELECTION: string; PAYMENT_MODAL_BUTTON_PREMIUM: FM<"planPremiumType", false>; PAYMENT_MODAL_BUTTON_PREMIUM_GIFT: string; PAYMENT_MODAL_ONE_MONTH: string; PAYMENT_MODAL_ONE_YEAR: string; PAYMENT_MODAL_SUBTITLE_PREMIUM_GIFT: string; PAYMENT_PRICE_CHANGE_BODY: string; PAYMENT_PRICE_CHANGE_TITLE: string; PAYMENT_SOURCE_ACCOUNT_HOLDER_NAME: string; PAYMENT_SOURCE_ADD_SUCCESS_TOAST: string; PAYMENT_SOURCE_APPLE: string; PAYMENT_SOURCE_BANCONTACT: string; PAYMENT_SOURCE_CARD_ENDING: FM<"brand" | "last_4", true>; PAYMENT_SOURCE_CARD_ENDING_IN: FM<"last4", false>; PAYMENT_SOURCE_CARD_EXPIRES: FM<"month" | "year", false>; PAYMENT_SOURCE_CARD_NUMBER: string; PAYMENT_SOURCE_CASH_APP_PAY: string; PAYMENT_SOURCE_CASH_APP_PAY_CONNECTED_SUCCESS: FM<"cashtag", false>; PAYMENT_SOURCE_CASH_APP_PAY_CONNECTED_SUCCESS_INSTRUCTIONS: string; PAYMENT_SOURCE_CASH_APP_PAY_CONNECTION_INSTRUCTIONS: string; PAYMENT_SOURCE_CASH_APP_PAY_DETAILS: string; PAYMENT_SOURCE_CASH_APP_PAY_LOADING: string; PAYMENT_SOURCE_CONFIRM_PAYPAL_DETAILS: string; PAYMENT_SOURCE_CONNECT_TO_CASH_APP_PAY: string; PAYMENT_SOURCE_CONNECT_TO_PAYPAL: string; PAYMENT_SOURCE_CONNECT_TO_VENMO: string; PAYMENT_SOURCE_CREDIT_CARD_CARD_ONLY: string; PAYMENT_SOURCE_DELETE: string; PAYMENT_SOURCE_DELETE_DISABLED_TOOLTIP: string; PAYMENT_SOURCE_DELETED: string; PAYMENT_SOURCE_EDIT_HELP_CARD: string; PAYMENT_SOURCE_EDIT_HELP_PAYPAL: FM<"paypalURL", true>; PAYMENT_SOURCE_EDIT_SAVED: string; PAYMENT_SOURCE_EDIT_SELECT_STATE: string; PAYMENT_SOURCE_EDIT_TITLE: string; PAYMENT_SOURCE_EMAIL_ERROR_REQUIRED: string; PAYMENT_SOURCE_EPS: string; PAYMENT_SOURCE_EPS_ACCOUNT_HOLDER_NAME: string; PAYMENT_SOURCE_EPS_BANK_LABEL: string; PAYMENT_SOURCE_EPS_INFO: string; PAYMENT_SOURCE_EPS_WITH_BANK: FM<"bank", true>; PAYMENT_SOURCE_EXPIRATION_DATE_PLACEHOLDER: string; PAYMENT_SOURCE_GCASH: string; PAYMENT_SOURCE_GIROPAY: string; PAYMENT_SOURCE_GOPAY_WALLET: string; PAYMENT_SOURCE_GRABPAY: string; PAYMENT_SOURCE_IDEAL: string; PAYMENT_SOURCE_IDEAL_BANK_LABEL: string; PAYMENT_SOURCE_IDEAL_WITH_BANK: FM<"bank", true>; PAYMENT_SOURCE_INFORMATION: string; PAYMENT_SOURCE_INVALID: string; PAYMENT_SOURCE_INVALID_HELP: string; PAYMENT_SOURCE_KAKAOPAY: string; PAYMENT_SOURCE_MAKE_DEFAULT: string; PAYMENT_SOURCE_MOMO_WALLET: string; PAYMENT_SOURCE_NAME_ERROR_REQUIRED: string; PAYMENT_SOURCE_PAYMENT_REQUEST_BUTTON_GENERIC: string; PAYMENT_SOURCE_PAYMENT_REQUEST_BUTTON_GPAY: string; PAYMENT_SOURCE_PAYMENT_REQUEST_INFO_CREATING: FM<"last4", false>; PAYMENT_SOURCE_PAYMENT_REQUEST_INFO_LOADING: string; PAYMENT_SOURCE_PAYMENT_REQUEST_INFO_TITLE: string; PAYMENT_SOURCE_PAYMENT_REQUEST_LABEL: string; PAYMENT_SOURCE_PAYMENT_REQUEST_UNSUPPORTED: string; PAYMENT_SOURCE_PAYPAL: string; PAYMENT_SOURCE_PAYPAL_ACCOUNT: string; PAYMENT_SOURCE_PAYPAL_DETAILS: string; PAYMENT_SOURCE_PAYPAL_LOADING: string; PAYMENT_SOURCE_PAYSAFE_CARD: string; PAYMENT_SOURCE_PAYSAFE_CARD_REDIRECT: string; PAYMENT_SOURCE_PRZELEWY24: string; PAYMENT_SOURCE_PRZELEWY24_BANK_LABEL: string; PAYMENT_SOURCE_PRZELEWY24_INFO: string; PAYMENT_SOURCE_REDEMPTION_INVALID: string; PAYMENT_SOURCE_SOFORT: string; PAYMENT_SOURCE_SOFORT_INFO: string; PAYMENT_SOURCE_SUBSCRIPTION: string; PAYMENT_SOURCE_TYPE: string; PAYMENT_SOURCE_TYPE_SELECT: string; PAYMENT_SOURCE_UNKNOWN: string; PAYMENT_SOURCE_VENMO: string; PAYMENT_SOURCE_VENMO_CONNECTED_SUCCESS: FM<"venmoUsername", false>; PAYMENT_SOURCE_VENMO_CONNECTED_SUCCESS_INSTRUCTIONS: string; PAYMENT_SOURCE_VENMO_CONNECTION_INSTRUCTIONS: string; PAYMENT_SOURCE_VENMO_DETAILS: string; PAYMENT_SOURCE_VENMO_LOADING: string; PAYMENT_SOURCES_ADD: string; PAYMENT_WAITING_FOR_AUTHENTICATION: string; PAYMENT_WAITING_FOR_BROWSER_CHECKOUT_CONFIRM_MODAL_BODY: string; PAYMENT_WAITING_FOR_BROWSER_CHECKOUT_CONFIRM_MODAL_HEADER: string; PAYMENT_WAITING_FOR_BROWSER_CHECKOUT_CONFIRM_MODAL_INSTRUCTIONS: string; PAYMENT_WAITING_FOR_BROWSER_CHECKOUT_MODAL_BODY: string; PAYMENT_WAITING_FOR_BROWSER_CHECKOUT_MODAL_COUNTDOWN_HEADER: FM<"countdown", false>; PAYMENT_WAITING_FOR_BROWSER_CHECKOUT_MODAL_HEADER: string; PAYMENT_WAITING_FOR_BROWSER_CHECKOUT_MODAL_NEXT_BUTTON: string; PAYMENT_WAITING_FOR_PURCHASE_TOKEN_AUTHORIZATION_MODAL: string; PAYMENT_WAITING_FOR_PURCHASE_TOKEN_AUTHORIZATION_MODAL_HEADER: string; PAYMENT_WAITING_FOR_PURCHASE_TOKEN_AUTHORIZATION_MODAL_INSTRUCTIONS: string; PAYMENT_WAITING_FOR_PURCHASE_TOKEN_AUTHORIZATION_MODAL_NEXT_BUTTON: string; PAYMENT_WAITING_FOR_PURCHASE_TOKEN_AUTHORIZATION_MODAL_RESEND_ACTION: string; PAYMENT_WAITING_FOR_PURCHASE_TOKEN_AUTHORIZATION_MODAL_RESEND_PROMPT: string; PAYMENT_WAITING_FOR_PURCHASE_TOKEN_AUTHORIZATION_MODAL_RESEND_SENT: string; PAYPAL_ACCOUNT_VERIFYING: string; PAYPAL_CALLBACK_SUCCESS: FM; PEN_NAME: string; PENDING: string; PENDING_FRIENDS_LIST_HEADER: string; PEOPLE: string; PEOPLE_YOU_MAY_KNOW_LIST_HEADER: string; PERCENTAGE_SINCE_LAST_WEEK: FM<"percentage", false>; PERMISSION_HELPDESK: string; PERMISSION_MEDIA_DENIED: string; PERMISSION_MEDIA_DOWNLOAD_DENIED: string; PERMISSION_MICROPHONE_DENIED: string; PERMISSION_OVERRIDE_ALLOW: string; PERMISSION_OVERRIDE_DENY: string; PERMISSION_OVERRIDE_PASSTHROUGH: string; PERMISSION_OVERRIDES: string; PERMISSION_QR_SCANNER_DENIED: string; PERMISSIONS: string; PERMISSIONS_UNSYNCED: FM<"categoryName", true>; PERSONALIZATION_DISABLE_MODAL_BODY: string; PERSONALIZATION_DISABLE_MODAL_CANCEL: string; PERSONALIZATION_DISABLE_MODAL_CONFIRM: string; PERSONALIZATION_DISABLE_MODAL_TITLE: string; PHONE: string; PHONE_FAILED_TO_ADD: string; PHONE_INVALID: string; PHONE_IP_AUTHORIZATION_SUBTITLE: string; PHONE_IP_AUTHORIZATION_SUBTITLE_RESEND: FM; PHONE_IP_AUTHORIZATION_TITLE: string; PHONE_NOT_MOBILE_ERROR: string; PHONE_REQUIRED: string; PHONE_THEN_EMAIL_INTERSTITIAL_BODY: string; PHONE_THEN_EMAIL_INTERSTITIAL_CONFIRM: string; PHONE_THEN_EMAIL_INTERSTITIAL_TITLE: string; PHONE_VERIFICATION_ADD_TITLE: string; PHONE_VERIFICATION_CURRENT_PHONE: FM<"phone", false>; PHONE_VERIFICATION_NEW_PHONE_LABEL: string; PHONE_VERIFICATION_PHONE_LABEL: string; PHONE_VERIFICATION_RECEIVE_TEXT: string; PHONE_VERIFICATION_UPDATE_TITLE: string; PHOTO: string; PHOTOS: string; PHOTOS_AND_FILES: string; PHP_NAME: string; PICK_A_COLOR: string; PICK_A_COLOR_FROM_THE_PAGE: string; PICK_YOUR_PLAN: string; PICTURE_IN_PICTURE_CLOSE_PIP: string; PICTURE_IN_PICTURE_COLLAPSE: string; PICTURE_IN_PICTURE_DISMISS: string; PICTURE_IN_PICTURE_EXPAND: string; PICTURE_IN_PICTURE_SHOW_PIP: string; PIN: string; PIN_CONFIRM: string; PIN_MESSAGE: string; PIN_MESSAGE_BODY: FM<"channelName", false>; PIN_MESSAGE_BODY_MOBILE: string; PIN_MESSAGE_BODY_PRIVATE_CHANNEL: string; PIN_MESSAGE_TITLE: string; PIN_MESSAGE_TOO_MANY_BODY: FM<"channelName" | "maxPins", false>; PIN_MESSAGE_TOO_MANY_BODY_PRIVATE_CHANNEL: FM<"maxPins", false>; PIN_MESSAGE_TOO_MANY_TITLE: string; PIN_POST: string; PINNED_MESSAGES: string; PINNED_MESSAGES_PRO_TIP: string; PINNED_MESSAGES_PRO_TIP_BODY_CHANNEL: string; PINNED_MESSAGES_PRO_TIP_BODY_DMS: string; PINNED_POST: string; PINS: string; PINS_DISABLED_NSFW: string; PINS_UNREAD_A11Y_LABEL: string; PIXEL_VALUE_A11Y_TEXT: FM<"value", false>; pl: string; PLATFORM_ANDROID: string; PLATFORM_IOS: string; PLATFORM_LINUX: string; PLATFORM_MACOS: string; PLATFORM_WINDOWS: string; PLAY: string; PLAY_AGAIN: string; PLAY_BUTTON_A11Y_HINT: string; PLAY_FULL_VIDEO: string; PLAY_NOW: string; PLAYING_GAME: FM<"game", true>; PLAYSTATION: string; PLAYSTATION_CONNECT_DESCRIPTION: string; PLAYSTATION_DEVICES_INFOBOX: string; PLAYSTATION_DEVICES_NOT_FOUND: string; PLAYSTATION_DEVICES_NOT_FOUND_BODY: string; PLAYSTATION_JOIN_CALL: string; PLAYSTATION_REMOTE_CONNECTED: FM; PLAYSTATION_REMOTE_CONNECTED_RAW: string; PLAYSTATION_SELECT_DEVICE: string; PLAYSTATION_SELECT_DEVICE_RELOAD: string; PLAYSTATION_TRANSFERRING: string; PLAYSTATION_TRANSFERRING_ELLIPSIS: string; PLAYSTATION_TRANSFERRING_ELLIPSIS_BOLD: FM; PLEASE_TRY_AGAIN_LATER: string; PLN_NAME: string; POGGERMODE: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_1_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_1_NAME: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_2_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_2_NAME: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_3_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_3_NAME: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_4_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_MULTI_LEVEL_4_NAME: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_1_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_1_NAME: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_2_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_2_NAME: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_3_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_3_NAME: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_4_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_COMBO_VALUE_LEVEL_4_NAME: string; POGGERMODE_ACHIEVEMENT_CUSTOMIZE_CONFETTI_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_CUSTOMIZE_CONFETTI_NAME: string; POGGERMODE_ACHIEVEMENT_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_DISABLE_POGGERMODE_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_DISABLE_POGGERMODE_NAME: string; POGGERMODE_ACHIEVEMENT_ENABLE_POGGERMODE_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_ENABLE_POGGERMODE_NAME: string; POGGERMODE_ACHIEVEMENT_LOCKED_TITLE: string; POGGERMODE_ACHIEVEMENT_MORE_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_MORE_NAME: string; POGGERMODE_ACHIEVEMENT_PING_ME_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_PING_ME_NAME: string; POGGERMODE_ACHIEVEMENT_PING_SOMEONE_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_PING_SOMEONE_NAME: string; POGGERMODE_ACHIEVEMENT_TITLE: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_1_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_1_NAME: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_2_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_2_NAME: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_3_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_3_NAME: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_4_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_4_NAME: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_5_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_TOTAL_SCORE_LEVEL_5_NAME: string; POGGERMODE_ACHIEVEMENT_VISITOR_100_DESCRIPTION: string; POGGERMODE_ACHIEVEMENT_VISITOR_100_NAME: string; POGGERMODE_ACHIEVEMENTS: string; POGGERMODE_COMBO: FM<"multiplier", false>; POGGERMODE_COMBO_BAR: string; POGGERMODE_COMBO_SOUNDS_ENABLED: string; POGGERMODE_COMBO_SOUNDS_ENABLED_DESCRIPTION: string; POGGERMODE_COMBO_TIP: string; POGGERMODE_COMBOS_CUSTOMIZATION: string; POGGERMODE_COMBOS_ENABLED: string; POGGERMODE_COMBOS_ENABLED_DESCRIPTION: string; POGGERMODE_COMBOS_REQUIRED: string; POGGERMODE_COMBOS_REQUIRED_DESCRIPTION: string; POGGERMODE_CONFETTI_COUNT: string; POGGERMODE_CONFETTI_COUNT_DESCRIPTION: string; POGGERMODE_CONFETTI_CUSTOMIZATION: string; POGGERMODE_CONFETTI_ENABLED: string; POGGERMODE_CONFETTI_ENABLED_DESCRIPTION: string; POGGERMODE_CONFETTI_LOCATION_CALL_TILE_ENABLED: string; POGGERMODE_CONFETTI_LOCATION_CALL_TILE_ENABLED_DESCRIPTION: string; POGGERMODE_CONFETTI_LOCATION_CHAT_INPUT_ENABLED: string; POGGERMODE_CONFETTI_LOCATION_CHAT_INPUT_ENABLED_DESCRIPTION: string; POGGERMODE_CONFETTI_LOCATION_MEMBER_USER_ENABLED: string; POGGERMODE_CONFETTI_LOCATION_MEMBER_USER_ENABLED_DESCRIPTION: string; POGGERMODE_CONFETTI_LOCATION_REACTION_ENABLED: string; POGGERMODE_CONFETTI_LOCATION_REACTION_ENABLED_DESCRIPTION: string; POGGERMODE_CONFETTI_SIZE: string; POGGERMODE_CONFETTI_SIZE_DESCRIPTION: string; POGGERMODE_ENABLE: string; POGGERMODE_ENABLE_DESCRIPTION: string; POGGERMODE_HIDE_SETTINGS: string; POGGERMODE_HIDE_SETTINGS_DESCRIPTION: string; POGGERMODE_LOCATIONS: string; POGGERMODE_SCREENSHAKE: string; POGGERMODE_SCREENSHAKE_CUSTOMIZATION: string; POGGERMODE_SCREENSHAKE_DESCRIPTION: string; POGGERMODE_SCREENSHAKE_DISABLED_REDUCED_MOTION: string; POGGERMODE_SCREENSHAKE_ENABLED: string; POGGERMODE_SCREENSHAKE_ENABLED_DESCRIPTION: string; POGGERMODE_SCREENSHAKE_LOCATION_CHAT_INPUT_ENABLED: string; POGGERMODE_SCREENSHAKE_LOCATION_CHAT_INPUT_ENABLED_DESCRIPTION: string; POGGERMODE_SCREENSHAKE_LOCATION_MENTION_ENABLED: string; POGGERMODE_SCREENSHAKE_LOCATION_MENTION_ENABLED_DESCRIPTION: string; POGGERMODE_SCREENSHAKE_LOCATION_VOICE_USER_ENABLED: string; POGGERMODE_SCREENSHAKE_LOCATION_VOICE_USER_ENABLED_DESCRIPTION: string; POGGERMODE_SCREENSHAKE_MAX: string; POGGERMODE_SETTINGS_CUSTOMIZATION: string; POGGERMODE_TEMPORARILY_DISABLED_TOAST_BODY: string; POGGERMODE_TEMPORARILY_DISABLED_TOAST_TITLE: string; POGGERMODE_WARNING_BODY: string; POGGERMODE_WARNING_BODY_REDUCED_MOTION: string; POGGERMODE_WARNING_TITLE: string; POGGERMODE_WARNING_TITLE_REDUCED_MOTION: string; POLL: string; POLL_ALREADY_VOTED: string; POLL_ANSWER_VOTED_ARIA: string; POLL_ANSWER_VOTES_MODAL_TITLE: string; POLL_ANSWER_VOTES_MODAL_VOTE_TAB: FM<"numVotes" | "option", false>; POLL_CHOOSE_SINGLE_ANSWER_PROMPT: string; POLL_COACHMARK_CTA: string; POLL_COACHMARK_DISMISS: string; POLL_COACHMARK_SUBTITLE: string; POLL_COACHMARK_TITLE: string; POLL_EDIT_VOTE: string; POLL_END_EARLY: string; POLL_END_EARLY_CONFIRMATION_TEXT: string; POLL_END_EARLY_CONFIRMATION_TITLE: string; POLL_EXPIRED: string; POLL_EXPIRY_DAYS_REMAINING: FM<"days", false>; POLL_EXPIRY_HOURS_REMAINING: FM<"hours", false>; POLL_EXPIRY_MINUTES_REMAINING: FM<"minutes", false>; POLL_EXPRESSION_PICKER_BUTTON_ARIA: string; POLL_GUILD_MEMBER_UNVERIFIED_SUBTITLE: string; POLL_GUILD_MEMBER_UNVERIFIED_TITLE: string; POLL_HIDE_VOTES: string; POLL_LURKING_SEE_VOTES_TITLE: string; POLL_LURKING_UNVOTE_SUBTITLE: string; POLL_LURKING_UNVOTE_TITLE: string; POLL_LURKING_VOTE_SUBTITLE: string; POLL_LURKING_VOTE_TITLE: string; POLL_NO_VOTES_FOR_ANSWER_BODY: string; POLL_NO_VOTES_FOR_ANSWER_TITLE: string; POLL_NOT_INTERACTIVE: string; POLL_NOTIFICATIONS: string; POLL_OPTIONS_ARIA: string; POLL_REMOVE_VOTE: string; POLL_RESULT_MESSAGE_HEADER: FM<["title" | "username", "usernameHook"], true>; POLL_RESULT_NO_VOTERS: string; POLL_RESULT_REPLY_TEXT: FM<"title" | "username", true>; POLL_RESULT_TIED: string; POLL_RESULTS_NOTIFICATION: FM<"question", false>; POLL_SELECT_MULTIPLE_ANSWERS: string; POLL_SELECT_ONE_ANSWER: string; POLL_SENT_NOTIFICATION: FM<"question", false>; POLL_SHOW_VOTES: string; POLL_SUBMIT_VOTE: string; POLL_TAP_FOR_VOTERS_A11Y_ANDROID: string; POLL_TAP_FOR_VOTERS_A11Y_IOS: string; POLL_VOTES_COUNT: FM<"count", false>; POLL_VOTES_COUNT_CAPTIAL: FM<"count", false>; POLL_VOTES_NO_RESULTS_SUBTITLE: string; POLL_VOTES_NO_RESULTS_TITLE: string; POLL_VOTES_TOOLTIP_1_N: FM<"a" | "n", false>; POLL_VOTES_TOOLTIP_2: FM<"a" | "b", false>; POLL_VOTES_TOOLTIP_2_N: FM<"a" | "b" | "n", false>; POLL_VOTES_TOOLTIP_3: FM<"a" | "b" | "c", false>; POLL_VOTES_TOOLTIP_3_N: FM<"a" | "b" | "c" | "n", false>; POLL_VOTES_TOOLTIP_N: FM<"n", false>; POLLS: string; POLLS_MARKETING_EASTER_EGG_LOADING_LINE: string; POLLS_MARKETING_EASTER_EGG_PIZZA_EMOJI_DESCRIPTION: FM<"emojiName", false>; POMELO_ACTION_LABEL: string; POMELO_ACTION_NEEDED: FM; POMELO_ACTION_NEEDED_FORCE: FM<"date", true>; POMELO_ADD_FRIEND_DESCRIPTION: string; POMELO_ADD_FRIEND_ERROR: string; POMELO_ADD_FRIEND_PLACEHOLDER: string; POMELO_EXISTING_FLOW_AVAILABLE: string; POMELO_EXISTING_FLOW_COMPLETION_SUBTITLE: string; POMELO_EXISTING_FLOW_COMPLETION_TITLE: FM<"displayName", false>; POMELO_EXISTING_FLOW_ERROR_DOT_DOT: string; POMELO_EXISTING_FLOW_ERROR_GENERIC: string; POMELO_EXISTING_FLOW_ERROR_GENERIC_HELP: FM; POMELO_EXISTING_FLOW_ERROR_INVALID: string; POMELO_EXISTING_FLOW_ERROR_LIMIT: FM<"maxNum" | "minNum", false>; POMELO_EXISTING_FLOW_ERROR_UNAVAILABLE: string; POMELO_EXISTING_FLOW_ERROR_VERIFY: string; POMELO_EXISTING_FLOW_FINAL_REMINDER_BODY_1: FM; POMELO_EXISTING_FLOW_FINAL_REMINDER_TITLE: FM<"date", false>; POMELO_EXISTING_FLOW_PROMPT_BODY_1: FM; POMELO_EXISTING_FLOW_PROMPT_BODY_2: FM<"helpdeskArticle", true>; POMELO_EXISTING_FLOW_PROMPT_BODY_3: string; POMELO_EXISTING_FLOW_PROMPT_ITEM_1: FM; POMELO_EXISTING_FLOW_PROMPT_ITEM_2: FM; POMELO_EXISTING_FLOW_PROMPT_SKIP_CTA: string; POMELO_EXISTING_FLOW_PROMPT_TITLE: FM<"n", false>; POMELO_EXISTING_FLOW_REMINDER_BODY_1: string; POMELO_EXISTING_FLOW_REMINDER_BODY_2: FM; POMELO_EXISTING_FLOW_REMINDER_CTA: string; POMELO_EXISTING_FLOW_REMINDER_TITLE: string; POMELO_EXISTING_FLOW_STEP_1_ERROR_INVALID: string; POMELO_EXISTING_FLOW_STEP_1_SUBTITLE: string; POMELO_EXISTING_FLOW_STEP_1_TITLE: string; POMELO_EXISTING_FLOW_STEP_2_SUBTITLE: string; POMELO_EXISTING_FLOW_STEP_2_TITLE: string; POMELO_EXISTING_FLOW_USER_SETTINGS: FM; POMELO_FETCH_NEW_SUGGESTION: FM; POMELO_REG_FLOW_NAME_LABEL: string; POMELO_REG_FLOW_TITLE: string; POMELO_SUGGESTION_ORIGIN_NOTICE: FM<"source", false>; POMELO_UPDATE_DISABLED_MESSAGE: string; POMELO_VERIFY_EMAIL_BANNER: FM<"days", false>; POMELO_VERIFY_EMAIL_BANNER_ONE_DAY: string; POPOUT_PLAYER: string; POPOUT_PLAYER_OPENED: string; POPOUT_REMOVE_FROM_TOP: string; POPOUT_RETURN: string; POPOUT_STAY_ON_TOP: string; POTENTIAL_SPAM: string; POWERED_BY_NITRO: string; PREMIUM: string; PREMIUM_2024_APRIL_NITRO_OFFER_BANNER_BODY_NON_SUB: FM<"helpCenterLink", true>; PREMIUM_2024_APRIL_NITRO_OFFER_BANNER_BODY_UPGRADE: FM<"helpCenterLink", true>; PREMIUM_2024_APRIL_NITRO_OFFER_BANNER_HEADER: FM; PREMIUM_2024_APRIL_NITRO_OFFER_CLAIM_DECO_MODAL_BODY: FM; PREMIUM_2024_APRIL_NITRO_OFFER_HEADER: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_APP_ICONS_TILE_BODY: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_APP_ICONS_TILE_HEADER: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_BUTTON_CTA_NON_TIER_2_SUB: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_COLOR_THEMES_TILE_BODY: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_COLOR_THEMES_TILE_HEADER: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_CUSTOM_PROFILE_TILE_BODY: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_CUSTOM_PROFILE_TILE_HEADER: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_MODAL_TOP_PILL: string; PREMIUM_2024_APRIL_NITRO_OFFER_MODAL_SUBHEADER: string; PREMIUM_2024_APRIL_NITRO_OFFER_PAYMENT_FLOW_BANNER_HEADER: string; PREMIUM_5TH_ANNIVERSARY_BODY: string; PREMIUM_5TH_ANNIVERSARY_TITLE: string; PREMIUM_ACTIVATED: string; PREMIUM_ALERT_ERROR_TITLE: string; PREMIUM_ATTACHMENT_HOVER_NON_SUBSCRIBER: string; PREMIUM_ATTACHMENT_HOVER_SUBSCRIBER: string; PREMIUM_BADGE_TOOLTIP: FM<"date", false>; PREMIUM_CANCEL_CONFIRM_BODY: FM<"helpdeskArticle", true>; PREMIUM_CANCEL_CONFIRM_BODY_TIER_0: FM<"date", true>; PREMIUM_CANCEL_CONFIRM_BODY_TIER_0_PAYMENT_BLOCKED_RUSSIA: FM<"date" | "helpdeskArticle", true>; PREMIUM_CANCEL_CONFIRM_BODY_TIER_1: FM<"date", true>; PREMIUM_CANCEL_CONFIRM_BODY_TIER_1_PAYMENT_BLOCKED_RUSSIA: FM<"date" | "helpdeskArticle", true>; PREMIUM_CANCEL_CONFIRM_BODY_TIER_2: FM<"date", true>; PREMIUM_CANCEL_CONFIRM_BODY_TIER_2_PAYMENT_BLOCKED_RUSSIA: FM<"date" | "helpdeskArticle", true>; PREMIUM_CANCEL_CONFIRM_BUTTON: string; PREMIUM_CANCEL_CONFIRM_HEADER: string; PREMIUM_CANCEL_CONFIRM_NEW: FM<"planPremiumType", false>; PREMIUM_CANCEL_CONFIRM_TITLE: FM<"planPremiumType", false>; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_BIGGER_FILES: FM<"tier0MaxFileSize", true>; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_BODY: FM<"helpCenterLink" | "monthlyPrice", true>; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_CUSTOM_EMOJI_AND_STICKERS: FM; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_CUSTOM_VIDEO_BACKGROUNDS: FM; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_HEADER: string; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_MAIN_CTA: string; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_MAIN_CTA_V2: FM<"percentSavings", false>; PREMIUM_CANCEL_DOWNGRADE_TO_TIER_0_SECONDARY_CTA: string; PREMIUM_CANCEL_OR_EXTEND_PAUSE_SUBSCRIPTION: string; PREMIUM_CANCEL_PAST_DUE_CONFIRM_BODY: string; PREMIUM_CANCEL_WHAT_YOU_LOSE_BACK: string; PREMIUM_CANCEL_WHAT_YOU_LOSE_BACK_CTA: string; PREMIUM_CANCEL_WHAT_YOU_LOSE_BOOSTS: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_BOOSTS_APPLIED: FM<"boostCount", false>; PREMIUM_CANCEL_WHAT_YOU_LOSE_BOOSTS_TIER_1: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_EMOJI_STICKERS: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_EMOJI_STICKERS_TIER_1: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_PROFILE: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_PROFILE_TIER_1: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_SCREENSHARE: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_SCREENSHARE_TIER_2: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_SUBTITLE: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_SUBTITLE_MOBILE: FM<"subscriptionName", true>; PREMIUM_CANCEL_WHAT_YOU_LOSE_SUBTITLE_TENURE_REWARD: string; PREMIUM_CANCEL_WHAT_YOU_LOSE_SUBTITLE_TENURE_REWARD_V2: string; PREMIUM_CANCEL_WHAT_YOU_LOSE_TITLE: string; PREMIUM_CANCEL_WHAT_YOU_LOSE_UPLOADS_MESSAGES: FM; PREMIUM_CANCEL_WHAT_YOU_LOSE_UPLOADS_MESSAGES_TIER_1: FM; PREMIUM_CHANGE_DISCRIMINATOR_LENGTH_ERROR: string; PREMIUM_CHANGE_DISCRIMINATOR_WARNING: string; PREMIUM_CHANGE_DISCRIMINATOR_ZERO_ERROR: string; PREMIUM_CHAT_PERKS_CUSTOM_STICKERS: string; PREMIUM_CHAT_PERKS_MAX_MESSAGE_LENGTH: FM<"nonPremiumMaxMessageLength" | "premiumMaxMessageLength", false>; PREMIUM_CHAT_PERKS_MAX_MESSAGE_LENGTH_UPSELL: FM<"premiumMaxMessageLength", true>; PREMIUM_CHOOSE_PLAN_TITLE: string; PREMIUM_CLASSIC_PAYMENT_GIFT_BLURB_MOBILE: FM; PREMIUM_COMPARISON_TABLE_WHAT_YOU_HAVE_GOT_TITLE: string; PREMIUM_CTA_TIER_0: string; PREMIUM_CURRENT_ACTIVE_SUBSCRIPTION: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_COACHMARK_DESCRIPTION: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_COACHMARK_DESCRIPTION_V2: FM; PREMIUM_CUSTOM_NOTIFICATION_SOUND_COACHMARK_TITLE: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_NOTIFICATION_SETTINGS_DESCRIPTION_V2: FM<[never, "guildName"], true>; PREMIUM_CUSTOM_NOTIFICATION_SOUND_NOTIFICATION_SETTINGS_LABEL: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_NOTIFICATION_SETTINGS_UPSELL: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_NOTIFICATION_SETTINGS_WARNING: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_ROADBLOCK_DESCRIPTION: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_ROADBLOCK_LABEL: string; PREMIUM_CUSTOM_NOTIFICATION_SOUND_ROADBLOCK_TITLE: string; PREMIUM_DISCOUNT_AMOUNT_OFF_BADGE: FM<"percent", false>; PREMIUM_DISCOUNT_BADGE: string; PREMIUM_DISCOUNT_CTA: FM<"percent", false>; PREMIUM_DISCOUNT_CTA_WITHOUT_PERCENT: string; PREMIUM_DISCOUNT_SWEET: string; PREMIUM_DOWNGRADE_DONE_BUTTON: string; PREMIUM_DOWNGRADE_WHAT_YOU_LOSE_SUBTITLE: FM<"subscriptionName", true>; PREMIUM_DOWNGRADE_WHAT_YOU_LOSE_TITLE: string; PREMIUM_FEATURE_AVATAR_DECORATIONS_HEADER: string; PREMIUM_FEATURES_MESSAGE_LENGTH_HEADING: string; PREMIUM_FEATURES_MESSAGE_LENGTH_SUBHEADING: string; PREMIUM_FEATURES_TABLE_TITLE_CHURN: string; PREMIUM_FEATURES_TABLE_TITLE_SUBSCRIBER: string; PREMIUM_FREE_NITRO_TRIAL_TEXT: string; PREMIUM_GAME: string; PREMIUM_GIFT_BUTTON_LABEL: string; PREMIUM_GIFT_BUTTON_TOOLTIP: string; PREMIUM_GIFT_SHARE_LINK_IOS: string; PREMIUM_GIFTING_BUTTON: string; PREMIUM_GIFTING_PURCHASE_GIFT: string; PREMIUM_GIFTING_REPEAT_GIFT: string; PREMIUM_GIFTING_TITLE: string; PREMIUM_GIFTING_TITLE_MOBILE: string; PREMIUM_GRANDFATHERED_MONTHLY: FM<"date", true>; PREMIUM_GRANDFATHERED_YEARLY: FM<"date", true>; PREMIUM_GUILD_BOOST_SERVER: string; PREMIUM_GUILD_BOOST_THIS_SERVER: string; PREMIUM_GUILD_COOLDOWN_AVAILABLE_COUNTDOWN: FM<"days" | "hours" | "minutes", true>; PREMIUM_GUILD_COOLDOWN_AVAILABLE_COUNTDOWN_DAYS: FM<"days", false>; PREMIUM_GUILD_COOLDOWN_AVAILABLE_COUNTDOWN_HOURS: FM<"hours" | "minutes", false>; PREMIUM_GUILD_COOLDOWN_AVAILABLE_COUNTDOWN_MINUTES: FM<"minutes", false>; PREMIUM_GUILD_FEATURES_CUSTOM_EMOJI_MOBILE: string; PREMIUM_GUILD_FEATURES_UPLOAD_SIZES_MOBILE: string; PREMIUM_GUILD_FEATURES_UPSELL_BANNER_SUBSCRIBE: FM<"helpdeskArticle" | "numFreeGuildSubscriptions", true>; PREMIUM_GUILD_FEATURES_VOICE_QUALITY: string; PREMIUM_GUILD_FULL_FEATURE_LIST: FM<"helpdeskArticle", true>; PREMIUM_GUILD_GRACE_PERIOD_COOLDOWN: FM<"days" | "hours" | "numPremiumSubscriptions" | "tierName", true>; PREMIUM_GUILD_GRACE_PERIOD_COOLDOWN_SOON: FM<"numPremiumSubscriptions" | "tierName", true>; PREMIUM_GUILD_GRACE_PERIOD_NOTICE: string; PREMIUM_GUILD_GRACE_PERIOD_NOTICE_BUTTON: string; PREMIUM_GUILD_GRACE_PERIOD_TITLE: FM; PREMIUM_GUILD_GUILD_FEATURE_AUDIO_QUALITY: string; PREMIUM_GUILD_GUILD_FEATURE_CUSTOMIZATION: string; PREMIUM_GUILD_GUILD_FEATURE_EMOJI: string; PREMIUM_GUILD_GUILD_FEATURE_STICKERS: string; PREMIUM_GUILD_GUILD_FEATURE_THREADS: string; PREMIUM_GUILD_GUILD_FEATURE_UPLOAD_SIZE: string; PREMIUM_GUILD_GUILD_FEATURES_HEADER: string; PREMIUM_GUILD_GUILD_ROLE_ICONS: string; PREMIUM_GUILD_HEADER_BADGE_NO_TIER: string; PREMIUM_GUILD_HEADER_DROPDOWN_NITRO_SERVER_SUBSCRIBE: string; PREMIUM_GUILD_INCLUDED: string; PREMIUM_GUILD_NUM_MONTH_GUILD_SUBSCRIPTIONS: FM<"num", true>; PREMIUM_GUILD_NUM_MONTH_GUILD_SUBSCRIPTIONS_UNFORMATTED: FM<"num", false>; PREMIUM_GUILD_NUM_MULTI_MONTHS_GUILD_SUBSCRIPTIONS: FM<"intervalCount" | "num", true>; PREMIUM_GUILD_NUM_YEAR_GUILD_SUBSCRIPTIONS: FM<"num", true>; PREMIUM_GUILD_PERKS_MODAL_BASE_PERKS: string; PREMIUM_GUILD_PERKS_MODAL_BLURB: FM<"helpdeskArticle", true>; PREMIUM_GUILD_PERKS_MODAL_BLURB_MOBILE: string; PREMIUM_GUILD_PERKS_MODAL_BLURB_MOBILE_LEARN_MORE: FM<"helpdeskArticle", true>; PREMIUM_GUILD_PERKS_MODAL_BOOST_ALERT_IOS_TITLE: string; PREMIUM_GUILD_PERKS_MODAL_BUTTON_SUBSCRIBE_THIS_SERVER: string; PREMIUM_GUILD_PERKS_MODAL_BUTTON_UPGRADE_TO_PREMIUM_EXTERNAL_ERROR: FM<"paymentGatewayName" | "subscriptionManagementLink", true>; PREMIUM_GUILD_PERKS_MODAL_GIFT_NITRO: string; PREMIUM_GUILD_PERKS_MODAL_HEADER: string; PREMIUM_GUILD_PERKS_MODAL_HEADER_SUBSCRIPTION_COUNT: FM<"subscriptions", false>; PREMIUM_GUILD_PERKS_MODAL_HEADER_USER_SUBSCRIPTION_COUNT: FM<"numSubscriptions", false>; PREMIUM_GUILD_PERKS_MODAL_HEADER_USER_SUBSCRIPTION_COUNT_WITHOUT_PARENTHESES: FM<"numSubscriptions", false>; PREMIUM_GUILD_PERKS_MODAL_LEVEL_SUBSCRIBER_COUNT_TOOLTIP: FM<"numRequired" | "subscriberCount", true>; PREMIUM_GUILD_PERKS_MODAL_MANAGE_YOUR_SUBSCRIPTIONS: string; PREMIUM_GUILD_PERKS_MODAL_PREVIOUS_PERKS: string; PREMIUM_GUILD_PERKS_MODAL_PROTIP: FM<["numFreeGuildSubscriptions", "protipHook"], true>; PREMIUM_GUILD_PERKS_MODAL_PROTIP_MOBILE: FM<"numFreeGuildSubscriptions" | "onLearnMore", true>; PREMIUM_GUILD_PERKS_MODAL_SUBSCRIBE_TO_TIER_TOOLTIP: FM<"tierName", true>; PREMIUM_GUILD_PERKS_MODAL_SUBSCRIBE_WITH_FREE_BOOSTS: string; PREMIUM_GUILD_PERKS_MODAL_SUBSCRIBER_PERKS_HEADER: string; PREMIUM_GUILD_PERKS_MODAL_VIDEO_STAGE_BODY: string; PREMIUM_GUILD_PERKS_MODAL_VIDEO_STAGE_BODY_BOOSTING_EXPT: string; PREMIUM_GUILD_PERKS_MODAL_VIDEO_STAGE_HEADER: string; PREMIUM_GUILD_PERKS_MODAL_VIEW_YOUR_SUBSCRIPTIONS: string; PREMIUM_GUILD_PLAN_3_MONTH: string; PREMIUM_GUILD_PLAN_6_MONTH: string; PREMIUM_GUILD_PLAN_MONTH: string; PREMIUM_GUILD_PLAN_SINGLE_MONTH: string; PREMIUM_GUILD_PLAN_SINGLE_YEAR: string; PREMIUM_GUILD_PLAN_YEAR: string; PREMIUM_GUILD_PREVIEW: string; PREMIUM_GUILD_SETTINGS_MEMBERS_SUBSCRIBED_NEEDED: FM<"number" | "tier", true>; PREMIUM_GUILD_SETTINGS_X_OF_Y_SUBSCRIPTIONS: FM<"numRequired" | "subscribers", false>; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_BLURB: string; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_CANCEL_WARNING: FM<"canceledCount" | "date", false>; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_CONFIRMATION: FM<"slotCount", false>; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_CONFIRMATION_LABEL: FM<"slotCount", false>; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_COOLDOWN_WARNING: FM<"days" | "slotCount", false>; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_TRANSFER_BLURB: FM<"guildCount" | "slotCount", false>; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_TRANSFER_FROM_GUILD: FM<"guildCount", false>; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_TRANSFER_HEADER: string; PREMIUM_GUILD_SUBSCRIBE_CONFIRM_TRANSFER_TO_GUILD: FM<"slotCount", false>; PREMIUM_GUILD_SUBSCRIBE_SEARCH_GUILD_PLACEHOLDER: string; PREMIUM_GUILD_SUBSCRIBE_SELECT_GUILD_HEADER: string; PREMIUM_GUILD_SUBSCRIBE_SELECT_GUILD_TRANSFER_HEADER: string; PREMIUM_GUILD_SUBSCRIBE_SUCCESS_OKAY: string; PREMIUM_GUILD_SUBSCRIBE_TRANSFER_CONFIRM_CONFIRMATION: FM<"slotCount", false>; PREMIUM_GUILD_SUBSCRIBE_TRANSFER_CONFIRM_CONFIRMATION_LABEL: FM<"slotCount", false>; PREMIUM_GUILD_SUBSCRIBE_TRANSFER_ERROR_BODY: string; PREMIUM_GUILD_SUBSCRIBE_TRANSFER_ERROR_HEADER: string; PREMIUM_GUILD_SUBSCRIBE_UNUSED_SLOTS_CANCEL: string; PREMIUM_GUILD_SUBSCRIBE_UNUSED_SLOTS_COUNTER: string; PREMIUM_GUILD_SUBSCRIBE_UNUSED_SLOTS_DESCRIPTION: string; PREMIUM_GUILD_SUBSCRIBE_UNUSED_SLOTS_HEADER: string; PREMIUM_GUILD_SUBSCRIBE_UNUSED_SLOTS_NEXT: string; PREMIUM_GUILD_SUBSCRIBER_FEATURE_MEMBER_BADGE: string; PREMIUM_GUILD_SUBSCRIBER_FEATURE_PROFILE_BADGE: string; PREMIUM_GUILD_SUBSCRIBER_FEATURE_ROLE: string; PREMIUM_GUILD_SUBSCRIPTION: string; PREMIUM_GUILD_SUBSCRIPTION_ACTIVE_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_APPLY_GUILD_NOT_FOUND: string; PREMIUM_GUILD_SUBSCRIPTION_APPLY_NON_GUILD_MEMBER: FM<[never, "publicGuildDirectoryHook"], true>; PREMIUM_GUILD_SUBSCRIPTION_AVAILABLE: FM<"numSubscriptions", false>; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_BODY_EXTERNAL: FM<"paymentGatewayName" | "subscriptionManagementLink", true>; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_BODY_GUILD: FM<"endDate", true>; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_BODY_INVENTORY: FM<"endDate", true>; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_BUTTON_DISABLED_PAST_DUE_TOOLTIP: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_BUTTON_DISABLED_TOOLTIP: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_BUTTON_MOBILE: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_ERROR_MOBILE: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_INVOICE_SUBSCRIPTION_CANCELLED: FM<"subscriptionCount", true>; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_PREVIEW: FM<"endDate", true>; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_TITLE_GUILD: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_TITLE_INVENTORY: string; PREMIUM_GUILD_SUBSCRIPTION_CANCEL_TITLE_PENDING_CANCELLATION: string; PREMIUM_GUILD_SUBSCRIPTION_CONFIRM_BODY: FM<"endDate", true>; PREMIUM_GUILD_SUBSCRIPTION_CONFIRM_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_CREATION_DATE: FM<"date", false>; PREMIUM_GUILD_SUBSCRIPTION_DURATION: FM<"date" | "months", false>; PREMIUM_GUILD_SUBSCRIPTION_DURATION_SHORTENED: FM<"date", false>; PREMIUM_GUILD_SUBSCRIPTION_ERROR_MOBILE: string; PREMIUM_GUILD_SUBSCRIPTION_ERROR_PENDING_MUTATION: string; PREMIUM_GUILD_SUBSCRIPTION_ERROR_RATE_LIMIT_DAYS: FM<"days" | "hours", true>; PREMIUM_GUILD_SUBSCRIPTION_ERROR_RATE_LIMIT_HOURS: FM<"hours" | "minutes", true>; PREMIUM_GUILD_SUBSCRIPTION_ERROR_RATE_LIMIT_MINUTES: FM<"minutes", true>; PREMIUM_GUILD_SUBSCRIPTION_GUILD_AFFINITY_NOTICE: string; PREMIUM_GUILD_SUBSCRIPTION_GUILD_AFFINITY_NOTICE_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_GUILD_AFFINITY_NOTICE_SMALL_GUILD: string; PREMIUM_GUILD_SUBSCRIPTION_GUILD_SUBSRIPTION_SUBTITLE: FM<"numSubscriptions", false>; PREMIUM_GUILD_SUBSCRIPTION_HEADER_SUBSCRIBE_TOOLTIP_CLOSE: string; PREMIUM_GUILD_SUBSCRIPTION_HEADER_SUBSCRIBE_TOOLTIP_HEADER: string; PREMIUM_GUILD_SUBSCRIPTION_HEADER_SUBSCRIBE_TOOLTIP_TEXT: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_BUTTON_MOBILE: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_CONFIRM_DESCRIPTION: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_CONFIRM_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_DESCRIPTION: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_ERROR: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_INVENTORY_UNCANCEL_TITLE_MOBILE: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_BLURB: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_GUILDS_BLURB: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_GUILDS_BLURB_PROMPT: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_GUILDS_BLURB_WITHOUT_PROMPT: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_GUILDS_EMPTY_DESCRIPTION_TEXT: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_GUILDS_EMPTY_DESCRIPTION_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_HEADER: string; PREMIUM_GUILD_SUBSCRIPTION_MARKETING_HEADER_IOS: string; PREMIUM_GUILD_SUBSCRIPTION_NOTICE: string; PREMIUM_GUILD_SUBSCRIPTION_NOTICE_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_NOTICE_SMALL_GUILD: string; PREMIUM_GUILD_SUBSCRIPTION_NUM_SUBSCRIPTIONS: FM<"numSubscriptions", false>; PREMIUM_GUILD_SUBSCRIPTION_OUT_OF_SLOTS_ACCOUNT_HOLD: string; PREMIUM_GUILD_SUBSCRIPTION_OUT_OF_SLOTS_ACCOUNT_HOLD_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_OUT_OF_SLOTS_CANCELED_SUBSCRIPTION: string; PREMIUM_GUILD_SUBSCRIPTION_OUT_OF_SLOTS_PENDING_PLAN_CHANGE: string; PREMIUM_GUILD_SUBSCRIPTION_OUT_OF_SLOTS_PURCHASE_ON_DESKTOP: FM<"helpdeskArticle", true>; PREMIUM_GUILD_SUBSCRIPTION_OUT_OF_SLOTS_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_PENDING_CANCELATION: FM<"date", true>; PREMIUM_GUILD_SUBSCRIPTION_PURCHASE_BUTTON_DISABLED_PENDING_MUTATION_PLAN: string; PREMIUM_GUILD_SUBSCRIPTION_PURCHASE_BUTTON_DISABLED_PENDING_MUTATION_PREMIUM_GUILD_SUBSCRIPTION: string; PREMIUM_GUILD_SUBSCRIPTION_PURCHASE_BUTTON_DISABLED_SUBSCRIPTION_ACCOUNT_HOLD: string; PREMIUM_GUILD_SUBSCRIPTION_PURCHASE_BUTTON_DISABLED_SUBSCRIPTION_PAST_DUE: string; PREMIUM_GUILD_SUBSCRIPTION_SELECT_SERVER_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_SLOT_CANCEL_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_SLOT_UNCANCEL_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_SLOT_UNCANCEL_BUTTON_MOBILE: string; PREMIUM_GUILD_SUBSCRIPTION_SUBSCRIBE: string; PREMIUM_GUILD_SUBSCRIPTION_SUBSCRIBER_COUNT_TOOLTIP: FM<"subscriberCount", false>; PREMIUM_GUILD_SUBSCRIPTION_SUBTITLE: FM<"helpdeskArticle", true>; PREMIUM_GUILD_SUBSCRIPTION_SUBTITLE_MOBILE_1: string; PREMIUM_GUILD_SUBSCRIPTION_SUBTITLE_MOBILE_2: FM<"helpdeskArticle", true>; PREMIUM_GUILD_SUBSCRIPTION_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_TOOLTIP: FM<"date", false>; PREMIUM_GUILD_SUBSCRIPTION_TRANSFER_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_TRANSFER_BUTTON_DISABLED_TOOLTIP: string; PREMIUM_GUILD_SUBSCRIPTION_TRANSFER_HERE: string; PREMIUM_GUILD_SUBSCRIPTION_UNUSED_SLOT_DESCRIPTION: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_BANNER_BUTTON: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_BANNER_HEADER: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_MODAL_FEATURE_BANNER_SUBTITLE: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_MODAL_FEATURE_BANNER_TITLE: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_MODAL_HEADER: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_MODAL_HEADER_IMG_ALT_TEXT: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_MODAL_PROGRESS_BAR_HEADER: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_ACTIVITIES: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_ANIMATED_GUILD_BANNER: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_ANIMATED_ICON: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_AUDIO_QUALITY: FM<"targetQuality", false>; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_CUSTOM_INVITE: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_FILE_UPLOAD_TIER_3: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_GUILD_BANNER: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_OTHER: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_OTHER_TIER_1: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_OTHER_TIER_2: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_OTHER_TIER_3: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_ROLE_ICON: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_SCREEN_SHARE_1080P: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_SCREEN_SHARE_720P: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_STICKERS: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_STICKERS_AND_EMOJIS: FM<"numEmojis" | "numStickers", false>; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_STICKERS_UPLOAD: FM<"numStickers", false>; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_THREADS_PRIVATE: string; PREMIUM_GUILD_SUBSCRIPTION_UPSELL_PERKS_VANITY_URL: string; PREMIUM_GUILD_SUBSCRIPTIONS_GOAL: FM<"levelName", false>; PREMIUM_GUILD_SUBSCRIPTIONS_NUDGE_TOOLTIP: FM<"levelName", false>; PREMIUM_GUILD_SUBSCRIPTIONS_NUDGE_TOOLTIP_COMPLETE: string; PREMIUM_GUILD_SUBSCRIPTIONS_PROGRESS_BAR_BLURB: FM<"numBoosts" | "numTotal", true>; PREMIUM_GUILD_SUBSCRIPTIONS_PROGRESS_BAR_COMPLETED_BLURB: FM<"numBoosts", true>; PREMIUM_GUILD_SUBSCRIPTIONS_PROGRESS_BAR_TADA_ICON_ALT_TEXT: string; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO: FM<"quantity" | "rate", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_ACCOUNT_HOLD: FM<"boostQuantity" | "quantity" | "rate", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_ACCOUNT_HOLD_NO_PRICE: FM<"boostQuantity" | "quantity", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_ACCOUNT_HOLD_TAX_EXCLUSIVE: FM<"boostQuantity" | "quantity" | "rate", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_ANDROID: FM<"boostQuantity" | "quantity" | "rate", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_NO_PRICE: FM<"quantity", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_PENDING_CANCELATION: FM<"quantity" | "rate", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_PENDING_CANCELATION_ANDROID: FM<"boostQuantity" | "quantity" | "rate", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_PENDING_CANCELATION_NO_PRICE: FM<"quantity", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_PENDING_CANCELATION_TAX_EXCLUSIVE: FM<"quantity" | "rate", true>; PREMIUM_GUILD_SUBSCRIPTIONS_RENEWAL_INFO_TAX_EXCLUSIVE: FM<"quantity" | "rate", true>; PREMIUM_GUILD_TIER_0: string; PREMIUM_GUILD_TIER_1: string; PREMIUM_GUILD_TIER_1_SHORT: string; PREMIUM_GUILD_TIER_2: string; PREMIUM_GUILD_TIER_2_SHORT: string; PREMIUM_GUILD_TIER_3: string; PREMIUM_GUILD_TIER_3_SHORT: string; PREMIUM_GUILD_TIER_UNLOCKED: string; PREMIUM_GUILD_UNLOCK_WTH_BOOSTING_CTA: string; PREMIUM_GUILD_USER_FEATURE_BOOST_CRYSTAL: string; PREMIUM_GUILD_USER_FEATURE_MEMBER_BADGE: string; PREMIUM_GUILD_USER_FEATURE_OTHERS: string; PREMIUM_GUILD_USER_FEATURE_PROFILE_BADGE: string; PREMIUM_GUILD_USER_FEATURE_ROLE: string; PREMIUM_GUILD_USER_FEATURE_SPECIAL_ROLE: string; PREMIUM_GUILD_USER_FEATURES_HEADER: string; PREMIUM_INCLUDED: string; PREMIUM_MANAGE_VIA_DESKTOP: FM<"helpdeskArticle", true>; PREMIUM_MARKETING_BADGE_PERK_DESCRIPTION: string; PREMIUM_MARKETING_BADGE_PERK_TITLE: string; PREMIUM_MARKETING_BEST_OF_NITRO_EMOJIS_DESCRIPTION: string; PREMIUM_MARKETING_BOOST_PERK_TITLE: string; PREMIUM_MARKETING_EMOJI_PERK_TITLE: string; PREMIUM_MARKETING_FEATURE_CUSTOM_APP_ICONS_DESCRIPTION: string; PREMIUM_MARKETING_FEATURE_CUSTOM_APP_ICONS_TITLE: string; PREMIUM_MARKETING_FEATURE_EMOJI_TITLE: string; PREMIUM_MARKETING_FEATURE_PREMIUM_BADGE_DESCRIPTION_VARIANT_1: string; PREMIUM_MARKETING_FEATURE_PREMIUM_GO_LIVE_TITLE: string; PREMIUM_MARKETING_FOOTER_CTAS_HEADING: string; PREMIUM_MARKETING_HERO_HEADER_DESCRIPTION: FM<"cheapestMonthlyPrice", false>; PREMIUM_MARKETING_HERO_HEADER_TITLE: string; PREMIUM_MARKETING_HERO_HEADER_TITLE_V2: string; PREMIUM_MARKETING_HERO_HEADER_TITLE_V3: string; PREMIUM_MARKETING_LONGER_MESSAGES_PERK_DESCRIPTION: string; PREMIUM_MARKETING_LONGER_MESSAGES_PERK_TITLE: string; PREMIUM_MARKETING_MORE_GUILDS_PERK_DESCRIPTION: string; PREMIUM_MARKETING_MORE_GUILDS_PERK_TITLE: string; PREMIUM_MARKETING_PER_GUILD_PROFILE_THEMES_PERK_DESCRIPTION_CHECK_IT_OUT: FM; PREMIUM_MARKETING_PER_GUILD_PROFILE_THEMES_PERK_DESCRIPTION_TRY_IT_OUT: FM; PREMIUM_MARKETING_PER_GUILD_PROFILES_PERK_TITLE: string; PREMIUM_MARKETING_PERK_GRID_ITEM_HEADING_PREMIUM_SUBSCRIPTION_BADGE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_BOOSTS_DESCRIPTION: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_BOOSTS_SUBTITLE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_BOOSTS_TITLE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_PROFILES_DESCRIPTION: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_PROFILES_SUBTITLE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_PROFILES_TITLE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_SUBTITLE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_THEMES_DESCRIPTION: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_THEMES_SUBTITLE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_THEMES_TITLE: string; PREMIUM_MARKETING_PERKS_DISCOVERABILITY_TITLE: string; PREMIUM_MARKETING_PERKS_SEE_ALL: string; PREMIUM_MARKETING_PERKS_SEE_LESS: string; PREMIUM_MARKETING_PERKS_TITLE: string; PREMIUM_MARKETING_PERKS_TITLE_NITRO_HOME: string; PREMIUM_MARKETING_PLAN_COMPARISON_REFERRAL_PROGRAM: string; PREMIUM_MARKETING_STICKER_PERK_DESCRIPTION: string; PREMIUM_MARKETING_STICKER_PERK_LONG_DESCRIPTION: string; PREMIUM_MARKETING_STICKER_PERK_TITLE: string; PREMIUM_MARKETING_STICKER_PERK_TITLE_OLD: string; PREMIUM_MARKETING_STREAMING_PERK_TITLE: string; PREMIUM_MARKETING_STREAMING_SMALL_PERK_DESCRIPTION: string; PREMIUM_MARKETING_SUPER_REACTIONS_PERK_DESCRIPTION: string; PREMIUM_MARKETING_SUPER_REACTIONS_PERK_DESCRIPTION_V2: string; PREMIUM_MARKETING_SUPER_REACTIONS_PERK_TITLE: string; PREMIUM_MARKETING_SUPER_REACTIONS_PERK_TITLE_UNLIMITED: string; PREMIUM_MARKETING_SUPER_REACTIONS_PERK_TITLE_V2: string; PREMIUM_MARKETING_SURFACE_FEATURE_GRID_HEADING: string; PREMIUM_MARKETING_SURFACE_FEATURE_PREMIUM_GUILD_DESCRIPTION: FM<"numFreeGuildSubscriptions" | "percentageOff", false>; PREMIUM_MARKETING_SURFACE_FEATURE_PREMIUM_GUILD_TITLE: string; PREMIUM_MARKETING_SURFACE_FEATURE_STICKERS_DESCRIPTION: string; PREMIUM_MARKETING_SURFACE_FEATURE_STICKERS_TITLE: string; PREMIUM_MARKETING_SURFACE_HERO_HEADING: string; PREMIUM_MARKETING_SURFACE_HERO_SUBHEADING: string; PREMIUM_MARKETING_SURFACE_PERK_DESCRIPTION_COMING_SOON: string; PREMIUM_MARKETING_SURFACE_PERK_HEADING_COMING_SOON: string; PREMIUM_MARKETING_SURFACE_PERKS_TITLE: string; PREMIUM_MARKETING_SURFACE_PREMIUM_TIER_2_DESCRIPTION: string; PREMIUM_MARKETING_SURFACE_SIDEBAR_ABOUT: string; PREMIUM_MARKETING_SURFACE_TOP_PERK_EMOJI: string; PREMIUM_MARKETING_SURFACE_TOP_PERK_FILE_UPLOADS: string; PREMIUM_MARKETING_SURFACE_TOP_PERK_FILE_UPLOADS_INCREASE: FM<"premiumMaxSize", false>; PREMIUM_MARKETING_SURFACE_TOP_PERK_HD_STREAMING: string; PREMIUM_MARKETING_SURFACE_TOP_PERK_PROFILE: string; PREMIUM_MARKETING_TIER_0_CTA_COPY_V2: FM<"uploadSize", false>; PREMIUM_MARKETING_TIER_0_FEATURE_GRID_HEADING: string; PREMIUM_MARKETING_TIER_2_CTA_COPY: string; PREMIUM_MARKETING_TIER_2_FEATURE_GRID_HEADING: string; PREMIUM_MARKETING_UPLOADS_PERK_TITLE: string; PREMIUM_MARKETING_UPLOADS_SMALL_PERK_DESCRIPTION: FM<"premiumMaxSize", false>; PREMIUM_MARKETING_UPLOADS_SMALL_PERK_TITLE: FM<"premiumMaxSize", false>; PREMIUM_MARKETING_VARIANT_2_FEATURE_CLIENT_THEMES_DESCRIPTION: string; PREMIUM_MARKETING_VARIANT_2_FEATURE_CLIENT_THEMES_TITLE: string; PREMIUM_MARKETING_VIDEO_BACKGROUND_PERK_DESCRIPTION: string; PREMIUM_MARKETING_WHATS_NEW_AVATAR_DECO_DESCRIPTION_NON_SUB: string; PREMIUM_MARKETING_WHATS_NEW_AVATAR_DECO_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_CLIPS_CTA: string; PREMIUM_MARKETING_WHATS_NEW_CLIPS_DESCRIPTION_NON_SUB: string; PREMIUM_MARKETING_WHATS_NEW_CLIPS_DESCRIPTION_SUB: string; PREMIUM_MARKETING_WHATS_NEW_CLIPS_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_CUSTOM_NOTIFICATION_DESCRIPTION: string; PREMIUM_MARKETING_WHATS_NEW_CUSTOM_NOTIFICATION_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_CUSTOM_NOTIFICATION_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_ENTRANCE_SOUNDS_DESCRIPTION_NON_SUB: string; PREMIUM_MARKETING_WHATS_NEW_ENTRANCE_SOUNDS_DESCRIPTION_SUB: string; PREMIUM_MARKETING_WHATS_NEW_ENTRANCE_SOUNDS_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_ENTRANCE_SOUNDS_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_NEW_APP_STYLES_DESCRIPTION: string; PREMIUM_MARKETING_WHATS_NEW_NEW_APP_STYLES_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_NEW_APP_STYLES_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_NEW_NEW_BADGE: string; PREMIUM_MARKETING_WHATS_NEW_NITRO_CUSTOM_NOTIFICATION_DESCRIPTION: string; PREMIUM_MARKETING_WHATS_NEW_NITRO_NEW_APP_STYLES: string; PREMIUM_MARKETING_WHATS_NEW_NON_NITRO_CUSTOM_NOTIFICATION_DESCRIPTION: string; PREMIUM_MARKETING_WHATS_NEW_NON_NITRO_NEW_APP_STYLES: string; PREMIUM_MARKETING_WHATS_NEW_PROFILE_EFFECTS_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_REFERRAL_PROGRAM_DESCRIPTION: FM<"helpdeskArticle", true>; PREMIUM_MARKETING_WHATS_NEW_REFERRAL_PROGRAM_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_REFERRAL_PROGRAM_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_REMIXING_DESCRIPTION_NON_SUB: string; PREMIUM_MARKETING_WHATS_NEW_REMIXING_DESCRIPTION_SUB: string; PREMIUM_MARKETING_WHATS_NEW_REMIXING_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_REMIXING_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_SERVER_PROFILES_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_SERVER_PRORFILES_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_SO_NEW_BADGE: string; PREMIUM_MARKETING_WHATS_NEW_SPECIAL_SHOP_PERKS_SUBTITLE: string; PREMIUM_MARKETING_WHATS_NEW_SPECIAL_SHOP_PERKS_TITLE: string; PREMIUM_MARKETING_WHATS_NEW_SUBTITLE_NON_SUB: string; PREMIUM_MARKETING_WHATS_NEW_SUBTITLE_SUB: string; PREMIUM_MARKETING_WHATS_NEW_TITLE_NON_SUB: string; PREMIUM_MARKETING_WHATS_NEW_TITLE_SUB: string; PREMIUM_MESSAGE_LENGTH_CHATBOX_FLAIR: FM<"maxLength", false>; PREMIUM_MESSAGE_LENGTH_MOBILE_ALERT_BODY: FM<"maxLength", false>; PREMIUM_MESSAGE_LENGTH_MOBILE_ALERT_HEADER: string; PREMIUM_MESSAGE_LENGTH_ROADBLOCK_MODAL_BODY: FM<"maxLength", true>; PREMIUM_MESSAGE_LENGTH_ROADBLOCK_MODAL_CONTEXT: FM<"maxLength", false>; PREMIUM_MESSAGE_LENGTH_ROADBLOCK_MODAL_CONTEXT_NO_COUNT: string; PREMIUM_MESSAGE_LENGTH_ROADBLOCK_MODAL_GLOW_UP: FM; PREMIUM_MESSAGE_LENGTH_ROADBLOCK_MODAL_HEADER: string; PREMIUM_MESSAGE_LENGTH_UPSELL_MODAL_BODY: FM; PREMIUM_MESSAGE_LENGTH_UPSELL_MODAL_HEADER: string; PREMIUM_MESSAGE_LENGTH_UPSELL_MODAL_UPLOAD: string; PREMIUM_MESSAGE_LENGTH_UPSELL_TOOLTIP: FM; PREMIUM_MESSAGE_LENGTH_UPSELL_TOOLTIP_WITHOUT_LINK: string; PREMIUM_MOBILE_MARKETING_ACCESSIBILITY_TIER_0: FM<"accessibilityLabel", false>; PREMIUM_MOBILE_MARKETING_ACCESSIBILITY_TIER_2: FM<"accessibilityLabel", false>; PREMIUM_MOBILE_MARKETING_COMPARISON_TABLE_ACCESSIBILITY: string; PREMIUM_MOBILE_TRIAL_FREE_TRIAL_BADGE: string; PREMIUM_MOBILE_TRIAL_MARKETING_PAGE_BADGE: FM<"days", false>; PREMIUM_NITRO_DROP_2023_AVATAR_DECO_FEATURE_HEADER: string; PREMIUM_NITRO_DROP_2023_AVATAR_DECO_FEATURE_SUBHEADER: string; PREMIUM_NITRO_DROP_2023_BANNER_HEADER: string; PREMIUM_NITRO_DROP_2023_BANNER_NON_TIER_2_SUB_SUBHEADER: string; PREMIUM_NITRO_DROP_2023_BANNER_NON_TIER_2_SUB_SUBHEADER_2: string; PREMIUM_NITRO_DROP_2023_BANNER_TIER_2_SUB_SUBHEADER: string; PREMIUM_NITRO_DROP_2023_BANNER_TIER_2_SUB_SUBHEADER_2: string; PREMIUM_NITRO_DROP_2023_CLIENT_THEMES_FEATURE_HEADER: string; PREMIUM_NITRO_DROP_2023_CLIENT_THEMES_FEATURE_SUBHEADER: string; PREMIUM_NITRO_DROP_2023_HEADER: string; PREMIUM_NITRO_DROP_2023_NON_SUB_BUTTON_TEXT: string; PREMIUM_NITRO_DROP_2023_NON_TIER_2_SUB_BUTTON_TEXT: string; PREMIUM_NITRO_DROP_2023_SHARE_NITRO_NON_SUB_NUDGE: string; PREMIUM_NITRO_DROP_2023_SHARE_NITRO_NON_TIER_2_SUB_NUDGE: string; PREMIUM_NITRO_DROP_2023_SHARE_NITRO_PROMO: string; PREMIUM_NITRO_DROP_2023_SHARE_NITRO_TIER_2_NUDGE: string; PREMIUM_NITRO_DROP_2023_SHARE_NITRO_WITH_TRIAL_NUDGE: string; PREMIUM_NITRO_DROP_2023_SOUNDBOARD_FEATURE_HEADER: string; PREMIUM_NITRO_DROP_2023_SOUNDBOARD_FEATURE_SUBHEADER: string; PREMIUM_NITRO_DROP_2023_SUBHEADER: string; PREMIUM_NITRO_DROP_2023_SUPER_REACTIONS_FEATURE_HEADER: string; PREMIUM_NITRO_DROP_2023_SUPER_REACTIONS_FEATURE_SUBHEADER: string; PREMIUM_NITRO_DROP_2023_SUPER_REACTIONS_FEATURE_SUBHEADER_2: string; PREMIUM_NITRO_DROP_2023_TERMS: FM<"helpdeskArticle", true>; PREMIUM_NITRO_DROP_2023_TIER_2_SUB_BUTTON_TEXT: string; PREMIUM_NITRO_DROP_2023_WITH_TRIAL_BUTTON_TEXT: string; PREMIUM_NO_PLANS_BODY: FM<"helpdeskArticle", true>; PREMIUM_NO_PLANS_HEADER: string; PREMIUM_NO_PROBLEM: string; PREMIUM_NOT_CLAIMED: string; PREMIUM_NOT_CLAIMED_BODY: string; PREMIUM_NOT_VERIFIED: string; PREMIUM_NOT_VERIFIED_BODY: string; PREMIUM_PAUSE_CONFIRM_BODY: FM<"pauseDate" | "pauseDuration" | "resumeDate", true>; PREMIUM_PAUSE_CONFIRM_NEW: FM<"planPremiumType", false>; PREMIUM_PAUSE_CONFIRM_TITLE: FM<"planPremiumType", false>; PREMIUM_PAUSE_DURATION_CANCEL: string; PREMIUM_PAUSE_DURATION_MONTHS_CAPITALIZE: FM<"days", false>; PREMIUM_PAUSE_EXTEND_CONFIRM_BODY: FM<"resumeDate", true>; PREMIUM_PAUSE_EXTEND_DURATION_MONTHS_CAPITALIZE: FM<"days", false>; PREMIUM_PAUSE_INSTEAD: string; PREMIUM_PAUSE_INSTEAD_SUBTITLE: string; PREMIUM_PAUSE_INSTEAD_TITLE: FM; PREMIUM_PAUSE_OR_CANCEL_SUBSCRIPTION: string; PREMIUM_PAUSE_PAST_DUE_CONFIRM_BODY: FM<"pauseDuration" | "resumeDate", true>; PREMIUM_PAUSE_SELECT_EXTEND_DURATION_SUBTITLE: string; PREMIUM_PAUSE_SELECT_PLACEHOLDER: string; PREMIUM_PAUSE_SELECT_SUBTITLE: string; PREMIUM_PAUSE_SELECT_TITLE: string; PREMIUM_PAUSE_YOUR_SUBSCRIPTION_WILL_BE_PAUSED: string; PREMIUM_PAYMENT_CONFIRMATION_BLURB_IAP: FM<"skuName", false>; PREMIUM_PAYMENT_CONFIRMATION_BUTTON_IAP: FM<"skuName", false>; PREMIUM_PAYMENT_GIFT_BLURB_MOBILE: FM; PREMIUM_PAYMENT_GIFT_SUBTEXT_MONTHLY: string; PREMIUM_PAYMENT_GIFT_SUBTEXT_YEARLY: string; PREMIUM_PAYMENT_IS_GIFT: string; PREMIUM_PAYMENT_IS_GIFT_IN_TIER_0_EXPERIMENT: string; PREMIUM_PAYMENT_IS_GIFT_STREAM_QUALITY_UPSELL: string; PREMIUM_PENDING_PLAN_CHANGE_CANCEL_BODY: FM<"downgradedPlan" | "existingPlan" | "existingRate", true>; PREMIUM_PENDING_PLAN_CHANGE_CANCEL_BODY_NO_EXISTING_PLAN: FM<"downgradedPlan" | "existingRate", true>; PREMIUM_PENDING_PLAN_CHANGE_CANCEL_BUTTON: string; PREMIUM_PENDING_PLAN_CHANGE_CANCEL_HEADER: string; PREMIUM_PENDING_PLAN_CHANGE_NOTICE: FM<"date" | "planName", true>; PREMIUM_PERKS_TIER_1_CUSTOM_EMOJI: string; PREMIUM_PERKS_TIER_1_GUILD_SUBSCRIPTION: FM<"discountPercentage", false>; PREMIUM_PERKS_TIER_1_PROFILE: string; PREMIUM_PERKS_TIER_1_STREAM_RESOLUTION: string; PREMIUM_PERKS_TIER_2_ACTIVITIES: string; PREMIUM_PERKS_TIER_2_CUSTOM_EMOJI: string; PREMIUM_PERKS_TIER_2_GUILD_SUBSCRIPTION: FM<"discountPercentage" | "numBoosts", false>; PREMIUM_PERKS_TIER_2_MAX_GUILDS: FM<"nonPremiumMaxGuilds" | "premiumMaxGuilds", false>; PREMIUM_PERKS_TIER_2_PREMIUM_PROFILES: string; PREMIUM_PERKS_TIER_2_PROFILE: string; PREMIUM_PERKS_TIER_2_STREAM_RESOLUTION: string; PREMIUM_PERKS_UPLOAD_SIZE: FM<"maxUploadPremium" | "maxUploadStandard", false>; PREMIUM_PLAN_3_MONTH_TIER_2: string; PREMIUM_PLAN_6_MONTH_TIER_2: string; PREMIUM_PLAN_MONTH: string; PREMIUM_PLAN_MONTH_TIER_0: string; PREMIUM_PLAN_MONTH_TIER_0_TRIAL_DURATION: FM<"duration", true>; PREMIUM_PLAN_MONTH_TIER_1: string; PREMIUM_PLAN_MONTH_TIER_2: string; PREMIUM_PLAN_MONTH_TIER_2_TRIAL: FM<"months", true>; PREMIUM_PLAN_MONTH_TIER_2_TRIAL_DURATION: FM<"duration", true>; PREMIUM_PLAN_ONE_MONTH_TIER_0: string; PREMIUM_PLAN_ONE_MONTH_TIER_1: string; PREMIUM_PLAN_ONE_MONTH_TIER_2: string; PREMIUM_PLAN_ONE_YEAR_TIER_0: string; PREMIUM_PLAN_ONE_YEAR_TIER_1: string; PREMIUM_PLAN_ONE_YEAR_TIER_2: string; PREMIUM_PLAN_YEAR: string; PREMIUM_PLAN_YEAR_TIER_0: string; PREMIUM_PLAN_YEAR_TIER_0_TRIAL_DURATION: FM<"duration", true>; PREMIUM_PLAN_YEAR_TIER_1: string; PREMIUM_PLAN_YEAR_TIER_2: string; PREMIUM_PLAN_YEAR_TIER_2_TRIAL: FM<"months", true>; PREMIUM_PLAN_YEAR_TIER_2_TRIAL_DURATION: FM<"duration", true>; PREMIUM_PREVIEW: FM; PREMIUM_PREVIEW_EXIT: string; PREMIUM_PREVIEW_GET_NITRO: FM; PREMIUM_PREVIEW_JOIN_AVATAR: string; PREMIUM_PREVIEW_JOIN_BANNER: string; PREMIUM_PREVIEW_JOIN_NITRO: string; PREMIUM_PROFILE_CUSTOMIZATION_UPGRADE_BODY: FM; PREMIUM_PROFILE_CUSTOMIZATION_UPSELL_BODY: FM; PREMIUM_PROFILE_CUSTOMIZATION_UPSELL_HEADER: string; PREMIUM_PROGRESS_BAR_GUILD_HEADER_SIZE_TOOLTIP_CONTENT: FM; PREMIUM_PROGRESS_BAR_GUILD_HEADER_SIZE_TOOLTIP_TITLE: string; PREMIUM_PROGRESS_BAR_GUILD_HEADER_TOOLTIP_CONTENT: FM; PREMIUM_PROGRESS_BAR_GUILD_HEADER_TOOLTIP_CTA_PRIMARY_ROLE_SETTINGS: string; PREMIUM_PROGRESS_BAR_GUILD_HEADER_TOOLTIP_CTA_SECONDARY: string; PREMIUM_PROGRESS_BAR_GUILD_HEADER_TOOLTIP_TITLE: string; PREMIUM_PROMO_DESCRIPTION_SEARCH_TIER_UPSELL: FM<"planName", true>; PREMIUM_PROMO_DESCRIPTION_SEARCH_UPSELL: FM; PREMIUM_PROMO_DESCRIPTION_SEARCH_UPSELL_NO_BOLD: FM; PREMIUM_PROMO_DESCRIPTION_SEARCH_UPSELL_NO_BOLD_V2: FM<"planName", true>; PREMIUM_PROMO_TITLE_SEARCH_UPSELL: string; PREMIUM_REQUIRED: string; PREMIUM_REQUIRED_GET_NITRO: string; PREMIUM_RESTORE_SUBSCRIPTION_IOS: string; PREMIUM_RETENTION_EMOJI_PICKER_DESCRIPTION: FM<"endsAt" | "planName", true>; PREMIUM_RETENTION_EMOJI_PICKER_UPDATE_PAYMENT_INFORMATION: string; PREMIUM_REVERSE_TRIAL_BADGE: string; PREMIUM_REVERSE_TRIAL_EMOJI_TOOLTIP: FM; PREMIUM_REVERSE_TRIAL_EMOJI_UNLOCK: string; PREMIUM_REVERSE_TRIAL_HD_STREAMING_POPOUT_BODY: FM; PREMIUM_REVERSE_TRIAL_SCREEN_SHARE_QUALITY_EDUCATION: FM; PREMIUM_REVERSE_TRIAL_SERVER_BOOST: FM; PREMIUM_ROADBLOCK_UPSELL_SECONDARY_CTA: string; PREMIUM_SETTINGS: string; PREMIUM_SETTINGS_ACCOUNT_HOLD_INFO: FM<"endDate", true>; PREMIUM_SETTINGS_ACCOUNT_HOLD_INFO_EXTERNAL: FM<"endDate" | "paymentGatewayName" | "paymentSourceLink", true>; PREMIUM_SETTINGS_ACCOUNT_HOLD_INFO_PRICE: FM<"endDate" | "price", true>; PREMIUM_SETTINGS_ACCOUNT_HOLD_NOTICE_CHANGE_PAYMENT_METHOD_BUTTON: string; PREMIUM_SETTINGS_ACCOUNT_HOLD_NOTICE_INFO: FM<"endDate" | "planDescription", true>; PREMIUM_SETTINGS_BILLING_INFO: string; PREMIUM_SETTINGS_CANCELLED_INFO: FM<"endDate", true>; PREMIUM_SETTINGS_GENERIC: string; PREMIUM_SETTINGS_GET: string; PREMIUM_SETTINGS_GET_TIER_0: string; PREMIUM_SETTINGS_MANAGE: string; PREMIUM_SETTINGS_NATIGATE_TO_SUBSCRIPTIONS_CTA: string; PREMIUM_SETTINGS_NAVIGATE_TO_HOME_CTA: string; PREMIUM_SETTINGS_NAVIGATE_TO_HOME_CTA_V2: string; PREMIUM_SETTINGS_NITRO_HOME_HEADER: string; PREMIUM_SETTINGS_PAST_DUE_INFO: FM<"endDate" | "price", true>; PREMIUM_SETTINGS_PAST_DUE_INFO_EXTERNAL: FM<"endDate" | "paymentGatewayName" | "paymentSourceLink", true>; PREMIUM_SETTINGS_PAUSE_ENDS_AT_INFO: FM<"resumeDate", true>; PREMIUM_SETTINGS_PAUSE_ENDS_AT_INFO_WITH_PLAN: FM<"planName" | "price" | "resumeDate", true>; PREMIUM_SETTINGS_PAUSE_PENDING_INFO: FM<"pauseDate" | "resumeDate", true>; PREMIUM_SETTINGS_PAUSED_INFO: string; PREMIUM_SETTINGS_PAUSED_INFO_WITH_PLAN: FM<"planName" | "price", true>; PREMIUM_SETTINGS_PAYMENT_PROCESSING: FM<"maxProcessingTimeInDays", true>; PREMIUM_SETTINGS_PLAN_MANAGEMENT_HEADER: string; PREMIUM_SETTINGS_PREMIUM_GUILD_SUBSCRIPTIONS: string; PREMIUM_SETTINGS_PREPAID_THROUGH_DATE: FM<"prepaidEndDate", true>; PREMIUM_SETTINGS_RENEWAL_INFO: FM<"price" | "renewalDate", true>; PREMIUM_SETTINGS_RENEWAL_INFO_EXTERNAL: FM<"paymentGatewayName" | "renewalDate" | "subscriptionManagementLink", true>; PREMIUM_SETTINGS_RENEWAL_INFO_WITH_PLAN: FM<"planName" | "price" | "renewalDate", true>; PREMIUM_SETTINGS_STARTING_AT_PER_MONTH: FM<"price", false>; PREMIUM_SETTINGS_SUBSCRIBE_TODAY: string; PREMIUM_SETTINGS_SUBSCRIPTION_DESCRIPTION: FM; PREMIUM_SETTINGS_SUBSCRIPTIONS_MOBILE_HEADER: string; PREMIUM_SUBSCRIPTION_ADJUSTMENT_TOOLTIP: string; PREMIUM_SUBSCRIPTION_BILLING_INFO_MOBILE: string; PREMIUM_SUBSCRIPTION_BILLING_INFO_NITRO_ONLY: string; PREMIUM_SUBSCRIPTION_BUTTON_DISABLED_MANAGE_PLAN_TOOLTIP: string; PREMIUM_SUBSCRIPTION_CANCELLED: FM<"planName", false>; PREMIUM_SUBSCRIPTION_CREDIT: FM<"planName", false>; PREMIUM_SUBSCRIPTION_CREDIT_APPLIED_MISMATCHED_PLAN: FM<"planName", false>; PREMIUM_SUBSCRIPTION_CREDIT_APPLIED_MISMATCHED_PLAN_ANDROID: FM<"planName", false>; PREMIUM_SUBSCRIPTION_CREDIT_APPLIED_ON: FM<"date", false>; PREMIUM_SUBSCRIPTION_CREDIT_COUNT_MONTHS: FM<"count", false>; PREMIUM_SUBSCRIPTION_CURRENT_LABEL: string; PREMIUM_SUBSCRIPTION_DESCRIPTION_DISCOUNT_APPLIED: FM<"discountedPrice" | "price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_NITRO_PAUSE_PENDING: FM<"pauseDate" | "pauseDuration", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_NITRO_PAUSE_PENDING_NO_DURATION: FM<"pauseDate", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_NITRO_PAUSED: FM<"resumeDate", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_PAST_DUE_WITH_HC_LINK: FM<"endDate", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_ACCOUNT_HOLD: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_ACCOUNT_HOLD_NO_PRICE: FM; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_ACCOUNT_HOLD_TAX_EXCLUSIVE: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_NO_PRICE: string; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_PENDING_CANCELATION: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_PENDING_CANCELATION_NO_PRICE: string; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_PENDING_CANCELATION_TAX_EXCLUSIVE: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_PENDING_PAYMENT: FM; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_0_TAX_EXCLUSIVE: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_ACCOUNT_HOLD: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_ACCOUNT_HOLD_NO_PRICE: FM; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_ACCOUNT_HOLD_TAX_EXCLUSIVE: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_NO_PRICE: string; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_PENDING_CANCELATION: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_PENDING_CANCELATION_NO_PRICE: string; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_PENDING_CANCELATION_TAX_EXCLUSIVE: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_PENDING_PAYMENT: FM; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_1_TAX_EXCLUSIVE: FM<"price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2: FM<"num" | "price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_ACCOUNT_HOLD: FM<"num" | "price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_ACCOUNT_HOLD_NO_PRICE: FM<"num", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_ACCOUNT_HOLD_TAX_EXCLUSIVE: FM<"num" | "price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_NO_PRICE: FM<"num", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_PENDING_CANCELATION: FM<"num" | "price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_PENDING_CANCELATION_NO_PRICE: FM<"num", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_PENDING_CANCELATION_TAX_EXCLUSIVE: FM<"num" | "price", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_PENDING_PAYMENT: FM<"num", true>; PREMIUM_SUBSCRIPTION_DESCRIPTION_TIER_2_TAX_EXCLUSIVE: FM<"num" | "price", true>; PREMIUM_SUBSCRIPTION_ENDING_MISSING_PAYMENT_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_ENDING_MISSING_PAYMENT_NOTICE_TEXT: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_ENDING_MISSING_PAYMENT_TIER_0_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_ENDING_MISSING_PAYMENT_TIER_0_NOTICE_TEXT: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_ENDING_MISSING_PAYMENT_TIER_1_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_ENDING_MISSING_PAYMENT_TIER_1_NOTICE_TEXT: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_ENDING_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_ENDING_NOTICE_TEXT: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_ENDING_TIER_0_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_ENDING_TIER_0_NOTICE_TEXT: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_ENDING_TIER_1_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_ENDING_TIER_1_NOTICE_TEXT: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_DISCOUNT_PRICE_FOOTER: FM<"defaultPrice" | "discountPrice", true>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_FOOTER_BUTTON_CANCEL: string; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_FOOTER_BUTTON_KEEP_NITRO: string; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_FOOTER_MONTHLY: FM<"price", true>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_FOOTER_MONTHLY_TIER_1: FM<"price", true>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_FOOTER_MULTI_MONTH: FM<"intervalCount" | "price", true>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_FOOTER_YEARLY: FM<"price", true>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_FOOTER_YEARLY_TIER_1: FM<"price", true>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_SUBTITLE: FM; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_SUBTITLE_TIER_1: FM; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_TITLE: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_ENDING_WHAT_YOU_LOSE_TITLE_TIER_1: FM<"daysLeft", false>; PREMIUM_SUBSCRIPTION_GUILD_SUBSCRIPTION_ADJUSTMENT: string; PREMIUM_SUBSCRIPTION_GUILD_SUBSCRIPTION_ADJUSTMENT_TEXT: string; PREMIUM_SUBSCRIPTION_GUILD_SUBSCRIPTION_ADJUSTMENT_TOOLTIP: FM; PREMIUM_SUBSCRIPTION_HIDE_DETAILS: string; PREMIUM_SUBSCRIPTION_INTERVAL_MONTH: string; PREMIUM_SUBSCRIPTION_INTERVAL_YEAR: string; PREMIUM_SUBSCRIPTION_LEGAL_DISCLAIMER_ANDROID: FM<"interval", false>; PREMIUM_SUBSCRIPTION_LEGAL_DISCLAIMER_IOS: FM<"interval", false>; PREMIUM_SUBSCRIPTION_MANAGE_YOURS_LINK: FM<"subscriptionName", true>; PREMIUM_SUBSCRIPTION_NEW_LABEL: string; PREMIUM_SUBSCRIPTION_NEW_TOTAL: string; PREMIUM_SUBSCRIPTION_ONE_TIME_PAYMENT_PAST_DUE_SUBSCRIPTION_TEXT: FM<"daysPastDue", true>; PREMIUM_SUBSCRIPTION_ONE_TIME_PAYMENT_PAST_DUE_SUBSCRIPTION_TEXT_NO_ACTION: FM<"daysPastDue", false>; PREMIUM_SUBSCRIPTION_PAST_DUE_INVALID_PAYMENT_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_PAST_DUE_INVALID_PAYMENT_NOTICE_TEXT: string; PREMIUM_SUBSCRIPTION_PAST_DUE_MISSING_PAYMENT_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_PAST_DUE_MISSING_PAYMENT_NOTICE_TEXT: string; PREMIUM_SUBSCRIPTION_PAST_DUE_RENEW_NOW_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_PERIOD_RESET_NOTICE: FM<"renewalDate", true>; PREMIUM_SUBSCRIPTION_PLAN_ADJUSTMENT: FM<"planName", false>; PREMIUM_SUBSCRIPTION_POLICY_HINT_IOS: string; PREMIUM_SUBSCRIPTION_REACTIVATION_NOTICE_BUTTON_TEXT: string; PREMIUM_SUBSCRIPTION_REACTIVATION_NOTICE_TEXT: string; PREMIUM_SUBSCRIPTION_RENEWAL_FOOTER: FM<"contactLink" | "helpdeskArticle" | "rate" | "renewalDate", true>; PREMIUM_SUBSCRIPTION_RENEWAL_FOOTER_TAX_EXCLUSIVE: FM<"contactLink" | "helpdeskArticle" | "rate" | "renewalDate", true>; PREMIUM_SUBSCRIPTION_RENEWAL_FOOTER_TRIAL: FM<"contactLink" | "days" | "helpdeskArticle", true>; PREMIUM_SUBSCRIPTION_RENEWAL_FOOTER_TRIAL_DURATION: FM<"contactLink" | "days" | "duration" | "helpdeskArticle", true>; PREMIUM_SUBSCRIPTION_REQUIRED_BODY: string; PREMIUM_SUBSCRIPTION_SHOW_DETAILS: string; PREMIUM_SUBSCRIPTION_SUBSCRIPTIONS_LINK: FM; PREMIUM_SUBSCRIPTION_TERMS_POLICY_ANDROID: FM<"paidURL" | "privacyURL" | "termsURL", true>; PREMIUM_SUBSCRIPTION_TERMS_POLICY_IOS: FM<"paidURL" | "privacyURL" | "termsURL", true>; PREMIUM_SUBSCRIPTION_TIER_1_DEPRECATION: FM<"helpdeskArticle", true>; PREMIUM_SUBSCRIPTION_UPDATES: string; PREMIUM_SURVEY_THANK_YOU: string; PREMIUM_SURVEY_WE_APPRECIATE_IT: string; PREMIUM_SWITCH_PLAN_DISABLED_IN_TRIAL: string; PREMIUM_SWITCH_PLAN_DISABLED_PENDING_MUTATION_PLAN: string; PREMIUM_SWITCH_PLAN_DISABLED_PENDING_MUTATION_PREMIUM_GUILD_SUBSCRIPTION: string; PREMIUM_SWITCH_PLANS: string; PREMIUM_SWITCH_REVIEW_HEADER_PREMIUM_MONTH_TIER_0: string; PREMIUM_SWITCH_REVIEW_HEADER_PREMIUM_MONTH_TIER_1: string; PREMIUM_SWITCH_REVIEW_HEADER_PREMIUM_MONTH_TIER_2: string; PREMIUM_SWITCH_REVIEW_HEADER_PREMIUM_YEAR_TIER_0: string; PREMIUM_SWITCH_REVIEW_HEADER_PREMIUM_YEAR_TIER_1: string; PREMIUM_SWITCH_REVIEW_HEADER_PREMIUM_YEAR_TIER_2: string; PREMIUM_TIER_0: string; PREMIUM_TIER_0_CAROUSEL_BOOSTS: string; PREMIUM_TIER_0_CAROUSEL_EMOJIS: string; PREMIUM_TIER_0_CAROUSEL_PROFILES: string; PREMIUM_TIER_0_CAROUSEL_UPLOADS: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_HEADER: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_PLAN_ACTIVATED_PILL: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_BADGE: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_BOOSTS: FM<"numBoosts" | "percentageOff", false>; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_CLIENT_THEME: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_EMOJI: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_MESSAGE_LENGTH: FM<"maxChars", false>; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_PRICE: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_PROFILE_THEMES: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_SERVER_LIMIT: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_SERVER_PROFILE: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_SHOP_DISCOUNTS_GENERIC: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_STICKER: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_STICKER_V2: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_STREAMING: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_SUPER_REACTIONS: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_UPLOAD: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_ROW_LABEL_VIDEO_BACKGROUND: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_STREAMING_DETAILS: string; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_SUPER_REACTIONS: FM<"weeklyReactionsNumber", false>; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_SUPER_REACTIONS_DAILY: FM<"dailyReactionsNumber", false>; PREMIUM_TIER_0_DESKTOP_MARKETING_COMPARISON_TABLE_TITLE: string; PREMIUM_TIER_0_FEATURE_AVATAR: string; PREMIUM_TIER_0_FEATURE_BADGE: string; PREMIUM_TIER_0_FEATURE_BADGE_LONGER: string; PREMIUM_TIER_0_FEATURE_EMOJIS: string; PREMIUM_TIER_0_FEATURE_UPLOADS: FM<"uploadSize", false>; PREMIUM_TIER_0_FEATURE_UPLOADS_LONGER: string; PREMIUM_TIER_0_GIFT_BLURB_MOBILE: FM; PREMIUM_TIER_0_MARKETING_COMPARISON_TABLE_ROW_LABEL_AVATAR_PROFILE: string; PREMIUM_TIER_0_MARKETING_COMPARISON_TABLE_ROW_LABEL_BADGE: string; PREMIUM_TIER_0_MARKETING_COMPARISON_TABLE_ROW_LABEL_EMOJI_STICKER: string; PREMIUM_TIER_0_MARKETING_COMPARISON_TABLE_ROW_LABEL_MONTHLY_PRICE: string; PREMIUM_TIER_0_MARKETING_COMPARISON_TABLE_ROW_LABEL_PROFILE: string; PREMIUM_TIER_0_MOBILE_ACTION_SHEET_CTA: string; PREMIUM_TIER_0_MOBILE_ACTION_SHEET_HEADER: FM<"monthlyPrice", false>; PREMIUM_TIER_0_MOBILE_ACTION_SHEET_HEADER_V2: FM<["monthlyPrice", "monthlyPriceHook"], true>; PREMIUM_TIER_0_MOBILE_MARKETING_FOOTER: string; PREMIUM_TIER_0_MOBILE_MARKETING_HEADER: string; PREMIUM_TIER_0_MOBILE_PREMIUM_BADGE: FM<"monthlyPrice", false>; PREMIUM_TIER_1: string; PREMIUM_TIER_1_ACCOUNT_CREDIT_BANNER_CTA: string; PREMIUM_TIER_1_ACCOUNT_CREDIT_BANNER_DESCRIPTION: string; PREMIUM_TIER_1_ACCOUNT_CREDIT_HEADER: string; PREMIUM_TIER_1_PERKS_TITLE: string; PREMIUM_TIER_2: string; PREMIUM_TIER_2_DETAILS_SUBHEADER: string; PREMIUM_TIER_2_FEATURE_BOOSTS: FM<"numBoosts", false>; PREMIUM_TIER_2_FEATURE_MORE: string; PREMIUM_TIER_2_FEATURE_REMIXING: string; PREMIUM_TIER_2_FEATURE_STREAMING: string; PREMIUM_TIER_2_FEATURE_THEMES_AND_MORE: string; PREMIUM_TIER_2_GIFT_BLURB_MOBILE: FM; PREMIUM_TIER_2_SUBHEADER: string; PREMIUM_TIER_2_SUBTITLE: string; PREMIUM_TIER_2_TITLE: string; PREMIUM_TIER_2_TRIAL_CTA_NOTE: string; PREMIUM_TIER_2_TRIAL_CTA_SUBTITLE: string; PREMIUM_TIER_CARD_ANNUAL_DISCOUNT_HEADER: FM<"percent" | "regularPrice", true>; PREMIUM_TIER_CARD_DISCOUNT_APPLIED: string; PREMIUM_TIER_CARD_DISCOUNT_APPLIED_PUNCTUATED: string; PREMIUM_TIER_CARD_DISCOUNT_HEADER_AFTER_REDEMPTION_GENERIC: FM<"numMonths" | "percent" | "regularPrice", false>; PREMIUM_TIER_CARD_DISCOUNT_HEADER_AFTER_REDEMPTION_GENERIC_TAX_EXCLUSIVE: FM<"numMonths" | "percent" | "regularPrice", false>; PREMIUM_TIER_CARD_DISCOUNT_HEADER_BEFORE_REDEMPTION_GENERIC: FM<"discountedPrice" | "numMonths" | "regularPrice", true>; PREMIUM_TIER_CARD_TRIAL_ACTIVATED: string; PREMIUM_TIER_CARD_TRIAL_HEADER_AFTER_REDEMPTION: FM<"price" | "remainingTime", true>; PREMIUM_TIER_CARD_TRIAL_REVAMP_HEADER_PILL: FM<"duration", false>; PREMIUM_TIER_CLIENT_THEMES_ITEM: string; PREMIUM_TIER_CUSTOM_EMOJI_ITEM: string; PREMIUM_TIER_CUSTOM_PROFILE_ITEM: string; PREMIUM_TIER_HD_STREAMING_ITEM: string; PREMIUM_TIER_NITRO_BADGE_ITEM: string; PREMIUM_TIER_SERVER_BOOST_ITEM: string; PREMIUM_TIER_SERVER_BOOST_MORE_ITEM: string; PREMIUM_TIER_SERVER_BOOST_WITH_PERCENTAGE_ITEM: FM<"numBoosts" | "percentageOff", false>; PREMIUM_TIER_SUBSCRIPTION_DESCRIPTION_AFTER_REDEMPTION: FM<"discountedPrice" | "regularPrice", true>; PREMIUM_TIER_SUBSCRIPTION_DESCRIPTION_AFTER_REDEMPTION_WITH_ACTIVE_SUB: FM<"discountedPrice" | "numMonths" | "regularPrice", true>; PREMIUM_TIER_UPLOAD_ITEM: FM<"maxUploadPremium", false>; PREMIUM_TITLE: string; PREMIUM_TRIAL_ACTION_SHEET_CTA: string; PREMIUM_TRIAL_ACTION_SHEET_CUSTOM_APP_ICONS: string; PREMIUM_TRIAL_ACTION_SHEET_HEADER: FM<"displayName" | "duration", false>; PREMIUM_TRIAL_ACTION_SHEET_INTERVAL_CTA: FM<"duration", false>; PREMIUM_TRIAL_ACTION_SHEET_REVAMP_HEADER: FM<"nitroTierName", false>; PREMIUM_TRIAL_ACTION_SHEET_REVAMP_HEADER_PILL: FM<"duration", false>; PREMIUM_TRIAL_ACTION_SHEET_REVAMP_NITRO_BASIC_FEATURES: string; PREMIUM_TRIAL_ACTION_SHEET_REVAMP_NITRO_FEATURES: string; PREMIUM_TRIAL_ACTION_SHEET_REVAMP_SUBHEADER: FM<"nitroTierName" | "price", false>; PREMIUM_TRIAL_ACTION_SHEET_TIER_0_HEADER: string; PREMIUM_TRIAL_ACTION_SHEET_TIER_2_HEADER: string; PREMIUM_TRIAL_CTA_BUTTON_VARIANT: string; PREMIUM_TRIAL_FREE_DURATION_DAYS: FM<"days", false>; PREMIUM_TRIAL_FREE_DURATION_MONTHS: FM<"months", false>; PREMIUM_TRIAL_FREE_DURATION_WEEKS: FM<"weeks", false>; PREMIUM_TRIAL_FREE_DURATION_YEARS: FM<"years", false>; PREMIUM_TRIAL_MARKETING_EXPERIMENT_GIFT_BODY: string; PREMIUM_TRIAL_MARKETING_EXPERIMENT_GIFT_HEADING: string; PREMIUM_TRIAL_MARKETING_EXPERIMENT_TRIAL_CTA: string; PREMIUM_TRIAL_MARKETING_EXPERIMENT_TRIAL_HEADING: string; PREMIUM_TRIAL_MARKETING_TRIAL_BODY: FM<"duration", false>; PREMIUM_TRIAL_MARKETING_TRIAL_BODY_REMAINING: FM<"duration" | "remaining", true>; PREMIUM_TRIAL_MARKETING_TRIAL_BODY_REMAINING_DAYS: FM<"days", false>; PREMIUM_TRIAL_MARKETING_TRIAL_BODY_REMAINING_HOURS: FM<"hours", false>; PREMIUM_TRIAL_MARKETING_TRIAL_BODY_REMAINING_MINUTES: FM<"minutes", false>; PREMIUM_TRIAL_MARKETING_TRIAL_CTA_DAYS: FM<"days", false>; PREMIUM_TRIAL_MARKETING_TRIAL_CTA_MONTHS: FM<"months", false>; PREMIUM_TRIAL_MARKETING_TRIAL_CTA_WEEKS: FM<"weeks", false>; PREMIUM_TRIAL_MARKETING_TRIAL_CTA_YEARS: FM<"years", false>; PREMIUM_TRIAL_MARKETING_TRIAL_HEADING_DAYS: FM<"days", false>; PREMIUM_TRIAL_MARKETING_TRIAL_HEADING_MONTHS: FM<"months", false>; PREMIUM_TRIAL_MARKETING_TRIAL_HEADING_WEEKS: FM<"weeks", false>; PREMIUM_TRIAL_MARKETING_TRIAL_HEADING_YEARS: FM<"years", false>; PREMIUM_TRIAL_OFFER_ENDS_DAYS: FM<"numDays", false>; PREMIUM_TRIAL_OFFER_ENDS_HOURS: FM<"numHours", false>; PREMIUM_TRIAL_OFFER_ENDS_MINUTES: FM<"numMinutes", false>; PREMIUM_TRIAL_REMAINING_AVAILABILITY_DAYS: FM<"days", false>; PREMIUM_TRIAL_REMAINING_AVAILABILITY_HOURS: FM<"hours" | "minutes", false>; PREMIUM_TRIAL_REMAINING_AVAILABILITY_MINUTES: FM<"minutes", false>; PREMIUM_TRIAL_TIER_0_CTA_BUTTON_VARIANT: string; PREMIUM_TRIAL_TUTORIAL_BOOST_FLOW_DISABLED_TOOLTIP: string; PREMIUM_TRIAL_TUTORIAL_CHANNEL_DOESNT_ALLOW_EMOJI_TOOLTIP: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_BOOSTS: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_CLOSE_CANCEL: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_CLOSE_CONFIRMATION_HEADER: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_CLOSE_CONFIRMATION_SUBHEADER: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_CLOSE_YES: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_CUSTOM_PROFILES: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_EMOJI: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_HEADER: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_HEADER_COMPLETED: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_HEADER_COMPLETED_ONE: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_HEADER_LAST_ONE: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_MARKETING_CLOSE: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_MARKETING_REDIRECT: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_SERVER_PROFILES: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_SUB_HEADER: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_SUB_HEADER_CHOOSE_ANOTHER_PERK: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_SUB_HEADER_COMPLETED: string; PREMIUM_TRIAL_TUTORIAL_COACHMARK_SUB_HEADER_LAST_ONE: string; PREMIUM_TRIAL_TUTORIAL_COLLAPSED_COACHMARK_HEADING: string; PREMIUM_TRIAL_TUTORIAL_EMOJI_FLOW_DISABLED_TOOLTIP: string; PREMIUM_TRIAL_TUTORIAL_EMOJI_TOOLTIP: FM; PREMIUM_TRIAL_TUTORIAL_EMOJI_TOOLTIP_UNFORMATTED: string; PREMIUM_TRIAL_TUTORIAL_FILE_UPLOAD_TOOLTIP: string; PREMIUM_TRIAL_TUTORIAL_OPEN_CHANNEL_TOOLTIP: string; PREMIUM_TRIAL_TUTORIAL_STICKER_TOOLTIP: FM; PREMIUM_TRIAL_TUTORIAL_STICKER_TOOLTIP_UNFORMATTED: string; PREMIUM_TRIAL_TUTORIAL_WELCOME_BACK: string; PREMIUM_TRIAL_UPSELL_STICKERS_IN_HOUSE: string; PREMIUM_TUTORIAL_GOT_IT: string; PREMIUM_UPGRADE_DONE_BUTTON: string; PREMIUM_UPGRADE_REQUIRED_BODY: string; PREMIUM_UPLOAD_PROMO: FM<"maxUploadPremium", false>; PREMIUM_UPLOAD_PROMO_TRIAL: FM<"maxUploadPremium", false>; PREMIUM_UPSEL_FEATURE_IN_APP_ICONS_TITLE: string; PREMIUM_UPSELL_ANIMATED_AVATAR_ACTIVE_MOBILE: string; PREMIUM_UPSELL_ANIMATED_AVATAR_DESCRIPTION_MOBILE: FM; PREMIUM_UPSELL_ANIMATED_AVATAR_PASSIVE_MOBILE: string; PREMIUM_UPSELL_ANIMATED_EMOJIS_ACTIVE_MOBILE: string; PREMIUM_UPSELL_ANIMATED_EMOJIS_DESCRIPTION_MOBILE: FM; PREMIUM_UPSELL_ANIMATED_EMOJIS_DESCRIPTION_MOBILE_GENERIC: FM<"planName", true>; PREMIUM_UPSELL_ANIMATED_EMOJIS_PASSIVE_MOBILE: string; PREMIUM_UPSELL_BADGE_ACTIVE_MOBILE: string; PREMIUM_UPSELL_BADGE_DESCRIPTION_MOBILE: FM; PREMIUM_UPSELL_BADGE_PASSIVE_MOBILE: string; PREMIUM_UPSELL_CONTINUE_TO_BOOSTS: string; PREMIUM_UPSELL_CONTINUE_TO_MONTHLY: string; PREMIUM_UPSELL_DESKTOP_FEATURE_SOUNDBOARD_DESCRIPTION: string; PREMIUM_UPSELL_EMOJI_ACTIVE_MOBILE: string; PREMIUM_UPSELL_EMOJI_DESCRIPTION_MOBILE: FM; PREMIUM_UPSELL_EMOJI_DESCRIPTION_MOBILE_NEW: FM; PREMIUM_UPSELL_EMOJI_MOBILE: string; PREMIUM_UPSELL_EMOJI_PASSIVE_MOBILE: string; PREMIUM_UPSELL_FEATURE_CHAT_PERKS: string; PREMIUM_UPSELL_FEATURE_CHAT_PERKS_MOBILE: string; PREMIUM_UPSELL_FEATURE_CLIENT_THEMES_APP_ICONS_PREVIEW_TITLE: string; PREMIUM_UPSELL_FEATURE_CLIENT_THEMES_APP_ICONS_PREVIEW_UPSELL: FM; PREMIUM_UPSELL_FEATURE_CLIENT_THEMES_DESCRIPTION: string; PREMIUM_UPSELL_FEATURE_CLIENT_THEMES_TITLE: string; PREMIUM_UPSELL_FEATURE_FREE_GUILD_SUBSCRIPTION: FM<"numFreeGuildSubscriptions", false>; PREMIUM_UPSELL_FEATURE_GUILD_SUBSCRIPTION_DISCOUNT: FM<"percent", false>; PREMIUM_UPSELL_FEATURE_IN_APP_ICONS_DESCRIPTION: string; PREMIUM_UPSELL_FEATURE_PRETEXT: FM<"monthlyPrice", true>; PREMIUM_UPSELL_FEATURE_PRETEXT_TRIAL: string; PREMIUM_UPSELL_FEATURE_PRETEXT_TRIAL_VARIANT: string; PREMIUM_UPSELL_FEATURE_PRETEXT_WITHOUT_PRICE: string; PREMIUM_UPSELL_FEATURE_STREAM: string; PREMIUM_UPSELL_FEATURE_UPLOAD: string; PREMIUM_UPSELL_FEATURE_UPLOAD_INCREASE: FM<"premiumMaxSize", false>; PREMIUM_UPSELL_GET_NITRO: string; PREMIUM_UPSELL_GLOBAL_STICKERS_DESCRIPTION_MOBILE: FM; PREMIUM_UPSELL_GLOBAL_STICKERS_DESCRIPTION_MOBILE_GENERIC: FM<"planName", true>; PREMIUM_UPSELL_GLOBAL_STICKERS_TITLE_MOBILE: string; PREMIUM_UPSELL_MAKE_DISCORD_YOURS: FM; PREMIUM_UPSELL_MOBILE_CLIENT_THEMES_DESCRIPTION_V2: string; PREMIUM_UPSELL_MOBILE_CLIENT_THEMES_TITLE_V2: string; PREMIUM_UPSELL_MOBILE_FEATURE_ANIMATED_EMOJI_DESCRIPTION_V2: FM<"nitroTierName", false>; PREMIUM_UPSELL_MOBILE_FEATURE_ANIMATED_EMOJI_TITLE: string; PREMIUM_UPSELL_MOBILE_FEATURE_EMOJI_DESCRIPTION_V3: FM<"nitroTierName", false>; PREMIUM_UPSELL_MOBILE_FEATURE_EMOJI_POPUP_LABEL_V2: FM<"nitroTierName", true>; PREMIUM_UPSELL_MOBILE_FEATURE_EMOJI_TITLE: string; PREMIUM_UPSELL_MOBILE_FEATURE_FILE_UPLOAD_DESCRIPTION_V3: FM<"maxFileSize" | "nitroTierName", false>; PREMIUM_UPSELL_MOBILE_FEATURE_FILE_UPLOAD_POPUP_LABEL_V3: FM<"maxFileSize" | "nitroTierName", true>; PREMIUM_UPSELL_MOBILE_FEATURE_FILE_UPLOAD_TITLE: string; PREMIUM_UPSELL_MOBILE_FEATURE_IN_APP_ICONS_DESCRIPTION: string; PREMIUM_UPSELL_MOBILE_FEATURE_IN_APP_ICONS_TITLE: string; PREMIUM_UPSELL_MOBILE_FEATURE_SOUNDBOARD_DESCRIPTION_V3: FM<"nitroTierName", false>; PREMIUM_UPSELL_MOBILE_FEATURE_SOUNDBOARD_POPUP_LABEL_V2: FM<"nitroTierName", true>; PREMIUM_UPSELL_MOBILE_FEATURE_SOUNDBOARD_TITLE: string; PREMIUM_UPSELL_PROFILE_ANIMATED_AVATAR_INLINE_UPSELL: FM; PREMIUM_UPSELL_PROFILE_ANIMATED_AVATAR_MODAL_UPSELL_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_ANIMATED_AVATAR_MODAL_UPSELL_TITLE: string; PREMIUM_UPSELL_PROFILE_ANIMATED_BANNER_INLINE_UPSELL: FM; PREMIUM_UPSELL_PROFILE_ANIMATED_BANNER_MODAL_UPSELL_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_ANIMATED_BANNER_MODAL_UPSELL_TITLE: string; PREMIUM_UPSELL_PROFILE_AVATAR_DECO_INLINE_UPSELL: FM; PREMIUM_UPSELL_PROFILE_AVATAR_DECO_INLINE_UPSELL_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_AVATAR_DECO_MODAL_UPSELL_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_AVATAR_DECO_MODAL_UPSELL_TITLE: string; PREMIUM_UPSELL_PROFILE_CUSTOMIZATION_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_CUSTOMIZATION_TITLE: string; PREMIUM_UPSELL_PROFILE_EFFECT_INLINE_UPSELL: FM; PREMIUM_UPSELL_PROFILE_EFFECT_INLINE_UPSELL_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_EFFECT_MODAL_UPSELL_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_EFFECT_MODAL_UPSELL_TITLE: string; PREMIUM_UPSELL_PROFILE_SEGMENTED_CONTROL_NITRO: string; PREMIUM_UPSELL_PROFILE_SEGMENTED_CONTROL_NON_NITRO: string; PREMIUM_UPSELL_PROFILE_TRY_IT_OUT_DESCRIPTION: string; PREMIUM_UPSELL_PROFILE_TRY_IT_OUT_TITLE: string; PREMIUM_UPSELL_PROFILE_TRY_IT_OUT_UPSELL: FM; PREMIUM_UPSELL_UPGRADE: string; PREMIUM_UPSELL_UPLOAD_ACTIVE_MOBILE: string; PREMIUM_UPSELL_UPLOAD_ACTIVE_MOBILE_V2: string; PREMIUM_UPSELL_UPLOAD_DESCRIPTION_MOBILE: FM<"maxUploadPremium" | "maxUploadStandard", true>; PREMIUM_UPSELL_UPLOAD_PASSIVE_MOBILE: string; PREMIUM_UPSELL_VIDEO_QUALITY_DESC: FM; PREMIUM_UPSELL_VIDEO_QUALITY_TITLE: string; PREMIUM_UPSELL_YEARLY_CTA: FM<"price", false>; PREMIUM_UPSELL_YEARLY_DESCRIPTION: FM<"discountPercentage", false>; PREMIUM_UPSELL_YEARLY_TITLE: FM<"discountPercentage" | "planName", false>; PREMIUM_WITH_PREMIUM_GUILD_EXTERNAL_PLAN_DESCRIPTION: FM<"premiumDescription" | "premiumGuildDescription", false>; PREORDER_SKU_NAME: FM<"name", false>; PREVIEW: string; PREVIEW_BYTES_LEFT: FM<"formattedBytes", false>; PREVIEW_CHANGE_LANGUAGE: string; PREVIEW_LINES_LEFT: FM<"lines", false>; PREVIEW_MARKDOWN: string; PREVIEW_MARKDOWN_DESCRIPTION: string; PREVIEW_MODAL_LABEL: string; PREVIEW_NUM_LINES: FM<"lines", false>; PREVIEW_NUM_LINES_AT_LEAST: FM<"lines", false>; PREVIEW_SEARCH_LANGUAGE_PLACEHOLDER: string; PREVIEW_WHOLE_FILE: string; PRIORITY_SPEAKER: string; PRIORITY_SPEAKER_DESCRIPTION: string; PRIVACY_AND_SAFETY: string; PRIVACY_AND_SAFETY_CATEGORY_TITLE_CONTENT: string; PRIVACY_AND_SAFETY_CATEGORY_TITLE_FRIEND_REQUESTS: string; PRIVACY_AND_SAFETY_FRIEND_REQUESTS_SOURCE_ALL: string; PRIVACY_AND_SAFETY_GUILD_TAB_TITLE: string; PRIVACY_AND_SAFETY_SOCIAL_PERMISSIONS_DM_SETTING_SERVER_NOTE: string; PRIVACY_AND_SAFETY_SOCIAL_PERMISSIONS_DM_SETTING_TITLE: string; PRIVACY_AND_SAFETY_TAB_TITLE_CONTENT_SOCIAL: string; PRIVACY_AND_SAFETY_TAB_TITLE_DATA_PRIVACY: string; PRIVACY_AND_SAFETY_TAB_TITLE_SETTINGS: string; PRIVACY_AND_SAFETY_TAB_TITLE_STANDING: string; PRIVACY_AND_SAFETY_TAB_TITLE_SUPPORT_V2: string; PRIVACY_POLICY: FM<"url", true>; PRIVACY_SETTINGS: string; PRIVACY_SETTINGS_ACTIVITY_JOINING: string; PRIVACY_SETTINGS_ACTIVITY_JOINING_DESC: FM<"helpdeskArticle", true>; PRIVACY_SETTINGS_ACTIVITY_STATUS: string; PRIVACY_SETTINGS_ACTIVITY_STATUS_DESC: FM<"helpdeskArticle", true>; PRIVACY_SETTINGS_ACTIVITY_STATUS_DESC_V2: FM<"helpdeskArticle", true>; PRIVACY_SETTINGS_COMMUNITY_GUILDS_DISCLAIMER: FM<"policyLink", true>; PRIVACY_SETTINGS_DIRECT_MESSAGES: string; PRIVACY_SETTINGS_DIRECT_MESSAGES_DESC: string; PRIVACY_SETTINGS_DIRECT_MESSAGES_DESC_HUB: string; PRIVACY_SETTINGS_MESSAGE_REQUESTS: string; PRIVACY_SETTINGS_MESSAGE_REQUESTS_DESC: FM<"helpdeskArticle", true>; PRIVACY_SETTINGS_MESSAGE_REQUESTS_DESC_HUB: FM<"helpdeskArticle", true>; PRIVACY_SETTINGS_NON_SPAM_RETRAINING_SETTING_OPT_IN_DESC: string; PRIVACY_SETTINGS_NON_SPAM_RETRAINING_SETTING_OPT_IN_HEADER: string; PRIVACY_SETTINGS_NON_SPAM_RETRAINING_SETTING_OPT_OUT_DESC: string; PRIVACY_SETTINGS_NON_SPAM_RETRAINING_SETTING_OPT_OUT_HEADER: string; PRIVACY_SETTINGS_NON_SPAM_RETRAINING_SETTING_UNSET_DESC: string; PRIVACY_SETTINGS_NON_SPAM_RETRAINING_SETTING_UNSET_HEADER: string; PRIVACY_SETTINGS_STAFF_ONLY_DESC: string; PRIVACY_SETTINGS_STAFF_ONLY_HEADER: string; PRIVATE_CATEGORY: string; PRIVATE_CATEGORY_CREATION_PERMISSION_MISSING_HINT: FM; PRIVATE_CATEGORY_NOTE: string; PRIVATE_CHANNEL: string; PRIVATE_CHANNEL_ACCESS_INFO_MEMBERS: FM<"count", false>; PRIVATE_CHANNEL_ACCESS_INFO_MEMBERS_OVERFLOW: FM<"count", false>; PRIVATE_CHANNEL_ACCESS_INFO_ROLES: FM<"count", false>; PRIVATE_CHANNEL_ACCESS_INFO_ROLES_OVERFLOW: FM<"count", false>; PRIVATE_CHANNEL_ACCESS_INFO_TITLE: string; PRIVATE_CHANNEL_ACCESS_INFO_TITLE_WITH_COLON: string; PRIVATE_CHANNEL_ADD_APPS: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_NO_RESULT: FM<"query", true>; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_NO_ROLES: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_PLACEHOLDER: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_ROW_ADMINISTRATOR: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_ROW_MEMBER: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_ROW_OWNER: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_ROW_ROLE: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_SEARCH_PLACEHOLDER_MOBILE: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_SKIP: string; PRIVATE_CHANNEL_ADD_MEMBERS_MODAL_SUBTITLE: string; PRIVATE_CHANNEL_AVAILABLE_APPS: string; PRIVATE_CHANNEL_INSTALLED_APPS: string; PRIVATE_CHANNEL_INTEGRATION_ADD_MODAL_ROW_INFO: FM<"appName", false>; PRIVATE_CHANNEL_INTEGRATION_ADDED: FM<["helpCenterLink" | "otherUsername" | "username", "otherUsernameHook" | "usernameHook"], true>; PRIVATE_CHANNEL_INTEGRATION_ADDED_DELETED_APPLICATION: FM<["helpCenterLink" | "username", "usernameHook"], true>; PRIVATE_CHANNEL_INTEGRATION_ADDED_DELETED_APPLICATION_MOBILE: FM<"username", true>; PRIVATE_CHANNEL_INTEGRATION_ADDED_MOBILE: FM<"otherUsername" | "username", true>; PRIVATE_CHANNEL_INTEGRATION_MORE_APPS_INFO: string; PRIVATE_CHANNEL_INTEGRATION_MORE_APPS_INFO_LINKED: FM<"helpCenterLink", true>; PRIVATE_CHANNEL_INTEGRATION_OAUTH_SHEET_BODY: string; PRIVATE_CHANNEL_INTEGRATION_OAUTH_SHEET_CANNOT_READ_MESSAGE: string; PRIVATE_CHANNEL_INTEGRATION_OAUTH_SHEET_COMMAND_SUMMARY: string; PRIVATE_CHANNEL_INTEGRATION_OAUTH_SHEET_LEARN_MORE: string; PRIVATE_CHANNEL_INTEGRATION_OAUTH_SHEET_TITLE: string; PRIVATE_CHANNEL_INTEGRATION_REMOVED: FM<["helpCenterLink" | "otherUsername" | "username", "otherUsernameHook" | "usernameHook"], true>; PRIVATE_CHANNEL_INTEGRATION_REMOVED_DELETED_APPLICATION: FM<["helpCenterLink" | "username", "usernameHook"], true>; PRIVATE_CHANNEL_INTEGRATION_REMOVED_DELETED_APPLICATION_MOBILE: FM<"username", true>; PRIVATE_CHANNEL_INTEGRATION_REMOVED_MOBILE: FM<"otherUsername" | "username", true>; PRIVATE_CHANNEL_MANAGE_CHANNEL_ACCESS_CTA: string; PRIVATE_CHANNEL_MANAGE_ROLE_PERMISSION_MISSING_HINT: string; PRIVATE_CHANNEL_MEMBERS_ADDED_TOAST_MSG: FM<"count", false>; PRIVATE_CHANNEL_MEMBERS_REMOVE_YES_CONFIRMATION: string; PRIVATE_CHANNEL_MEMBERS_REMOVED: FM<"name", false>; PRIVATE_CHANNEL_MEMBERS_ROLES_ADDED_TOAST_MSG: string; PRIVATE_CHANNEL_MEMBERS_SECTION_HEADER: FM<"numberOfItems" | "sectionTitle", false>; PRIVATE_CHANNEL_NOTE: string; PRIVATE_CHANNEL_ROLES_ADDED_TOAST_MSG: FM<"count", false>; PRIVATE_CHANNEL_TRY_APPS: string; PRIVATE_CHANNEL_TRY_APPS_LINKED: FM<"helpCenterLink", true>; PRIVATE_CHANNELS_A11Y_LABEL: string; PRIVATE_TEXT_CHANNEL_CREATION_PERMISSION_MISSING_HINT: FM; PRIVATE_THREAD: string; PRIVATE_VOICE_CHANNEL_CREATION_PERMISSION_MISSING_HINT: FM; PROACTIVE_UPSELL_CUSTOM_PROFILE: FM; PROFILE: string; PROFILE_ACTIONS_MENU_LABEL: string; PROFILE_CUSTOMIZATION_GUILD_HINT: FM<"helpCenterLink", true>; PROFILE_CUSTOMIZATION_GUILD_SELECT_PLACEHOLDER: string; PROFILE_CUSTOMIZATION_GUILD_SELECT_TITLE: string; PROFILE_CUSTOMIZATION_NITRO_ICON_TOOLTIP: string; PROFILE_CUSTOMIZATION_PREVIEW: string; PROFILE_CUSTOMIZATION_PRONOUNS_PLACEHOLDER: string; PROFILE_EFFECT_ACQUIRABILITY_DISCLAIMER_MOBILE: string; PROFILE_EFFECT_MODAL_APPLY: string; PROFILE_EFFECT_MODAL_HEADER: string; PROFILE_EFFECT_MODAL_SHOP_PREVIEW_HEADER: string; PROFILE_EFFECT_NON_NITRO_DISCLAIMER_HEADER_MOBILE: string; PROFILE_HEADING_COPY_ID_A11Y_HINT: string; PROFILE_IN_VOICE_CALL: string; PROFILE_LOOKING_GOOD_TOOLTIP_TEXT: string; PROFILE_OPEN_VOICE_CHANNEL: string; PROFILE_THEMES_TOOLTIP_DESCRIPTION_PREMIUM: string; PROFILE_THEMES_TOOLTIP_TITLE: string; PROFILE_USER_BADGE_A11Y_LABEL: FM<"badgeLabel", false>; PROFILE_USER_BADGES: string; PROGRESS_BAR_ACTIONS_MENU_LABEL: string; PROMOTION_ACCOUNT_IDENTIFIER: FM<["tag", "avatarHook"], true>; PROMOTION_CARD_ACTION_CLAIM: string; PROMOTION_CONFIRM_UPGRADE_BUTTON: string; PROMOTION_CONFIRM_UPGRADE_DESCRIPTION: FM<["newPlanName", "lineItemsHook"], true>; PROMOTION_CONFIRM_UPGRADE_HEADER: string; PROMOTION_CONFIRM_UPGRADE_LINE_ITEM: FM<"lineItem" | "quantity", false>; PROMOTION_CONFIRM_UPGRADE_TERMS: FM<"helpCenterLink" | "newPlanName" | "planPrice" | "trialMonths", true>; PROMOTION_ERROR_BODY: string; PROMOTION_ERROR_CLAIMED_BODY: string; PROMOTION_ERROR_HELP_CENTER_LINK: FM<"helpCenterLink", true>; PROMOTION_ERROR_NO_CODE_BODY: string; PROMOTION_ERROR_NOT_VERIFIED_BODY: string; PROMOTION_ERROR_NOT_YOUR_CODE_BODY: string; PROMOTION_ERROR_TITLE: string; PROMOTION_EXISTING_SUBSCRIBER_BODY: FM<"months" | "planName", false>; PROMOTION_EXISTING_SUBSCRIBER_TITLE: string; PROMOTION_PREVIOUS_SUBSCRIBER_BODY: FM<"months" | "planName", false>; PROMOTION_REDEEM_BODY: FM<"months" | "planName", false>; PROMOTIONAL_EMAIL_OPT_IN_CONSENT: string; PROMPT_CAMERA_ERROR: string; PROMPT_CAMERA_LOADING_TITLE: string; PRUNE: string; PRUNE_MEMBERS: string; PRUNE_WITH_ROLES: string; PS4: string; PS5: string; PS_LINK_SUCCESS_BODY: string; PS_LINK_SUCCESS_TITLE: string; PS_LINK_UPSELL_CONTENT_RECONNECT: string; PS_LINK_UPSELL_HEADER: string; PS_LINK_UPSELL_HEADER_RECONNECT: string; PS_PRECONNECT_BODY: string; PS_PRECONNECT_BODY_WAITING: string; PS_PRECONNECT_TITLE: string; PS_TWO_WAY_UPSELL_BODY: FM<"help_article", true>; PS_TWO_WAY_UPSELL_TITLE: string; PS_VALUE_PROP_GAME: string; PS_VALUE_PROP_VOICE: string; "pt-BR": string; PTT_LIMITED_BODY: string; PTT_LIMITED_TITLE: string; PTT_LIMITED_WARNING: FM; PTT_NOT_SUPPORTED_ALERT_BODY: string; PTT_NOT_SUPPORTED_PLAYSTATION: string; PTT_NOT_SUPPORTED_XBOX: string; PTT_PERMISSION_BODY: FM<"game", false>; PTT_PERMISSION_TITLE: string; PUBLIC_GUILD_POLICY_ACCEPT: string; PUBLIC_GUILD_POLICY_TITLE: string; PUBLIC_LOCALE_HELP: string; PUBLIC_LOCALE_SELECTOR_TITLE: string; PUBLIC_LOCALE_TITLE: string; PUBLIC_RULES_CHANNEL_TITLE: string; PUBLIC_RULES_SELECTOR_TITLE: string; PUBLIC_UPDATES_CHANNEL_TITLE: string; PUBLISH_FOLLOWED_NEWS_BODY: string; PUBLISH_FOLLOWED_NEWS_BODY_REACH: FM<"numGuildsFollowing", true>; PUBLISH_FOLLOWED_NEWS_BODY_SETTINGS_INSIGHTS: FM; PUBLISH_FOLLOWED_NEWS_FAIL_BODY: FM<"retryAfter", false>; PUBLISH_FOLLOWED_NEWS_FAIL_TITLE: string; PUBLISH_FOLLOWED_NEWS_GENERIC_BODY: string; PURPLE: string; Q4_DROP_WHATS_NEW_EARLY_ACCESS_CARD_DESCRIPTION_SUB: string; Q4_DROP_WHATS_NEW_EARLY_ACCESS_CARD_SUBTITLE_V2: string; Q4_DROP_WHATS_NEW_EARLY_ACCESS_CARD_TITLE: string; Q4_DROP_WHATS_NEW_SPECIAL_PRICING_CARD_DESCRIPTION_NON_SUB: string; Q4_DROP_WHATS_NEW_SPECIAL_PRICING_CARD_DESCRIPTION_SUB: string; Q4_DROP_WHATS_NEW_SPECIAL_PRICING_CARD_SUBTITLE_V2: string; Q4_DROP_WHATS_NEW_SPECIAL_PRICING_CARD_TITLE: string; Q4_DROP_WHATS_NEW_UNLIMITED_SUPER_REACTIONS_CARD_DESCRIPTION_SUB: string; Q4_DROP_WHATS_NEW_UNLIMITED_SUPER_REACTIONS_CARD_SUBTITLE: string; Q4_DROP_WHATS_NEW_UNLIMITED_SUPER_REACTIONS_CARD_TITLE: string; QR_CODE_FAIL: string; QR_CODE_FAIL_DESCRIPTION: string; QR_CODE_IN_APP_SCANNER_ONLY: string; QR_CODE_INVALID: string; QR_CODE_LOGIN_CONFIRM: string; QR_CODE_LOGIN_DELAY: FM<"seconds", false>; QR_CODE_LOGIN_FINISH_BUTTON: string; QR_CODE_LOGIN_START_OVER: string; QR_CODE_LOGIN_SUCCESS: string; QR_CODE_LOGIN_SUCCESS_FLAVOR: string; QR_CODE_NOT_FOUND: string; QR_CODE_NOT_FOUND_DESCRIPTION: string; QUARANTINE_MODE: string; QUARANTINE_MODE_DM_BAR_SUBTEXT: FM<"helpdeskArticle", true>; QUARANTINE_MODE_INFO_MODAL_APPEAL: FM<"appealLink", true>; QUARANTINE_MODE_INFO_MODAL_DESCRIPTION: FM<"helpdeskArticle", true>; QUARANTINE_MODE_NOTICE: string; QUEST: FM<"questName", false>; QUEST_ACCEPTED: string; QUEST_AVAILABLE: string; QUEST_BAR_MAC_WARNING_BODY: string; QUEST_BAR_MAC_WARNING_HEADER: string; QUEST_BAR_SUBTITLE_PLAY_ANY_GAME_ON_CONNECTED_CONSOLE: FM<"duration" | "rewardNameWithArticle" | "targetMinutes", false>; QUEST_BAR_SUBTITLE_PLAY_GAME: FM<"gameTitle" | "rewardNameWithArticle" | "targetMinutes", false>; QUEST_BAR_SUBTITLE_PLAY_GAME_WITH_EXPIRING_COLLECTIBLE_REWARD: FM<"duration" | "gameTitle" | "rewardNameWithArticle" | "targetMinutes", false>; QUEST_BAR_TITLE_START_PLAYING: string; QUEST_BAR_WEB_WARNING_BODY: string; QUEST_BAR_WEB_WARNING_HEADER: string; QUEST_MOBILE_QUEST_BAR_DISMISS_TOAST: FM<[never, "arrowHook"], true>; QUEST_MULTIPLATFORM_SELECT_CONSOLE: string; QUEST_MULTIPLATFORM_SELECT_DESKTOP: string; QUEST_MULTIPLATFORM_SELECT_FUN_SUBTITLE: string; QUEST_MULTIPLATFORM_SELECT_SUBTITLE: string; QUEST_PROGRESS_NO_GAME: string; QUEST_PROGRESS_NO_GAME_WEB: string; QUEST_PROMOTED_QUEST: string; QUEST_REWARD: FM<"reward", false>; QUEST_REWARD_CODE_HIDDEN: string; QUEST_REWARD_COMPLETED: FM<"date" | "reward", false>; QUEST_REWARD_COMPLETED_CLAIMED: FM<"date" | "reward", false>; QUEST_REWARD_COMPLETED_UNCLAIMED: FM<"date", false>; QUEST_REWARD_MULTIPLATFORM: FM<"gameTitle" | "reward" | "streamingDurationRequirement", true>; QUEST_REWARD_MULTIPLATFORM_V2: FM<"gameTitle" | "reward" | "streamingDurationRequirement", true>; QUEST_REWARD_MULTIPLATFORM_WITH_EXPIRING_COLLECTIBLE_REWARD: FM<"duration" | "gameTitle" | "reward" | "streamingDurationRequirement", true>; QUEST_REWARD_MULTIPLATFORM_WITH_EXPIRING_COLLECTIBLE_REWARD_V2: FM<"duration" | "gameTitle" | "reward" | "streamingDurationRequirement", true>; QUEST_REWARD_TIERED: FM<"helpCenterLink" | "maxReward" | "maxRewardCount", true>; QUEST_REWARD_WITH_EXPIRATION: FM<"duration" | "reward", false>; QUESTS: string; QUESTS_ACCEPT: string; QUESTS_ACCEPT_QUEST: string; QUESTS_ACCEPT_TOOLTIP: string; QUESTS_ACCEPTED_INSTRUCTIONS_TO_WIN_REWARD: FM<"gameTitle" | "questReward" | "streamingDurationRequirement", true>; QUESTS_ACCEPTED_INSTRUCTIONS_TO_WIN_REWARD_TIERED: FM<"gameTitle" | "streamingDurationRequirement", true>; QUESTS_ALL: string; QUESTS_ANY_GAME_NOT_DETECTED: string; QUESTS_AVAILABLE_SOON: string; QUESTS_AVAILABLE_UNTIL_DATE: FM<"expirationDate", false>; QUESTS_CHECK_FOR_ANY_GAME_LAUNCH_TOOLTIP: string; QUESTS_CHECK_FOR_GAME_LAUNCH_TOOLTIP: FM<"gameTitle", false>; QUESTS_CLAIM_BY_DATE: FM<"expirationDate", false>; QUESTS_CLAIM_REWARD: string; QUESTS_CLAIM_THE_REWARD_HOOK: FM<[never, "rewardHook"], true>; QUESTS_CLAIMED: string; QUESTS_CLAIMED_QUEST_EMPTY_STATE: FM; QUESTS_COLLECTIBLES_TEMPORARY_COLLECTION: FM<"expirationDate", false>; QUESTS_COMPLETE_TOOLTIP: string; QUESTS_COMPLETED: string; QUESTS_COMPLETION_COMPLETE: string; QUESTS_COMPLETION_PROGRESS_ALMOST_COMPLETE: string; QUESTS_COMPLETION_PROGRESS_COMPLETE: string; QUESTS_COMPLETION_PROGRESS_COMPLETE_ACTIVITY_PANEL: string; QUESTS_COMPLETION_PROGRESS_HALFWAY: string; QUESTS_COMPLETION_PROGRESS_NOT_STARTED: string; QUESTS_COMPLETION_PROGRESS_NOT_STARTED_SUBTITLE: string; QUESTS_COMPLETION_PROGRESS_STARTED: string; QUESTS_COMPLETION_PROGRESS_STARTED_V2: FM<"percent", false>; QUESTS_CONNECT_CONSOLE: string; QUESTS_CONNECTED: string; QUESTS_CONNECTED_CONSOLES: string; QUESTS_CONNECTION_MODAL_ERROR_HEADER: string; QUESTS_CONNECTION_MODAL_ERROR_LEARN_MORE: FM<"privacySettingsUrl", true>; QUESTS_CONSOLE_CONNECTION_HELPER_STEPS_CONNECT_ACCOUNT: string; QUESTS_CONSOLE_CONNECTION_HELPER_STEPS_CTA: string; QUESTS_CONSOLE_CONNECTION_HELPER_STEPS_HEADING: string; QUESTS_CONSOLE_CONNECTION_HELPER_STEPS_LAUNCH_ANY_GAME: string; QUESTS_CONSOLE_CONNECTION_HELPER_STEPS_LAUNCH_GAME: FM<"gameTitle", false>; QUESTS_CONSOLE_CONNECTION_HELPER_STEPS_PLAYTIME: FM<"numMinutes", false>; QUESTS_CONSOLE_EXPIRED_CREDENTIALS_PSN: FM<"account_name", true>; QUESTS_CONSOLE_EXPIRED_CREDENTIALS_XBOX: FM<"account_name", true>; QUESTS_CONSOLE_QUEST_TASK_WITH_LINK: FM<"gameTitle" | "minutes", true>; QUESTS_DISCLOSURE_ACTIVITY: string; QUESTS_DISCLOSURE_AGE: string; QUESTS_DISCLOSURE_IN_HOUSE: string; QUESTS_DISCLOSURE_IN_HOUSE_QUEST_BAR: string; QUESTS_DISCLOSURE_IN_HOUSE_QUEST_HOME: string; QUESTS_DISCLOSURE_LABEL: string; QUESTS_DISCLOSURE_LEARN_MORE: FM<"privacySettingsUrl", true>; QUESTS_DISCLOSURE_LOCATION: string; QUESTS_DISCLOSURE_PUBLISHER_PROMOTING: FM<"gamePublisher" | "gameTitle", false>; QUESTS_DISCLOSURE_PUBLISHER_PROMOTING_QUEST_HOME: FM<"gamePublisher" | "gameTitle", false>; QUESTS_DISCLOSURE_PUBLISHER_TARGETING: FM<"gamePublisher", false>; QUESTS_EMBED_INVALID_BODY: string; QUESTS_EMBED_INVALID_BODY_2: string; QUESTS_EMBED_INVALID_BODY_3: string; QUESTS_EMBED_INVALID_HEADING: string; QUESTS_ENDED_ON_DATE: FM<"expiryDate", false>; QUESTS_EXPIRED_ON: FM<"expirationDate", false>; QUESTS_EXPIRED_ON_DATE: FM<"expirationDate", false>; QUESTS_EXPIRED_QUEST_CARD_HEADING: FM<"questName", false>; QUESTS_EXPIRED_QUEST_CARD_SUBHEADING: FM<"reward", false>; QUESTS_EXPIRES: FM<"expirationDate", false>; QUESTS_FIND_QUEST: string; QUESTS_FIND_QUEST_QUEST_HOME: string; QUESTS_FIND_THIS_IN_DISCOVERY_QUEST_HOME: string; QUESTS_GAME_DETECTED: string; QUESTS_GAME_NOT_DETECTED: FM<"gameTitle", false>; QUESTS_GET_THIS_GAME: string; QUESTS_HIDE_THIS: string; QUESTS_HOME_HERO_DESCRIPTION: string; QUESTS_HOME_HERO_EYEBROW: string; QUESTS_HOME_HERO_TITLE: string; QUESTS_HOME_MODAL_CONNECT_CONSOLE: string; QUESTS_HOME_MODAL_LINKED_ACCOUNTS: string; QUESTS_HOME_MODAL_NEXT_STEP: string; QUESTS_HOME_MOVED_CALLOUT_BUTTON: string; QUESTS_HOME_MOVED_CALLOUT_DESCRIPTION: string; QUESTS_HOME_MOVED_CALLOUT_DESCRIPTION_V2: string; QUESTS_HOME_MOVED_CALLOUT_TITLE: string; QUESTS_HOME_PART_ONE: string; QUESTS_HOME_PART_TWO: string; QUESTS_HOME_REWARD_CLAIMED_DESCRIPTION: FM<"claimDate", false>; QUESTS_IN_HOUSE_REWARD_TOOLTIP: string; QUESTS_IN_HOUSE_TASK: FM<"minutes", false>; QUESTS_IN_HOUSE_TASK_WITH_LINK: FM<"minutes", true>; QUESTS_IN_HOUSE_TITLE: string; QUESTS_IN_PROGRESS_TOOLTIP: string; QUESTS_INSTRUCTIONS_TO_WIN_REWARD: FM<"gameTitle" | "questReward" | "streamingDurationRequirement", false>; QUESTS_INSTRUCTIONS_TO_WIN_REWARD_TIERED: FM<"gameTitle" | "streamingDurationRequirement", false>; QUESTS_INSTRUCTIONS_TO_WIN_REWARD_TIERED_V2: FM<"gameTitle" | "streamingDurationRequirement", true>; QUESTS_INSTRUCTIONS_TO_WIN_REWARD_V2: FM<"gameTitle" | "questReward" | "streamingDurationRequirement", true>; QUESTS_INSTRUCTIONS_TO_WIN_REWARD_WITH_EXPIRING_COLLECTIBLE_REWARD: FM<"duration" | "gameTitle" | "questReward" | "streamingDurationRequirement", true>; QUESTS_INVALID_QUEST: string; QUESTS_LANDING_PAGE_ERROR_HEADING: string; QUESTS_LANDING_PAGE_MOBILE_WEB_BODY: FM; QUESTS_LANDING_PAGE_MOBILE_WEB_BODY_DESKTOP_AND_MOBILE: string; QUESTS_LANDING_PAGE_MOBILE_WEB_BODY_DESKTOP_AND_MOBILE_QUEST_HOME: string; QUESTS_LAUNCHED_GAME: FM<"gameTitle", false>; QUESTS_LEARN_MORE_LINK: FM<"questsLearnMoreLink", true>; QUESTS_LEARN_MORE_STACKED: FM; QUESTS_LEARN_MORE_V2: string; QUESTS_MEMBERS_LIST_AVAILBLE: string; QUESTS_MEMBERS_LIST_CLAIM_REWARD: string; QUESTS_MEMBERS_LIST_FINISH: string; QUESTS_MEMBERS_LIST_GAME_TILE_ALT: FM<"gamePublisher" | "gameTitle", false>; QUESTS_MEMBERS_LIST_PROMOTED_BY: FM<"gamePublisher", false>; QUESTS_MICROHPONE_UNIT_BUTTON_CTA: string; QUESTS_MICROPHONE_UNIT_BODY: FM<"gameTitle", false>; QUESTS_MICROPHONE_UNIT_BODY_ANY_GAME: string; QUESTS_MICROPHONE_UNIT_FOOTER_HELP_ARTICLE_MULTI: FM<"psHelpdeskArticle" | "xboxHelpdeskArticle", true>; QUESTS_MICROPHONE_UNIT_FOOTER_HELP_ARTICLE_MULTI_V2: FM; QUESTS_MICROPHONE_UNIT_FOOTER_HELP_ARTICLE_SINGLE: FM<"helpdeskArticle", true>; QUESTS_MICROPHONE_UNIT_FOOTER_HELP_ARTICLE_SINGLE_V2: FM; QUESTS_MICROPHONE_UNIT_HEADER: string; QUESTS_MOBILE_EMBED_BODY: string; QUESTS_MOBILE_EMBED_BODY_QUEST_HOME: string; QUESTS_MOBILE_EMBED_TITLE: string; QUESTS_MOBILE_EMBED_UNKNOWN_BODY: string; QUESTS_MOBILE_EMBED_UNKNOWN_TITLE: string; QUESTS_MOBILE_EMBED_UNSUPPORTED_TITLE: string; QUESTS_MOBILE_HOME_AWAITING_LAUNCH: FM<"gameName", false>; QUESTS_MOBILE_HOME_AWAITING_LAUNCH_DESKTOP: FM<"gameName", false>; QUESTS_MOBILE_HOME_AWAITING_STREAM_DESKTOP: FM<"gameName", false>; QUESTS_MOBILE_HOME_CLAIM_REWARD: FM<["date", "rewardHook"], true>; QUESTS_MOBILE_HOME_CONTINUE_PLAYING: FM<["minutesLeft", "minutesHook"], true>; QUESTS_MOBILE_HOME_GAME_CONNECTED: FM<"gameName", false>; QUESTS_MOBILE_HOME_LAUNCH_GAME: FM<"durationMinutes" | "gameName" | "rewardName", false>; QUESTS_MOBILE_HOME_LAUNCH_GAME_DESKTOP: FM<"durationMinutes" | "gameName" | "rewardName", false>; QUESTS_MOBILE_HOME_STREAM_GAME_DESKTOP: FM<"durationMinutes" | "gameName" | "rewardName", false>; QUESTS_MOBILE_HOME_VIEW_REQUIREMENTS: string; QUESTS_MOBILE_HOME_VIEW_REWARD: string; QUESTS_MOBILE_QUEST_BAR_OVERFLOW_MENU_LABEL: string; QUESTS_NO_AVAILABLE: string; QUESTS_PLAY_GAME: string; QUESTS_PLAY_INSTRUCTIONS_TO_WIN_REWARD_WITH_EXPIRING_COLLECTIBLE_REWARD: FM<"duration" | "gameTitle" | "rewardNameWithArticle" | "streamingDurationRequirement", false>; QUESTS_PROGRESS_MAC_STREAMING_TIP: string; QUESTS_PROGRESS_TRACKING_FAILURE_NOTICE: string; QUESTS_PROGRESS_WEB_TIP: string; QUESTS_PROMOTED: string; QUESTS_PROMOTED_BY: string; QUESTS_PROMOTED_BY_BRAND: FM<"brandName", true>; QUESTS_PROMOTED_BY_GUILD: FM<["guildHook" | "guildName", "1"], true>; QUESTS_PSN_ONLINE_ID: string; QUESTS_PSN_ONLINE_ID_V2: string; QUESTS_REWARD_AVATAR_DECORATION_BODY: FM<"decorationName", false>; QUESTS_REWARD_AVATAR_DECORATION_BODY_WITH_EXPIRATION: FM<"decorationName" | "duration", false>; QUESTS_REWARD_AVATAR_DECORATION_HEADER: string; QUESTS_REWARD_CODE_CLAIMED_REWARD_TILE_SUBHEADER: string; QUESTS_REWARD_CODE_CONGRATS: string; QUESTS_REWARD_CODE_DONE: string; QUESTS_REWARD_CODE_ERROR: string; QUESTS_REWARD_CODE_GET_CODE: string; QUESTS_REWARD_CODE_HEADER: string; QUESTS_REWARD_CODE_PLATFORM_CROSS_PLATFORM: string; QUESTS_REWARD_CODE_PLATFORM_PC: string; QUESTS_REWARD_CODE_PLATFORM_PLAYSTATION: string; QUESTS_REWARD_CODE_PLATFORM_SELECTION_HEADER: string; QUESTS_REWARD_CODE_PLATFORM_XBOX: string; QUESTS_REWARD_CODE_SELECT_PLATFORM_INSTRUCTIONS: FM<"rewardName", true>; QUESTS_REWARD_CODE_SELECT_PLATFORM_INSTRUCTIONS_TIERED: FM; QUESTS_REWARD_CODE_SELECT_PLATFORM_LABEL: string; QUESTS_REWARD_CODE_SELECT_PLATFORM_PLACEHOLDER: string; QUESTS_REWARD_CODE_TRY_AGAIN: string; QUESTS_REWARD_CODE_UNCLAIMED_REWARD_TILE_SUBHEADER: string; QUESTS_REWARD_MODAL_FOOTER_IN_GAME_BODY: FM<"rewardName", false>; QUESTS_REWARD_SPONSORED_BY: FM<"publisherName", false>; QUESTS_REWARD_TILE_EXPIRED_QUEST: string; QUESTS_REWARD_VERIFICATION_BODY: FM<"emailAddress" | "emailAddressLink", true>; QUESTS_REWARD_VERIFICATION_ERROR: string; QUESTS_REWARD_VERIFICATION_TITLE: string; QUESTS_SEE_CODE: string; QUESTS_SELECT_TO_START: string; QUESTS_SHARE_LINK: string; QUESTS_SHARE_QUEST: string; QUESTS_SHOW_CONNECTIONS: string; QUESTS_SPONSORED: string; QUESTS_START_QUEST: string; QUESTS_STREAM_SOURCE_SELECT_NOTICE_HEADING: FM<"gameTitle", false>; QUESTS_STREAM_SOURCE_SELECT_NOTICE_SUBHEADING: string; QUESTS_STREAM_TASK: FM<"gameTitle" | "minutes", false>; QUESTS_THIS_PC: string; QUESTS_TILE_BANNER_ENDS_DATE: FM<"expiryDate", false>; QUESTS_TILE_BANNER_EXPIRES_ON_DATE: FM<"expiryDate", false>; QUESTS_TITLE: FM<"questName", false>; QUESTS_VIEW_COLLECTIBLE: string; QUESTS_VIEW_MORE_ACCOUNTS: string; QUESTS_VIEW_QUEST: string; QUESTS_XBOX_ID: string; QUEUED_FILES: FM<"count" | "filename", false>; QUICK_DM_BLOCKED: string; QUICK_DM_USER: FM<"name", false>; QUICK_SWITCHER: string; QUICK_SWITCHER_RESULTS_CHANNEL_LABEL: FM<"guild" | "name" | "type", false>; QUICK_SWITCHER_RESULTS_GROUP_DM_LABEL: FM<"name", false>; QUICK_SWITCHER_RESULTS_GROUP_DM_UNREAD_LABEL: FM<"mentions" | "name", false>; QUICK_SWITCHER_RESULTS_GUILD_LABEL: FM<"name", false>; QUICK_SWITCHER_RESULTS_LABEL: string; QUICK_SWITCHER_RESULTS_USER_LABEL: FM<"id" | "name", false>; QUICK_SWITCHER_RESULTS_USER_UNREAD_LABEL: FM<"id" | "mentions" | "name", false>; QUICKSEARCH_FILES: string; QUICKSEARCH_GIFS: string; QUICKSEARCH_LINKS: string; QUICKSEARCH_MEDIA: string; QUICKSEARCH_MESSAGES: string; QUICKSEARCH_PEOPLE: string; QUICKSEARCH_PINS: string; QUICKSEARCH_RECENT: string; QUICKSWITCHER_DRAFTS: string; QUICKSWITCHER_EMPTY_CTA: string; QUICKSWITCHER_EMPTY_TEXT: string; QUICKSWITCHER_LAST_CHANNEL: string; QUICKSWITCHER_LINK_MESSAGE: string; QUICKSWITCHER_LINK_NO_ACCESS: string; QUICKSWITCHER_LINK_UNKNOWN: string; QUICKSWITCHER_MENTIONS: string; QUICKSWITCHER_NOTICE: string; QUICKSWITCHER_PLACEHOLDER: string; QUICKSWITCHER_PROTIP: FM<["helpdeskArticle", "guildSymbolHook" | "textChannelSymbolHook" | "userSymbolHook" | "voiceChannelSymbolHook"], true>; QUICKSWITCHER_PROTIP_GUILDS: string; QUICKSWITCHER_PROTIP_TEXT_CHANNELS: string; QUICKSWITCHER_PROTIP_USERNAMES: string; QUICKSWITCHER_PROTIP_VOICE_CHANNELS: string; QUICKSWITCHER_QUERYMODE_APPLICATIONS: string; QUICKSWITCHER_QUERYMODE_GUILDS: string; QUICKSWITCHER_QUERYMODE_TEXT_CHANNELS: string; QUICKSWITCHER_QUERYMODE_USERS: string; QUICKSWITCHER_QUERYMODE_USERS_IN_GUILD: FM<"name", false>; QUICKSWITCHER_QUERYMODE_VOICE_CHANNELS: string; QUICKSWITCHER_TUTORIAL_MESSAGE_SEARCH: string; QUICKSWITCHER_TUTORIAL_MESSAGE_SELECT: string; QUICKSWITCHER_UNREAD_CHANNELS: string; QUIET_MODE_DISABLED: string; QUIET_MODE_DISABLED_BY: string; QUIET_MODE_DND: string; QUIET_MODE_ENABLED: string; QUIET_MODE_HABITUAL_DND_NOTICE: string; QUIET_MODE_SETTINGS_DESCRIPTION: string; QUIET_MODE_SETTINGS_LABEL: string; QUIET_MODE_WHILE_DND_UPSELL_BODY: string; QUIET_MODE_WHILE_DND_UPSELL_TITLE: string; QUOTE: string; RAISED_HAND_LIST_MOVED_NUX_DESCRIPTION: string; RAISED_HAND_LIST_MOVED_NUX_TITLE: string; RATE_LIMITED: string; RATING_REQUEST_BODY_ANDROID: string; RATING_REQUEST_TITLE: string; REACT: string; REACT_REMOVE_WITH_COUNT_A11Y_LABEL: FM<"emojiName" | "reactions", false>; REACT_WITH_COUNT_A11Y_LABEL: FM<"emojiName" | "reactions", false>; REACTION_ADD_ERROR_A11Y: FM<"name", false>; REACTION_ADD_SUCCESS_A11Y: FM<"name", false>; REACTION_PICKER: string; REACTION_REACTORS_A11Y: FM<"n" | "name", false>; REACTION_REMOVE_ERROR_A11Y: FM<"name", false>; REACTION_REMOVE_SUCCESS_A11Y: FM<"name", false>; REACTION_TOOLTIP_1: FM<"a" | "emojiName", false>; REACTION_TOOLTIP_1_N: FM<"a" | "emojiName" | "n", false>; REACTION_TOOLTIP_1_N_INTERACTIVE: FM<"a" | "emojiName" | "n", true>; REACTION_TOOLTIP_2: FM<"a" | "b" | "emojiName", false>; REACTION_TOOLTIP_2_N: FM<"a" | "b" | "emojiName" | "n", false>; REACTION_TOOLTIP_2_N_INTERACTIVE: FM<"a" | "b" | "emojiName" | "n", true>; REACTION_TOOLTIP_3: FM<"a" | "b" | "c" | "emojiName", false>; REACTION_TOOLTIP_3_N: FM<"a" | "b" | "c" | "emojiName" | "n", false>; REACTION_TOOLTIP_3_N_INTERACTIVE: FM<"a" | "b" | "c" | "emojiName" | "n", true>; REACTION_TOOLTIP_N: FM<"emojiName" | "n", false>; REACTION_TOOLTIP_N_INTERACTIVE: FM<"emojiName" | "n", true>; REACTIONS: string; REACTIONS_MATCHING: FM<"prefix", true>; READ_MESSAGE_HISTORY: string; READ_ONLY_CHANNEL: string; READ_POST_HISTORY: string; READY: string; REALTIME: string; REASON: string; RECENT_ACTIVITY: string; RECENT_ACTIVITY_LABEL: FM<"channelName" | "timeAgo", false>; RECENT_MENTIONS: string; RECENT_MENTIONS_EMPTY_STATE_HEADER: string; RECENT_MENTIONS_EMPTY_STATE_TIP: string; RECENT_MENTIONS_FILTER_ALL_SERVERS: string; RECENT_MENTIONS_FILTER_EVERYONE: string; RECENT_MENTIONS_FILTER_ROLES: string; RECENT_MENTIONS_PRO_TIP: string; RECENTLY_ACTIVE_CATEGORY_HEADER: string; RECENTLY_JOINED_SUBTITLE: string; RECENTLY_MESSAGED_SUBTITLE: string; RECENTLY_VISITED: string; RECENTLY_VISITED_CATEGORY_HEADER: string; RECENTS: string; RECENTS_CATEGORY_HEADER: string; RECENTS_NOTIFICATIONS_MENU_LABEL: string; RECOMMENDED: string; RECONNECT: string; RECONNECT_PS_LANDING_TITLE: string; RECONNECT_XBOX_LANDING_TITLE: string; RECONNECTING: string; RECORD_VOICE_MESSAGE: string; REDEEM: string; REDEMPTION_CODE: string; REDESIGN_CLEAR_INCOMING_REQUESTS_BODY: FM<"incomingRequestCount", false>; REDESIGN_CLEAR_INCOMING_REQUESTS_TITLE: string; REDESIGN_CONTACT_SYNC_SUGGESTIONS_SUBTITLE: string; REDESIGN_CONTACT_SYNC_SUGGESTIONS_TITLE: string; REDIRECTED_CALLBACK_ERROR: string; REDIRECTED_CALLBACK_PENDING: string; REDIRECTED_CONFIRMATION_CALLBACK_SUCCESS: FM; REDIRECTED_PAYMENT_METHOD_CONFIRMATION_CALLBACK_SUCCESS: FM; REFERRAL_INCENTIVE_COUNTDOWN_DAYS: FM<"days", false>; REFERRAL_INCENTIVE_DISCOUNT_UNLOCKED: string; REFERRAL_INCENTIVE_FRIEND_PASS_COUNTDOWN_HAS_BEGUN: FM<"learnMoreLink" | "numberOfTimerPeriods" | "timePeriodInterval", true>; REFERRAL_INCENTIVE_FRIEND_PASS_COUNTDOWN_HAS_BEGUN_V2: FM<"learnMoreLink" | "numberOfTimePeriods", true>; REFERRAL_INCENTIVE_FRIEND_PASSES_CONVERT_GET_INCENTIVE: FM<"discountRate" | "learnMoreLink" | "subscriptionInterval", true>; REFERRAL_INCENTIVE_FRIEND_PASSES_KEEP_GOING: FM<"discountRate", false>; REFERRAL_INCENTIVE_FRIEND_PASSES_REDEEMED: FM<"discountRate" | "learnMoreLink" | "subscriptionInterval", true>; REFERRAL_INCENTIVE_GET_DISCOUNT_OFF_YOUR_NEXT_MONTH: FM<"discountRate", false>; REFERRAL_INCENTIVE_KEEP_SHARING_TO_EARN_ANOTHER_DISCOUNT: FM<"learnMoreLink", true>; REFERRAL_INCENTIVE_MORE_FRIEND_PASSES_ALMOST_HERE: FM<"learnMoreLink", true>; REFERRAL_INCENTIVE_NITRO_FRIEND_PASSES_INCOMING: string; REFERRAL_INCENTIVE_SELECT_3_FRIENDS_TO_SHARE_PASS: string; REFERRAL_INCENTIVE_SHARE_NITRO_GET_DISCOUNT: FM<"discountRate", false>; REFERRAL_INCENTIVE_YOU_EARNED_DISCOUNT: FM<"discountRate" | "subscriptionInterval", false>; REFERRAL_INCENTIVE_YOU_SHARED_X_PASSES: FM<"numPasses", false>; REFERRAL_PROGRAM_CLOSE: string; REFERRAL_PROGRAM_CONFIRMATION_ERROR_PAGE: FM<"userName", false>; REFERRAL_PROGRAM_CONFIRMATION_ERROR_PAGE_HEADER: string; REFERRAL_PROGRAM_EMBED_BODY: string; REFERRAL_PROGRAM_EMBED_HEADER: FM<"recipientUserName" | "senderUserName", false>; REFERRAL_PROGRAM_EMBED_RECIPIENT_INELIGIBLE_HEADER: FM<"userName", false>; REFERRAL_PROGRAM_EMBED_RECIPIENT_INELIGIBLE_SUBHEADER: FM<"userName", false>; REFERRAL_PROGRAM_EMBED_TIRAL_EXPIRED: FM<"userName", false>; REFERRAL_PROGRAM_FRIEND_SELECT_COMPLETE_HEADER: FM<"numReferrals", false>; REFERRAL_PROGRAM_FRIEND_SELECT_COMPLETE_SUBHEADER: FM<"days" | "helpdeskArticle", true>; REFERRAL_PROGRAM_FRIEND_SELECT_COMPLETE_TOOL_TOP: string; REFERRAL_PROGRAM_FRIEND_SELECT_ERROR_HEADER: string; REFERRAL_PROGRAM_FRIEND_SELECT_ERROR_SUBHEADER: string; REFERRAL_PROGRAM_FRIEND_SELECT_HEADER: FM<"numReferrals", false>; REFERRAL_PROGRAM_FRIEND_SELECT_RESENT_COMPLETE_HEADER: string; REFERRAL_PROGRAM_FRIEND_SELECT_RESENT_HEADER: string; REFERRAL_PROGRAM_FRIEND_SELECTION_HIT_LIMIT: FM<"numReferrals", false>; REFERRAL_PROGRAM_HOME_BADGE_SUBHEADER: FM<"numReferrals", false>; REFERRAL_PROGRAM_MOBILE_EMBED_BODY: string; REFERRAL_PROGRAM_MOBILE_EMBED_BODY_1: string; REFERRAL_PROGRAM_MOBILE_EMBED_HEADER_1: FM<"userName", false>; REFERRAL_PROGRAM_MOBILE_EMBED_HEADER_2: FM<"receiverName" | "userName", false>; REFERRAL_PROGRAM_MOBILE_EMBED_SUBHEADER_1: FM<"userName", false>; REFERRAL_PROGRAM_MOBILE_EMBED_SUBHEADER_DAYS_2: FM<"numDays", false>; REFERRAL_PROGRAM_MOBILE_EMBED_SUBHEADER_HOURS_2: FM<"numHours", false>; REFERRAL_PROGRAM_NO_ELIGIBLE_FRIENDS_HEADER: string; REFERRAL_PROGRAM_NO_ELIGIBLE_FRIENDS_SUBHEADER: FM<"helpdeskArticle", true>; REFERRAL_PROGRAM_PAYMENT_MODAL_COPY: FM<"endDate", true>; REFERRAL_PROGRAM_PLAN_COMPARISON_ROW: string; REFERRAL_PROGRAM_PROGRESS_BAR_HEADER_ALL_SHARED: string; REFERRAL_PROGRAM_PROGRESS_BAR_HEADER_COOL_DOWN: string; REFERRAL_PROGRAM_PROGRESS_BAR_SUBHEADER: FM<"helpdeskArticle" | "numFriends", true>; REFERRAL_PROGRAM_PROGRESS_BAR_SUBHEADER_ALL_SHARED: FM<"helpdeskArticle" | "numMonths" | "numReferrals", true>; REFERRAL_PROGRAM_PROGRESS_BAR_SUBHEADER_ALL_SHARED_NO_REFRESH: FM<"helpdeskArticle", true>; REFERRAL_PROGRAM_PROGRESS_BAR_SUBHEADER_AT_LEAST_ONE_SHARED: FM<"helpdeskArticle" | "numFriends", true>; REFERRAL_PROGRAM_PROGRESS_BAR_UNSENT_TOOLTIP: string; REFERRAL_PROGRAM_REMIND_FRIENDS: string; REFERRAL_PROGRAM_SEARCH_FRIENDS: string; REFERRAL_PROGRAM_SELCT_FRIENDS_NO_RESULTS_SUBHEADER: string; REFERRAL_PROGRAM_SELECT_FRIENDS: string; REFERRAL_PROGRAM_SELECT_FRIENDS_NO_RESULTS_HEADER: string; REFERRAL_PROGRAM_SELECT_MORE_FRIEND: FM<"numFriends", false>; REFERRAL_PROGRAM_SELECT_ONE_MORE_FRIEND: string; REFERRAL_PROGRAM_SHARE_NITRO_WITH_FRIENDS: string; REFERRAL_PROGRAM_SHARE_TRIAL: string; REFERRAL_PROGRAM_START_TRIAL: string; REFERRAL_PROGRAM_SUBSCRIBER_HOMER_BANNER: FM<"username", false>; REFERRAL_PROGRAM_TWO_WEEK_TRIAL: string; REFERRAL_PRORAM_PAYMENT_MODAL_BANNER: FM<"userName", false>; REFRESH: string; REFUND: string; REGION: string; REGION_BLOCKED_PAYMENTS_BODY: string; REGION_BLOCKED_PAYMENTS_CTA: FM<"helpdeskArticle", true>; REGION_BLOCKED_PAYMENTS_HEADER: string; REGION_BLOCKED_PAYMENTS_ONE_LINER: FM<"helpdeskArticle", true>; REGISTER: string; REGISTER_LOGIN_PRIVACY_NOTICE: FM<"privacyURL", true>; REGISTER_PASSWORD_EXPERIMENT_HINT: string; REGISTER_TITLE: string; REGISTER_USERNAME_HINT: string; REGISTERED_GAMES: string; REMAINING_PARTICIPANTS: FM<"current" | "max", false>; REMIXING_ADD_MENTION: string; REMIXING_ADD_STICKER: string; REMIXING_ADD_TEXT: string; REMIXING_ASPECT_RATIO_FOUR_THREE: string; REMIXING_ASPECT_RATIO_ORIGINAL: string; REMIXING_ASPECT_RATIO_SIXTEEN_NINE: string; REMIXING_ASPECT_RATIO_SQUARE: string; REMIXING_ASPECT_RATIO_VERTICAL: string; REMIXING_BACKDROP_EDITOR_TITLE: string; REMIXING_CAROUSEL_SCROLL_PAGE: string; REMIXING_CROP: string; REMIXING_DOWNLOAD_APP: string; REMIXING_DRAWING_COLOR_BABY_BLUE: string; REMIXING_DRAWING_COLOR_BLACK: string; REMIXING_DRAWING_COLOR_BRAND500: string; REMIXING_DRAWING_COLOR_BROWN: string; REMIXING_DRAWING_COLOR_DARK_BLUE: string; REMIXING_DRAWING_COLOR_DARK_GOLD: string; REMIXING_DRAWING_COLOR_DARK_GREEN: string; REMIXING_DRAWING_COLOR_DARK_ORANGE: string; REMIXING_DRAWING_COLOR_DARK_PURPLE: string; REMIXING_DRAWING_COLOR_DARK_RED: string; REMIXING_DRAWING_COLOR_DARK_TAN: string; REMIXING_DRAWING_COLOR_FADED_GREEN: string; REMIXING_DRAWING_COLOR_GREEN430: string; REMIXING_DRAWING_COLOR_GREENISH_YELLOW: string; REMIXING_DRAWING_COLOR_LIGHT_PINK: string; REMIXING_DRAWING_COLOR_LIGHT_PURPLE: string; REMIXING_DRAWING_COLOR_LIGHT_YELLOW: string; REMIXING_DRAWING_COLOR_LILAC: string; REMIXING_DRAWING_COLOR_ORANGE345: string; REMIXING_DRAWING_COLOR_PINK_TAN: string; REMIXING_DRAWING_COLOR_RED500: string; REMIXING_DRAWING_COLOR_TAN: string; REMIXING_DRAWING_COLOR_WHITE: string; REMIXING_DRAWING_COLOR_YELLOW260: string; REMIXING_DRAWING_DONE: string; REMIXING_EXIT_ALERT_BODY: string; REMIXING_EXIT_ALERT_LEAVE_BUTTON: string; REMIXING_EXIT_ALERT_STAY_BUTTON: string; REMIXING_EXIT_ALERT_TITLE: string; REMIXING_FLIP: string; REMIXING_FREE_DRAW: string; REMIXING_LANGUAGE_SUPPORT_WARNING: FM; REMIXING_MENTIONS_TOOLTIP: string; REMIXING_OPEN_ERROR: string; REMIXING_PERKS_CARD_DESCRIPTION: string; REMIXING_PERKS_CARD_TITLE: string; REMIXING_POST_CTA: string; REMIXING_QUARTERSHEET_CTA_TRY_IT: string; REMIXING_QUARTERSHEET_DESCRIPTION: string; REMIXING_QUARTERSHEET_DESCRIPTION_GA: string; REMIXING_QUARTERSHEET_UNLOCK_WITH_NITRO: string; REMIXING_REDO: string; REMIXING_ROTATE: string; REMIXING_TAG: string; REMIXING_TITLE: string; REMIXING_TOOLTIP_CTA_TRY_IT_OUT: string; REMIXING_TOOLTIP_DESCRIPTION: string; REMIXING_TOOLTIP_DESCRIPTION_MEME: string; REMIXING_TOOLTIP_NITRO_EARLY_ACCESS: string; REMIXING_TOOLTIP_NOT_NOW: string; REMIXING_TOOLTIP_TITLE_MEME_IT: string; REMIXING_TOOLTIP_TITLE_REMIX: string; REMIXING_TWO_FINGER_HINT: string; REMIXING_UNDO: string; REMIXING_UNDO_ALL_ALERT: string; REMIXING_UNDO_ALL_ALERT_BODY: string; REMIXING_UNDO_ALL_ALERT_CANCEL_BUTTON: string; REMOVE: string; REMOVE_ALL_REACTIONS: string; REMOVE_ALL_REACTIONS_CONFIRM_BODY: string; REMOVE_ALL_REACTIONS_CONFIRM_TITLE: string; REMOVE_ATTACHMENT_BODY: string; REMOVE_ATTACHMENT_CONFIRM: string; REMOVE_ATTACHMENT_TITLE: string; REMOVE_ATTACHMENT_TOOLTIP_TEXT: string; REMOVE_CATEGORY: string; REMOVE_EMOJI_REACTIONS: string; REMOVE_EMOJI_REACTIONS_CONFIRM_BODY: string; REMOVE_EMOJI_REACTIONS_CONFIRM_TITLE: string; REMOVE_FAVORITE: string; REMOVE_FAVORITE_SUGGESTION: string; REMOVE_FILE: string; REMOVE_FRIEND: string; REMOVE_FRIEND_BODY: FM<"name", true>; REMOVE_FRIEND_TITLE: FM<"name", false>; REMOVE_FROM_DICTIONARY: string; REMOVE_FROM_GROUP: string; REMOVE_ICON: string; REMOVE_ITEM_FROM_LIST_A11Y_LABEL: FM<"text", false>; REMOVE_KEYBIND: string; REMOVE_MESSAGE_ATTACHMENT: string; REMOVE_NOTIFICATION: string; REMOVE_NOTIFICATION_ERROR: string; REMOVE_REACTION: string; REMOVE_ROLE_OR_USER: FM<"name", false>; REMOVE_SYNCED_ROLE: string; REMOVE_TIME_OUT: string; REMOVE_TIMEOUT_USER_TITLE: FM<"user", false>; REMOVE_USER_FROM_FORUM_POST: FM<"user", false>; REMOVE_USER_FROM_THREAD: FM<"user", false>; REMOVE_VANITY_URL: string; RENDER_EMBEDS: string; RENDER_EMBEDS_LABEL: string; RENDER_REACTIONS: string; REORDER: string; REORDERING_CHANNELS: string; REPLY_MENTION_OFF: string; REPLY_MENTION_OFF_MOBILE_A11Y_HINT: string; REPLY_MENTION_OFF_TOOLTIP: string; REPLY_MENTION_ON: string; REPLY_MENTION_ON_MOBILE_A11Y_HINT: string; REPLY_MENTION_ON_TOOLTIP: string; REPLY_QUOTE_COMMAND: string; REPLY_QUOTE_MESSAGE_BLOCKED: string; REPLY_QUOTE_MESSAGE_DELETED: string; REPLY_QUOTE_MESSAGE_NOT_LOADED: string; REPLY_QUOTE_NO_TEXT_CONTENT: string; REPLY_QUOTE_NO_TEXT_CONTENT_MOBILE: string; REPLY_QUOTE_STICKER: string; REPLY_QUOTE_STICKER_MOBILE: string; REPLY_QUOTE_VOICE_MESSAGE: string; REPLY_QUOTE_VOICE_MESSAGE_MOBILE: string; REPLYING_TO: FM<[never, "userHook"], true>; REPLYING_TO_A11Y_HINT: string; REPLYING_TO_A11Y_LABEL: FM<"username", false>; REPORT: string; REPORT_APP: string; REPORT_MESSAGE: FM<"name", false>; REPORT_MESSAGE_MENU_OPTION: string; REPORT_MODAL_BLOCK_USER: string; REPORT_MODAL_DESCRIPTION: string; REPORT_MODAL_DESCRIPTION_MAX_EXCEEDED: string; REPORT_MODAL_DESCRIPTION_MIN_MAX: FM<"max" | "min", false>; REPORT_MODAL_ERROR: FM<"tnsReportUrl", true>; REPORT_MODAL_MESSAGE_SELECTED: string; REPORT_MODAL_REPORT_EVENT_MENU_ITEM: string; REPORT_MODAL_REPORT_MESSAGE: string; REPORT_MODAL_REPORT_STAGE_MENU_ITEM: string; REPORT_MODAL_SELECT_ONE: string; REPORT_MODAL_SERVER_PREVIEW_HEADER: string; REPORT_MODAL_SHOULD_BLOCK: string; REPORT_MODAL_SHOULD_DELETE: string; REPORT_MODAL_SUBJECT: string; REPORT_MODAL_SUBMIT: string; REPORT_MODAL_SUBMITTED: string; REPORT_MODAL_SUBMITTED_EMAIL_CONFIRMATION: string; REPORT_MODAL_TEXT_LINE_START_TEXTING: string; REPORT_MODAL_TYPE_TITLE: string; REPORT_NOT_SPAM: string; REPORT_NOT_SPAM_TOOLTIP: string; REPORT_OTHER_USER_SUBMITTED: string; REPORT_SECOND_LOOK_ALREADY_REQUESTED_ERROR: string; REPORT_SECOND_LOOK_INELIGIBLE_ERROR: string; REPORT_SECOND_LOOK_LIMITED_TIME_ERROR: string; REPORT_SECOND_LOOK_NOT_FOUND_ERROR: string; REPORT_SECOND_LOOK_UNKNOWN_ERROR: string; REPORT_SERVER: FM<"name", false>; REPORT_SERVER_NO_NAME: string; REPORT_SPAM: string; REPORT_THIS_USER_FOR_ABUSE: string; REPORT_USER: FM<"name", false>; REPORT_USER_MODAL_SUBMITTED: string; REPORTS_BLOCK_AND_MUTE_USER_ELEMENT_DESCRIPTION: string; REPORTS_BLOCK_USER_ELEMENT_DESCRIPTION: string; REPORTS_FREE_TEXT_PLACEHOLDER: string; REPORTS_MUTE_USER_ELEMENT_DESCRIPTION: string; REPORTS_USER_BUTTON_TITLE: string; REPORTS_USER_PREVIEW_TITLE: string; REQUEST_SENT: string; REQUEST_TO_SPEAK: string; REQUEST_TO_SPEAK_ACCEPT: string; REQUEST_TO_SPEAK_ACCESSIBILITY_TEXT: string; REQUEST_TO_SPEAK_ACCESSIBILITY_TEXT_WITH_PENDING_REQUESTS: FM<"count", false>; REQUEST_TO_SPEAK_AREA_ALL_ROLES: string; REQUEST_TO_SPEAK_AREA_ALL_ROLES_DISABLED: string; REQUEST_TO_SPEAK_AREA_CLOSE: string; REQUEST_TO_SPEAK_AREA_OPEN: string; REQUEST_TO_SPEAK_AREA_TITLE: string; REQUEST_TO_SPEAK_DECLINE: string; REQUEST_TO_SPEAK_EMPTY_LIST_BODY: string; REQUEST_TO_SPEAK_EMPTY_LIST_TITLE: string; REQUEST_TO_SPEAK_INVITATION_SEND: string; REQUEST_TO_SPEAK_LIST_TITLE: FM<"numHands", false>; REQUEST_TO_SPEAK_MEMBER_INFO_MEMBER: string; REQUEST_TO_SPEAK_MEMBER_INFO_MEMBER_ROLES: string; REQUEST_TO_SPEAK_MEMBER_INFO_NEW_MEMBER: string; REQUEST_TO_SPEAK_MEMBER_INFO_NEW_TO_DISCORD: string; REQUEST_TO_SPEAK_MEMBER_INFO_NON_MEMBER: string; REQUIRED: string; REQUIRED_OPTIONS: string; REQUIRED_OPTIONS_MATCHING: FM<"prefix", true>; RESEND: string; RESEND_CODE: string; RESEND_EMAIL: string; RESEND_EMAIL_SHORT: string; RESEND_MESSAGE: string; RESEND_VERIFICATION_EMAIL: string; RESET: string; RESET_FRIEND_NICKNAME: string; RESET_NICKNAME: string; RESET_NOTIFICATION_OVERRIDE: string; RESET_NOTIFICATION_SETTINGS: string; RESET_PASSWORD_SUCCESS_TITLE: string; RESET_PASSWORD_TITLE: string; RESET_VOICE_SETTINGS: string; RESET_VOICE_SETTINGS_BODY: string; RESTORE_EVENT: string; RESUBSCRIBE: string; RESUME: string; RESUME_SETUP: string; RETRY: string; RETURN_TO_CHANNEL: FM<[never, "channelNameHook"], true>; RETURN_TO_LOGIN: string; REVEAL: string; REVERSE_TRIAL_ENDED_UPSELL_HEADER: string; REVERSE_TRIAL_ENDED_UPSELL_SUBHEADER: string; REVERSE_TRIAL_FOLLOW_UP_TRIAL_UPSELL_HEADER: string; REVERSE_TRIAL_FOLLOW_UP_TRIAL_UPSELL_SUBHEADER: string; REVERSE_TRIAL_NITRO_HOME_HEADER_BODY: FM<"duration", false>; REVERSE_TRIAL_NITRO_HOME_HEADER_BODY_NEW: FM<"weeks", false>; REVERSE_TRIAL_NITRO_HOME_HEADER_BUTTON_LABEL: string; REVERSE_TRIAL_NITRO_HOME_HEADER_FLOAT: string; REVERSE_TRIAL_NITRO_HOME_HEADER_TITLE: FM<"displayName", false>; REVERSE_TRIAL_PAYMENT_MODAL_INFO: FM<"trialEnd", true>; REVERSE_TRIAL_SUBSCRIBER_MANAGEMENT_SUBHEADER: FM<"weeks", true>; REVERSED: string; REVOKE: string; REVOKE_BAN: string; REWARD: string; REWARD_AVAILABLE: string; RING: string; RING_USERNAME_A11Y_LABEL: FM<"username", false>; RNA_CHANGELOG_UPSELL_BODY: string; RNA_CHANGELOG_UPSELL_CTA: string; RNA_CHANGELOG_UPSELL_TITLE: string; ro: string; ROLE: string; ROLE_ADD_MEMBERS_BUTTON: string; ROLE_ADD_MEMBERS_SEARCH: string; ROLE_ADD_MEMBERS_TITLE: string; ROLE_CHANGED_DONT_SAVE: string; ROLE_CHANGED_SAVE_CHANGES: string; ROLE_CHANGED_SAVE_CHANGES_BODY: string; ROLE_COLOR: string; ROLE_COLOR_HELP: string; ROLE_CREATE_CTA: string; ROLE_CREATED_TOAST: string; ROLE_CREATION_CREATE_STEP_COLOR_HINT: string; ROLE_CREATION_CREATE_STEP_NAME_HINT: string; ROLE_CREATION_CREATE_STEP_SUBTITLE: string; ROLE_CREATION_CREATE_STEP_TITLE: string; ROLE_CREATION_FAILED: string; ROLE_CREATION_FINISH: string; ROLE_CREATION_MEMBER_STEP_SUBTITLE: string; ROLE_CREATION_MEMBER_STEP_TITLE: string; ROLE_CREATION_PERMISSION_STEP_SUBTITLE: string; ROLE_CREATION_PERMISSION_STEP_TITLE: string; ROLE_CREATION_SKIP: string; ROLE_CREATION_STEP_TITLE: FM<"number" | "total", false>; ROLE_DELETE_CANNOT_BE_UNDONE: string; ROLE_EDIT_CONNECTIONS_CONTROLS_ADD_CONNECTION: string; ROLE_EDIT_CONNECTIONS_CONTROLS_AGE: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_AND_DESCRIPTION: string; ROLE_EDIT_CONNECTIONS_CONTROLS_CLEAR_ALL: string; ROLE_EDIT_CONNECTIONS_CONTROLS_DESCRIPTION_LEARN_MORE: FM<"helpdeskArticleUrl", true>; ROLE_EDIT_CONNECTIONS_CONTROLS_HEADER: string; ROLE_EDIT_CONNECTIONS_CONTROLS_HEADER_ACCOUNT_AGE: string; ROLE_EDIT_CONNECTIONS_CONTROLS_HEADER_ITEMS: FM<"gameName", false>; ROLE_EDIT_CONNECTIONS_CONTROLS_HEADER_VERIFIED: string; ROLE_EDIT_CONNECTIONS_CONTROLS_MEMBERS_WARNING: string; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_BE_MOD: string; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_BE_TOP_RATED_SELLER: string; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_BE_VERIFIED: string; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_ACCOUNT: FM<"platformName", false>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_DOTA2: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_FOLLOWERS: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_FOLLOWING: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_GAMES: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_KARMA: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_LIKES: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_POSITIVE_FEEDBACK_PERCENTAGE: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_POSTS: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_TF2: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_TWEETS: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_LEAST_UNIQUE_POSITIVE_FEEDBACK_COUNT: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_AT_MOST_UNIQUE_NEGATIVE_FEEDBACK_COUNT: FM<[never, "metadataHook"], true>; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_GOLD: string; ROLE_EDIT_CONNECTIONS_CONTROLS_MUST_HAVE_PAYPAL_VERIFIED_BANK_ACCOUNT: string; ROLE_EDIT_CONNECTIONS_CONTROLS_OR_DESCRIPTION: string; ROLE_EDIT_CONNECTIONS_CONTROLS_REQUIREMENTS: string; ROLE_EDIT_CONNECTIONS_CONTROLS_SELECT_CONNECTION_HEADER: string; ROLE_EDIT_CONNECTIONS_CONTROLS_WARNING: string; ROLE_EDIT_HOIST_LABEL: string; ROLE_EDIT_MEMBERS_MISSING: string; ROLE_EDIT_MEMBERS_NO_RESULTS: FM<"query", true>; ROLE_EDIT_MEMBERS_NO_SEARCH_RESULTS: FM<[never, "addMembersHook"], true>; ROLE_EDIT_PERMISSIONS_NO_RESULTS: FM<"query", true>; ROLE_EDIT_SAVED: string; ROLE_EDIT_TAB_DISPLAY: string; ROLE_EDIT_TAB_MANAGE_MEMBERS: string; ROLE_EDIT_TAB_MEMBERS: string; ROLE_EDIT_TAB_MEMBERS_WITH_LIST: FM<"numMembers", false>; ROLE_EDIT_TAB_PERMISSIONS: string; ROLE_EDIT_TAB_VERIFICATION: string; ROLE_EDIT_TITLE_WITH_NAME: FM<"roleName", false>; ROLE_EMPTY_STATE_CLUBS_ROLE_1: string; ROLE_EMPTY_STATE_CLUBS_ROLE_2: string; ROLE_EMPTY_STATE_CLUBS_ROLE_3: string; ROLE_EMPTY_STATE_CLUBS_ROLE_4: string; ROLE_EMPTY_STATE_CLUBS_ROLE_5: string; ROLE_EMPTY_STATE_CLUBS_ROLE_6: string; ROLE_EMPTY_STATE_GAMING_ROLE_1: string; ROLE_EMPTY_STATE_GAMING_ROLE_2: string; ROLE_EMPTY_STATE_GAMING_ROLE_3: string; ROLE_EMPTY_STATE_GAMING_ROLE_4: string; ROLE_EMPTY_STATE_GAMING_ROLE_5: string; ROLE_EMPTY_STATE_GAMING_ROLE_6: string; ROLE_EMPTY_STATE_HOBBIES_ROLE_1: string; ROLE_EMPTY_STATE_HOBBIES_ROLE_2: string; ROLE_EMPTY_STATE_HOBBIES_ROLE_3: string; ROLE_EMPTY_STATE_HOBBIES_ROLE_4: string; ROLE_EMPTY_STATE_HOBBIES_ROLE_5: string; ROLE_EMPTY_STATE_HOBBIES_ROLE_6: string; ROLE_EVERYONE_DESCRIPTION: string; ROLE_EVERYONE_LABEL: string; ROLE_EVERYONE_SUBLABEL: string; ROLE_ICON_ALT_TEXT: FM<"name", false>; ROLE_ICON_CHOOSE_IMAGE: string; ROLE_ICON_HELP: string; ROLE_ICON_POPOUT_CTA: string; ROLE_ICON_POPOUT_DESCRIPTION: FM<"name", false>; ROLE_ICON_POPOUT_DESCRIPTION_ROLE_SUBSCRIPTIONS: FM<"name", false>; ROLE_ICON_TAB_EMOJI: string; ROLE_ICON_TAB_UPLOAD_IMAGE: string; ROLE_ICON_TOAST_MESSAGE: FM<"roleName", true>; ROLE_ICON_UPLOAD_BROWSE_FILES: string; ROLE_ICON_UPLOAD_FILE_TOO_BIG: string; ROLE_ICON_UPLOAD_FILES_INFO: string; ROLE_ID_COPIED: FM<"role", false>; ROLE_IN_PROMPT_NOTICE_TEXT: string; ROLE_IN_PROMPT_POWERFUL_NOTICE_TEXT: string; ROLE_LIST_BODY: string; ROLE_LIST_BODY_WITH_HELP: FM<"articleURL", true>; ROLE_LIST_EMPTY: string; ROLE_LIST_HEADER: FM<"numRoles", false>; ROLE_MEMBER_COUNT: FM<"count", false>; ROLE_ORDER_UPDATED: string; ROLE_OVERVIEW_DESCRIPTION: string; ROLE_OVERVIEW_EMPTY_SUBHEADER: string; ROLE_OVERVIEW_HEADER: string; ROLE_OVERVIEW_VIEW_MEMBERS: string; ROLE_PERMISSION_HELP_BODY: FM; ROLE_PERMISSION_TEMPLATE_COSMETIC_CONTENT_1: string; ROLE_PERMISSION_TEMPLATE_COSMETIC_CONTENT_2: string; ROLE_PERMISSION_TEMPLATE_DESCRIPTION_COSMETIC: string; ROLE_PERMISSION_TEMPLATE_DESCRIPTION_MANAGER: string; ROLE_PERMISSION_TEMPLATE_DESCRIPTION_MEMBER: string; ROLE_PERMISSION_TEMPLATE_DESCRIPTION_MODERATOR: string; ROLE_PERMISSION_TEMPLATE_MANAGER_CONTENT_1: string; ROLE_PERMISSION_TEMPLATE_MANAGER_CONTENT_2: string; ROLE_PERMISSION_TEMPLATE_MANAGER_CONTENT_3: string; ROLE_PERMISSION_TEMPLATE_MANAGER_CONTENT_4: string; ROLE_PERMISSION_TEMPLATE_MANAGER_CONTENT_PREFACE: string; ROLE_PERMISSION_TEMPLATE_MEMBER_CONTENT_1: string; ROLE_PERMISSION_TEMPLATE_MEMBER_CONTENT_2: string; ROLE_PERMISSION_TEMPLATE_MEMBER_CONTENT_3: string; ROLE_PERMISSION_TEMPLATE_MODERATOR_CONTENT_1: string; ROLE_PERMISSION_TEMPLATE_MODERATOR_CONTENT_2: string; ROLE_PERMISSION_TEMPLATE_MODERATOR_CONTENT_3: string; ROLE_PERMISSION_TEMPLATE_MODERATOR_CONTENT_4: string; ROLE_PERMISSION_TEMPLATE_MODERATOR_CONTENT_PREFACE: string; ROLE_PERMISSION_TEMPLATE_NAME_COSMETIC: string; ROLE_PERMISSION_TEMPLATE_NAME_MANAGER: string; ROLE_PERMISSION_TEMPLATE_NAME_MEMBER: string; ROLE_PERMISSION_TEMPLATE_NAME_MODERATOR: string; ROLE_PERMISSION_TEMPLATE_SELECT_CONFIRMATION_TOAST: string; ROLE_PERMISSION_TEMPLATE_SELECT_CTA: string; ROLE_PERMISSION_TEMPLATE_SELECT_WARNING_BODY: string; ROLE_PERMISSION_TEMPLATE_SELECT_WARNING_TITLE: string; ROLE_PERMISSION_TEMPLATE_TITLE: string; ROLE_PERMISSIONS_ADD_REACTIONS_DESCRIPTION: string; ROLE_PERMISSIONS_ADD_REACTIONS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_ADD_REACTIONS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_ADD_REACTIONS_DESCRIPTION_TEXT_WITH_VOICE_CHANNEL_EFFECTS: string; ROLE_PERMISSIONS_ADMINISTRATOR_DESCRIPTION: FM; ROLE_PERMISSIONS_ATTACH_FILES_DESCRIPTION: string; ROLE_PERMISSIONS_ATTACH_FILES_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_ATTACH_FILES_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_BAN_MEMBERS_DESCRIPTION: string; ROLE_PERMISSIONS_CHANGE_NICKNAME_DESCRIPTION: string; ROLE_PERMISSIONS_CLEAR_PERMISSIONS: string; ROLE_PERMISSIONS_CONNECT_DESCRIPTION: string; ROLE_PERMISSIONS_CONNECT_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_CONNECT_DESCRIPTION_CATEGORY_EVERYONE: string; ROLE_PERMISSIONS_CONNECT_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_CONNECT_DESCRIPTION_STAGE_EVERYONE: string; ROLE_PERMISSIONS_CONNECT_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_CONNECT_DESCRIPTION_VOICE_EVERYONE: string; ROLE_PERMISSIONS_CREATE_EVENTS_DESCRIPTION: string; ROLE_PERMISSIONS_CREATE_EVENTS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_CREATE_EVENTS_DESCRIPTION_CHANNEL: string; ROLE_PERMISSIONS_CREATE_EXPRESSIONS_DESCRIPTION: string; ROLE_PERMISSIONS_CREATE_INSTANT_INVITE_DESCRIPTION: string; ROLE_PERMISSIONS_CREATE_INSTANT_INVITE_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_CREATE_INSTANT_INVITE_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_CREATE_INSTANT_INVITE_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_CREATE_PRIVATE_THREADS_DESCRIPTION: string; ROLE_PERMISSIONS_CREATE_PRIVATE_THREADS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_CREATE_PRIVATE_THREADS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_CREATE_PUBLIC_THREADS_DESCRIPTION: string; ROLE_PERMISSIONS_CREATE_PUBLIC_THREADS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_CREATE_PUBLIC_THREADS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_DEAFEN_MEMBERS_DESCRIPTION: string; ROLE_PERMISSIONS_DEAFEN_MEMBERS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_DEAFEN_MEMBERS_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_EMBED_LINKS_DESCRIPTION: string; ROLE_PERMISSIONS_EMBED_LINKS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_EMBED_LINKS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_EMPTY_TEXT: string; ROLE_PERMISSIONS_KICK_MEMBERS_AND_REVIEW_APPLICATION_DESCRIPTION: string; ROLE_PERMISSIONS_KICK_MEMBERS_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_CHANNEL_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MANAGE_CHANNEL_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_MANAGE_CHANNEL_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_MANAGE_CHANNEL_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_MANAGE_CHANNELS_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_EVENTS_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_EVENTS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MANAGE_EVENTS_DESCRIPTION_CHANNEL: string; ROLE_PERMISSIONS_MANAGE_EXPRESSIONS_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_MESSAGES_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_MESSAGES_DESCRIPTION_ANNOUNCEMENT: FM<"articleURL", true>; ROLE_PERMISSIONS_MANAGE_MESSAGES_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MANAGE_MESSAGES_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_MANAGE_NICKNAMES_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_ROLES_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_ROLES_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MANAGE_ROLES_DESCRIPTION_CHANNEL: string; ROLE_PERMISSIONS_MANAGE_ROLES_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_MANAGE_SERVER_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_THREADS_AND_FORUMS_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_THREADS_AND_FORUMS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MANAGE_THREADS_AND_FORUMS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_MANAGE_THREADS_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_THREADS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MANAGE_THREADS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_MANAGE_WEBHOOKS_DESCRIPTION: string; ROLE_PERMISSIONS_MANAGE_WEBHOOKS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MANAGE_WEBHOOKS_DESCRIPTION_CHANNEL: string; ROLE_PERMISSIONS_MENTION_EVERYONE_DESCRIPTION: string; ROLE_PERMISSIONS_MENTION_EVERYONE_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MENTION_EVERYONE_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_MENTION_EVERYONE_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_MODERATE_MEMBER_DESCRIPTION: string; ROLE_PERMISSIONS_MOVE_MEMBERS_DESCRIPTION: string; ROLE_PERMISSIONS_MOVE_MEMBERS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MOVE_MEMBERS_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_MOVE_MEMBERS_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_MUTE_MEMBERS_DESCRIPTION: string; ROLE_PERMISSIONS_MUTE_MEMBERS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_MUTE_MEMBERS_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_MUTE_MEMBERS_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_PRIORITY_SPEAKER_DESCRIPTION: string; ROLE_PERMISSIONS_PRIORITY_SPEAKER_DESCRIPTION_APP: FM<"keybind", true>; ROLE_PERMISSIONS_PRIORITY_SPEAKER_DESCRIPTION_CATEGORY: FM<"keybind", true>; ROLE_PERMISSIONS_PRIORITY_SPEAKER_DESCRIPTION_CATEGORY_MOBILE: FM<"keybind", true>; ROLE_PERMISSIONS_PRIORITY_SPEAKER_DESCRIPTION_MOBILE: FM<"keybind", true>; ROLE_PERMISSIONS_PRIORITY_SPEAKER_DESCRIPTION_VOICE: FM<"keybind", true>; ROLE_PERMISSIONS_PRIORITY_SPEAKER_DESCRIPTION_VOICE_MOBILE: FM<"keybind", true>; ROLE_PERMISSIONS_READ_MESSAGE_HISTORY_DESCRIPTION: string; ROLE_PERMISSIONS_READ_MESSAGE_HISTORY_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_READ_MESSAGE_HISTORY_DESCRIPTION_FORUM_CHANNEL: string; ROLE_PERMISSIONS_READ_MESSAGE_HISTORY_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_READ_MESSAGE_HISTORY_WITH_TIV_DESCRIPTION_TEXT_DISABLED: FM<[never, "warningHook"], true>; ROLE_PERMISSIONS_REQUEST_TO_SPEAK_DESCRIPTION: string; ROLE_PERMISSIONS_REQUEST_TO_SPEAK_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_REQUEST_TO_SPEAK_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_SEARCH_PLACEHOLDER: string; ROLE_PERMISSIONS_SECTION_ADVANCED: string; ROLE_PERMISSIONS_SECTION_APPS: string; ROLE_PERMISSIONS_SECTION_FORUMS: string; ROLE_PERMISSIONS_SECTION_FORUMS_DESCRIPTION: FM; ROLE_PERMISSIONS_SECTION_GENERAL_CATEGORY: string; ROLE_PERMISSIONS_SECTION_GENERAL_CHANNEL: string; ROLE_PERMISSIONS_SECTION_GENERAL_GUILD: string; ROLE_PERMISSIONS_SECTION_GUILD_EVENTS: string; ROLE_PERMISSIONS_SECTION_MEDIA_CHANNEL: string; ROLE_PERMISSIONS_SECTION_MEDIA_CHANNEL_DESCRIPTION: FM; ROLE_PERMISSIONS_SECTION_MEMBERSHIP: string; ROLE_PERMISSIONS_SECTION_STAGE: string; ROLE_PERMISSIONS_SECTION_TEXT: string; ROLE_PERMISSIONS_SECTION_VOICE: string; ROLE_PERMISSIONS_SECTION_VOICE_CHAT: string; ROLE_PERMISSIONS_SECTION_VOICE_CHAT_DESCRIPTION: FM; ROLE_PERMISSIONS_SEND_MESSAGES_DESCRIPTION: string; ROLE_PERMISSIONS_SEND_MESSAGES_DESCRIPTION_ANNOUNCEMENT: FM<"articleURL", true>; ROLE_PERMISSIONS_SEND_MESSAGES_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SEND_MESSAGES_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_SEND_MESSAGES_IN_THREADS_AND_FORUM_POSTS_DESCRIPTION: string; ROLE_PERMISSIONS_SEND_MESSAGES_IN_THREADS_AND_FORUM_POSTS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SEND_MESSAGES_IN_THREADS_AND_FORUM_POSTS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_SEND_MESSAGES_IN_THREADS_DESCRIPTION: string; ROLE_PERMISSIONS_SEND_MESSAGES_IN_THREADS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SEND_MESSAGES_IN_THREADS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_SEND_MESSAGES_WITH_FORUMS_DESCRIPTION: string; ROLE_PERMISSIONS_SEND_MESSAGES_WITH_FORUMS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SEND_MESSAGES_WITH_FORUMS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_SEND_MESSAGES_WITH_FORUMS_DESCRIPTION_TEXT_DISABLED: FM<[never, "warningHook"], true>; ROLE_PERMISSIONS_SEND_MESSAGES_WITH_TIV_DESCRIPTION_TEXT_DISABLED: FM<[never, "warningHook"], true>; ROLE_PERMISSIONS_SEND_POLLS: string; ROLE_PERMISSIONS_SEND_POLLS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SEND_POLLS_DESCRIPTION_GUILD: string; ROLE_PERMISSIONS_SEND_POLLS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_SEND_TTS_MESSAGES: string; ROLE_PERMISSIONS_SEND_TTS_MESSAGES_DESCRIPTION: string; ROLE_PERMISSIONS_SEND_TTS_MESSAGES_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SEND_TTS_MESSAGES_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_SEND_VOICE_MESSAGE: string; ROLE_PERMISSIONS_SEND_VOICE_MESSAGE_GUILD_DESCRIPTION: string; ROLE_PERMISSIONS_SEND_VOICE_MESSAGES_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SEND_VOICE_MESSAGES_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_SPEAK_DESCRIPTION: string; ROLE_PERMISSIONS_SPEAK_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_SPEAK_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_SPEAK_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_STREAM_DESCRIPTION: string; ROLE_PERMISSIONS_STREAM_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_STREAM_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_STREAM_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_USE_APPLICATION_COMMANDS: string; ROLE_PERMISSIONS_USE_APPLICATION_COMMANDS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_USE_APPLICATION_COMMANDS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_USE_APPLICATION_COMMANDS_GUILD_DESCRIPTION: string; ROLE_PERMISSIONS_USE_CLYDE_AI: string; ROLE_PERMISSIONS_USE_CLYDE_AI_CHANNEL_DESCRIPTION: string; ROLE_PERMISSIONS_USE_CLYDE_AI_GUILD_DESCRIPTION: string; ROLE_PERMISSIONS_USE_EMBEDDED_ACTIVITIES_DESCRIPTION: string; ROLE_PERMISSIONS_USE_EMBEDDED_ACTIVITIES_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_USE_EMBEDDED_ACTIVITIES_DESCRIPTION_CHANNEL: string; ROLE_PERMISSIONS_USE_EXTERNAL_APPS: string; ROLE_PERMISSIONS_USE_EXTERNAL_APPS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_USE_EXTERNAL_APPS_DESCRIPTION_CHANNEL: string; ROLE_PERMISSIONS_USE_EXTERNAL_APPS_GUILD_DESCRIPTION: string; ROLE_PERMISSIONS_USE_EXTERNAL_APPS_GUILD_DESCRIPTION_NOT_ENABLED_YET: string; ROLE_PERMISSIONS_USE_EXTERNAL_EMOJIS: string; ROLE_PERMISSIONS_USE_EXTERNAL_EMOJIS_DESCRIPTION: string; ROLE_PERMISSIONS_USE_EXTERNAL_EMOJIS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_USE_EXTERNAL_EMOJIS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_USE_EXTERNAL_SOUNDS_DESCRIPTION: string; ROLE_PERMISSIONS_USE_EXTERNAL_STICKERS: string; ROLE_PERMISSIONS_USE_EXTERNAL_STICKERS_DESCRIPTION: string; ROLE_PERMISSIONS_USE_EXTERNAL_STICKERS_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_USE_EXTERNAL_STICKERS_DESCRIPTION_TEXT: string; ROLE_PERMISSIONS_USE_SOUNDBOARD_DESCRIPTION: string; ROLE_PERMISSIONS_USE_SOUNDBOARD_DESCRIPTION_CATEGORY: FM<"helpCenterArticle", true>; ROLE_PERMISSIONS_USE_SOUNDBOARD_DESCRIPTION_LEARN_MORE: FM<"helpCenterArticle", true>; ROLE_PERMISSIONS_USE_SOUNDBOARD_DESCRIPTION_THREADS: FM<"helpCenterArticle", true>; ROLE_PERMISSIONS_USE_SOUNDBOARD_DESCRIPTION_VOICE: FM<"helpCenterArticle", true>; ROLE_PERMISSIONS_USE_VAD_DESCRIPTION: string; ROLE_PERMISSIONS_USE_VAD_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_USE_VAD_DESCRIPTION_STAGE: string; ROLE_PERMISSIONS_USE_VAD_DESCRIPTION_VOICE: string; ROLE_PERMISSIONS_VIEW_AUDIT_LOG_DESCRIPTION: string; ROLE_PERMISSIONS_VIEW_CHANNEL: string; ROLE_PERMISSIONS_VIEW_CHANNEL_DESCRIPTION: string; ROLE_PERMISSIONS_VIEW_CHANNEL_DESCRIPTION_CATEGORY: string; ROLE_PERMISSIONS_VIEW_CHANNEL_DESCRIPTION_CATEGORY_EVERYONE: string; ROLE_PERMISSIONS_VIEW_CHANNEL_DESCRIPTION_CHANNEL: string; ROLE_PERMISSIONS_VIEW_CHANNEL_DESCRIPTION_TEXT_EVERYONE: string; ROLE_PERMISSIONS_VIEW_CHANNEL_DESCRIPTION_VOICE_EVERYONE: string; ROLE_PERMISSIONS_VIEW_CREATOR_MONETIZATION_ANALYTICS_DESCRIPTION: string; ROLE_PERMISSIONS_VIEW_GUILD_ANALYTICS_DESCRIPTION: string; ROLE_PROMPT_ROLE_IS_POWERFUL: FM<"permissions", false>; ROLE_REMOVE_MEMBER_CONFIRM_BODY: FM<"roleName" | "username", true>; ROLE_REMOVE_MEMBER_CONFIRM_TIP: string; ROLE_REMOVE_MEMBER_CONFIRM_TITLE: string; ROLE_REMOVE_MEMBER_MANAGED: string; ROLE_REQUIRED_SINGLE_USER_MESSAGE: string; ROLE_ROW_DESCRIPTION: FM<"count" | "name", false>; ROLE_ROW_VIEW_MEMBERS: FM<"count", false>; ROLE_SAMPLE_MESSAGE: string; ROLE_SUBSCRIPTION_EMOJI_POPOUT_PURCHASE_UNAVAILABLE_DESCRIPTION: string; ROLE_SUBSCRIPTION_EMOJI_POPOUT_PURCHASE_UPSELL_BUTTON: string; ROLE_SUBSCRIPTION_EMOJI_POPOUT_PURCHASE_UPSELL_DESCRIPTION: string; ROLE_SUBSCRIPTION_EMOJI_POPOUT_SUBSCRIBED_DESCRIPTION: string; ROLE_SUBSCRIPTION_EMOJI_POPOUT_UPGRADE_UPSELL_BUTTON: string; ROLE_SUBSCRIPTION_EMOJI_POPOUT_UPGRADE_UPSELL_DESCRIPTION: string; ROLE_SUBSCRIPTION_JOIN_CTA_LABEL1: string; ROLE_SUBSCRIPTION_JOIN_CTA_LABEL2: string; ROLE_SUBSCRIPTION_RENEW_CTA_LABEL1: string; ROLE_SUBSCRIPTION_RENEW_CTA_LABEL2: string; ROLE_SUBSCRIPTION_WELCOME_CARD_ARIA_LABEL: FM<"username", false>; ROLE_SUBSCRIPTION_WELCOME_CARD_TEXT: FM<["username", "usernameHook"], true>; ROLE_SUBSCRIPTION_WELCOME_LABEL: string; ROLES: string; ROLES_LIST: FM<"numRoles", false>; ROLES_MATCHING: FM<"prefix", true>; RON_NAME: string; RTC_CONNECTION: string; RTC_CONNECTION_STATE_AUTHENTICATING: string; RTC_CONNECTION_STATE_AWAITING_ENDPOINT: FM<"url", true>; RTC_CONNECTION_STATE_CONNECTING: string; RTC_CONNECTION_STATE_DISCONNECTED: string; RTC_CONNECTION_STATE_ICE_CHECKING: FM<"url", true>; RTC_CONNECTION_STATE_NO_ROUTE: FM<"url", true>; RTC_CONNECTION_STATE_RTC_CONNECTED_AVERAGE_PING: FM<"averagePing", true>; RTC_CONNECTION_STATE_RTC_CONNECTED_DETAILS: FM<"badPing", false>; RTC_CONNECTION_STATE_RTC_CONNECTED_DETAILS_WITH_LOSS: FM<"badLossRate" | "badPing", false>; RTC_CONNECTION_STATE_RTC_CONNECTED_LAST_PING: FM<"lastPing", true>; RTC_CONNECTION_STATE_RTC_CONNECTED_LOSS_VALUE: FM<"outboundLossRate", true>; RTC_CONNECTION_STATE_RTC_CONNECTING: string; RTC_DEBUG_CAMERA: string; RTC_DEBUG_CLIPS: string; RTC_DEBUG_CONTEXT: FM<"context", false>; RTC_DEBUG_OPEN: string; RTC_DEBUG_POPOUT_WINDOW_TITLE: string; RTC_DEBUG_RTP_INBOUND: string; RTC_DEBUG_RTP_OUTBOUND: string; RTC_DEBUG_SCREENSHARE: string; RTC_DEBUG_TRANSPORT: string; ru: string; RULES_AND_RESTRICTIONS_APPLY: string; SAFETY_ALERT_BLOCK_AND_REPORT_BUTTON: string; SAFETY_ALERT_BLOCK_AND_REPORT_DESCRIPTION: string; SAFETY_ALERTS_SETTING_DESCRIPTION: FM<"learnMoreLink", true>; SAFETY_ALERTS_SETTING_TITLE: string; SAFETY_ALERTS_SETTINGS_HEADER: string; SAFETY_CONSUMER_EDUCATION_BLOCK_CONTENT: string; SAFETY_CONSUMER_EDUCATION_BLOCK_HEADER: string; SAFETY_CONSUMER_EDUCATION_MUTE_CONTENT: string; SAFETY_CONSUMER_EDUCATION_MUTE_HEADER: string; SAFETY_CONSUMER_EDUCATION_REPORTING_CONTENT: string; SAFETY_CONSUMER_EDUCATION_REPORTING_HEADER: string; SAFETY_HUB_ACCOUNT_STANDING_ALL_GOOD_DESCRIPTION: FM<"communityGuidelines" | "termsOfService", true>; SAFETY_HUB_ACCOUNT_STANDING_ALL_GOOD_DESCRIPTION_V2: FM<"communityGuidelines" | "termsOfService", true>; SAFETY_HUB_ACCOUNT_STANDING_ALL_GOOD_SHORT: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_ALL_GOOD_TITLE: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_ALL_GOOD_TITLE_V2: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_AT_RISK_DESCRIPTION: string; SAFETY_HUB_ACCOUNT_STANDING_AT_RISK_DESCRIPTION_V2: string; SAFETY_HUB_ACCOUNT_STANDING_AT_RISK_DESCRIPTION_V3: string; SAFETY_HUB_ACCOUNT_STANDING_AT_RISK_SHORT: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_AT_RISK_TITLE: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_AT_RISK_TITLE_V2: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_LIMITED_DESCRIPTION: string; SAFETY_HUB_ACCOUNT_STANDING_LIMITED_DESCRIPTION_V2: string; SAFETY_HUB_ACCOUNT_STANDING_LIMITED_SHORT: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_LIMITED_TITLE: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_LIMITED_TITLE_V2: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_SUSPENDED_DESCRIPTION: FM<"communityGuidelines" | "termsOfService", true>; SAFETY_HUB_ACCOUNT_STANDING_SUSPENDED_DESCRIPTION_V2: string; SAFETY_HUB_ACCOUNT_STANDING_SUSPENDED_SHORT: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_SUSPENDED_TITLE: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_SUSPENDED_TITLE_V2: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_VERY_LIMITED_DESCRIPTION: string; SAFETY_HUB_ACCOUNT_STANDING_VERY_LIMITED_DESCRIPTION_V2: string; SAFETY_HUB_ACCOUNT_STANDING_VERY_LIMITED_SHORT: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_VERY_LIMITED_TITLE: FM<[never, "hook"], true>; SAFETY_HUB_ACCOUNT_STANDING_VERY_LIMITED_TITLE_V2: FM<[never, "hook"], true>; SAFETY_HUB_CLASSIFICATION_DETAIL_ACTION_APPEAL: FM<"link", true>; SAFETY_HUB_CLASSIFICATION_DETAIL_ACTION_EXPLAINED_DESCRIPTION: FM<"communityGuidelinesLink" | "tosLink", true>; SAFETY_HUB_CLASSIFICATION_DETAIL_ACTION_EXPLAINED_HEADER: string; SAFETY_HUB_CLASSIFICATION_DETAIL_ACTIONS_TAKEN_HEADER: string; SAFETY_HUB_CLASSIFICATION_DETAIL_ACTIONS_TAKEN_HEADER_V2: string; SAFETY_HUB_CLASSIFICATION_DETAIL_EVIDENCE_HEADER: string; SAFETY_HUB_CLASSIFICATION_DETAIL_HEADER: FM<["classification_type", "classificationHook"], true>; SAFETY_HUB_CLASSIFICATION_DETAIL_HEADER_GUILD: FM<["classification_type" | "guildName", "classificationHook"], true>; SAFETY_HUB_CLASSIFICATION_DETAIL_HEADER_GUILD_PRESENCE: FM<["classification_type" | "guildName", "classificationHook"], true>; SAFETY_HUB_CLASSIFICATION_DETAIL_HEADER_V2: FM<["classification_type", "classificationHook"], true>; SAFETY_HUB_CLASSIFICATION_DETAIL_HEADER_V3: FM<["classification_type", "classificationHook"], true>; SAFETY_HUB_CLASSIFICATION_DETAIL_POLICY_CARD_HEADER: FM<"classificationDescription", false>; SAFETY_HUB_CLASSIFICATION_DETAIL_POLICY_CARD_HEADER_V2: FM<"classificationDescription", false>; SAFETY_HUB_CLASSIFICATION_DETAIL_POLICY_CARD_SUBTEXT: string; SAFETY_HUB_CLASSIFICATION_DETAIL_REDIRECT: string; SAFETY_HUB_CLASSIFICATION_DETAIL_REDIRECT_V2: string; SAFETY_HUB_CLASSIFICATION_DETAIL_REDIRECT_V3: string; SAFETY_HUB_CLASSIFICATION_DETAIL_WHAT_YOU_CAN_DO_DESCRIPTION: FM<"communityGuidelinesLink" | "tosLink", true>; SAFETY_HUB_CLASSIFICATION_DETAIL_WHAT_YOU_CAN_DO_HEADER: string; SAFETY_HUB_ERROR_ACTION_BUTTON: string; SAFETY_HUB_GUILD_REMOVED_DATE: FM<"removalDate", false>; SAFETY_HUB_PAGE_TITLE: string; SAFETY_HUB_STANDALONE_PAGE_NAGBAR: string; SAFETY_HUB_STANDALONE_PAGE_NAGBAR_CTA: string; SAFETY_HUB_VIOLATIONS_CONTAINER_DESCRIPTION: FM<["description", "descriptionHook"], true>; SAFETY_HUB_VIOLATIONS_CONTAINER_DESCRIPTION_GUILD: FM<["description" | "guildName", "descriptionHook"], true>; SAFETY_HUB_VIOLATIONS_CONTAINER_DESCRIPTION_V2: FM<["description", "descriptionHook"], true>; SAFETY_HUB_VIOLATIONS_CONTAINER_EMPTY_STATE_EXPIRED: string; SAFETY_HUB_VIOLATIONS_CONTAINER_EMPTY_STATE_SUBTEXT_ACTIVE: string; SAFETY_HUB_VIOLATIONS_CONTAINER_EMPTY_STATE_SUBTEXT_EXPIRED: string; SAFETY_HUB_VIOLATIONS_CONTAINER_EXPIRATION_DATE_ACTIVE: FM<"expirationDate", false>; SAFETY_HUB_VIOLATIONS_CONTAINER_EXPIRATION_DATE_EXPIRED: FM<"expirationDate", false>; SAFETY_HUB_VIOLATIONS_CONTAINER_HEADER_ACTIVE: FM<"count", false>; SAFETY_HUB_VIOLATIONS_CONTAINER_HEADER_ACTIVE_V2: FM<"count", false>; SAFETY_HUB_VIOLATIONS_CONTAINER_HEADER_EXPIRED: FM<"count", false>; SAFETY_HUB_VIOLATIONS_CONTAINER_HEADER_EXPIRED_V2: FM<"count", false>; SAFETY_HUB_VIOLATIONS_CONTAINER_NEW: string; SAFETY_HUB_VIOLATIONS_CONTAINER_PAGINATION_BUTTON: FM<"nextPageSize", false>; SAFETY_HUB_VIOLATIONS_CONTAINER_SUBHEADER_ACTIVE: string; SAFETY_HUB_VIOLATIONS_CONTAINER_SUBHEADER_ACTIVE_V2: string; SAFETY_HUB_VIOLATIONS_CONTAINER_SUBHEADER_EXPIRED: string; SAFETY_HUB_VIOLATIONS_CONTAINER_SUBHEADER_EXPIRED_V2: string; SAFETY_POLICY_NOTICE_BODY: string; SAFETY_POLICY_NOTICE_BUTTON: string; SAFETY_POLICY_NOTICE_DAYS_AGO: FM<"daysAgo", false>; SAFETY_POLICY_NOTICE_HEADER: string; SAFETY_REMOVE_RISKY_PERMS_ARIA_LABEL: string; SAFETY_REMOVE_RISKY_PERMS_ARIA_LABEL_COMPLETE: string; SAFETY_REMOVE_RISKY_PERMS_MODAL_SUBTITLE: string; SAFETY_REMOVE_RISKY_PERMS_MODAL_TITLE: string; SAFETY_REMOVE_RISKY_PERMS_WARNING: string; SAFETY_SETUP: string; SAFETY_SYSTEM_NOTIFICATION_LEARN_MORE_BUTTON: string; SAFETY_SYSTEM_NOTIFICATION_SEE_DETAILS_BUTTON: string; SAFETY_TOOLS_ACTION_SHEET_ABOUT_DESCRIPTION: FM<"learnMoreLink", true>; SAFETY_TOOLS_ACTION_SHEET_ABOUT_DISMISS: string; SAFETY_TOOLS_ACTION_SHEET_ABOUT_GO_TO_SETTINGS: string; SAFETY_TOOLS_ACTION_SHEET_ABOUT_TITLE: string; SAFETY_TOOLS_ACTION_SHEET_BLOCK_SUBTITLE: string; SAFETY_TOOLS_ACTION_SHEET_BLOCK_TITLE: string; SAFETY_TOOLS_ACTION_SHEET_BREAK_BUTTON: string; SAFETY_TOOLS_ACTION_SHEET_BREAK_SUBTITLE: string; SAFETY_TOOLS_ACTION_SHEET_BREAK_TITLE: string; SAFETY_TOOLS_ACTION_SHEET_CRISIS_BUTTON: string; SAFETY_TOOLS_ACTION_SHEET_CRISIS_TEXT_LINE_SUBTITLE: string; SAFETY_TOOLS_ACTION_SHEET_CRISIS_TEXT_LINE_TITLE: string; SAFETY_TOOLS_ACTION_SHEET_HEADER: string; SAFETY_TOOLS_ACTION_SHEET_NO_FILTR_BUTTON: string; SAFETY_TOOLS_ACTION_SHEET_NO_FILTR_SUBTITLE: string; SAFETY_TOOLS_ACTION_SHEET_NO_FILTR_TITLE: string; SAFETY_TOOLS_ACTION_SHEET_REPORT_SUBTITLE: string; SAFETY_TOOLS_ACTION_SHEET_REPORT_TITLE: string; SAFETY_TOOLS_ACTION_SHEET_SAFETY_TIPS_TITLE: string; SAFETY_TOOLS_ACTION_SHEET_THROUGHLINE_BUTTON: string; SAFETY_TOOLS_ACTION_SHEET_THROUGHLINE_SUBTITLE: string; SAFETY_TOOLS_ACTION_SHEET_THROUGHLINE_TITLE: string; SAFETY_TOOLS_BUTTON_LABEL: string; SAFETY_TOOLS_REPORT_FALSE_POSITIVE: FM<[never, "reportFalsePositiveHook"], true>; SAFETY_TOOLS_REPORT_FALSE_POSITIVE_SUCCESS: string; SAFETY_USER_SENTIMENT_FEEDBACK_CONFIRMATION: string; SAFETY_USER_SENTIMENT_FEEDBACK_PROMPT: string; SAFETY_USER_SENTIMENT_FEEDBACK_SUBHEADER: string; SAFETY_USER_SENTIMENT_FOOTER: FM<"safetyCenterUrl", true>; SAFETY_USER_SENTIMENT_NOTICE: string; SAFETY_USER_SENTIMENT_NOTICE_CTA: string; SAFETY_WARNING_BANNER_CLOSE_A11Y: string; SAHRE_NITRO_MODAL_CONFIRMATION_HEADER: string; SALMON: string; SAVE: string; SAVE_CAMERA_UPLOADS_TO_DEVICE_SETTING: string; SAVE_CAMERA_UPLOADS_TO_DEVICE_SETTING_HELP: string; SAVE_CHANGES: string; SAVE_EVENT: string; SAVE_FILE: string; SAVE_GUILD_FOLDERS_ERROR_DESCRIPTION: string; SAVE_GUILD_FOLDERS_ERROR_TITLE: string; SAVE_GUILD_FOLDERS_NAME_ERROR_DESCRIPTION: string; SAVE_IMAGE: string; SAVE_IMAGE_MENU_ITEM: string; SAVE_IMAGE_TO_DEVICE: string; SAVE_MEDIA_FAILURE_HELP_MOBILE: string; SAVE_MEDIA_FAILURE_MOBILE: string; SAVE_MEDIA_SUCCESS_MOBILE: string; SAVE_VIDEO: string; SAVED_SETTINGS: string; SCHEDULE_EVENT: string; SCHEDULE_EVENT_DESCRIPTION: string; SCOPE_ACTIVITIES_READ: string; SCOPE_ACTIVITIES_WRITE: string; SCOPE_APPLICATIONS_BUILDS_READ: string; SCOPE_APPLICATIONS_BUILDS_UPLOAD: string; SCOPE_APPLICATIONS_COMMANDS: string; SCOPE_APPLICATIONS_COMMANDS_PERMISSIONS_UPDATE: string; SCOPE_APPLICATIONS_COMMANDS_UPDATE: string; SCOPE_APPLICATIONS_ENTITLEMENTS: string; SCOPE_APPLICATIONS_STORE_UPDATE: string; SCOPE_BOT: string; SCOPE_CONNECTIONS: string; SCOPE_DM_CHANNELS_MESSAGES_READ: string; SCOPE_DM_CHANNELS_MESSAGES_WRITE: string; SCOPE_DM_CHANNELS_READ: string; SCOPE_DM_YOU: string; SCOPE_EMAIL: string; SCOPE_GATEWAY_CONNECT: string; SCOPE_GDM_JOIN: string; SCOPE_GUILDS: string; SCOPE_GUILDS_CHANNELS_READ: string; SCOPE_GUILDS_JOIN: string; SCOPE_GUILDS_MEMBERS_READ: string; SCOPE_GUILDS_MEMBERS_READ_VOICE: string; SCOPE_IDENTIFY: string; SCOPE_MESSAGES_READ: string; SCOPE_OPENID: string; SCOPE_PAYMENT_SOURCES_COUNTRY_CODE: string; SCOPE_PRESENCES_READ: string; SCOPE_PRESENCES_WRITE: string; SCOPE_RELATIONSHIPS_READ: string; SCOPE_RELATIONSHIPS_WRITE: string; SCOPE_ROLE_CONNECTIONS_WRITE: string; SCOPE_RPC: string; SCOPE_RPC_ACTIVITIES_WRITE: string; SCOPE_RPC_NOTIFICATIONS_READ: string; SCOPE_RPC_SCREENSHARE_READ: string; SCOPE_RPC_SCREENSHARE_WRITE: string; SCOPE_RPC_VIDEO_READ: string; SCOPE_RPC_VIDEO_WRITE: string; SCOPE_RPC_VOICE_READ: string; SCOPE_RPC_VOICE_WRITE: string; SCOPE_UNSUPPORTED_ON_ANDROID: string; SCOPE_UNSUPPORTED_ON_ANDROID_DESCRIPTION: string; SCOPE_VOICE: string; SCOPE_WEBHOOK_INCOMING: string; SCOPE_WEBHOOK_INCOMING_CHANNEL_PLACEHOLDER: string; SCOPE_WEBHOOK_INCOMING_DESCRIPTION: string; SCREEN_SHARE_NFX_BODY: string; SCREEN_SHARE_NFX_SKIP: string; SCREEN_SHARE_NFX_TITLE: string; SCREEN_SHARE_NFX_TRY: string; SCREENSHARE_APPS_INSTAGRAM: string; SCREENSHARE_APPS_PHOTOS: string; SCREENSHARE_APPS_YOUTUBE: string; SCREENSHARE_CHANGE_WINDOWS: string; SCREENSHARE_DESCRIPTION: FM<"name", true>; SCREENSHARE_FPS_ABBREVIATED: FM<"fps", false>; SCREENSHARE_FRAME_RATE: string; SCREENSHARE_INCLUDE_AUDIO: string; SCREENSHARE_QUALITY_TOOLTIP_NORMAL: string; SCREENSHARE_QUALITY_TOOLTIP_PREMIUM: string; SCREENSHARE_QUALITY_TOOLTIP_REDUCED: string; SCREENSHARE_RESOLUTION_ABBREVIATED: FM<"resolution", false>; SCREENSHARE_SCREEN: string; SCREENSHARE_SOURCE: string; SCREENSHARE_STREAM_GIFTING_BODY: string; SCREENSHARE_STREAM_GIFTING_CTA: string; SCREENSHARE_STREAM_GIFTING_DISMISS: string; SCREENSHARE_STREAM_GIFTING_HEADER: string; SCREENSHARE_STREAM_QUALITY: string; SCREENSHARE_UNAVAILABLE: string; SCREENSHARE_UNAVAILABLE_DOWNLOAD_APP: string; SEARCH: string; SEARCH_ACTIONS: string; SEARCH_ACTIVE_AGO_TIMESTAMP_DAYS: FM<"count", false>; SEARCH_ACTIVE_AGO_TIMESTAMP_HOURS: FM<"count", false>; SEARCH_ACTIVE_AGO_TIMESTAMP_MINUTES: FM<"count", false>; SEARCH_ACTIVE_AGO_TIMESTAMP_MONTHS: FM<"count", false>; SEARCH_ACTIVE_AGO_TIMESTAMP_YEARS: FM<"count", false>; SEARCH_ACTIVE_JUST_NOW: string; SEARCH_ACTIVE_YESTERDAY: string; SEARCH_ADD_FILTERS: string; SEARCH_ANSWER_BOOLEAN: string; SEARCH_ANSWER_DATE: string; SEARCH_ANSWER_FILE_NAME: string; SEARCH_ANSWER_FILE_TYPE: string; SEARCH_ANSWER_FROM: string; SEARCH_ANSWER_HAS: string; SEARCH_ANSWER_HAS_ATTACHMENT: string; SEARCH_ANSWER_HAS_EMBED: string; SEARCH_ANSWER_HAS_IMAGE: string; SEARCH_ANSWER_HAS_LINK: string; SEARCH_ANSWER_HAS_POLL: string; SEARCH_ANSWER_HAS_SNAPSHOT: string; SEARCH_ANSWER_HAS_SOUND: string; SEARCH_ANSWER_HAS_STICKER: string; SEARCH_ANSWER_HAS_VIDEO: string; SEARCH_ANSWER_IN: string; SEARCH_ANSWER_LINK_FROM: string; SEARCH_ANSWER_MENTIONS: string; SEARCH_AUTOCOMPLETE_NO_RESULTS: string; SEARCH_AUTOCOMPLETE_PROMPT: string; SEARCH_CHANNELS: string; SEARCH_CHANNELS_NO_RESULT: string; SEARCH_CLEAR: string; SEARCH_CLEAR_ALL: string; SEARCH_CLEAR_HISTORY: string; SEARCH_COUNTRY: string; SEARCH_DATE_PICKER_HINT: string; SEARCH_DM_STILL_INDEXING: string; SEARCH_DM_WITH: FM<"userName", false>; SEARCH_DMS_STILL_INDEXING: string; SEARCH_EMOJIS: string; SEARCH_ERROR: string; SEARCH_FILTER_AFTER: string; SEARCH_FILTER_BEFORE: string; SEARCH_FILTER_CONTEXT_MENU_AFTER_DATE: string; SEARCH_FILTER_CONTEXT_MENU_BEFORE_DATE: string; SEARCH_FILTER_CONTEXT_MENU_CHANNEL: string; SEARCH_FILTER_CONTEXT_MENU_FROM: string; SEARCH_FILTER_CONTEXT_MENU_HAS: string; SEARCH_FILTER_CONTEXT_MENU_MENTIONS: string; SEARCH_FILTER_CONTEXT_MENU_ON_DATE: string; SEARCH_FILTER_DURING: string; SEARCH_FILTER_FILE_NAME: string; SEARCH_FILTER_FILE_TYPE: string; SEARCH_FILTER_FROM: string; SEARCH_FILTER_HAS: string; SEARCH_FILTER_IN: string; SEARCH_FILTER_LINK_FROM: string; SEARCH_FILTER_MENTIONS: string; SEARCH_FILTER_MESSAGES_AFTER_DATE: string; SEARCH_FILTER_MESSAGES_BEFORE_DATE: string; SEARCH_FILTER_MESSAGES_FROM_CHANNEL: string; SEARCH_FILTER_MESSAGES_FROM_USER: string; SEARCH_FILTER_MESSAGES_HAS: string; SEARCH_FILTER_MESSAGES_MENTION_USER: string; SEARCH_FILTER_MESSAGES_ON_DATE: string; SEARCH_FILTER_ON: string; SEARCH_FILTER_PINNED: string; SEARCH_FILTER_RESULTS_ELLIPSIZED: string; SEARCH_FILTERS: string; SEARCH_FOR_EMOJI: string; SEARCH_FOR_REACTION: string; SEARCH_FOR_STICKER: string; SEARCH_FOR_SUPER_REACTION: string; SEARCH_FOR_VALUE: FM<"value", true>; SEARCH_FRIENDS_A11Y_LABEL: string; SEARCH_FROM_SUGGESTIONS: FM<"suggestion", false>; SEARCH_GIFS: string; SEARCH_GLOBAL_DMS: string; SEARCH_GROUP_HEADER_CHANNELS: string; SEARCH_GROUP_HEADER_DATES: string; SEARCH_GROUP_HEADER_FILE_TYPE: string; SEARCH_GROUP_HEADER_FROM: string; SEARCH_GROUP_HEADER_HAS: string; SEARCH_GROUP_HEADER_HISTORY: string; SEARCH_GROUP_HEADER_LINK_FROM: string; SEARCH_GROUP_HEADER_MENTIONS: string; SEARCH_GROUP_HEADER_PINNED: string; SEARCH_GROUP_HEADER_SEARCH_OPTIONS: string; SEARCH_GROUP_HINT_FROM_USER: string; SEARCH_GROUP_HINT_HAS_CONTENT: string; SEARCH_GROUP_HINT_IN_CHANNEL: string; SEARCH_GROUP_HINT_MENTIONS_USER: string; SEARCH_GROUP_HINT_PAST_SEARCH: string; SEARCH_GROUP_HINT_PINNED: string; SEARCH_GROUP_HINT_SEARCH_OPTION: string; SEARCH_GUILD_STILL_INDEXING: string; SEARCH_HIDE_BLOCKED_MESSAGES: FM<"count", false>; SEARCH_HISTORY_SECTION: string; SEARCH_IN: FM<"guildName", false>; SEARCH_LANGUAGES: string; SEARCH_MEDIA_IMAGE_DEFAULT_ALT: string; SEARCH_MEDIA_SECTION: string; SEARCH_MEMBERS: string; SEARCH_MEMBERS_NO_RESULT: string; SEARCH_MOST_RELEVANT_SHORT: string; SEARCH_NEWEST: string; SEARCH_NEWEST_SHORT: string; SEARCH_NO_RESULTS: string; SEARCH_NO_RESULTS_ALT: string; SEARCH_NUM_RESULTS_BLOCKED_NOT_SHOWN: FM<"count", false>; SEARCH_OLDEST_SHORT: string; SEARCH_PICK_DATE: string; SEARCH_REMOVE_FROM_HISTORY_A11Y_LABEL: string; SEARCH_RESULTS_SECTION_LABEL: string; SEARCH_ROLES: string; SEARCH_ROLES_NO_RESULT: string; SEARCH_SHORTCUT_MONTH: string; SEARCH_SHORTCUT_TODAY: string; SEARCH_SHORTCUT_WEEK: string; SEARCH_SHORTCUT_YEAR: string; SEARCH_SHORTCUT_YESTERDAY: string; SEARCH_STARTED_A11Y_ANNOUNCE: string; SEARCH_STILL_INDEXING_HINT: FM<"count", false>; SEARCH_TENOR: string; SEARCH_THREAD_NAMES: string; SEARCH_VIEW_ALL: string; SEARCH_WITH_GOOGLE: string; SEARCHING: string; SEASONAL_GIFTING_CUSTOMIZE_YOUR_GIFT_BOX: string; SEASONAL_GIFTING_INFO_TOOLTIP: string; SEASONAL_GIFTING_OPEN_GIFT: string; SEASONAL_GIFTING_OPTION_BOX: string; SEASONAL_GIFTING_OPTION_CUP: string; SEASONAL_GIFTING_OPTION_SNOWGLOBE: string; SEASONAL_GIFTING_POPUP_HEADER: string; SEASONAL_GIFTING_PREMIUM_HERO_BODY: string; SEASONAL_GIFTING_PREMIUM_HERO_BODY_INTRO: string; SEASONAL_GIFTING_PREMIUM_HERO_HEADER: string; SEASONAL_GIFTING_SPREAD_CHEER_TOOLTIP: string; SECURE_CONNECTION: string; SECURITY: string; SEE_DETAIL: string; SEE_THREAD: string; SEK_NAME: string; SELECT: string; SELECT_ACCESSIBILITY_DESC: FM<"placeholder", false>; SELECT_ACCESSIBILITY_DESC_OPEN_OPTIONS_LIST: string; SELECT_ACCESSIBILITY_DESC_OPTION: FM<"emojiName" | "optionDescription" | "optionName", false>; SELECT_ACCESSIBILITY_DESC_WITH_SELECTION: FM<"selections", false>; SELECT_ACTIVITY: string; SELECT_ALL: string; SELECT_BOT_OPTION_A11Y_LABEL: FM<"discriminator" | "username", false>; SELECT_CHANNEL_OR_CATEGORY: string; SELECT_EMOJI: string; SELECT_FROM_APPLICATION_A11Y_LABEL: string; SELECT_IMAGE_MODAL_CHOOSE_GIF: string; SELECT_IMAGE_MODAL_TITLE: string; SELECT_IMAGE_MODAL_UPLOAD_FILE: string; SELECT_IMAGE_MODAL_UPLOAD_IMAGE_OR_VIDEO: string; SELECT_IMAGE_TRY_ANIMATED_AVATAR: string; SELECT_PICTURE: string; SELECT_ROLE_OPTION_A11Y_LABEL: FM<"roleName", false>; SELECT_SERVERS: string; SELECT_SORT_MODE: string; SELECT_USER_OPTION_A11Y_LABEL: FM<"discriminator" | "username", false>; SELF_DENY_PERMISSION_BODY: FM<"name", true>; SELF_DENY_PERMISSION_TITLE: string; SELF_USERNAME_DISPLAY_HOOK: FM<[never, "usernameHook"], true>; SELF_USERNAME_INDICATOR: FM<"username", false>; SELF_USERNAME_INDICATOR_HOOK: FM<[never, "usernameHook"], true>; SELF_XSS_HEADER: string; SELF_XSS_LINE_1: string; SELF_XSS_LINE_2: string; SELF_XSS_LINE_3: string; SELF_XSS_LINE_4: FM<"url", false>; SEND: string; SEND_A_MESSAGE: string; SEND_COMPRESSED: string; SEND_DM: string; SEND_IMAGES_LABEL: string; SEND_MESSAGE: string; SEND_MESSAGE_FAILURE: string; SEND_MESSAGES: string; SEND_MESSAGES_AND_CREATE_FORUM_POSTS: string; SEND_MESSAGES_DESCRIPTION: FM<"articleURL", true>; SEND_MESSAGES_IN_FORUM_POSTS: string; SEND_MESSAGES_IN_THREADS: string; SEND_MESSAGES_IN_THREADS_AND_FORUM_POSTS: string; SEND_TTS_MESSAGES: string; SEND_TTS_MESSAGES_DESCRIPTION: string; SEND_VOICE_MESSAGE: string; SEND_WAVE: string; SENDER_BLOCKED_MEDIA_BOT_DMS_MESSAGE: string; SENDER_BLOCKED_MEDIA_BOT_GUILD_MESSAGE: string; SENDER_BLOCKED_MEDIA_EXPIRED_ERROR_BODY: string; SENDER_BLOCKED_MEDIA_EXPIRED_ERROR_HEADER: string; SENDER_BLOCKED_MEDIA_FALSE_POSITIVE_LINK: FM; SENDER_BLOCKED_MEDIA_MARK_FALSE_POSITIVE: string; SENDING_MESSAGE_TITLE: string; SENSITIVE_CONTENT: string; SENT: string; SERVER: string; SERVER_ACTIVITY_STATUS_RESTRICTION: string; SERVER_ACTIVITY_STATUS_RESTRICTION_NOTE: FM<"helpdeskArticle", true>; SERVER_BADGE_DESCRIPTION_ANYONE_CAN_JOIN: string; SERVER_BADGE_DESCRIPTION_APPLICATION_REQUIRED: string; SERVER_BADGE_DESCRIPTION_INVITE_ONLY: string; SERVER_BADGE_PREMIUM_FOOTER: FM<"count", false>; SERVER_BADGE_PREMIUM_FOOTER_BOOST_COUNT: FM<"count", false>; SERVER_BADGE_TITLE_CLAN: string; SERVER_BADGE_TITLE_COMMUNITY: string; SERVER_BADGE_TITLE_UNKNOWN: string; SERVER_DEAFEN: string; SERVER_DEAFENED: string; SERVER_DEAFENED_DIALOG_BODY: string; SERVER_DEAFENED_DIALOG_TITLE: string; SERVER_DESCIPTION_EMPTY: string; SERVER_DISCOVERY_AGREE_TO_RULES: string; SERVER_DISCOVERY_BLOCKED_WORD_LEARN_MORE: FM; SERVER_DISCOVERY_CATEGORY: string; SERVER_DISCOVERY_CATEGORY_INPUT_SUBLABEL: string; SERVER_DISCOVERY_DESCRIPTION: string; SERVER_DISCOVERY_DESCRIPTION_PAGE_HEADER: string; SERVER_DISCOVERY_DESCRIPTION_PAGE_SUBHEADING: string; SERVER_DISCOVERY_POPULAR_TAGS: string; SERVER_DISCOVERY_RULES_COMPLY_GUIDELINES: FM; SERVER_DISCOVERY_RULES_COMPLY_GUIDELINES_DESCRIPTION: string; SERVER_DISCOVERY_RULES_FORM_LABEL: string; SERVER_DISCOVERY_RULES_HEALTHY_ENV_DESCRIPTION: string; SERVER_DISCOVERY_RULES_HEALTHY_ENV_HEADING: string; SERVER_DISCOVERY_RULES_PAGE_SUBHEADING: string; SERVER_DISCOVERY_RULES_SEXUAL_CONTENT_DESCRIPTION: string; SERVER_DISCOVERY_RULES_SEXUAL_CONTENT_HEADING: string; SERVER_DISCOVERY_SEARCH_SUBHEADING: string; SERVER_DISCOVERY_SERVER_DESCRIPTION_INPUT_SUBLABEL: string; SERVER_DISCOVERY_SETUP_CONFIRMATION_PAGE_HEADER: string; SERVER_DISCOVERY_SETUP_CONFIRMATION_PAGE_SUBHEADING: FM; SERVER_DISCOVERY_SETUP_SIDEBAR_HEADLINE: string; SERVER_DISCOVERY_SUBCATEGORY_INPUT_LABEL: string; SERVER_DISCOVERY_SUBCATEGORY_INPUT_SUBLABEL: string; SERVER_DISCOVERY_SUGGESTED_TAG_3D: string; SERVER_DISCOVERY_SUGGESTED_TAG_AESTHETIC: string; SERVER_DISCOVERY_SUGGESTED_TAG_ANIMATION: string; SERVER_DISCOVERY_SUGGESTED_TAG_ANIME: string; SERVER_DISCOVERY_SUGGESTED_TAG_APPS: string; SERVER_DISCOVERY_SUGGESTED_TAG_ART: string; SERVER_DISCOVERY_SUGGESTED_TAG_BASKETBALL: string; SERVER_DISCOVERY_SUGGESTED_TAG_BEVERAGE: string; SERVER_DISCOVERY_SUGGESTED_TAG_BITCOIN: string; SERVER_DISCOVERY_SUGGESTED_TAG_BODYBUILDING: string; SERVER_DISCOVERY_SUGGESTED_TAG_BOTS: string; SERVER_DISCOVERY_SUGGESTED_TAG_BTS: string; SERVER_DISCOVERY_SUGGESTED_TAG_CALISTHENICS: string; SERVER_DISCOVERY_SUGGESTED_TAG_CLOTHING: string; SERVER_DISCOVERY_SUGGESTED_TAG_CODING: string; SERVER_DISCOVERY_SUGGESTED_TAG_COLLEGE: string; SERVER_DISCOVERY_SUGGESTED_TAG_COMMUNITY: string; SERVER_DISCOVERY_SUGGESTED_TAG_CROSSFIT: string; SERVER_DISCOVERY_SUGGESTED_TAG_CRYPTOCURRENCY: string; SERVER_DISCOVERY_SUGGESTED_TAG_CUTE: string; SERVER_DISCOVERY_SUGGESTED_TAG_DEFI: string; SERVER_DISCOVERY_SUGGESTED_TAG_DESIGN: string; SERVER_DISCOVERY_SUGGESTED_TAG_DISCORD_BOT: string; SERVER_DISCOVERY_SUGGESTED_TAG_DISNEY: string; SERVER_DISCOVERY_SUGGESTED_TAG_DISNEYWORLD: string; SERVER_DISCOVERY_SUGGESTED_TAG_DRAWING: string; SERVER_DISCOVERY_SUGGESTED_TAG_EDM: string; SERVER_DISCOVERY_SUGGESTED_TAG_EDUCATION: string; SERVER_DISCOVERY_SUGGESTED_TAG_EMOJI: string; SERVER_DISCOVERY_SUGGESTED_TAG_EMOTES: string; SERVER_DISCOVERY_SUGGESTED_TAG_ENGLISH: string; SERVER_DISCOVERY_SUGGESTED_TAG_ESPORTS: string; SERVER_DISCOVERY_SUGGESTED_TAG_ETHEREUM: string; SERVER_DISCOVERY_SUGGESTED_TAG_EVENTS: string; SERVER_DISCOVERY_SUGGESTED_TAG_EXERCISE: string; SERVER_DISCOVERY_SUGGESTED_TAG_FANTASY_FOOTBALL: string; SERVER_DISCOVERY_SUGGESTED_TAG_FASHION: string; SERVER_DISCOVERY_SUGGESTED_TAG_FIVEM: string; SERVER_DISCOVERY_SUGGESTED_TAG_FOOD: string; SERVER_DISCOVERY_SUGGESTED_TAG_FOOTBALL: string; SERVER_DISCOVERY_SUGGESTED_TAG_FOREX: string; SERVER_DISCOVERY_SUGGESTED_TAG_FORMULA1: string; SERVER_DISCOVERY_SUGGESTED_TAG_FORTNITE: string; SERVER_DISCOVERY_SUGGESTED_TAG_FRIENDS: string; SERVER_DISCOVERY_SUGGESTED_TAG_FUN: string; SERVER_DISCOVERY_SUGGESTED_TAG_GAMING: string; SERVER_DISCOVERY_SUGGESTED_TAG_GITHUB: string; SERVER_DISCOVERY_SUGGESTED_TAG_GIVEAWAYS: string; SERVER_DISCOVERY_SUGGESTED_TAG_GYM: string; SERVER_DISCOVERY_SUGGESTED_TAG_HARDWARE: string; SERVER_DISCOVERY_SUGGESTED_TAG_HIPHOP: string; SERVER_DISCOVERY_SUGGESTED_TAG_HOMEWORK: string; SERVER_DISCOVERY_SUGGESTED_TAG_HYPEBEAST: string; SERVER_DISCOVERY_SUGGESTED_TAG_INVESTING: string; SERVER_DISCOVERY_SUGGESTED_TAG_JAVASCRIPT: string; SERVER_DISCOVERY_SUGGESTED_TAG_KPOP: string; SERVER_DISCOVERY_SUGGESTED_TAG_LANGUAGE: string; SERVER_DISCOVERY_SUGGESTED_TAG_LEAGUEOFLEGENDS: string; SERVER_DISCOVERY_SUGGESTED_TAG_LEARNING: string; SERVER_DISCOVERY_SUGGESTED_TAG_LGBTQ: string; SERVER_DISCOVERY_SUGGESTED_TAG_LINUX: string; SERVER_DISCOVERY_SUGGESTED_TAG_MANGA: string; SERVER_DISCOVERY_SUGGESTED_TAG_MEMES: string; SERVER_DISCOVERY_SUGGESTED_TAG_MENTAL_HEALTH: string; SERVER_DISCOVERY_SUGGESTED_TAG_METAL: string; SERVER_DISCOVERY_SUGGESTED_TAG_MINECRAFT: string; SERVER_DISCOVERY_SUGGESTED_TAG_MUSIC_PRODUCTION: string; SERVER_DISCOVERY_SUGGESTED_TAG_NBA: string; SERVER_DISCOVERY_SUGGESTED_TAG_NFL: string; SERVER_DISCOVERY_SUGGESTED_TAG_NFT: string; SERVER_DISCOVERY_SUGGESTED_TAG_NITRO: string; SERVER_DISCOVERY_SUGGESTED_TAG_NUTRITION: string; SERVER_DISCOVERY_SUGGESTED_TAG_OPENSOURCE: string; SERVER_DISCOVERY_SUGGESTED_TAG_OPTIONS: string; SERVER_DISCOVERY_SUGGESTED_TAG_PHOTOGRAPHY: string; SERVER_DISCOVERY_SUGGESTED_TAG_PREMIER_LEAGUE: string; SERVER_DISCOVERY_SUGGESTED_TAG_PROGRAMMING: string; SERVER_DISCOVERY_SUGGESTED_TAG_RACING: string; SERVER_DISCOVERY_SUGGESTED_TAG_RAP: string; SERVER_DISCOVERY_SUGGESTED_TAG_REDDIT: string; SERVER_DISCOVERY_SUGGESTED_TAG_ROBLOX: string; SERVER_DISCOVERY_SUGGESTED_TAG_ROLEPLAY: string; SERVER_DISCOVERY_SUGGESTED_TAG_SCHOOL: string; SERVER_DISCOVERY_SUGGESTED_TAG_SELF_IMPROVEMENT: string; SERVER_DISCOVERY_SUGGESTED_TAG_SINGING: string; SERVER_DISCOVERY_SUGGESTED_TAG_SNACKS: string; SERVER_DISCOVERY_SUGGESTED_TAG_SNEAKERS: string; SERVER_DISCOVERY_SUGGESTED_TAG_SOCCER: string; SERVER_DISCOVERY_SUGGESTED_TAG_SOCIAL: string; SERVER_DISCOVERY_SUGGESTED_TAG_SOFTWARE: string; SERVER_DISCOVERY_SUGGESTED_TAG_SPORTS: string; SERVER_DISCOVERY_SUGGESTED_TAG_STOCKS: string; SERVER_DISCOVERY_SUGGESTED_TAG_STREAMER: string; SERVER_DISCOVERY_SUGGESTED_TAG_STREETWEAR: string; SERVER_DISCOVERY_SUGGESTED_TAG_STUDY: string; SERVER_DISCOVERY_SUGGESTED_TAG_STYLE: string; SERVER_DISCOVERY_SUGGESTED_TAG_SUPPORT: string; SERVER_DISCOVERY_SUGGESTED_TAG_SUPREME: string; SERVER_DISCOVERY_SUGGESTED_TAG_TECH: string; SERVER_DISCOVERY_SUGGESTED_TAG_TRADING: string; SERVER_DISCOVERY_SUGGESTED_TAG_TRAVEL: string; SERVER_DISCOVERY_SUGGESTED_TAG_TWITCH: string; SERVER_DISCOVERY_SUGGESTED_TAG_VALORANT: string; SERVER_DISCOVERY_SUGGESTED_TAG_YEEZY: string; SERVER_DISCOVERY_SUGGESTED_TAG_YOUTUBE: string; SERVER_DISCOVERY_TAGS: string; SERVER_DISCOVERY_TAGS_ERROR_MSG_DASHES_ONLY: string; SERVER_DISCOVERY_TAGS_INPUT_PLACEHOLDER: string; SERVER_DISCOVERY_TAGS_INPUT_SUBLABEL: string; SERVER_DISCOVERY_TOOLTIP_DESCRIPTION: FM<"count", false>; SERVER_DISCOVERY_TOOLTIP_TITLE: string; SERVER_EMOJI: string; SERVER_FOLDER_COLLAPSE_ALL: string; SERVER_FOLDER_MARK_AS_READ: string; SERVER_FOLDER_MUTE_ALL: string; SERVER_FOLDER_PLACEHOLDER: string; SERVER_FOLDER_SETTINGS: string; SERVER_FOLDER_UNMUTE_ALL: string; SERVER_GUIDE: string; SERVER_HIGHLIGHT_MANAGE_SETTINGS: string; SERVER_HIGHLIGHT_UNSUBSCRIBE_BODY: FM<"guildName", true>; SERVER_HIGHLIGHT_UNSUBSCRIBE_HEADER: string; SERVER_INSIGHTS: string; SERVER_IS_CURRENTLY_FULL: string; SERVER_MUTE: string; SERVER_MUTED: string; SERVER_MUTED_DIALOG_BODY: string; SERVER_MUTED_DIALOG_TITLE: string; SERVER_NAME_REQUIRED: string; SERVER_NICKNAME: string; SERVER_OPTIONS: string; SERVER_OVERVIEW: string; SERVER_SETTINGS: string; SERVER_SETTINGS_UPDATED: string; SERVER_SHOP_PREVIEW_DISCLAIMER: FM<"maxProducts" | "maxTiers", false>; SERVER_SPECIFIC_PRIVACY_SETTINGS: string; SERVER_STATUS: string; SERVER_SUBSCRIPTION_OWNERSHIP_TRANSFER_FAILURE_MODAL_BODY: FM<"server_subscription_owner_transfer_article", true>; SERVER_UNDEAFEN: string; SERVER_UNMUTE: string; SERVER_VOICE_MUTE: string; SERVER_VOICE_UNMUTE: string; SERVERS: string; SERVICE_CONNECTIONS_DISCONNECT: string; SET_DEBUG_LOGGING: string; SET_DEBUG_LOGGING_BODY: string; SET_INVITE_LINK_NEVER_EXPIRE: string; SET_STATUS: string; SET_STATUS_MODAL_CTA: string; SET_STATUS_MODAL_SUBTITLE: string; SET_STATUS_MODAL_TITLE: string; SET_VANITY_URL_ERROR_MESSAGE_INVALID_ACCESS: string; SET_VANITY_URL_ERROR_MESSAGE_INVALID_PERMISSIONS: string; SET_VANITY_URL_ERROR_MESSAGE_REQUIRED_FOR_PUBLISHED_GUILDS: string; SET_VANITY_URL_ERROR_MESSAGE_REQUIREMENTS_NOT_MET: string; SET_VANITY_URL_ERROR_MESSAGE_UNKNOWN_CHANNEL: string; SET_VOICE_CHANEL_TOPIC_UPDATE_CHANNEL_CTA: string; SET_VOICE_CHANNEL_TOPIC: string; SET_VOICE_CHANNEL_TOPIC_PLACEHOLDER: string; SET_VOICE_CHANNEL_TOPIC_SHORT_CTA: string; SETTINGS: string; SETTINGS_ADVANCED: string; SETTINGS_CONTACT_SYNC_DISCOVERY: string; SETTINGS_CUSTOM_APP_ICONS: string; SETTINGS_CUSTOM_APP_ICONS_OFFICIAL: string; SETTINGS_DATA_PRIVACY_CONTROLS: string; SETTINGS_DM_SPAM_FILTER_SEARCH_TERM_INBOX: string; SETTINGS_DM_SPAM_FILTER_SEARCH_TERM_MESSAGES: string; SETTINGS_GAMES_ADD_GAME: string; SETTINGS_GAMES_ADD_NEW_GAME: string; SETTINGS_GAMES_ADDED_GAMES_LABEL: string; SETTINGS_GAMES_ENABLE_OVERLAY_LABEL: string; SETTINGS_GAMES_HIDDEN_LIBRARY_APPLICATIONS_LABEL: string; SETTINGS_GAMES_IGDB_ATTRIBUTION: FM<"igdbLink", true>; SETTINGS_GAMES_LAST_PLAYED: FM<"when", true>; SETTINGS_GAMES_NO_GAME_DETECTED: string; SETTINGS_GAMES_NO_GAMES_HEADER: string; SETTINGS_GAMES_NOT_PLAYING: string; SETTINGS_GAMES_NOT_SEEING_GAME: string; SETTINGS_GAMES_NOW_PLAYING_STATE: string; SETTINGS_GAMES_OVERLAY: string; SETTINGS_GAMES_OVERLAY_OFF: string; SETTINGS_GAMES_OVERLAY_ON: string; SETTINGS_GAMES_OVERLAY_WARNING: string; SETTINGS_GAMES_REPORT_INCORRECT_DETECTION: string; SETTINGS_GAMES_REPORT_INCORRECT_DETECTION_CONFIRMATION: FM<"gameName", false>; SETTINGS_GAMES_TOGGLE_DETECTION: string; SETTINGS_GAMES_TOGGLE_OVERLAY: string; SETTINGS_GAMES_VERIFIED_ICON: string; SETTINGS_GENERAL: string; SETTINGS_INVITE_TIP: FM; SETTINGS_INVITE_TIP_WITHOUT_CREATE: string; SETTINGS_NOTICE_MESSAGE: string; SETTINGS_PERMISSIONS_DELETE_BODY: FM<"name", true>; SETTINGS_PERMISSIONS_DELETE_TITLE: string; SETTINGS_ROLES_DELETE_BODY: FM<"name", true>; SETTINGS_ROLES_DELETE_TITLE: string; SETTINGS_SYNC: string; SETTINGS_TITLE_NEW_LAYOUT: string; SETTINGS_TWO_FA: string; SETTINGS_WEBHOOKS_EMPTY_BODY_IOS: string; SETTINGS_WEBHOOKS_EMPTY_TITLE: string; SETTINGS_WEBHOOKS_INTRO: FM<"articleURL", true>; SETUP_PROGRESS: string; SEVERAL_USERS_TYPING: string; SHAER_NITRO_CONFIRMATION_BUTTON_TEXT: string; SHARE: string; SHARE_DEBUG_LOGS: string; SHARE_INVITE: string; SHARE_INVITE_LINK_FOR_ACCESS: string; SHARE_INVITE_MOBILE: FM<"inviteUrl", false>; SHARE_LINK: string; SHARE_MESSAGE_PLACEHOLDER: string; SHARE_NITRO_BIRTHDAY_TOOLTIP: FM; SHARE_NITRO_BIRTHDAY_TOOLTIP_UNFORMATTED: string; SHARE_NITRO_BUTTON_TEXT: string; SHARE_NITRO_DISMISS_MODAL_BODY: string; SHARE_NITRO_DISMISS_MODAL_HEADER: string; SHARE_NITRO_EMBEDDED_MESSAGE_BODY: FM<"username", true>; SHARE_NITRO_EMBEDDED_MESSAGE_BODY_SHORT: FM<"username", false>; SHARE_NITRO_EMBEDDED_MESSAGE_DISABLED_BODY: string; SHARE_NITRO_EMBEDDED_MESSAGE_DISABLED_HEADER: FM<"username", false>; SHARE_NITRO_EMBEDDED_MESSAGE_EXPIRED_BODY: string; SHARE_NITRO_EMBEDDED_MESSAGE_EXPIRED_HEADER: string; SHARE_NITRO_EMBEDDED_MESSAGE_HEADER: FM<"username", false>; SHARE_NITRO_MODAL_BODY_GENERAL: FM<"count", true>; SHARE_NITRO_MODAL_BODY_SHARE_THEM_BY: FM<"date", false>; SHARE_NITRO_MODAL_CONFIRMATION_GENERAL: FM<"count", false>; SHARE_NITRO_MODAL_CONFIRMATION_GENERAL_LAST_REFERRAL: string; SHARE_NITRO_MODAL_HEADER: string; SHARE_NITRO_RESEND_BUTTON_TEXT: string; SHARE_NITRO_RESEND_TOOLTIP: string; SHARE_NITRO_RESEND_TRIAL_BODY: string; SHARE_NITRO_RESEND_TRIAL_BODY_2: string; SHARE_NITRO_RESEND_TRIAL_HEADER: string; SHARE_NITRO_TOOLTIP: string; SHARE_NITRO_TOOLTIP_DISABLED: string; SHARE_NITRO_VIEW_ON_DESKTOP: string; SHARE_PUSH_NOTIFICATION_LOGS: string; SHARE_SETTINGS_TITLE: string; SHARE_TITLE: string; SHARE_TO: string; SHARE_YOUR_SCREEN: string; SHARING_SCREEN: string; SHEET_GRABBER_A11Y_HINT: string; SHEET_GRABBER_A11Y_LABEL: string; SHORTCUT_RECORDER_BUTTON: string; SHORTCUT_RECORDER_BUTTON_EDIT: string; SHORTCUT_RECORDER_BUTTON_RECORDING: string; SHORTCUT_RECORDER_NO_BIND: string; SHOW_ALL_WITH_COUNT: FM<"count", false>; SHOW_CHAT: string; SHOW_CURRENT_ACTIVITY: string; SHOW_CURRENT_ACTIVITY_DESC: string; SHOW_CURRENT_ACTIVITY_DESC_EMBEDDED: string; SHOW_FOLDER: string; SHOW_KEYBOARD: string; SHOW_NEW_MESSAGE_PREVIEWS: string; SHOW_SELF_STREAM: string; SHOW_SELF_VIDEO: string; SHOW_SPOILER_ALWAYS: string; SHOW_SPOILER_CONTENT: string; SHOW_SPOILER_CONTENT_HELP: string; SHOW_SPOILER_ON_CLICK: string; SHOW_SPOILER_ON_SERVERS_I_MOD: string; SHOW_USER_PROFILE: string; SHOW_USER_PROFILE_UNAVAILABLE: string; SIDECHAIN_COMPRESSION: string; SIDECHAIN_COMPRESSION_STRENGTH: string; SIGN_IN_WITH_PASSKEY: string; SIGN_UP_CAPPED: string; SINGLE_UNUSED_GUILD_BOOST_NITRO_REWARD_SUBTITLE_1_MONTH_VARIANT: string; SINGLE_UNUSED_GUILD_BOOST_NITRO_REWARD_SUBTITLE_3_MONTHS_VARIANT: string; SINGLE_UNUSED_GUILD_BOOST_NITRO_REWARD_TITLE: string; SKIP: string; SKIP_ALL_TIPS: string; SKIP_FOR_NOW: string; SKIP_TO_CONTENT: string; SKU_PAYMENT_STEPS_LABEL: string; SKU_REPORT_CONFIRMATION_HEADER: string; SKY_BLUE: string; SMS_CONFIRMATION_DESCRIPTION: FM<"phone", false>; SMS_CONFIRMATION_INPUT_ACCESSIBILITY_LABEL: string; SMS_CONFIRMATION_TITLE: string; SOCIAL: string; SOCIAL_LAYER_APPLICATION_UNLINK_WARNING: string; SOFORT_MANDATE_AGREEMENT: string; SORT: string; SORTING: string; SOUND_ACTIVITY_END: string; SOUND_ACTIVITY_START: string; SOUND_ACTIVITY_USER_JOIN: string; SOUND_ACTIVITY_USER_LEAVE: string; SOUND_BOARD_MARKETING_USE_CUSTOM_SOUNDS: string; SOUND_DEAFEN: string; SOUND_DISABLE_ALL: string; SOUND_DISABLE_ALL_NOTE: string; SOUND_INCOMING_RING: string; SOUND_INCOMING_RING_HALLOWEEN: string; SOUND_INVITED_TO_SPEAK: string; SOUND_MESSAGE: string; SOUND_MUTE: string; SOUND_OUTGOING_RING: string; SOUND_PTT_ACTIVATE: string; SOUND_PTT_DEACTIVATE: string; SOUND_STREAM_STARTED: string; SOUND_STREAM_STOPPED: string; SOUND_UNDEAFEN: string; SOUND_UNMUTE: string; SOUND_USER_JOIN: string; SOUND_USER_LEAVE: string; SOUND_USER_MOVED: string; SOUND_VIEWER_JOIN: string; SOUND_VIEWER_LEAVE: string; SOUND_VOICE_DISCONNECTED: string; SOUNDBOARD: string; SOUNDBOARD_CONTEXT_MENU_DOWNLOAD_SOUND: string; SOUNDBOARD_CONTEXT_MENU_EDIT_SOUND: string; SOUNDBOARD_DOWNLOAD_SOUND_FAILED_BODY: string; SOUNDBOARD_DOWNLOAD_SOUND_FAILED_TITLE: string; SOUNDBOARD_ERROR_FAILED_TO_ENCODE_FILE: string; SOUNDBOARD_ERROR_INVALID_FILE_TYPE: FM<"fileType", false>; SOUNDBOARD_KEYBIND_HINT: FM<["keybind", "openSettingsHook"], true>; SOUNDBOARD_KEYBIND_HINT_GLOBAL: FM<["keybind", "openSettingsHook"], true>; SOUNDBOARD_KEYBIND_HINT_NO_POPOUT_WHEEL_SUPPORT: FM<["keybind", "openSettingsHook"], true>; SOUNDBOARD_KEYBIND_MODAL_HEADER: string; SOUNDBOARD_KEYBIND_MODAL_KEYBINDS_DISABLED_MESSAGE: string; SOUNDBOARD_KEYBIND_MODAL_RESET_KEYBIND: string; SOUNDBOARD_MARKETING_BOOSTING_PERKS: FM<"soundCount" | "totalSoundCount", false>; SOUNDBOARD_MARKETING_CUSTOM_ENTRY_SOUNDS: string; SOUNDBOARD_MARKETING_CUSTOM_ENTRY_SOUNDS_V2: string; SOUNDBOARD_MARKETING_CUSTOM_SOUNDS_ANYWHERE: string; SOUNDBOARD_MARKETING_REACT_WITH_SOUNDBOARD: string; SOUNDBOARD_MARKETING_TRY_ON_MOBILE: string; SOUNDBOARD_MODAL_AUDIO_STATE_ENCODING: string; SOUNDBOARD_MODAL_AUDIO_STATE_ENCODING_FAILED: string; SOUNDBOARD_MODAL_AUDIO_STATE_UPLOADING: string; SOUNDBOARD_NEW_FEATURE_TOOLTIP_BODY: FM; SOUNDBOARD_NEW_FEATURE_TOOLTIP_GOT_IT: string; SOUNDBOARD_NEW_FEATURE_TOOLTIP_HEADER: string; SOUNDBOARD_NEW_FEATURE_TOOLTIP_TRY_IT_OUT: string; SOUNDBOARD_NITRO_UPSELL_BODY: FM; SOUNDBOARD_NITRO_UPSELL_TITLE: string; SOUNDBOARD_OPEN_SOUNBOARRD_ERROR_DEAFENED: string; SOUNDBOARD_OPEN_SOUNDBOARD: string; SOUNDBOARD_OPEN_SOUNDBOARD_ERROR_GUILD_MUTE: string; SOUNDBOARD_OPEN_SOUNDBOARD_ERROR_SUPPRESSED: string; SOUNDBOARD_PLAY_SOUND: FM<"emojiName" | "soundName", false>; SOUNDBOARD_POPOUT_WINDOW_TITLE: string; SOUNDBOARD_PREMIUM_UPGRADE_UPSELL_TOAST: string; SOUNDBOARD_PREMIUM_UPSELL_TOAST: string; SOUNDBOARD_SEARCH_EMPTY_STATE_BODY: string; SOUNDBOARD_SOUND_ADD_DISABLED: FM<"maxSounds", false>; SOUNDBOARD_SOUND_ADD_SOUND: string; SOUNDBOARD_SOUND_DISABLED_PREMIUM_TIER_LOST: string; SOUNDBOARD_SOUND_FAVORITE_SOUND: FM<"emojiName" | "soundName", false>; SOUNDBOARD_SOUND_PREVIEW_SOUND: FM<"emojiName" | "soundName", false>; SOUNDBOARD_SOUND_PREVIEW_SOUND_LOW_VOLUME: string; SOUNDBOARD_SOUND_SECTION_DEFAULTS: string; SOUNDBOARD_SOUND_UNFAVORITE_SOUND: FM<"emojiName" | "soundName", false>; SOUNDBOARD_SOUND_UPDATE_MODAL_HEADER: string; SOUNDBOARD_SOUND_UPLOAD_BUTTON_DISABLED: string; SOUNDBOARD_SOUND_UPLOAD_DURATION_EXCEEDED_ERROR: FM<"limit", false>; SOUNDBOARD_SOUND_UPLOAD_GUILD_SELECT: string; SOUNDBOARD_SOUND_UPLOAD_GUILD_SELECT_AVAILABLE_COUNT: FM<"slots", false>; SOUNDBOARD_SOUND_UPLOAD_GUILD_SELECT_NONE_AVAILABLE: string; SOUNDBOARD_SOUND_UPLOAD_GUILD_SELECT_PLACEHOLDER: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_BROWSE: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_CANCEL: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_EMOJI: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_FILE: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_HEADER: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_INPUT_PLACEHOLDER: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_NO_SOUND: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_PREVIEW: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_SAVE: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_SOUND_NAME: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_SOUND_VOLUME: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_UNKNOWN_ERROR: string; SOUNDBOARD_SOUND_UPLOAD_MODAL_UPLOAD: string; SOUNDBOARD_SOUND_WHEEL_EDUCATION_MODAL_BODY: FM<["keybind", "keybindHook" | "openSettingsHook"], true>; SOUNDBOARD_SOUND_WHEEL_EDUCATION_MODAL_CONFIRM: string; SOUNDBOARD_SOUND_WHEEL_EDUCATION_MODAL_EDIT_KEYBIND: string; SOUNDBOARD_SOUND_WHEEL_EDUCATION_MODAL_HEADER: string; SOUNDBOARD_TOOLTIP_BODY: string; SOUNDBOARD_TOOLTIP_TITLE: string; SOUNDBOARD_TOOLTIP_TITLE_NEW: string; SOUNDBOARD_UPLOAD_SOUND_FOR_GUILD: FM<"guildName", false>; SOUNDBOARD_VOLUME_TOOLTIP_BODY: string; SOUNDBOARD_VOLUME_TOOLTIP_HEADER: string; SOUNDPACK_ASMR_DESCRIPTION: string; SOUNDPACK_ASMR_LABEL: string; SOUNDPACK_BUBBLE_DESCRIPTION: string; SOUNDPACK_BUBBLE_LABEL: string; SOUNDPACK_DEFAULT_DESCRIPTION: string; SOUNDPACK_DEFAULT_LABEL: string; SOUNDPACK_DUCKY_DESCRIPTION: string; SOUNDPACK_DUCKY_LABEL: string; SOUNDPACK_LOFI_DESCRIPTION: string; SOUNDPACK_LOFI_LABEL: string; SOUNDPACK_RETRO_DESCRIPTION: string; SOUNDPACK_RETRO_LABEL: string; SOUNDS: string; SOURCE_MESSAGE_DELETED: string; SPAMMER_BLOCKED: FM<"username", false>; SPEAK: string; SPEAK_MESSAGE: string; SPEAKER_A11Y_LABEL: FM<"name", false>; SPEAKER_LABEL: string; SPEAKING_COUNT: FM<"count", false>; SPECTATE: string; SPECTATORS: FM<"numViewers", false>; SPELLCHECK: string; SPOILER: string; SPOILER_HIDDEN_A11Y_LABEL: string; SPOILER_MARK_SELECTED: string; SPOILER_REVEAL: string; SPOTIFY: string; SPOTIFY_CONNECTION_INFO_ANDROID: FM; SPOTIFY_LISTEN_ALONG_HOST: string; SPOTIFY_LISTEN_ALONG_INFO: string; SPOTIFY_LISTEN_ALONG_LISTENER: string; SPOTIFY_LISTEN_ALONG_LISTENERS: string; SPOTIFY_LISTEN_ALONG_LISTENING_ALONG_COUNT: FM<"count", false>; SPOTIFY_LISTEN_ALONG_STOP: string; SPOTIFY_LISTEN_ALONG_SUBTITLE_LISTENER: string; SPOTIFY_LISTEN_ALONG_TITLE_HOST: FM<"count", false>; SPOTIFY_LISTEN_ALONG_TITLE_LISTENER: string; SPOTIFY_PREMIUM_UPGRADE_BODY: string; SPOTIFY_PREMIUM_UPGRADE_BUTTON: string; SPOTIFY_PREMIUM_UPGRADE_HEADER: string; STAFF_BADGE_TOOLTIP: string; STAGE_AUDIENCE: string; STAGE_AUDIENCE_WAITING_MANY: FM<"first" | "numOthers" | "second", false>; STAGE_AUDIENCE_WAITING_ONE: FM<"first", false>; STAGE_AUDIENCE_WAITING_TWO: FM<"first" | "second", false>; STAGE_BLOCKED_USERS_ACCEPT: string; STAGE_BLOCKED_USERS_BODY: FM<"number", false>; STAGE_BLOCKED_USERS_CANCEL: string; STAGE_BLOCKED_USERS_DESCRIPTION_COUNT: FM<"number", false>; STAGE_BLOCKED_USERS_LIST_A11Y_LABEL: string; STAGE_BLOCKED_USERS_TITLE: string; STAGE_BLOCKED_USERS_TITLE_PLURAL: FM<"number", false>; STAGE_CHANNEL: string; STAGE_CHANNEL_ACTIVITY_FEED_DEFAULT: string; STAGE_CHANNEL_ACTIVITY_FEED_JOIN: FM<"channel", false>; STAGE_CHANNEL_AUDIENCE_COUNT: FM<"userCount", false>; STAGE_CHANNEL_AUDIENCE_MODAL_ACTION: string; STAGE_CHANNEL_AUDIENCE_MODAL_ALT_TEXT: string; STAGE_CHANNEL_AUDIENCE_MODAL_BULLET_1: string; STAGE_CHANNEL_AUDIENCE_MODAL_BULLET_2: string; STAGE_CHANNEL_AUDIENCE_MODAL_BULLET_3: string; STAGE_CHANNEL_AUDIENCE_MODAL_BULLET_4: string; STAGE_CHANNEL_AUDIENCE_MODAL_TITLE: string; STAGE_CHANNEL_AUDIENCE_NO_TOPIC: string; STAGE_CHANNEL_CANNOT_OVERWRITE_PERMISSION: string; STAGE_CHANNEL_DESC: string; STAGE_CHANNEL_HAPPENING_NOW: string; STAGE_CHANNEL_INVITE_TO_STAGE_MODAL_FOOTER: string; STAGE_CHANNEL_INVITE_TO_STAGE_MODAL_HEADER: string; STAGE_CHANNEL_JOIN: string; STAGE_CHANNEL_JOIN_BUTTON: string; STAGE_CHANNEL_JOINED_AUDIENCE_BUTTON: string; STAGE_CHANNEL_JOINED_SPEAKER_BUTTON: string; STAGE_CHANNEL_LEAVE_BUTTON: string; STAGE_CHANNEL_LIVE_NOW: string; STAGE_CHANNEL_LOCKED: string; STAGE_CHANNEL_NO_AUDIENCE: string; STAGE_CHANNEL_NO_TOPIC: string; STAGE_CHANNEL_PERMISSION_MICROPHONE_DENIED: string; STAGE_CHANNEL_START_SUBTITLE: string; STAGE_CHANNEL_START_TITLE: string; STAGE_CHANNEL_USER_INVITE_TO_SPEAK: string; STAGE_CHANNEL_USER_INVITED_TO_SPEAK: string; STAGE_CHANNEL_USER_MOVE_TO_AUDIENCE: string; STAGE_CHANNEL_USER_MOVE_TO_AUDIENCE_OTHER: string; STAGE_CHANNEL_USER_SET_MYSELF_TO_SPEAKER: string; STAGE_CHANNEL_USERS_ARE_SPEAKING: FM<"count", false>; STAGE_CHANNEL_V2_UPSELL_SUBTITLE: string; STAGE_CHANNEL_V2_UPSELL_TITLE: string; STAGE_CONTINUE_PROMPT_SUBTITLE: string; STAGE_CONTINUE_PROMPT_TITLE: string; STAGE_DISCOVERY: string; STAGE_DISCOVERY_CARD_SPEAKER_TEXT_OVERFLOW: FM<"count", false>; STAGE_DISCOVERY_CONNECTION_ERROR_GENERIC: string; STAGE_DISCOVERY_INTRO_CARD_BODY_DESKTOP: string; STAGE_DISCOVERY_LIVE_STAGE_TILE_FRIENDS_GUILDS_CONTEXT_AUDIENCE_1: FM<"a", true>; STAGE_DISCOVERY_LIVE_STAGE_TILE_FRIENDS_GUILDS_CONTEXT_AUDIENCE_2: FM<"a" | "b", true>; STAGE_DISCOVERY_LIVE_STAGE_TILE_FRIENDS_GUILDS_CONTEXT_AUDIENCE_3: FM<"a" | "b" | "c", true>; STAGE_DISCOVERY_LIVE_STAGE_TILE_FRIENDS_GUILDS_CONTEXT_AUDIENCE_3_N: FM<"a" | "b" | "c" | "n", true>; STAGE_DISCOVERY_LIVE_STAGE_TILE_SPEAKER_SUMMARY_OVERFLOW: FM<"count", false>; STAGE_DISCOVERY_NO_RESULTS_HEADER: string; STAGE_DISCOVERY_ORIGIN_TEXT: FM<"origin", false>; STAGE_DISCOVERY_TOOLTIP: string; STAGE_FULL_BODY: string; STAGE_FULL_BOOST_MORE_BODY: string; STAGE_FULL_MAX_BODY: string; STAGE_FULL_MODERATOR_BODY: string; STAGE_FULL_MODERATOR_MAX_TITLE: string; STAGE_FULL_MODERATOR_MAX_TITLE_MOBILE: string; STAGE_FULL_MODERATOR_TITLE: string; STAGE_FULL_TITLE: string; STAGE_INSTANCE_PRIVACY_TYPE_PRIVATE_LABEL: string; STAGE_INSTANCE_PRIVACY_TYPE_PUBLIC_LABEL: string; STAGE_INVITE_GUILD_HEADER: string; STAGE_INVITE_SPEAKER_COUNT: FM<"count", false>; STAGE_IS_SPEAKING_HOOK: FM<["count" | "username", "usernameHook"], true>; STAGE_IS_SPEAKING_ZERO_QUANTITY_HOOK: string; STAGE_MODERATOR_JOIN_MODAL_JOIN_AUDIENCE: string; STAGE_MODERATOR_JOIN_MODAL_JOIN_SPEAKER: string; STAGE_MODERATOR_JOIN_MODAL_SUBTITLE: string; STAGE_MODERATOR_JOIN_MODAL_TITLE: string; STAGE_MODERATOR_TOOLTIP: string; STAGE_MUSIC_MUTE: string; STAGE_MUSIC_UNMUTE: string; STAGE_NOTIFICATIONS: string; STAGE_SETTINGS: string; STAGE_SPEAK_INVITE_ACCEPT: string; STAGE_SPEAK_INVITE_BLOCKED_USERS: FM<"number", false>; STAGE_SPEAK_INVITE_DECLINE: string; STAGE_SPEAK_INVITE_HEADER: string; STAGE_SPEAK_INVITE_HEADER_BLOCKED_USERS: FM<"number", false>; STAGE_SPEAK_INVITE_MODAL: FM<[never, "stageChannelHook"], true>; STAGE_SPEAK_INVITE_PUSH_NOTIFICATION: FM<"channelName" | "channelTopic", false>; STAGE_SPEAK_INVITE_SEND: string; STAGE_SPEAKER: string; STAGE_START_NOTIFICATION_CATEGORY: string; STAGE_START_PROMPT_SUBTITLE: string; STAGE_START_PROMPT_SUBTITLE_MOBILE: string; STAGE_START_PROMPT_SUBTITLE_MOBILE_MODERATOR: string; STAGE_START_PROMPT_TITLE: string; STAGE_START_PROMPT_TITLE_MODERATOR: string; STAGE_START_PROMPT_TITLE_MODERATOR_DESKTOP: string; STAGE_START_PUSH_NOTIFICATION_BODY: FM<"topic" | "username", false>; STAGE_START_PUSH_NOTIFICATION_TITLE: FM<"guildName", false>; STAGE_SYSTEM_MESSAGE_MODERATOR_VISIBILITY_MESSAGE: FM; STAGE_VOICE_CHANNEL: string; STAGE_VOICE_CHANNEL_TYPE: string; START: string; START_CALL: string; START_DATE_TO_END_DATE: FM<"end" | "start", false>; START_DATE_TO_END_DATE_WITH_COLOR: FM<["end" | "start", "startHook"], true>; START_EMAIL_REVERIFICATION_BUTTON: string; START_EVENT: string; START_EVENT_CONFIRMATION: FM<["privacyLevel", "privacyLevelHook"], true>; START_EVENT_CONFIRMATION_NO_HOOK: string; START_ONBOARDING: string; START_PHONE_REVERIFICATION_BUTTON: string; START_PHONE_VERIFICATION_BUTTON: string; START_STAGE_CHANNEL_EVENT_MEMBERS_SUBTITLE: string; START_STAGE_CHANNEL_EVENT_MEMBERS_TITLE: string; START_STAGE_CHANNEL_EVENT_MODAL_BUTTON: string; START_STAGE_CHANNEL_EVENT_MODAL_SPEAKER_HINT: string; START_STAGE_CHANNEL_EVENT_MODAL_SUBTITLE: string; START_STAGE_CHANNEL_EVENT_MODAL_TITLE: string; START_STAGE_CHANNEL_EVENT_MODAL_TOPIC_LABEL: string; START_STAGE_CHANNEL_EVENT_MODAL_TOPIC_PLACEHOLDER: string; START_STAGE_CHANNEL_EVENT_MODAL_TOPIC_REQUIRED: string; START_STAGE_CHANNEL_EVENT_PRIVACY_TITLE: string; START_STAGE_CHANNEL_EVENT_PUBLIC_EVERYONE_WARNING: string; START_STAGE_CHANNEL_EVENT_PUBLIC_EXPLANATION: FM<"articleURL", true>; START_STAGE_CHANNEL_EVENT_PUBLIC_PERMANENT_DISCLAIMER: string; START_STAGE_CHANNEL_EVENT_PUBLIC_PERMISSIONS_DISCLAIMER: string; START_STAGE_CHANNEL_EVENT_PUBLIC_SUBTITLE: string; START_STAGE_MODAL_SELECT_CHANNEL: string; START_STAGE_MODAL_SERVER_SELECTION_EMPTY_TITLE: string; START_STAGE_MODAL_SET_TOPIC_CHANGE_CHANNEL: FM<["stageName", "changeHook" | "stageHook"], true>; START_STAGE_MODAL_SET_TOPIC_HELP_TEXT: FM<["stageName", "stageHook"], true>; START_STAGE_MODAL_SET_TOPIC_SELECT_A11Y_HINT: string; START_STAGE_MODAL_SET_TOPIC_SELECT_LABEL: string; START_STAGE_PUBLIC_CONFIRM: string; START_STAGE_PUBLIC_INFO_ALT_TEXT: string; START_STAGE_PUBLIC_INFO_SECTION_FOUR: string; START_STAGE_PUBLIC_INFO_SECTION_ONE: string; START_STAGE_PUBLIC_INFO_SECTION_THREE: FM<"articleURL", true>; START_STAGE_PUBLIC_INFO_SECTION_TWO: string; START_STAGE_PUBLIC_INFO_TITLE: string; START_STAGE_PUBLIC_INFO_TITLE_CAPTION: string; START_STAGE_PUBLIC_PREVIEW_SECTION_FOUR: FM<"articleURL", true>; START_STAGE_PUBLIC_PREVIEW_SECTION_ONE: string; START_STAGE_PUBLIC_PREVIEW_SECTION_THREE: string; START_STAGE_PUBLIC_PREVIEW_SECTION_TWO: string; START_STAGE_PUBLIC_PREVIEW_SUBTITLE: string; START_STAGE_PUBLIC_PREVIEW_TITLE: string; START_STAGE_PUBLIC_SHORT_TOPIC_WARNING: string; START_STREAMING: string; START_TRIAL: string; START_VERIFICATION_BUTTON: string; START_VIDEO_CALL: string; START_VOICE_CALL: string; STARTING_IN_MINUTES: FM<"minutes", false>; STARTING_ON_DATE: FM<"date", false>; STARTING_SOON: string; STATUS_BRB: string; STATUS_CHILLING: string; STATUS_DND: string; STATUS_DND_HELP: string; STATUS_DND_HELP_FOCUS_MODE: string; STATUS_EATING: string; STATUS_FOCUSING: string; STATUS_GAMING: string; STATUS_IDLE: string; STATUS_IN_TRANSIT: string; STATUS_INVISIBLE: string; STATUS_INVISIBLE_HELPER: string; STATUS_LEAD_IN_JUST: string; STATUS_MENU_LABEL: string; STATUS_NONE: string; STATUS_OFFLINE: string; STATUS_ONLINE: string; STATUS_ONLINE_MOBILE: string; STATUS_POPOUT_CLEAR_STATUS: string; STATUS_POPOUT_CUSTOM_TITLE: string; STATUS_POPOUT_EDIT_CUSTOM: string; STATUS_POPOUT_SET_CUSTOM: string; STATUS_STREAMING: string; STATUS_TAB_A11Y_ACTION: string; STATUS_UNKNOWN: string; STATUS_UNTIL: FM<"endTime", false>; STATUS_WATCHING: string; STEP_NUMBER: FM<"number", false>; STICKER: string; STICKER_A11Y_LABEL: FM<"stickerName", false>; STICKER_ASSET_LOAD_ERROR: string; STICKER_BUTTON_LABEL: string; STICKER_CATEGORY_A11Y_LABEL: FM<"categoryName", false>; STICKER_CATEGORY_RECENT: string; STICKER_FROM_SOURCE: FM<"source", true>; STICKER_NOTIFICATION_BODY: FM<"stickerName", false>; STICKER_PACK_AVAILABLE_WITH_PREMIUM: string; STICKER_PACK_PREMIUM_CTA: string; STICKER_PACK_PRICE_FREE: string; STICKER_PACK_PRICE_FREE_WITH_PREMIUM_TIER_1: string; STICKER_PACK_PRICE_FREE_WITH_PREMIUM_TIER_2: string; STICKER_PACK_STICKER_COUNT: FM<"numStickers", false>; STICKER_PACK_VIEW: string; STICKER_PICKER_CATEGORIES_RECENT: string; STICKER_PICKER_CREATE_STICKER: string; STICKER_PICKER_CREATE_STICKER_TITLE: string; STICKER_PICKER_DISCOUNTED_FREE_ANDROID: FM<["regularPrice", "originalPriceHook"], true>; STICKER_PICKER_DISCOUNTED_PRICE_ANDROID: FM<["discountedPrice" | "regularPrice", "originalPriceHook"], true>; STICKER_PICKER_EMPTY_GUILD_UPSELL_NO_PREMIUM_SUBSCRIPTIONS_CTA: string; STICKER_PICKER_EMPTY_GUILD_UPSELL_NO_PREMIUM_SUBSCRIPTIONS_DESCRIPTION: FM<"count", false>; STICKER_PICKER_EMPTY_GUILD_UPSELL_NO_STICKERS_CTA: string; STICKER_PICKER_EMPTY_GUILD_UPSELL_NO_STICKERS_DESCRIPTION: string; STICKER_PICKER_PACK_DETAILS: FM<"stickerPackName", false>; STICKER_PICKER_PACK_DETAILS_ANIMATED: string; STICKER_PICKER_PACK_DETAILS_LIMITED_TIME_LEFT: FM<"time", false>; STICKER_PICKER_PACK_DETAILS_PREMIUM: string; STICKER_PICKER_PACK_EXPIRING_SOON: string; STICKER_PICKER_PREMIUM_EMPTY_STATE_CTA: string; STICKER_PICKER_PREMIUM_EMPTY_STATE_SUBTITLE: string; STICKER_PICKER_PREMIUM_EMPTY_STATE_TITLE: string; STICKER_PICKER_PREMIUM_PACKS: string; STICKER_PICKER_PREMIUM_TIER_UPSELL_DESCRIPTION: FM<"planName", true>; STICKER_PICKER_PREMIUM_UPSELL_ALT: string; STICKER_PICKER_PREMIUM_UPSELL_DESCRIPTION: FM; STICKER_PICKER_PREMIUM_UPSELL_DESCRIPTION_NO_BOLD: FM; STICKER_PICKER_PREMIUM_UPSELL_DESCRIPTION_NO_BOLD_V2: FM<"planName", true>; STICKER_PICKER_PREMIUM_UPSELL_TITLE: string; STICKER_PICKER_PRICE_WITH_PREMIUM_TIER_2: FM<"price", false>; STICKER_PICKER_VIEW_ALL: string; STICKER_POPOUT_COUNTDOWN_HEADER: string; STICKER_POPOUT_CURRENT_GUILD_DESCRIPTION: string; STICKER_POPOUT_JOIN_SERVER: string; STICKER_POPOUT_JOINED_GUILD_DESCRIPTION: string; STICKER_POPOUT_JOINED_GUILD_EMOJI_DESCRIPTION: string; STICKER_POPOUT_PACK_INFO: FM<"discount" | "stickerPackName", true>; STICKER_POPOUT_PACK_INFO_PREMIUM: FM<"stickerPackName", true>; STICKER_POPOUT_PACK_INFO_UNAVAILABLE: FM<"stickerPackName", true>; STICKER_POPOUT_PREMIUM_CURRENT_GUILD_DESCRIPTION: string; STICKER_POPOUT_PREMIUM_JOINED_GUILD_DESCRIPTION: string; STICKER_POPOUT_PREMIUM_UNJOINED_DISCOVERABLE_GUILD_DESCRIPTION: string; STICKER_POPOUT_PREMIUM_UNJOINED_PRIVATE_GUILD_DESCRIPTION: string; STICKER_POPOUT_PRIVATE_SERVER: string; STICKER_POPOUT_PUBLIC_SERVER: string; STICKER_POPOUT_SHOW_MORE_STICKERS: string; STICKER_POPOUT_UNJOINED_DISCOVERABLE_GUILD_DESCRIPTION: string; STICKER_POPOUT_UNJOINED_GUILD_EMOJI_DESCRIPTION: string; STICKER_POPOUT_UNJOINED_PRIVATE_GUILD_DESCRIPTION: FM; STICKER_PREMIUM_SUBSCRIPTION_UPSELL_ALERT_TITLE: FM<"monthlyPrice" | "planName", true>; STICKER_PREMIUM_TIER_0_UPSELL_PERK_PREMIUM_SUBSCRIPTION: string; STICKER_PREMIUM_TIER_0_UPSELL_PERK_PREMIUM_SUBSCRIPTION_V2: string; STICKER_PREMIUM_TIER_2_UPSELL_ALERT_PERKS_GUILD_SUBSCRIPTIONS: FM<"numFreeGuildSubscriptions", false>; STICKER_PREMIUM_TIER_2_UPSELL_ALERT_TITLE: FM<"monthlyPrice", true>; STICKER_PREMIUM_TIER_2_UPSELL_ALERT_UPGRADE_CTA: string; STICKER_PREMIUM_TIER_2_UPSELL_PERK_CUSTOM: string; STICKER_PREMIUM_TIER_2_UPSELL_PERK_GUILD_SUBSCRIPTION: FM<"discountPercent" | "numGuildSubscriptions", false>; STICKER_PREMIUM_TIER_2_UPSELL_PERK_PREMIUM_SUBSCRIPTION: string; STICKER_VIEW_MORE_STICKERS: string; STICKERS_ALWAYS_ANIMATE: string; STICKERS_ANIMATE_ON_INTERACTION: string; STICKERS_ANIMATE_ON_INTERACTION_DESCRIPTION: string; STICKERS_AUTO_PLAY_HEADING: string; STICKERS_AUTO_PLAY_HELP: string; STICKERS_AUTO_PLAY_HELP_DISABLED: string; STICKERS_GIFT_INVENTORY_TITLE_MONTH: FM<"intervalCount" | "skuName", false>; STICKERS_GIFT_INVENTORY_TITLE_YEAR: FM<"intervalCount" | "skuName", false>; STICKERS_IN_AUTOCOMPLETE: string; STICKERS_MATCHING: FM<"prefix", true>; STICKERS_MATCHING_IOS: FM<"prefix", false>; STICKERS_NEVER_ANIMATE: string; STICKERS_YOU_MIGHT_LIKE: string; STICKERS_YOU_MIGHT_LIKE_A11Y: string; STILL_INDEXING: string; STOP: string; STOP_RINGING: string; STOP_RINGING_USERNAME_A11Y_LABEL: FM<"username", false>; STOP_SPEAKING_MESSAGE: string; STOP_STREAMING: string; STOP_WATCHING: string; STOP_WATCHING_USER: FM<"username", false>; STORAGE_PERMISSION_DENIED: string; STORE_CHANNEL: string; STORE_CHANNEL_TYPE: string; STOREFRONT: string; STOREFRONT_APP_SUBSCRIPTIONS: string; STOREFRONT_APP_SUBSCRIPTIONS_BODY: FM<"appName", false>; STOREFRONT_DETAILS: string; STOREFRONT_DETAILS_TOS_AND_PRIVACY: FM<"ppUrl" | "tosUrl", true>; STOREFRONT_DURABLE_AVAILABILITY: string; STOREFRONT_DURABLE_AVAILABILITY_NONE: string; STOREFRONT_ITEM_COUNT: FM<"count", false>; STOREFRONT_MUST_LOGIN: string; STOREFRONT_NO_TOS_PP: string; STOREFRONT_ONE_TIME_PURCHASE: string; STOREFRONT_OPEN_STORE: string; STOREFRONT_PURCHASE_FOR: FM<"price", false>; STOREFRONT_SERVER_SUBSCRIPTION: string; STOREFRONT_SUBSCRIBE: string; STOREFRONT_SUBSCRIBE_FOR: FM<"rate", false>; STOREFRONT_SUBSCRIPTION: string; STOREFRONT_SUBSCRIPTION_AND_ITEMS_COUNT: FM<"itemCount" | "subCount", false>; STOREFRONT_SUBSCRIPTION_BENEFITS: string; STOREFRONT_SUBSCRIPTION_COUNT: FM<"count", false>; STOREFRONT_TITLE: FM<"appName", false>; STOREFRONT_UNKNOWN_SUBSCRIPTIONS_OR_ITEMS: string; STOREFRONT_USER_SUBSCRIPTION: string; STOREFRONT_VIEW_TOS_PP: FM<"ppUrl" | "tosUrl", true>; STRANGER_DANGER_BANNER_BLOCK: string; STRANGER_DANGER_BANNER_CLOSE_A11Y: string; STRANGER_DANGER_FEEDBACK_CONFIRM: string; STRANGER_DANGER_MORE_BLOCK: string; STRANGER_DANGER_MORE_HEADER: string; STRANGER_DANGER_MORE_MUTE: string; STRANGER_DANGER_MORE_UNMUTE: string; STREAM_ACTIONS_MENU_LABEL: string; STREAM_BAD_SPECTATOR: string; STREAM_BAD_STREAMER: string; STREAM_CAPTURE_PAUSED: string; STREAM_CAPTURE_PAUSED_DETAILS: string; STREAM_CAPTURE_PAUSED_DETAILS_VIEWER: FM<"username", false>; STREAM_CHANNEL_DESCRIPTION: string; STREAM_DESCRIPTION: string; STREAM_ENDED: string; STREAM_FAILED_DESCRIPTION: FM<"helpUrl", true>; STREAM_FAILED_TITLE: string; STREAM_FPS_OPTION: FM<"value", false>; STREAM_FULL_MODAL_BODY: string; STREAM_FULL_MODAL_HEADER: string; STREAM_HIDDEN: string; STREAM_NETWORK_QUALITY_ERROR: string; STREAM_NO_PERMISSION_CTA: string; STREAM_NO_PREVIEW: string; STREAM_PARTICIPANTS_HIDDEN: FM; STREAM_PLAYING: FM<"game", false>; STREAM_PREMIUM_AFFINITY_UPSELL: FM<"numFriends", false>; STREAM_PREMIUM_UPSELL_BANNER_CTA: string; STREAM_PREMIUM_UPSELL_BANNER_LEARN_MORE_V3: FM; STREAM_PREMIUM_UPSELL_BANNER_PRESET_DOCUMENTS: string; STREAM_PREMIUM_UPSELL_BODY: FM; STREAM_PREMIUM_UPSELL_BODY_NO_CTA: string; STREAM_PREMIUM_UPSELL_BODY_V2: string; STREAM_PREMIUM_UPSELL_BODY_V3: string; STREAM_PREMIUM_UPSELL_CTA: string; STREAM_PREMIUM_UPSELL_DESCRIPTION: string; STREAM_PREMIUM_UPSELL_HEADER: string; STREAM_PREMIUM_UPSELL_HEADER_V2: string; STREAM_PREMIUM_UPSELL_SECONDARY_CTA: string; STREAM_PREMIUM_UPSELL_TITLE: string; STREAM_PREMIUM_UPSELL_WITH_ACTION: FM; STREAM_PREMIUM_VIEWER_UPSELL_MESSAGE: FM<"fps" | "nickname" | "resolution", false>; STREAM_PRESET_CUSTOM: string; STREAM_PRESET_DOCUMENTS: string; STREAM_PRESET_DOCUMENTS_DESCRIPTION_NITRO: FM<"fps", false>; STREAM_PRESET_VIDEO: string; STREAM_PREVIEW_LOADING: string; STREAM_PREVIEW_PAUSED: string; STREAM_PREVIEW_PAUSED_SUBTEXT: string; STREAM_QUALITY: string; STREAM_QUALITY_DISCORD_NITRO_UNLOCK: string; STREAM_RECONNECTING_ERROR: string; STREAM_RECONNECTING_ERROR_SUBTEXT: string; STREAM_REPORT_A_PROBLEM: string; STREAM_REPORT_A_PROBLEM_POST_STREAM: string; STREAM_REPORT_AUDIO_MISSING: string; STREAM_REPORT_AUDIO_POOR: string; STREAM_REPORT_BLACK: string; STREAM_REPORT_BLURRY: string; STREAM_REPORT_ENDED_AUDIO_MISSING: string; STREAM_REPORT_ENDED_AUDIO_POOR: string; STREAM_REPORT_ENDED_BLACK: string; STREAM_REPORT_ENDED_BLURRY: string; STREAM_REPORT_ENDED_LAGGING: string; STREAM_REPORT_ENDED_OUT_OF_SYNC: string; STREAM_REPORT_ENDED_STREAM_STOPPED_UNEXPECTEDLY: string; STREAM_REPORT_LABEL: string; STREAM_REPORT_LAGGING: string; STREAM_REPORT_OUT_OF_SYNC: string; STREAM_REPORT_PLACEHOLDER: string; STREAM_REPORT_PROBLEM: string; STREAM_REPORT_PROBLEM_BODY: string; STREAM_REPORT_PROBLEM_HEADER_MOBILE: string; STREAM_REPORT_PROBLEM_MENU_ITEM: string; STREAM_REPORT_PROBLEM_MOBILE: string; STREAM_REPORT_RATING_BODY: string; STREAM_REPORT_RATING_BODY_STREAMER: string; STREAM_REPORT_SUBMIT: string; STREAM_REPORTED: string; STREAM_REPORTED_BODY: string; STREAM_RESOLUTION: string; STREAM_SHOW_ALL_PARTICIPANTS: string; STREAM_SHOW_NON_VIDEO: string; STREAM_SINGLE_PERSON_BODY: string; STREAM_SINGLE_PERSON_BODY_ALT: string; STREAM_SINGLE_PERSON_INVITE: string; STREAM_SINGLE_PERSON_NO_INVITE: string; STREAM_SOUNDSHARE_FAILED: string; STREAM_VOLUME: string; STREAM_WATCH_MULTIPLE_TOOLTIP: string; STREAMER_MODE: string; STREAMER_MODE_ENABLED: string; STREAMER_PLAYING: FM<"game", false>; STREAMER_SETTINGS_TITLE: string; STREAMING: FM<"name", true>; STREAMING_A_GAME: string; SUB_ENABLED_SERVERS: string; SUBMIT: string; SUBMIT_BUG: string; SUBMIT_POST: string; SUBSCRIBE_NOW_FREE_MONTH: string; SUBSCRIBER_INFORMATION: string; SUBSCRIBER_NITRO_HOME_MANAGE_MEMBERSHIP_SUBTITLE: FM<"planName" | "renewalDate", true>; SUBSCRIBER_NITRO_HOME_MANAGE_MEMBERSHIP_TITLE: string; SUBSCRIBER_NITRO_HOME_SUBTITLE: string; SUBSCRIBER_NITRO_HOME_TITLE: FM; SUBSCRIPTION_MANAGEMENT: string; SUBSCRIPTION_PAYMENT_LEGALESE_MONTHLY: string; SUBSCRIPTION_PAYMENT_LEGALESE_MULTI_MONTH: FM<"intervalCount", false>; SUBSCRIPTION_PAYMENT_LEGALESE_PAYSAFECARD: string; SUBSCRIPTION_PAYMENT_LEGALESE_PLAN_CHANGE_V2: FM<"contactLink" | "helpdeskArticle" | "paidURL" | "primaryText" | "rate", true>; SUBSCRIPTION_PAYMENT_LEGALESE_RESUME: FM<"contactLink" | "helpdeskArticle" | "paidURL" | "primaryText" | "rate", true>; SUBSCRIPTION_PAYMENT_LEGALESE_V2: FM<"contactLink" | "helpdeskArticle" | "paidURL" | "primaryText" | "rate", true>; SUBSCRIPTION_PAYMENT_LEGALESE_YEARLY: string; SUBSCRIPTIONS_TITLE: string; SUGGEST_SLASH_COMMANDS: string; SUGGEST_STICKERS: string; SUGGESTED: string; SUGGESTED_FRIENDS_LIST_HEADER: string; SUGGESTIONS: string; SUMMARIES: string; SUMMARIES_ACITONS_SHARE_CONTENT: FM<"topic" | "url", false>; SUMMARIES_ACITONS_SHARE_FAILED: string; SUMMARIES_ACITONS_SHARE_LABEL: string; SUMMARIES_ACTIONS_CREATE_THREAD_FAILED: string; SUMMARIES_ACTIONS_NOTIFICATIONS_LABEL: string; SUMMARIES_FEEDBACK_BODY: string; SUMMARIES_FEEDBACK_HEADER: string; SUMMARIES_FEEDBACK_MENU_ITEM_LABEL: string; SUMMARIES_FEEDBACK_OPTION_DUPLICATED: string; SUMMARIES_FEEDBACK_OPTION_INACCURATE: string; SUMMARIES_FEEDBACK_OPTION_NOT_USEFUL: string; SUMMARIES_FEEDBACK_OPTION_OTHER: string; SUMMARIES_FEEDBACK_OPTION_TOO_GENERIC: string; SUMMARIES_FEEDBACK_OPTION_TOO_MANY: string; SUMMARIES_FEEDBACK_PROBLEM_TITLE: string; SUMMARIES_HIDDEN: string; SUMMARIES_NO_SUMMARIES: string; SUMMARIES_NOTIFICATIONS_FOOTER: FM; SUMMARIES_NOTIFICATIONS_HEADER: string; SUMMARIES_SHOWN: string; SUMMARIES_VIEW_ALL: string; SUMMARY_EMPTY_STATE_TEXT: string; SUMMARY_EMPTY_STATE_TITLE: string; SUMMARY_FEEDBACK: string; SUMMARY_HIDE_SIDEBAR: string; SUMMARY_NO_SUMMARIES_ALT_TEXT: string; SUMMARY_PILL: string; SUMMARY_PILL_NEXT: string; SUMMARY_PILL_PREVIOUS: string; SUMMARY_RECENT_SUMMARIES: string; SUMMARY_SHOW_SIDEBAR: string; SUMMONED: string; SUPER_MOBILE_NOT_READY_SUBTITLE: string; SUPER_REACT: string; SUPER_REACT_REMOVE_WITH_COUNT_A11Y_LABEL: FM<"emojiName" | "reactions", false>; SUPER_REACT_WITH_COUNT_A11Y_LABEL: FM<"emojiName" | "reactions", false>; SUPER_REACTION_COACHMARK_DESCRIPTION: FM<"helpdeskArticle", true>; SUPER_REACTION_COACHMARK_DESCRIPTION_FREE: string; SUPER_REACTION_COACHMARK_DESCRIPTION_MOBILE: FM<[never, "betaHook"], true>; SUPER_REACTION_COACHMARK_NITRO_DESCRIPTION: FM<"helpdeskArticle" | "premiumTier" | "refillAmount", true>; SUPER_REACTION_COACHMARK_NITRO_DESCRIPTION_MOBILE: FM<["premiumTier" | "refillAmount", "betaHook"], true>; SUPER_REACTION_OUT_OF_BURSTS: string; SUPER_REACTION_TOGGLE_DISABLED: string; SUPER_REACTION_TOGGLE_ENABLED: string; SUPER_REACTION_TOOLTIP_CTA: string; SUPER_REACTION_TOOLTIP_CTA_REACTED: string; SUPER_REACTION_TOOLTIP_UPSELL: string; SUPER_REACTIONS_BANNER_DESCRIPTION: string; SUPER_REACTIONS_BANNER_TITLE: string; SUPER_REACTIONS_BETA_MODAL_CONTENT: string; SUPER_REACTIONS_BETA_MODAL_TITLE: string; SUPER_REACTIONS_CONGRATS_DESCRIPTION: FM; SUPER_REACTIONS_CONGRATS_DESCRIPTION_DAILY: FM; SUPER_REACTIONS_CONGRATS_HEADER: string; SUPER_REACTIONS_EMOJI_PICKER_UPSELL: string; SUPER_REACTIONS_FIRST_SEND_BODY: FM<"refillAmount", false>; SUPER_REACTIONS_FIRST_SEND_BODY_DAILY: FM<"refillAmount", false>; SUPER_REACTIONS_FIRST_SEND_BODY_V2: string; SUPER_REACTIONS_FIRST_SEND_HEADER: string; SUPER_REACTIONS_LAUNCH_COACHMARK_DESCRIPTION: FM<"nitroLink", true>; SUPER_REACTIONS_LAUNCH_COACHMARK_DESCRIPTION_CLICK: FM; SUPER_REACTIONS_LAUNCH_COACHMARK_DESCRIPTION_CLICK_V2: FM<"planName", true>; SUPER_REACTIONS_LAUNCH_COACHMARK_DESCRIPTION_UNLIMITED: FM<"planName", true>; SUPER_REACTIONS_LAUNCH_COACHMARK_DESCRIPTION_UNLIMITED_V2: string; SUPER_REACTIONS_LAUNCH_COACHMARK_DESCRIPTION_UNLIMITED_V2_A: string; SUPER_REACTIONS_LAUNCH_COACHMARK_DESCRIPTION_UNLIMITED_V2_B: string; SUPER_REACTIONS_LAUNCH_COACHMARK_NITRO: FM<"refillAmount", false>; SUPER_REACTIONS_LAUNCH_COACHMARK_NITRO_DAILY: FM<"refillAmount", false>; SUPER_REACTIONS_LAUNCH_COACHMARK_NITRO_DESCRIPTION: FM<"nitroLink" | "refillAmount", true>; SUPER_REACTIONS_LAUNCH_COACHMARK_NITRO_DESCRIPTION_DAILY: FM<"nitroLink" | "refillAmount", true>; SUPER_REACTIONS_LAUNCH_COACHMARK_NITRO_LINK: FM<"refillAmount", true>; SUPER_REACTIONS_LAUNCH_COACHMARK_NITRO_LINK_DAILY: FM<"refillAmount", true>; SUPER_REACTIONS_LAUNCH_EMOJI_PICKER_DAILY_UPSELL: FM; SUPER_REACTIONS_LAUNCH_EMOJI_PICKER_UPSELL: FM; SUPER_REACTIONS_LAUNCH_EMOJI_PICKER_UPSELL_FREE: string; SUPER_REACTIONS_LAUNCH_EMOJI_PICKER_UPSELL_NITRO: FM<"refillAmount", false>; SUPER_REACTIONS_LAUNCH_EMOJI_PICKER_UPSELL_NITRO_DAILY: FM<"refillAmount", false>; SUPER_REACTIONS_MOBILE_DISMISS_MESSAGE: string; SUPER_REACTIONS_OUT_OF_BURST_GOT_IT: string; SUPER_REACTIONS_OUT_OF_BURSTS_DAILY_SIMPLE_SOON: string; SUPER_REACTIONS_OUT_OF_BURSTS_SIMPLE: FM<"n", false>; SUPER_REACTIONS_OUT_OF_BURSTS_SIMPLE_SOON: string; SUPER_REACTIONS_REFILL_COUNTDOWN: FM<"n" | "refillAmount", false>; SUPER_REACTIONS_REFILL_SOON: FM<"refillAmount", false>; SUPER_REACTIONS_REMINDER_COACHMARK_DESCRIPTION: string; SUPER_REACTIONS_REMINDER_COACHMARK_NITRO_DESCRIPTION: string; SUPER_REACTIONS_REMINDER_COACHMARK_TITLE: string; SUPER_REACTIONS_TAB_TOOLTIP: FM<"n", false>; SUPER_REACTIONS_TAB_TOOLTIP_AMOUNT: FM<"count" | "n" | "refillAmount", false>; SUPER_REACTIONS_TAB_TOOLTIP_AMOUNT_SOON: FM<"count" | "refillAmount", false>; SUPER_REACTIONS_TAB_TOOLTIP_SOON: string; SUPER_REACTIONS_TOOLTIP_COACHMARK: FM<"nitroLink", true>; SUPER_REACTIONS_TOOLTIP_COACHMARK_TITLE: string; SUPER_REACTIONS_UNLIMITED_NOTICE_DESCRIPTION_DESKTOP_V2: string; SUPER_REACTIONS_UNLIMITED_NOTICE_DESCRIPTION_MOBILE_V2: string; SUPER_REACTIONS_UNLIMITED_NOTICE_TITLE: string; SUPER_REACTIONS_UPSELL_TITLE: string; SUPER_REACTIONS_UPSELL_UNLIMITED_BODY: FM; SUPPORT: string; SUPPRESS_ALL_EMBEDS: string; SUPPRESS_EMBED: string; SUPPRESS_EMBED_BODY: string; SUPPRESS_EMBED_CONFIRM: string; SUPPRESS_EMBED_TIP: string; SUPPRESS_EMBED_TITLE: string; SUPPRESS_EMBEDS: string; SUPPRESS_NOTIFICATIONS_TOOLTIP: string; SUPPRESSED: string; SUPPRESSED_AFK_BODY: string; SUPPRESSED_AFK_TITLE: string; SUPPRESSED_PERMISSION_BODY: string; SUSPICIOUS_DOWNLOAD_WARNING_BODY: string; SUSPICIOUS_DOWNLOAD_WARNING_CANCEL: string; SUSPICIOUS_DOWNLOAD_WARNING_DOWNLOAD: string; SUSPICIOUS_DOWNLOAD_WARNING_TITLE: string; "sv-SE": string; SWIPE_TO_REPLY: string; SWIPE_TO_REPLY_COACHMARK: FM; SWIPE_TO_REPLY_HINT: string; SWITCH_ACCOUNTS_ACTION_LOG_IN: string; SWITCH_ACCOUNTS_ACTION_SWITCH: string; SWITCH_ACCOUNTS_ACTIVE_ACCOUNT: string; SWITCH_ACCOUNTS_ADD_AN_ACCOUNT_BUTTON: string; SWITCH_ACCOUNTS_CHOOSE_ACCOUNT: string; SWITCH_ACCOUNTS_CHOOSE_ACCOUNT_HELPER: string; SWITCH_ACCOUNTS_INVALID_TOKEN: string; SWITCH_ACCOUNTS_MANAGE_ACCOUNT: string; SWITCH_ACCOUNTS_MANAGE_ACCOUNTS: string; SWITCH_ACCOUNTS_MENU_ITEM_TITLE: string; SWITCH_ACCOUNTS_MODAL_SUBHEADER: string; SWITCH_ACCOUNTS_REMOVE_ACCOUNT: string; SWITCH_ACCOUNTS_TOAST_LOGIN_ERROR: string; SWITCH_ACCOUNTS_TOAST_LOGIN_SUCCESS: FM<"username", false>; SWITCH_AUDIO_OUTPUT: string; SWITCH_HARDWARE_ACCELERATION: string; SWITCH_HARDWARE_ACCELERATION_BODY: string; SWITCH_PIP_TO_ACTIVITY: string; SWITCH_PIP_TO_ACTIVITY_NAME: FM<"activityName", false>; SWITCH_PIP_TO_GO_LIVE: string; SWITCH_PIP_TO_USER_STREAM: FM<"username", false>; SWITCH_SUBSYSTEM: string; SWITCH_SUBSYSTEM_BODY: string; SWITCH_TO_COMPACT_MODE: string; SWITCH_TO_COZY_MODE: string; SWITCH_TO_PUSH_TO_TALK: string; SWITCH_TO_VOICE_ACTIVITY: string; SYNC: string; SYNC_ACROSS_CLIENTS_APPEARANCE_HELP: string; SYNC_ACROSS_CLIENTS_TEXT: string; SYNC_ACROSS_CLIENTS_TEXT_HELP: string; SYNC_FRIENDS: string; SYNC_NOW: string; SYNC_PERMISSIONS: string; SYNC_PERMISSIONS_EXPLANATION: FM<"categoryName" | "channelName", true>; SYNC_REVOKED: FM<"platformName" | "user", false>; SYNC_THIS_ACCOUNT: string; SYSTEM_DM_ACTIVITY_TEXT: string; SYSTEM_DM_CHANGELOG_BIO: string; SYSTEM_DM_CHANGELOG_BIO_CTA: string; SYSTEM_DM_CHANGELOG_BIO_WITH_CTA: FM<[never, "blogHook"], true>; SYSTEM_DM_CHANGELOG_STATUS: string; SYSTEM_DM_CHANNEL_DESCRIPTION: string; SYSTEM_DM_CHANNEL_DESCRIPTION_SUBTEXT: string; SYSTEM_DM_EMPTY_MESSAGE: string; SYSTEM_DM_OPEN_BLOG: string; SYSTEM_DM_TAG_OFFICIAL: string; SYSTEM_DM_TAG_SYSTEM: string; SYSTEM_DM_URGENT_MESSAGE_MODAL_BODY: string; SYSTEM_DM_URGENT_MESSAGE_MODAL_HEADER: string; SYSTEM_ENABLE_PERMISSIONS: string; SYSTEM_KEYBOARD: string; SYSTEM_MESSAGE_APPLICATION_COMMAND_REPLY: FM<"commandName", true>; SYSTEM_MESSAGE_APPLICATION_COMMAND_USED_AS_TITLE: FM<"commandName" | "username", true>; SYSTEM_MESSAGE_APPLICATION_COMMAND_USED_HOOK: FM<["username", "applicationNameHook" | "commandNameHook" | "usernameHook"], true>; SYSTEM_MESSAGE_APPLICATION_COMMAND_USED_MOBILE: FM<"applicationName" | "commandName" | "username", true>; SYSTEM_MESSAGE_APPLICATION_COMMAND_USED_SHORT_MOBILE: FM<"commandName" | "username", true>; SYSTEM_MESSAGE_APPLICATION_SUBSCRIPTION_PURCHASE: FM<["applicationName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_APPLICATION_SUBSCRIPTION_PURCHASE_FROM_DELETED_APPLICATION: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_APPLICATION_SUBSCRIPTION_PURCHASE_FROM_DELETED_APPLICATION_MOBILE: FM<"username", true>; SYSTEM_MESSAGE_APPLICATION_SUBSCRIPTION_PURCHASE_MOBILE: FM<"applicationName" | "username", true>; SYSTEM_MESSAGE_CALL_MISSED_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_CALL_MISSED_WITH_DURATION_HOOK: FM<["callDuration" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_CALL_STARTED: FM<"username", true>; SYSTEM_MESSAGE_CALL_STARTED_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_CALL_STARTED_WITH_DURATION_HOOK: FM<["callDuration" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_CHANNEL_FOLLOW_ADD: FM<["username" | "webhookName", "webhookNameHook"], true>; SYSTEM_MESSAGE_CHANNEL_FOLLOW_ADD_HOOK: FM<["username" | "webhookName", "usernameHook" | "webhookNameHook"], true>; SYSTEM_MESSAGE_CHANNEL_FOLLOW_ADD_IOS: FM<"username" | "webhookName", true>; SYSTEM_MESSAGE_CHANNEL_ICON_CHANGE: FM<"username", true>; SYSTEM_MESSAGE_CHANNEL_ICON_CHANGE_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_CHANNEL_NAME_CHANGE: FM<"channelName" | "username", true>; SYSTEM_MESSAGE_CHANNEL_NAME_CHANGE2: FM<["channelName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_FORUM_POST_TITLE_CHANGE: FM<"channelName" | "username", true>; SYSTEM_MESSAGE_FORUM_POST_TITLE_CHANGE2: FM<["channelName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_GET_GAMING_STATS: string; SYSTEM_MESSAGE_GUILD_BOT_JOIN: FM; SYSTEM_MESSAGE_GUILD_DISCOVERY_DISQUALIFIED: FM; SYSTEM_MESSAGE_GUILD_DISCOVERY_DISQUALIFIED_MOBILE: string; SYSTEM_MESSAGE_GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING: string; SYSTEM_MESSAGE_GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING: string; SYSTEM_MESSAGE_GUILD_DISCOVERY_REQUALIFIED: string; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_001: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_001_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_002: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_002_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_003: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_003_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_004: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_004_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_005: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_005_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_006: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_006_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_007: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_007_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_008: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_008_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_009: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_009_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_010: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_010_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_011: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_011_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_012: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_012_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_013: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_JOIN_013_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED: FM<"username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED_ACHIEVED_TIER: FM<"guildName" | "newTierName" | "username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED_ACHIEVED_TIER_HOOK: FM<["guildName" | "newTierName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED_MANY: FM<"numSubscriptions" | "username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED_MANY_ACHIEVED_TIER: FM<"guildName" | "newTierName" | "numSubscriptions" | "username", true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED_MANY_ACHIEVED_TIER_HOOK: FM<["guildName" | "newTierName" | "numSubscriptions" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_GUILD_MEMBER_SUBSCRIBED_MANY_HOOK: FM<["numSubscriptions" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_JOIN_CALL: string; SYSTEM_MESSAGE_PINNED_MESSAGE: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_PINNED_MESSAGE_MOBILE: FM<"username", true>; SYSTEM_MESSAGE_PINNED_MESSAGE_NO_CTA: FM<"username", true>; SYSTEM_MESSAGE_PINNED_MESSAGE_NO_CTA_FORMATTED_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_PINNED_MESSAGE_NO_CTA_FORMATTED_WITH_MESSAGE_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_PINNED_MESSAGE_WITH_MESSAGE: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_POLL_RESULT_NO_VOTERS_MOBILE: FM<["title" | "username", "sadEmojiHook"], true>; SYSTEM_MESSAGE_POLL_RESULT_TIED_MOBILE: FM<"percentage" | "title" | "username", true>; SYSTEM_MESSAGE_POLL_RESULT_WINNER_MOBILE: FM<["percentage" | "title" | "username", "answerHook"], true>; SYSTEM_MESSAGE_RECIPIENT_ADD: FM<"otherUsername" | "username", true>; SYSTEM_MESSAGE_RECIPIENT_ADD_HOOK: FM<["otherUsername" | "username", "otherUsernameHook" | "usernameHook"], true>; SYSTEM_MESSAGE_RECIPIENT_REMOVE: FM<"otherUsername" | "username", true>; SYSTEM_MESSAGE_RECIPIENT_REMOVE_HOOK: FM<["otherUsername" | "username", "otherUsernameHook" | "usernameHook"], true>; SYSTEM_MESSAGE_RECIPIENT_REMOVE_SELF: FM<"username", true>; SYSTEM_MESSAGE_RECIPIENT_REMOVE_SELF_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_JOIN: FM<["guildName" | "tierName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_JOIN_MOBILE: FM<"guildName" | "tierName" | "username", true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_JOIN_WITH_DURATION: FM<["guildName" | "months" | "tierName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_JOIN_WITH_DURATION_MOBILE: FM<"guildName" | "months" | "tierName" | "username", true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_RENEW: FM<["guildName" | "tierName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_RENEW_MOBILE: FM<"guildName" | "tierName" | "username", true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_RENEW_WITH_DURATION: FM<["guildName" | "months" | "tierName" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_ROLE_SUBSCRIPTION_RENEW_WITH_DURATION_MOBILE: FM<"guildName" | "months" | "tierName" | "username", true>; SYSTEM_MESSAGE_STAGE_END_HOOK: FM<["topic" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_STAGE_END_MOBILE: FM<"topic" | "username", true>; SYSTEM_MESSAGE_STAGE_RAISE_HAND_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_STAGE_RAISE_HAND_MOBILE: FM<"username", true>; SYSTEM_MESSAGE_STAGE_SPEAKER_HOOK: FM<["username", "usernameHook"], true>; SYSTEM_MESSAGE_STAGE_SPEAKER_MOBILE: FM<"username", true>; SYSTEM_MESSAGE_STAGE_START_HOOK: FM<["topic" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_STAGE_START_MOBILE: FM<"topic" | "username", true>; SYSTEM_MESSAGE_STAGE_TOPIC_HOOK: FM<["topic" | "username", "usernameHook"], true>; SYSTEM_MESSAGE_STAGE_TOPIC_MOBILE: FM<"topic" | "username", true>; SYSTEM_MESSAGE_THREAD_CREATED: FM<["actorName" | "threadName", "actorHook"], true>; SYSTEM_MESSAGE_THREAD_CREATED_MOBILE: FM<"actorName" | "threadName", true>; SYSTEM_MESSAGE_THREAD_CREATED_MOBILE2: FM<["actorName" | "threadName", "actorHook" | "threadOnClick"], true>; SYSTEM_MESSAGE_THREAD_MEMBER_ADD: FM<["actorName" | "targetName", "actorHook" | "targetHook"], true>; SYSTEM_MESSAGE_THREAD_MEMBER_ADD_MOBILE: FM<"otherUsername" | "username", true>; SYSTEM_MESSAGE_THREAD_MEMBER_REMOVE: FM<["actorName" | "targetName", "actorHook" | "targetHook"], true>; SYSTEM_MESSAGE_THREAD_MEMBER_REMOVE_MOBILE: FM<"otherUsername" | "username", true>; SYSTEM_MESSAGE_THREAD_MEMBER_REMOVE_SELF_MOBILE: FM<"username", true>; SYSTEM_PERMISSION_GRANT: string; SYSTEM_PERMISSION_REQUEST_CAMERA: FM; SYSTEM_PERMISSION_REQUEST_FILES: FM; TAB_A11Y_ROLE_DESCRIPTION: FM<"position" | "tabCount", false>; TAB_BAR: string; TABS_FRIENDS_ACCESSIBILITY_LABEL: string; TABS_HOME_ACCESSIBILITY_LABEL: string; TABS_MENTIONS_ACCESSIBILITY_LABEL: string; TABS_SEARCH_ACCESSIBILITY_LABEL: string; TABS_SETTINGS_ACCESSIBILITY_LABEL: string; TAKE_A_PHOTO: string; TAKE_ME_THERE: string; TAN: string; TAP_ADD_NICKNAME: string; TAR_GZ: string; TEAL: string; TEMPORARY_MEMBERSHIP_EXPLANATION: string; TERMS_ACKNOWLEDGEMENT_DESCRIPTION_1: FM<"date", true>; TERMS_ACKNOWLEDGEMENT_DESCRIPTION_2: string; TERMS_AGREEMENT_DESCRIPTION_1: string; TERMS_AGREEMENT_DESCRIPTION_2: string; TERMS_AND_CONDITIONS: string; TERMS_OF_SERVICE: FM<"url", true>; TERMS_OF_SERVICE_AGREEMENT_DESCRIPTION: string; TERMS_OF_SERVICE_UPDATE_03_27_2023_DESCRIPTION: FM; TERMS_PRIVACY: FM<"privacyURL" | "termsURL", true>; TERMS_PRIVACY_ON_REGISTER: FM<"buttonText" | "privacyURL" | "termsURL", true>; TERMS_PRIVACY_ON_REGISTER_MOBILE: FM<"buttonText" | "privacyURL" | "termsURL", true>; TERMS_PRIVACY_OPT_IN: FM<"privacyURL" | "termsURL", true>; TERMS_PRIVACY_OPT_IN_CHECKBOX_LABEL: string; TERMS_PRIVACY_OPT_IN_TOOLTIP: string; TERRACOTTA: string; TEST_NEWLINES_KEY: FM; TEST_VIDEO: string; TEXT: string; TEXT_ACTIONS_MENU_LABEL: string; TEXT_AND_IMAGES: string; TEXT_AND_MEDIA: string; TEXT_CHANNEL: string; TEXT_CHANNEL_DESC: string; TEXT_CHANNEL_TYPE: string; TEXT_CHANNELS: string; TEXT_CHANNELS_MATCHING: FM<"prefix", true>; TEXT_DATA_RATES: string; TEXT_IN_STAGE_A11Y_LABEL: FM<"channelName", false>; TEXT_IN_VOICE_A11Y_LABEL: FM<"channelName", false>; TEXT_IN_VOICE_ONBOARDING_CTA: string; TEXT_IN_VOICE_ONBOARDING_SUBTITLE: string; TEXT_IN_VOICE_ONBOARDING_TITLE: string; TEXT_IN_VOICE_POPOUT_DISABLED: string; TEXT_PERMISSIONS: string; TEXTAREA_ACTIONS_MENU_LABEL: string; TEXTAREA_ACTIONS_SUBMIT_BUTTON: string; TEXTAREA_ACTIONS_SUGGESTIONS: string; TEXTAREA_FORUM_POST_A11Y_LABEL: FM<"channel", false>; TEXTAREA_PLACEHOLDER: FM<"channel", false>; TEXTAREA_TEXT_CHANNEL_A11Y_LABEL: FM<"channel", false>; TEXTAREA_TEXT_DM_A11Y_LABEL: FM<"channel", false>; TEXTAREA_THREAD_A11Y_LABEL: FM<"channel", false>; th: string; THB_NAME: string; THEME: string; THEME_DARK: string; THEME_DISABLED_FOR_CONTRAST_SYNC: FM; THEME_DISABLED_FOR_FORCED_COLORS: string; THEME_LIGHT: string; THEME_MIDNIGHT: string; THEME_PICKER_MESSAGE_AUTHOR_1: string; THEME_PICKER_MESSAGE_AUTHOR_8: string; THEME_PICKER_YOU_CAN_CHANGE_THIS_LATER: string; THEME_SYSTEM: string; THEME_UPDATED: string; THEY_ARE_IN_CHANNEL: FM<[never, "channelHook"], true>; THEY_ARE_IN_CHANNEL_NAME: FM<"channelName", false>; THIS_IS_WHAT_YOU_HAVE: string; THIS_SERVER: string; THIS_SERVER_NAMED: FM<"guildName", false>; THREAD: string; THREAD_A11Y_LABEL: FM<"channelName", false>; THREAD_ACTIONS_MENU_LABEL: string; THREAD_ARCHIVED: string; THREAD_AUTOMOD_ERROR: string; THREAD_BROWSER_ACTIVE: string; THREAD_BROWSER_ACTIVE_COUNT: FM<"count", false>; THREAD_BROWSER_ARCHIVE_TIME: FM<"time", false>; THREAD_BROWSER_ARCHIVED: string; THREAD_BROWSER_ARCHIVED_HEADER: string; THREAD_BROWSER_ARCHIVED_REDESIGN_HEADER: string; THREAD_BROWSER_CREATION_TIME: FM<"time", false>; THREAD_BROWSER_EMPTY_STATE_ACTIVE_HEADER: string; THREAD_BROWSER_EMPTY_STATE_ARCHIVED_HEADER: string; THREAD_BROWSER_EMPTY_STATE_HEADER: string; THREAD_BROWSER_EMPTY_STATE_SUBTEXT_REDESIGN: string; THREAD_BROWSER_FILTER_SETTINGS_TITLE: string; THREAD_BROWSER_FILTER_SETTINGS_VISIBILITY: string; THREAD_BROWSER_JOINED_COUNT: FM<"count", false>; THREAD_BROWSER_JOINED_HEADER: FM<"count", false>; THREAD_BROWSER_LAST_ACTIVE_TIME: FM<"time", false>; THREAD_BROWSER_MESSAGE_PREVIEW: FM<[never, "messageTextHook" | "usernameHook"], true>; THREAD_BROWSER_NO_RECENT_MESSAGES: string; THREAD_BROWSER_OTHER_HEADER: FM<"count", false>; THREAD_BROWSER_PRIVATE: string; THREAD_BROWSER_PRIVATE_HEADER: string; THREAD_BROWSER_PUBLIC: string; THREAD_BROWSER_PUBLIC_HEADER: string; THREAD_BROWSER_ROW_TITLE_A11Y_LABEL: FM<"name", false>; THREAD_BROWSER_STARTED_BY: FM<[never, "authorHook"], true>; THREAD_BROWSER_TIMESTAMP_DAYS: FM<"count", false>; THREAD_BROWSER_TIMESTAMP_DAYS_A11Y_LABEL: FM<"count", false>; THREAD_BROWSER_TIMESTAMP_HOURS: FM<"count", false>; THREAD_BROWSER_TIMESTAMP_HOURS_A11Y_LABEL: FM<"count", false>; THREAD_BROWSER_TIMESTAMP_MINUTES: FM<"count", false>; THREAD_BROWSER_TIMESTAMP_MINUTES_A11Y_LABEL: FM<"count", false>; THREAD_BROWSER_TIMESTAMP_MORE_THAN_MONTH: string; THREAD_BROWSER_TIMESTAMP_MORE_THAN_MONTH_A11Y_LABEL: string; THREAD_BROWSER_TIMESTAMP_MORE_THAN_YEAR: string; THREAD_BROWSER_TIMESTAMP_SECONDS: FM<"count", false>; THREAD_BROWSER_TITLE: string; THREAD_GROUP_A11Y_LABEL: FM<"channelName", false>; THREAD_HEADER_BAR_A11Y_LABEL: string; THREAD_HEADER_NOTICE_ACTIVE_LOCKED: string; THREAD_HEADER_NOTICE_ARCHIVED: string; THREAD_HEADER_NOTICE_JOIN: string; THREAD_HEADER_NOTICE_LOCKED: string; THREAD_INVITABLE_TOGGLE_LABEL: string; THREAD_MEMBER_LIST_EMPTY_STATE_HEADER: string; THREAD_MEMBER_LIST_EMPTY_STATE_SUBTEXT: string; THREAD_MEMBER_WITHOUT_ACCESS: string; THREAD_MESSAGE_COUNT: FM<"count", false>; THREAD_MESSAGE_COUNT_MOBILE: FM<"count", false>; THREAD_MESSAGE_ROLE_DESCRIPTION: string; THREAD_NAME: string; THREAD_PARENT_A11Y_LABEL: FM<"channelName", false>; THREAD_REPLY_SUGGESTION: FM<"count", false>; THREAD_ROLE_MENTION_FAILURE: string; THREAD_SETTINGS: string; THREAD_SETTINGS_UPDATED: string; THREAD_STARTED_BY: FM<[never, "usernameHook"], true>; THREAD_STARTER_MESSAGE_NOT_LOADED: string; THREAD_STARTER_MESSAGE_NOTIFICATION: FM<"threadName" | "username", false>; THREAD_STARTER_MESSAGE_ORIGINAL_MESSAGE: string; THREADS: string; THREE_APPLICATION_SUBSCRIPTION_EXPIRATION_CHANNEL_NOTICE_CONTENT: FM<"a" | "b" | "c", false>; THREE_USERS_TYPING: FM<"a" | "b" | "c", true>; TIERED_TENURE_BADGE_BRONZE: string; TIERED_TENURE_BADGE_DIAMOND: string; TIERED_TENURE_BADGE_EMERALD: string; TIERED_TENURE_BADGE_FIRE: string; TIERED_TENURE_BADGE_GOLD: string; TIERED_TENURE_BADGE_PLATINUM: string; TIERED_TENURE_BADGE_RUBY: string; TIERED_TENURE_BADGE_SILVER: string; TIERED_TNURE_BADGE_BRONZE_TOOLTIP: FM<"date", false>; TIERED_TNURE_BADGE_DIAMOND_TOOLTIP: FM<"date", false>; TIERED_TNURE_BADGE_EMERALD_TOOLTIP: FM<"date", false>; TIERED_TNURE_BADGE_FIRE_TOOLTIP: FM<"date", false>; TIERED_TNURE_BADGE_GOLD_TOOLTIP: FM<"date", false>; TIERED_TNURE_BADGE_PLATINUM_TOOLTIP: FM<"date", false>; TIERED_TNURE_BADGE_RUBY_TOOLTIP: FM<"date", false>; TIERED_TNURE_BADGE_SILVER_TOOLTIP: FM<"date", false>; TIME: string; TIME_OUT: string; TIMEOUT_ERROR: string; TIMEOUT_SUBMIT: string; TIMEOUT_USER: string; TIMEOUT_USER_TITLE: FM<"user", false>; TIP_CREATE_FIRST_SERVER_BODY3: FM; TIP_CREATE_FIRST_SERVER_TITLE3: string; TIP_CREATE_MORE_SERVERS_BODY3: FM; TIP_CREATE_MORE_SERVERS_TITLE3: string; TIP_DIRECT_MESSAGES_BODY3: FM; TIP_DIRECT_MESSAGES_TITLE3: string; TIP_FRIENDS_LIST_BODY3: FM; TIP_FRIENDS_LIST_TITLE3: string; TIP_INSTANT_INVITE_BODY3: FM<["shareIcon", "shareIconHook"], true>; TIP_INSTANT_INVITE_TITLE3: string; TIP_SERVER_SETTINGS_BODY3: FM; TIP_SERVER_SETTINGS_TITLE3: string; TIP_WHOS_ONLINE_BODY3: FM; TIP_WHOS_ONLINE_TITLE3: string; TIP_WRITING_MESSAGES_BODY3: FM<"serverName", true>; TIP_WRITING_MESSAGES_TITLE3: string; TITLE: string; TITLE_BAR_CLOSE_WINDOW: string; TITLE_BAR_FULLSCREEN_WINDOW: string; TITLE_BAR_MAXIMIZE_WINDOW: string; TITLE_BAR_MINIMIZE_WINDOW: string; TOAST_ADD_FRIEND: string; TOAST_ADD_FRIENDS: string; TOAST_COMMAND_COPIED: string; TOAST_FEEDBACK_SENT: string; TOAST_FORUM_POST_ID_COPIED: string; TOAST_FRIEND_INVITES_REVOKED: string; TOAST_FRIEND_REQUEST_ACCEPTED: string; TOAST_FRIEND_REQUEST_IGNORED: string; TOAST_GIF_SAVED: string; TOAST_ID_COPIED: string; TOAST_IMAGE_SAVED: string; TOAST_MESSAGE_COPIED: string; TOAST_MESSAGE_ID_COPIED: string; TOAST_USERNAME_SAVED: string; TOAST_VIDEO_SAVED: string; TOGGLE_CAMERA: string; TOGGLE_DEAFEN: string; TOGGLE_DRAWER: string; TOGGLE_EMOJI_KEYBOARD: string; TOGGLE_MEDIA_KEYBOARD: string; TOGGLE_MEDIA_KEYBOARD_HINT: string; TOGGLE_MICROPHONE: string; TOGGLE_MUTE: string; TOGGLE_SCREENSHARE: string; TOKEN_POPOUT_BODY: string; TOO_MANY_ANIMATED_EMOJI: string; TOO_MANY_ANNOUNCEMENT_THREADS_MESSAGE: string; TOO_MANY_EMOJI: string; TOO_MANY_FORUM_POSTS_MESSAGE: string; TOO_MANY_INVITES_ERROR: FM<[never, "inviteHelpHook" | "inviteListHook"], true>; TOO_MANY_INVITES_ERROR_MEMBER: string; TOO_MANY_MEMBERS_MESSAGE: string; TOO_MANY_MEMBERS_MESSAGE_FORUM_POST: string; TOO_MANY_REACTIONS_ALERT_BODY: string; TOO_MANY_REACTIONS_ALERT_HEADER: string; TOO_MANY_THREADS_MESSAGE: string; TOO_MANY_USER_GUILDS_ALERT_DESCRIPTION: FM<"quantity", false>; TOO_MANY_USER_GUILDS_ALERT_TITLE: string; TOO_MANY_USER_GUILDS_DESCRIPTION: string; TOO_MANY_USER_GUILDS_TITLE_2: FM<"quantity", false>; TOOLTIP_COMMUNITY_FEATURE_DISABLED: string; TOOLTIP_DISCOVERABLE_GUILD_FEATURE_DISABLED: string; TOP_GUILD_EMOJI_BADGE: string; TOTAL_RESULTS: FM<"count", false>; tr: string; TRANSFER: string; TRANSFER_GROUP_OWNERSHIP: string; TRANSFER_OWNERSHIP: string; TRANSFER_OWNERSHIP_ACKNOWLEDGE: FM<"username", true>; TRANSFER_OWNERSHIP_FAILURE_MODAL_TITLE: string; TRANSFER_OWNERSHIP_PROTECTED_GUILD: string; TRANSFER_OWNERSHIP_PROTECTED_GUILD_LINK: FM<"ticketUrl", true>; TRANSFER_OWNERSHIP_PROTECTED_GUILD_LINK_PAUSED: FM<"ticketUrl", true>; TRANSFER_OWNERSHIP_PROTECTED_GUILD_PAUSED: string; TRANSFER_OWNERSHIP_SERVER_SUBSCRIPTION_GUILD: FM<"server_subscription_owner_transfer_article", true>; TRANSFER_OWNERSHIP_SUCCESS: string; TRANSFER_OWNERSHIP_TO_USER_V2: FM<["user", "GuildHook"], true>; TRANSFER_OWNERSHIP_TO_USER_WITH_AKA_V2: FM<["user", "AKAHook" | "GuildHook"], true>; TRANSFER_TO_XBOX: string; TRANSFER_VOICE_TO_DEVICE: string; TRANSFER_VOICE_TO_XBOX: string; TRENDING: string; TRENDING_ARROW_DOWN: string; TRENDING_ARROW_UP: string; TRIAL_EXPIRES: FM<"date", false>; TRUNCATION_MORE: string; TRY_AGAIN: string; TRY_NAME: string; TTS_ALLS: string; TTS_CURRENT: string; TTS_NEVER: string; TURN_CAMERA_OFF_A11Y_LABEL: string; TURN_CAMERA_ON_A11Y_LABEL: string; TURN_OFF_THEIR_VIDEO: string; TURN_ON_THEIR_VIDEO: string; TURN_ON_VIDEO_ANYWAY: string; TURN_ON_VIDEOS_ANYWAY: string; TUTORIAL_CLOSE: string; TWEET_US: string; TWITTER: string; TWO_APPLICATION_SUBSCRIPTION_EXPIRATION_CHANNEL_NOTICE_CONTENT: FM<"a" | "b", false>; TWO_FA: string; TWO_FA_ACTIVATE: string; TWO_FA_APP_NAME_AUTHY: string; TWO_FA_APP_NAME_GOOGLE_AUTHENTICATOR: string; TWO_FA_AUTH_CODE: string; TWO_FA_AUTH_CODE_NO_BACKUP: string; TWO_FA_BACKUP_CODE: string; TWO_FA_BACKUP_CODE_ENTER: string; TWO_FA_BACKUP_CODE_ENTER_WRONG: string; TWO_FA_BACKUP_CODE_HINT: string; TWO_FA_BACKUP_CODE_USED: string; TWO_FA_BACKUP_CODES_BODY: FM; TWO_FA_BACKUP_CODES_LABEL: string; TWO_FA_BACKUP_CODES_NEXT_ACTION: string; TWO_FA_BACKUP_CODES_WARNING: FM; TWO_FA_BACKUP_CODES_WEBAUTHN_WARNING: FM; TWO_FA_CHANGE_ACCOUNT: string; TWO_FA_CONFIRM_BODY: string; TWO_FA_CONFIRM_CONFIRM: string; TWO_FA_CONFIRM_TITLE: string; TWO_FA_CONFIRM_VIEW_BACKUP_CODES_BODY: string; TWO_FA_CONFIRM_VIEW_BACKUP_CODES_INPUT_LABEL: string; TWO_FA_CONFIRM_VIEW_BACKUP_CODES_LABEL: string; TWO_FA_CONFIRM_VIEW_RESEND_EMAIL_PROMPT: string; TWO_FA_CONFIRM_VIEW_RESEND_EMAIL_SUCCESS: string; TWO_FA_CONFIRM_WEBAUTHN_BODY: string; TWO_FA_DESCRIPTION: string; TWO_FA_DISABLE: string; TWO_FA_DISABLED_FOR_SERVER_SUBSCRIPTION_MOD: string; TWO_FA_DISCORD_BACKUP_CODES: FM<"email", false>; TWO_FA_DOWNLOAD_APP_BODY: FM<"authyURL" | "googleAuthURL", true>; TWO_FA_DOWNLOAD_APP_LABEL: string; TWO_FA_DOWNLOAD_CODES: string; TWO_FA_EDIT_DIGIT_A11Y_LABEL: FM<"index" | "value", false>; TWO_FA_ENABLE: string; TWO_FA_ENABLE_SUBHEADER: string; TWO_FA_ENABLED: string; TWO_FA_ENTER_BACKUP_LABEL: string; TWO_FA_ENTER_SMS_TOKEN_LABEL: string; TWO_FA_ENTER_SMS_TOKEN_SENDING: string; TWO_FA_ENTER_SMS_TOKEN_SENT: FM<"phoneNumber", false>; TWO_FA_ENTER_TOKEN_BODY: string; TWO_FA_ENTER_TOKEN_LABEL: string; TWO_FA_ENTER_TOKEN_NO_BACKUP_LABEL: string; TWO_FA_GENERATE_CODES: string; TWO_FA_GENERATE_CODES_CONFIRM_TEXT: string; TWO_FA_GUILD_MFA_WARNING: FM; TWO_FA_GUILD_MFA_WARNING_IOS: string; TWO_FA_GUILD_MFA_WARNING_MESSAGE: string; TWO_FA_GUILD_MFA_WARNING_MESSAGE_WITH_SPACING: FM; TWO_FA_GUILD_MFA_WARNING_RESOLVE_BUTTON: string; TWO_FA_KEY: string; TWO_FA_LOGIN_BODY: string; TWO_FA_LOGIN_FOOTER: string; TWO_FA_LOGIN_LABEL: string; TWO_FA_NOT_VERIFIED: string; TWO_FA_QR_BODY: string; TWO_FA_QR_LABEL: string; TWO_FA_REMOVE: string; TWO_FA_REMOVE_CONFIRMATION: string; TWO_FA_SALES_PITCH: string; TWO_FA_SUCCESS_BODY_MOBILE: string; TWO_FA_SUCCESS_HEADER: string; TWO_FA_SUCCESS_HEADER_MOBILE: string; TWO_FA_TOKEN_REQUIRED: string; TWO_FA_UNKNOWN_ERROR: string; TWO_FA_USE_DESKTOP_APP: string; TWO_FA_VIEW_BACKUP_CODES: string; TWO_FA_VIEW_BACKUP_CODES_ENTER_PASSWORD: string; TWO_FA_VIEW_CODES: string; TWO_FA_VIEW_CODES_SUBMIT: string; TWO_FA_WEBAUTHN_ACTION: string; TWO_FA_WEBAUTHN_ANDROID_REGISTER_CONFIRM: string; TWO_FA_WEBAUTHN_ANDROID_REGISTER_PASSKEY_CM_CONFIRM: string; TWO_FA_WEBAUTHN_ANDROID_REGISTER_PASSKEY_DEVICE_CONFIRM: string; TWO_FA_WEBAUTHN_BODY: string; TWO_FA_WEBAUTHN_CREDENTIAL_OPTIONS: string; TWO_FA_WEBAUTHN_DELETE_CREDENTIAL: string; TWO_FA_WEBAUTHN_DESCRIPTION: string; TWO_FA_WEBAUTHN_INTERACT: string; TWO_FA_WEBAUTHN_INTERACT_INSTRUCTIONS: string; TWO_FA_WEBAUTHN_NAME: string; TWO_FA_WEBAUTHN_NAME_INSTRUCTIONS: string; TWO_FA_WEBAUTHN_REGISTER: string; TWO_FA_WEBAUTHN_REGISTER_CONFIRM: string; TWO_FA_WEBAUTHN_REGISTER_FINISH: string; TWO_FA_WEBAUTHN_REGISTER_INSTRUCTIONS: string; TWO_FA_WEBAUTHN_REGISTER_KEY_PLACEHOLDER_NAME: string; TWO_FA_WEBAUTHN_RENAME: string; TWO_FA_WEBAUTHN_RENAME_CREDENTIAL: string; TWO_FA_WEBAUTHN_RENAME_FORM_NEW_KEY: string; TWO_FA_WEBAUTHN_SHOULD_DO: FM; TWO_FA_WEBAUTHN_SWITCH_TOTP: string; TWO_FA_WEBAUTHN_TITLE: string; TWO_FA_WEBAUTHN_VIEW_KEYS_TITLE: string; TWO_USERS_TYPING: FM<"a" | "b", true>; uk: string; UNABLE_TO_EDIT_IMAGE: FM<"reason", false>; UNABLE_TO_JOIN_CHANNEL_FULL: string; UNABLE_TO_JOIN_CHANNEL_FULL_MODAL_BODY: string; UNABLE_TO_JOIN_CHANNEL_FULL_MODAL_HEADER: string; UNABLE_TO_PROCESS_IMAGE: string; UNARCHIVE: string; UNARCHIVE_FORUM_POST: string; UNARCHIVE_THREAD: string; UNBAN: string; UNBAN_USER_TITLE: FM<"user", false>; UNBLOCK: string; UNBLOCK_TO_JUMP_BODY: FM<"name", false>; UNBLOCK_TO_JUMP_TITLE: string; UNCATEGORIZED: string; UNCLAIMED_ACCOUNT_BODY_2: string; UNCLAIMED_ACCOUNT_TITLE: string; UNDEAFEN: string; UNDO: string; UNFAVORITE_CHANNEL: string; UNFAVORITE_DM: string; UNFAVORITE_GDM: string; UNFAVORITE_ITEM: string; UNFOCUS_PARTICIPANT: string; UNFORMATTED_COMPETING: FM<"name", false>; UNFORMATTED_LISTENING_TO: FM<"name", false>; UNFORMATTED_PLAYING_GAME: FM<"game", false>; UNFORMATTED_STREAMING: FM<"name", false>; UNFORMATTED_WATCHING: FM<"name", false>; UNGROUPED: string; UNHANDLED_LINK_BODY: string; UNHANDLED_LINK_TITLE: string; UNICODE_EMOJI_CATEGORY_SHORTCUT_A11Y_LABEL: string; UNIQUE_USERNAME_EXISTING_FLOW_PROMPT_ITEM_3: FM<"username", false>; UNIQUE_USERNAME_TOGGLE_SUBTITLE: FM<"username", false>; UNIQUE_USERNAME_TOGGLE_TITLE: string; UNKNOWN_CHANNEL: string; UNKNOWN_CHANNEL_PLACEHOLDER: string; UNKNOWN_CHANNEL_UPDATE_DISCORD: string; UNKNOWN_INTEGRATION: string; UNKNOWN_ROLE_PLACEHOLDER: string; UNKNOWN_USER: string; UNKNOWN_USER_MENTION_PLACEHOLDER: string; UNLOCK: string; UNLOCK_CODE: string; UNLOCK_FORUM_POST: string; UNLOCK_THREAD: string; UNLOCK_WITH_NITRO: string; UNMUTE: string; UNMUTE_ALT: string; UNMUTE_CATEGORY: string; UNMUTE_CHANNEL: FM<"name", true>; UNMUTE_CHANNEL_GENERIC: string; UNMUTE_CONVERSATION: string; UNMUTE_FORUM_POST: string; UNMUTE_SERVER: string; UNMUTE_SOUNDBOARD: string; UNMUTE_THEM: string; UNMUTE_THREAD: string; UNNAMED: string; UNPIN: string; UNPIN_CONFIRM: string; UNPIN_MESSAGE: string; UNPIN_MESSAGE_BODY: string; UNPIN_MESSAGE_CONTEXT_MENU_HINT: FM; UNPIN_MESSAGE_FAILED_BODY: string; UNPIN_MESSAGE_FAILED_TITLE: string; UNPIN_MESSAGE_TITLE: string; UNPIN_POST: string; UNPINNED_POST: string; UNREAD_NOTIFICATION_SETTING_NOTICE: string; UNREAD_NOTIFICATION_SETTING_NOTICE_ALL_MESSAGES: string; UNREAD_NOTIFICATION_SETTING_NOTICE_DESCRIPTION: string; UNREAD_NOTIFICATION_SETTING_NOTICE_MENTION_ONLY: string; UNREAD_NOTIFICATION_SETTING_NOTICE_TITLE: string; UNREAD_SETTINGS: string; UNREADS_CONFIRM_MARK_ALL_READ_DESCRIPTION: string; UNREADS_CONFIRM_MARK_ALL_READ_HEADER: string; UNREADS_EMPTY_STATE_HEADER: string; UNREADS_EMPTY_STATE_TIP: string; UNREADS_EMPTY_STATE_TIP_MAC: string; UNREADS_NO_NOTIFICATIONS_DIVIDER: string; UNREADS_OLD_CHANNELS_DIVIDER: string; UNREADS_TAB_LABEL: string; UNREADS_TUTORIAL_BODY: string; UNREADS_TUTORIAL_HEADER: string; UNREADS_VIEW_CHANNEL: string; UNSTABLE_CONNECTION: string; UNSTABLE_CONNECTION_REASON: FM<"username", false>; UNSTABLE_CONNECTION_REASON_2: string; UNSUPPORTED_BROWSER: string; UNSUPPORTED_BROWSER_BODY: string; UNSUPPORTED_BROWSER_DETAILS: string; UNSUPPORTED_BROWSER_TITLE: string; UNVERIFIED_EMAIL_TITLE: string; UPDATE: string; UPDATE_AVAILABLE: string; UPDATE_BADGE_HEADER: string; UPDATE_COMMUNICATION_NOTIFICATIONS_CONFIRMATION: string; UPDATE_COMMUNICATION_NOTIFICATIONS_HEADER: string; UPDATE_COMMUNICATION_NOTIFICATIONS_SUBHEADER: string; UPDATE_DOWNLOADED: string; UPDATE_DURING_CALL_BODY: string; UPDATE_DURING_CALL_CONTINUE: string; UPDATE_DURING_CALL_TITLE: string; UPDATE_MANUALLY: string; UPDATE_PASSWORD: string; UPDATED: string; UPLOAD: string; UPLOAD_AREA_ALWAYS_COMPRESS: string; UPLOAD_AREA_ALWAYS_COMPRESS_DESC: string; UPLOAD_AREA_CANCEL_ALL: string; UPLOAD_AREA_FILENAME: string; UPLOAD_AREA_HELP: string; UPLOAD_AREA_INVALID_FILE_TYPE_EMPTY: string; UPLOAD_AREA_INVALID_FILE_TYPE_HELP: string; UPLOAD_AREA_INVALID_FILE_TYPE_TITLE: string; UPLOAD_AREA_LEAVE_A_COMMENT: string; UPLOAD_AREA_NEW_THREAD_HELP: string; UPLOAD_AREA_OPTIONAL: string; UPLOAD_AREA_PREMIUM_TIER_UPSELL_BODY_LINE_2: FM<"premiumMaxSize" | "premiumPlan", false>; UPLOAD_AREA_PREMIUM_UPSELL_BODY_LINE_1: FM<"maxSize", false>; UPLOAD_AREA_PREMIUM_UPSELL_BODY_LINE_1_PREMIUM_TIER_0: FM<"maxSize", false>; UPLOAD_AREA_PREMIUM_UPSELL_BODY_LINE_1_PREMIUM_TIER_1: FM<"maxSize", false>; UPLOAD_AREA_PREMIUM_UPSELL_BODY_LINE_2: FM<"premiumMaxSize", false>; UPLOAD_AREA_PREMIUM_UPSELL_BODY_LINE_2_INCREASE: string; UPLOAD_AREA_PREMIUM_UPSELL_BODY_LINE_3: FM<"premiumMaxSize", false>; UPLOAD_AREA_PREMIUM_UPSELL_TIER_2: string; UPLOAD_AREA_PREMIUM_UPSELL_TIER_2_V2: FM; UPLOAD_AREA_PREMIUM_UPSELL_WITH_SIZE_AND_ACTION: FM<"premiumMaxSize", true>; UPLOAD_AREA_PREMIUM_UPSELL_WITH_SIZE_AND_ACTION_V2: FM<"planName" | "premiumMaxSize", true>; UPLOAD_AREA_REQUEST_LIMIT_HELP: FM<"maxSize", false>; UPLOAD_AREA_TITLE_NO_CONFIRMATION: string; UPLOAD_AREA_TOO_LARGE_HELP: FM<"maxSize", false>; UPLOAD_AREA_TOO_LARGE_HELP_MOBILE: FM<"maxSize", false>; UPLOAD_AREA_TOO_LARGE_HELP_PREMIUM_TIER_1: FM<"maxSize", false>; UPLOAD_AREA_TOO_LARGE_TITLE: string; UPLOAD_AREA_TOO_LARGE_TITLE_V2: string; UPLOAD_AREA_UPLOAD_FAILED_HELP: FM; UPLOAD_AREA_UPLOAD_FAILED_RETRY_HELP: string; UPLOAD_AREA_UPLOAD_FAILED_TITLE: string; UPLOAD_BACKGROUND: string; UPLOAD_COMPLETE: string; UPLOAD_DEBUG_LOG_FAILURE: string; UPLOAD_DEBUG_LOG_FAILURE_HEADER: string; UPLOAD_DEBUG_LOG_FAILURE_NO_FILE: string; UPLOAD_DEBUG_LOG_FAILURE_PROGRESS: string; UPLOAD_DEBUG_LOG_FAILURE_READ: string; UPLOAD_DEBUG_LOG_FAILURE_UPLOAD: string; UPLOAD_DEBUG_LOG_SUCCESS: string; UPLOAD_DEBUG_LOG_SUCCESS_HEADER: string; UPLOAD_DEBUG_LOGS: string; UPLOAD_EMOJI: string; UPLOAD_EMOJI_INSTRUCTIONS: string; UPLOAD_ERROR_DESCRIPTION: string; UPLOAD_ERROR_RATE_LIMIT: string; UPLOAD_ERROR_RESIZE_GIF: string; UPLOAD_ERROR_RETRY: string; UPLOAD_ERROR_TITLE: string; UPLOAD_ERROR_TOO_LARGE: string; UPLOAD_ERROR_TOO_MANY_ANIMATED_EMOJI: string; UPLOAD_ERROR_TOO_MANY_EMOJI: string; UPLOAD_ERROR_WRONG_TYPE: string; UPLOAD_FILE_SUBTEXT: FM<[never, "icon"], true>; UPLOAD_IMAGE: string; UPLOAD_IMAGE_BODY: string; UPLOAD_OPEN_FILE_FAILED: FM<"file", false>; UPLOAD_QUEUED: string; UPLOAD_TO: FM<"destination", true>; UPLOAD_TO_NEW_POST: string; UPLOAD_TO_NEW_THREAD: string; UPLOADED_BY: string; UPLOADING_FILES: FM<"count", false>; UPLOADING_FILES_FAILED: FM<"count", false>; UPLOADING_FILES_TITLE: string; UPLOADING_LOADING_TEXT: string; URF_LANDING_PAGE_REPORT_MESSAGE_BUTTON: string; URF_LANDING_PAGE_REPORT_USER_PROFILE_BUTTON: string; URF_LANDING_PAGE_SUBTITLE: FM<"supportURL", true>; URF_LANDING_PAGE_TITLE: string; USAGE_STATISTICS_DISABLE_MODAL_BODY: string; USAGE_STATISTICS_DISABLE_MODAL_CANCEL: string; USAGE_STATISTICS_DISABLE_MODAL_CONFIRM: string; USAGE_STATISTICS_DISABLE_MODAL_TITLE: string; USD_NAME: string; USE_APPLICATION_COMMANDS: string; USE_APPLICATION_COMMANDS_CHANNEL_DESCRIPTION: string; USE_APPLICATION_COMMANDS_GUILD_DESCRIPTION: string; USE_EMAIL: string; USE_EMBEDDED_ACTIVITIES: string; USE_EXTERNAL_APPS: string; USE_EXTERNAL_EMOJIS: string; USE_EXTERNAL_EMOJIS_DESCRIPTION: string; USE_EXTERNAL_SOUNDS: string; USE_EXTERNAL_STICKERS: string; USE_EXTERNAL_STICKERS_DESCRIPTION: string; USE_PHONE: string; USE_SOUNDBOARD: string; USE_SPEAKER: string; USE_THREADS_SIDEBAR_DESCRIPTION: string; USE_VAD: string; USE_VAD_DESCRIPTION: string; USER: string; USER_ACTIONS_MENU_LABEL: string; USER_ACTIVITY_ACTION_ASK_TO_JOIN: string; USER_ACTIVITY_ACTION_ASK_TO_JOIN_USER: FM<"name", false>; USER_ACTIVITY_ACTION_DOWNLOAD_APP: string; USER_ACTIVITY_ACTION_INVITE_TO_JOIN: string; USER_ACTIVITY_ACTION_INVITE_TO_LISTEN_ALONG: string; USER_ACTIVITY_ACTION_NOTIFY_ME: string; USER_ACTIVITY_ALREADY_PLAYING: string; USER_ACTIVITY_ALREADY_SYNCING: string; USER_ACTIVITY_CANNOT_JOIN_SELF: string; USER_ACTIVITY_CANNOT_PLAY_SELF: string; USER_ACTIVITY_CANNOT_SYNC_SELF: string; USER_ACTIVITY_CHAT_INVITE_EDUCATION: FM<"game", true>; USER_ACTIVITY_CLEAR_GAME_HISTORY: string; USER_ACTIVITY_CLEAR_HISTORY_DISCLAIMER: FM<[never, "settingsHook"], true>; USER_ACTIVITY_CLEAR_LISTENING_HISTORY: string; USER_ACTIVITY_CLEAR_WATCH_HISTORY: string; USER_ACTIVITY_CONNECT_PLATFORM: FM<"platform", false>; USER_ACTIVITY_CURRENTLY: string; USER_ACTIVITY_DELETE_HISTORY_ERROR: string; USER_ACTIVITY_HEADER_COMPETING: FM<"name", false>; USER_ACTIVITY_HEADER_LISTENING: FM<"name", false>; USER_ACTIVITY_HEADER_LIVE_ON_PLATFORM: FM<"platform", false>; USER_ACTIVITY_HEADER_PLAYING: string; USER_ACTIVITY_HEADER_PLAYING_A_GAME: string; USER_ACTIVITY_HEADER_PLAYING_ON_PLATFORM: FM<"platform", false>; USER_ACTIVITY_HEADER_STREAMING_TO_DM: string; USER_ACTIVITY_HEADER_STREAMING_TO_GUILD: FM<"server", false>; USER_ACTIVITY_HEADER_WATCHING: FM<"name", false>; USER_ACTIVITY_IN_A_CALL: string; USER_ACTIVITY_INVITE_REQUEST_REQUESTED: FM<"game" | "username", true>; USER_ACTIVITY_JOIN_CALL: string; USER_ACTIVITY_JOINING: string; USER_ACTIVITY_LISTEN_ALONG: string; USER_ACTIVITY_LISTEN_ALONG_DESCRIPTION: FM<"name", false>; USER_ACTIVITY_LISTENING_ALBUM: FM<["album", "albumHook"], true>; USER_ACTIVITY_LISTENING_ARTISTS: FM<["artists", "artistsHook"], true>; USER_ACTIVITY_LISTENING_TO: string; USER_ACTIVITY_MANAGE_PRIVACY: string; USER_ACTIVITY_MANAGE_SERVER_PRIVACY: string; USER_ACTIVITY_NOT_DETECTED: FM<"name", false>; USER_ACTIVITY_PLAY_ON_PLATFORM: FM<"platform", false>; USER_ACTIVITY_PLAYING: string; USER_ACTIVITY_RECENTLY_LISTENED_TO: string; USER_ACTIVITY_RECENTLY_PLAYED: string; USER_ACTIVITY_RECENTLY_WATCHED: string; USER_ACTIVITY_RESPOND_NOPE: string; USER_ACTIVITY_RESPOND_YEAH: string; USER_ACTIVITY_STAGE_STATE_SIZE: FM<"numListeners" | "numSpeakers", false>; USER_ACTIVITY_STATE_SIZE: FM<"count" | "max", false>; USER_ACTIVITY_STREAMING: string; USER_ACTIVITY_TIMESTAMP_END: FM<"hours" | "minutes" | "seconds", false>; USER_ACTIVITY_TIMESTAMP_END_SIMPLE: FM<"timeDelta", false>; USER_ACTIVITY_TIMESTAMP_START: FM<"hours" | "minutes" | "seconds", false>; USER_ACTIVITY_TIMESTAMP_START_SIMPLE: FM<"timeDelta", false>; USER_ACTIVITY_USER_JOIN: FM<"username", true>; USER_ACTIVITY_USER_JOIN_HINT: string; USER_ACTIVITY_USER_PLAYING_FOR_DAYS: FM<"time", false>; USER_ACTIVITY_USER_PLAYING_FOR_HOURS: FM<"time", false>; USER_ACTIVITY_USER_PLAYING_FOR_MINUTES: FM<"time", false>; USER_ACTIVITY_USER_PLAYING_FOR_SECONDS: FM<"time", false>; USER_ACTIVITY_VIEW_ALL_ACTIVITY: string; USER_ACTIVITY_WATCH: string; USER_ACTIVITY_WATCH_ALONG: string; USER_ACTIVITY_WATCHING: string; USER_DIRECT_MESSAGE_FILTERS: string; USER_DISCONNECTED_SUBTEXT: FM<"username", false>; USER_DM_SEARCH_TERM_DIRECT_MESSAGES: string; USER_DM_SEARCH_TERM_DM: string; USER_DM_SETTINGS: string; USER_DM_SETTINGS_DESCRIPTION: string; USER_DM_SETTINGS_HELP: string; USER_DM_SETTINGS_QUESTION: string; USER_DM_SETTINGS_TITLE: string; USER_DM_SPAM_FILTER: string; USER_DM_SPAM_FILTER_DISABLED: string; USER_DM_SPAM_FILTER_DISABLED_HELP: string; USER_DM_SPAM_FILTER_FRIENDS_AND_NON_FRIENDS: string; USER_DM_SPAM_FILTER_FRIENDS_AND_NON_FRIENDS_HELP: string; USER_DM_SPAM_FILTER_HELP: FM<"appealLink", true>; USER_DM_SPAM_FILTER_NON_FRIENDS: string; USER_DM_SPAM_FILTER_NON_FRIENDS_HELP: string; USER_DROPS_SETTINGS: string; USER_DROPS_SETTINGS_DROPS_OPTED_OUT: string; USER_EXPLICIT_CONTENT_FILTER: string; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_ASSET_ALT: string; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_CONTENT: string; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_CONTENT_CLICK_TO_LEARN: FM<"helpdeskArticle", true>; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_CONTENT_MOBILE_V2: string; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_CONTENT_V2: FM<"helpdeskArticle", true>; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_HEADER: string; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_HEADER_V2: string; USER_EXPLICIT_CONTENT_FILTER_COACHMARK_REDIRECT: string; USER_EXPLICIT_CONTENT_FILTER_DISABLED: string; USER_EXPLICIT_CONTENT_FILTER_DISABLED_HELP: string; USER_EXPLICIT_CONTENT_FILTER_DISABLED_HELP_V2: string; USER_EXPLICIT_CONTENT_FILTER_DISABLED_V2: string; USER_EXPLICIT_CONTENT_FILTER_FRIENDS_AND_NON_FRIENDS: string; USER_EXPLICIT_CONTENT_FILTER_FRIENDS_AND_NON_FRIENDS_HELP: string; USER_EXPLICIT_CONTENT_FILTER_FRIENDS_AND_NON_FRIENDS_HELP_V2: string; USER_EXPLICIT_CONTENT_FILTER_FRIENDS_AND_NON_FRIENDS_V2: string; USER_EXPLICIT_CONTENT_FILTER_HELP: string; USER_EXPLICIT_CONTENT_FILTER_HELP_V2: string; USER_EXPLICIT_CONTENT_FILTER_HELP_V3: FM<"appealLink", true>; USER_EXPLICIT_CONTENT_FILTER_NON_FRIENDS: string; USER_EXPLICIT_CONTENT_FILTER_NON_FRIENDS_HELP: string; USER_EXPLICIT_CONTENT_FILTER_NON_FRIENDS_HELP_V2: string; USER_EXPLICIT_CONTENT_FILTER_NON_FRIENDS_V2: string; USER_EXPLICIT_CONTENT_FILTER_V2: string; USER_HAS_BEEN_BLOCKED: string; USER_HAS_BEEN_UNBLOCKED: string; USER_KEYWORD_FILTERS_DESCRIPTION_SEARCHABLE: string; USER_KEYWORD_FILTERS_DESCRIPTION_V2: FM<"learnMoreLink", true>; USER_KEYWORD_FILTERS_SEARCH_TERM_KEYWORD: string; USER_KEYWORD_FILTERS_TITLE: string; USER_KEYWORD_FILTERS_TOGGLE_TITLE: string; USER_KEYWORD_FILTERS_TOGGLE_TITLE_V2: string; USER_MANAGEMENT: string; USER_MORE_ACTIONS_MENU_LABEL: string; USER_POPOUT_ABOUT_ME: string; USER_POPOUT_MESSAGE: string; USER_POPOUT_PRONOUNS: string; USER_POPOUT_WUMPUS_TOOLTIP: string; USER_PROFILE_ABOUT_ME: string; USER_PROFILE_ACTION_MENU_A11Y_LABEL: string; USER_PROFILE_ACTIVITY: string; USER_PROFILE_ACTIVITY_ACTION_MENU_A11Y_LABEL: string; USER_PROFILE_ACTIVITY_LISTENING_TO: FM<"name", true>; USER_PROFILE_ACTIVITY_RECENT_ACTIVITY: string; USER_PROFILE_ADD_FRIEND: string; USER_PROFILE_ADD_ROLE: string; USER_PROFILE_AUDIO: string; USER_PROFILE_AVATAR_REACT_COACHMARK_BODY: string; USER_PROFILE_AVATAR_REACT_COACHMARK_TITLE: string; USER_PROFILE_BLOCKED_MODAL_BODY_CONFIRMATION: string; USER_PROFILE_BLOCKED_PANEL_BODY_CONFIRMATION: string; USER_PROFILE_BLOCKED_PANEL_BODY_USERNAME: FM<"username", true>; USER_PROFILE_BLOCKED_SPEED_BUMP_ACTION_SHEET_BODY: FM<"username", true>; USER_PROFILE_BLOCKED_SPEED_BUMP_ACTION_SHEET_BUTTON: string; USER_PROFILE_BLOCKED_SPEED_BUMP_ACTION_SHEET_NOTIFIED: string; USER_PROFILE_BLOCKED_SPEED_BUMP_ACTION_SHEET_STILL_BLOCKED: string; USER_PROFILE_BLOCKED_SPEED_BUMP_ACTION_SHEET_TITLE: string; USER_PROFILE_DISCORD_MEMBER_SINCE: string; USER_PROFILE_FAILURE_TO_OPEN_MESSAGE: string; USER_PROFILE_GO_TO_DM: string; USER_PROFILE_GO_TO_DMS: string; USER_PROFILE_HEADER_A11Y_ANIMATE: string; USER_PROFILE_HEADER_A11Y_LABEL: FM<"username", false>; USER_PROFILE_IN_GUILD_DETAILS: FM<"guildName", false>; USER_PROFILE_INCOMING_FRIEND_REQUEST_DIALOG_BODY: string; USER_PROFILE_LOAD_ERROR: string; USER_PROFILE_MEMBER_SINCE: string; USER_PROFILE_MENU_HELP: string; USER_PROFILE_MESSAGE: string; USER_PROFILE_MOD_ACTIONS: string; USER_PROFILE_MODAL: string; USER_PROFILE_MUTUAL_FRIENDS: FM<"count", false>; USER_PROFILE_MUTUAL_FRIENDS_PLACEHOLDER: string; USER_PROFILE_MUTUAL_GUILDS: FM<"count", false>; USER_PROFILE_MUTUAL_GUILDS_PLACEHOLDER: string; USER_PROFILE_NO_MUTUAL_FRIENDS: string; USER_PROFILE_NO_MUTUAL_SERVERS: string; USER_PROFILE_NOTIFICATION_BODY: string; USER_PROFILE_PENDING: string; USER_PROFILE_PROFILES_REACT_COACHMARK_BODY: string; USER_PROFILE_PROFILES_REACT_COACHMARK_TITLE: string; USER_PROFILE_PRONOUNS: string; USER_PROFILE_REACTED_TO_ACTIVITY: FM<"username", false>; USER_PROFILE_REACTED_TO_AVATAR: FM<"username", false>; USER_PROFILE_REACTED_TO_STATUS: FM<"username", false>; USER_PROFILE_REACTION_FAILED_TO_SEND: string; USER_PROFILE_REACTION_SENT: string; USER_PROFILE_RECENT_ACTIVITY_EDUCATION_TOOLTIP_BODY: string; USER_PROFILE_RECENT_ACTIVITY_EDUCATION_TOOLTIP_HEADER: string; USER_PROFILE_RECENT_ACTIVITY_INFORMATION_TOOLTIP: string; USER_PROFILE_REMOVE_ROLE: string; USER_PROFILE_REPLIED_TO_ACTIVITY: FM<"username", false>; USER_PROFILE_REPLIED_TO_AVATAR: FM<"username", false>; USER_PROFILE_REPLIED_TO_STATUS: FM<"username", false>; USER_PROFILE_REPLY: string; USER_PROFILE_REPLY_FAILED_TO_SEND: string; USER_PROFILE_REPLY_SENT: string; USER_PROFILE_REPLY_TO_ACTIVITY_PLACEHOLDER: FM<"username", false>; USER_PROFILE_REPLY_TO_AVATAR_PLACEHOLDER: FM<"username", false>; USER_PROFILE_REPLY_TO_STATUS_PLACEHOLDER: FM<"username", false>; USER_PROFILE_SEND_REACTION: string; USER_PROFILE_SENDING: string; USER_PROFILE_STATUS_REACT_COACHMARK_BODY: string; USER_PROFILE_STATUS_REACT_COACHMARK_TITLE: string; USER_PROFILE_TOAST_VIEW: FM; USER_PROFILE_VIDEO: string; USER_PROFILE_VIEW_FULL_BIO: string; USER_PROFILE_VOLUME: string; USER_RECENT_ACTIVITY_LEARN_MORE: FM<[never, "learnMoreHook"], true>; USER_RECENT_ACTIVITY_ONLY_YOU_CAN_SEE: string; USER_RECENT_ACTIVITY_SHARE_MULTIPLE_PLACES: FM<"helpdeskArticle", true>; USER_RECENT_ACTIVITY_SHARE_SERVER: FM<"helpdeskArticle", true>; USER_SETTING_DM_SPAM_FILTER_ALL_TITLE: string; USER_SETTING_DM_SPAM_FILTER_DISABLED_TITLE: string; USER_SETTING_NOTIFICATION_NOT_ENABLED_PROMPT: string; USER_SETTING_NOTIFICATIONS_ENABLE_BURST_REACTION_NOTIFICATIONS_LABEL: string; USER_SETTINGS: string; USER_SETTINGS_ABOUT_ME: string; USER_SETTINGS_ABOUT_ME_DETAILS: string; USER_SETTINGS_ABOUT_ME_EDIT_A11Y_HINT: string; USER_SETTINGS_ABOUT_ME_EDIT_A11Y_LABEL: string; USER_SETTINGS_ABOUT_ME_HINT: string; USER_SETTINGS_ACCOUNT_ADD_EMAIL_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_ADD_PHONE_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CHECK_SPAM: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_COMPLETE_DESCRIPTION: FM<"email", true>; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_COMPLETE_TITLE: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_CODE_SENT: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_DESCRIPTION: FM<"oldEmail", true>; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_PROMPT: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_RESEND: FM; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_SUBTITLE: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_TITLE: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_TITLE_DESKTOP: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_PROMPT: FM<"email", false>; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_PROMPT_DESKTOP: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_SEND_BUTTON: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_SEND_DESCRIPTION_NO_LINK: FM<"oldEmail", true>; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_SEND_TITLE: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_TITLE: string; USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_TITLE_DESKTOP: string; USER_SETTINGS_ACCOUNT_CHANGE_PASSWORD_PROMPT_DESKTOP: string; USER_SETTINGS_ACCOUNT_CHANGE_PASSWORD_TITLE_DESKTOP: string; USER_SETTINGS_ACCOUNT_CHANGE_USERNAME_PROMPT_DESKTOP: string; USER_SETTINGS_ACCOUNT_CHANGE_USERNAME_TITLE: string; USER_SETTINGS_ACCOUNT_CHANGE_USERNAME_TITLE_DESKTOP: string; USER_SETTINGS_ACCOUNT_EDIT_DISPLAYNAME_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_EDIT_EMAIL_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_EDIT_PHONE_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_EDIT_USERNAME_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_EMAIL_DESCRIPTION_NO_LINK: FM; USER_SETTINGS_ACCOUNT_HIDE_EMAIL_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_HIDE_PHONE_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_PASSWORD_AND_AUTHENTICATION: string; USER_SETTINGS_ACCOUNT_REMOVAL_DESCRIPTION: string; USER_SETTINGS_ACCOUNT_REMOVAL_DESCRIPTION_UNCLAIMED: string; USER_SETTINGS_ACCOUNT_REMOVAL_SECTION: string; USER_SETTINGS_ACCOUNT_REMOVE_PHONE_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_REMOVE_PHONE_NUMBER_BUTTON: string; USER_SETTINGS_ACCOUNT_REMOVE_PHONE_NUMBER_TITLE: string; USER_SETTINGS_ACCOUNT_REMOVE_PHONE_NUMBER_WARNING_BODY: string; USER_SETTINGS_ACCOUNT_REMOVE_PHONE_NUMBER_WARNING_TITLE: string; USER_SETTINGS_ACCOUNT_REMOVE_PHONE_SMS_BACKUP_WARNING: string; USER_SETTINGS_ACCOUNT_REVEAL_EMAIL_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_REVEAL_PHONE_A11Y_LABEL: string; USER_SETTINGS_ACCOUNT_VERIFY_PASSWORD_DESCRIPTION: string; USER_SETTINGS_ACCOUNT_VERIFY_PASSWORD_FORGOT: FM<"passwordResetURL", true>; USER_SETTINGS_ACCOUNT_VERIFY_PASSWORD_SUBTITLE: string; USER_SETTINGS_ACCOUNT_VERIFY_PASSWORD_TITLE: string; USER_SETTINGS_ACCOUNT_VERIFY_PASSWORD_TITLE_IN_TITLE_CASE: string; USER_SETTINGS_ACTIONS_MENU_LABEL: string; USER_SETTINGS_ADD_ANIMATED_AVATAR: string; USER_SETTINGS_ADD_BANNER: string; USER_SETTINGS_ADD_BANNER_SPECS: string; USER_SETTINGS_ADD_EMAIL_CLAIM: string; USER_SETTINGS_ADD_STATUS: string; USER_SETTINGS_ANIMATED_AVATAR_UPSELL: string; USER_SETTINGS_ANIMATED_AVATAR_UPSELL_DESCRIPTION: string; USER_SETTINGS_APPEARANCE_CHANNEL_LIST_LAYOUT: string; USER_SETTINGS_APPEARANCE_CHANNEL_LIST_LAYOUT_COMPACT: string; USER_SETTINGS_APPEARANCE_CHANNEL_LIST_LAYOUT_COZY: string; USER_SETTINGS_APPEARANCE_CHANNEL_LIST_LAYOUT_HYBRID: string; USER_SETTINGS_APPEARANCE_CHANNEL_LIST_PREVIEWS_ALL: string; USER_SETTINGS_APPEARANCE_CHANNEL_LIST_PREVIEWS_NONE: string; USER_SETTINGS_APPEARANCE_GRADIENT_THEME_TITLE: string; USER_SETTINGS_APPEARANCE_IN_APP_ICON_TITLE: string; USER_SETTINGS_APPEARANCE_PREVIEW_MESSAGE_1: string; USER_SETTINGS_APPEARANCE_PREVIEW_MESSAGE_2_DARK: string; USER_SETTINGS_APPEARANCE_PREVIEW_MESSAGE_2_LIGHT: string; USER_SETTINGS_APPEARANCE_PREVIEW_MESSAGE_3: string; USER_SETTINGS_APPEARANCE_PREVIEW_MESSAGE_4: string; USER_SETTINGS_APPEARANCE_PREVIEW_MESSAGE_5: string; USER_SETTINGS_APPEARANCE_PREVIEW_THEME_TITLE: string; USER_SETTINGS_APPEARANCE_PREVIEW_THEMES_TITLE: string; USER_SETTINGS_APPEARANCE_ZOOM_TIP: FM<"modKey", false>; USER_SETTINGS_AUTOMATIC_GAIN_CONTROL: string; USER_SETTINGS_AVAILABLE_CODES: string; USER_SETTINGS_AVATAR: string; USER_SETTINGS_AVATAR_DECORATION: string; USER_SETTINGS_AVATAR_SPECS: string; USER_SETTINGS_BANNER_A11Y_LABEL: string; USER_SETTINGS_BANNER_COLOR_TITLE: string; USER_SETTINGS_BLOCKED_USERS: string; USER_SETTINGS_BLOCKED_USERS_EMPTY: string; USER_SETTINGS_BLOCKED_USERS_HEADER: FM<"numberOfBlockedUsers", false>; USER_SETTINGS_BLOCKED_USERS_UNBLOCKBUTTON: string; USER_SETTINGS_CACHES_CLEARED: string; USER_SETTINGS_CACHES_WRITTEN: string; USER_SETTINGS_CHANGE_AVATAR: string; USER_SETTINGS_CHANGE_AVATAR_DECORATION: string; USER_SETTINGS_CHANGE_PROFILE_EFFECT: string; USER_SETTINGS_CHOOSE_FROM_LIBRARY: FM; USER_SETTINGS_CLOSE_BUTTON: string; USER_SETTINGS_CONFIRM_LOGOUT: string; USER_SETTINGS_CONTACT_DISCOVERY_TITLE: string; USER_SETTINGS_COPIED: string; USER_SETTINGS_CUSTOMIZATION_UPGRADE_UPSELL: string; USER_SETTINGS_CUSTOMIZATION_UPSELL: string; USER_SETTINGS_CUSTOMIZE_PROFILE_EXAMPLE_BUTTON: string; USER_SETTINGS_DELETE_AVATAR: string; USER_SETTINGS_DISABLE_ADVANCED_VOICE_ACTIVITY: string; USER_SETTINGS_DISABLE_NOISE_SUPPRESSION: string; USER_SETTINGS_DISABLE_STREAM_PREVIEWS: string; USER_SETTINGS_DISABLE_STREAM_PREVIEWS_DESC: string; USER_SETTINGS_DISPLAY_NAME_TITLE: string; USER_SETTINGS_EDIT_ACCOUNT_PASSWORD_LABEL: string; USER_SETTINGS_EDIT_ACCOUNT_TAG: string; USER_SETTINGS_EDIT_PROFILE: string; USER_SETTINGS_EDIT_PROFILE_GENERIC_ERROR: string; USER_SETTINGS_EDIT_STATUS: string; USER_SETTINGS_EDIT_USER_PROFILE: string; USER_SETTINGS_EMAIL_CATEGORY_COMMUNICATION: string; USER_SETTINGS_EMAIL_CATEGORY_COMMUNICATION_SUBLABEL: string; USER_SETTINGS_EMAIL_CATEGORY_RECOMMENDATIONS_AND_EVENTS: string; USER_SETTINGS_EMAIL_CATEGORY_RECOMMENDATIONS_AND_EVENTS_SUBLABEL: string; USER_SETTINGS_EMAIL_CATEGORY_SOCIAL: string; USER_SETTINGS_EMAIL_CATEGORY_SOCIAL_SUBLABEL: string; USER_SETTINGS_EMAIL_CATEGORY_TIPS: string; USER_SETTINGS_EMAIL_CATEGORY_TIPS_SUBLABEL: string; USER_SETTINGS_EMAIL_CATEGORY_UPDATES_AND_ANNOUNCEMENTS: string; USER_SETTINGS_EMAIL_CATEGORY_UPDATES_AND_ANNOUNCEMENTS_SUBLABEL: string; USER_SETTINGS_EMAIL_NOTIFICATIONS: string; USER_SETTINGS_EMAIL_NOTIFICATIONS_UNSUB_MARKETING: string; USER_SETTINGS_EMAIL_NOTIFICATIONS_UNSUB_MARKETING_DESCRIPTION: string; USER_SETTINGS_ENTER_PASSWORD_VIEW_CODES: string; USER_SETTINGS_EXACT_SEARCH_RESULT_COUNT: string; USER_SETTINGS_EXACT_SEARCH_RESULT_COUNT_DESCRIPTION: string; USER_SETTINGS_GAMES_INSTALL_LOCATION: string; USER_SETTINGS_GAMES_INSTALL_LOCATION_ADD: string; USER_SETTINGS_GAMES_INSTALL_LOCATION_MAKE_DEFAULT: string; USER_SETTINGS_GAMES_INSTALL_LOCATION_NAME: string; USER_SETTINGS_GAMES_INSTALL_LOCATION_REMOVE: string; USER_SETTINGS_GAMES_INSTALL_LOCATION_SPACE: FM<"available" | "total", false>; USER_SETTINGS_GAMES_INSTALL_LOCATIONS: string; USER_SETTINGS_GAMES_REMOVE_LOCATION_BODY: string; USER_SETTINGS_GAMES_SHORTCUTS_DESKTOP: string; USER_SETTINGS_GAMES_SHORTCUTS_DESKTOP_NOTE: string; USER_SETTINGS_GAMES_SHORTCUTS_START_MENU: string; USER_SETTINGS_GAMES_SHORTCUTS_START_MENU_NOTE: string; USER_SETTINGS_GUILD_ROLE_SUBSCRIPTION_CANCEL_TITLE: string; USER_SETTINGS_HYPESQUAD: string; USER_SETTINGS_KEYBIND_ENABLE_DISABLE: string; USER_SETTINGS_KEYBIND_SWITCH_SERVER_SETTINGS_SECTION: string; USER_SETTINGS_KEYBIND_VOICE_CHANNEL_RESULTS: string; USER_SETTINGS_KEYBINDS_ACTION: string; USER_SETTINGS_KEYBINDS_CHAT_SECTION_TITLE: string; USER_SETTINGS_KEYBINDS_DEFAULT_KEYBINDS_TITLE: string; USER_SETTINGS_KEYBINDS_DND_DESCRIPTION: string; USER_SETTINGS_KEYBINDS_DND_SECTION_TITLE: string; USER_SETTINGS_KEYBINDS_KEYBIND: string; USER_SETTINGS_KEYBINDS_MESSAGE_DESCRIPTION: string; USER_SETTINGS_KEYBINDS_MESSAGE_SECTION_TITLE: string; USER_SETTINGS_KEYBINDS_MISCELLANEOUS_SECTION_TITLE: string; USER_SETTINGS_KEYBINDS_NAVIGATION_SECTION_TITLE: string; USER_SETTINGS_KEYBINDS_NO_VOICE_CHANNEL_SELECTED: string; USER_SETTINGS_KEYBINDS_SEARCH_NO_RESULTS_FOUND: string; USER_SETTINGS_KEYBINDS_SEARCH_VOICE: string; USER_SETTINGS_KEYBINDS_SELECT_VOICE_CHANNEL: string; USER_SETTINGS_KEYBINDS_SHOW_LIST_TITLE: string; USER_SETTINGS_KEYBINDS_SWITCH_TO_VOICE_CHANNEL_LABEL: string; USER_SETTINGS_KEYBINDS_VOICE_AND_VIDEO_SECTION_TITLE: string; USER_SETTINGS_KEYBINDS_VOICE_CHANNEL_DISCONNECT_LABEL: string; USER_SETTINGS_LABEL_CURRENT_PASSWORD: string; USER_SETTINGS_LABEL_DISCRIMINATOR: string; USER_SETTINGS_LABEL_EMAIL: string; USER_SETTINGS_LABEL_PHONE_NUMBER: string; USER_SETTINGS_LABEL_USERNAME: string; USER_SETTINGS_LINUX_SETTINGS: string; USER_SETTINGS_MFA_ENABLE_CODE_BODY: string; USER_SETTINGS_MFA_ENABLE_CODE_LABEL: string; USER_SETTINGS_MFA_ENABLED: string; USER_SETTINGS_MFA_REMOVED: string; USER_SETTINGS_MINIMIZE_TO_TRAY_BODY: string; USER_SETTINGS_MINIMIZE_TO_TRAY_LABEL: string; USER_SETTINGS_MY_ACCOUNT: string; USER_SETTINGS_NO_DISPLAYNAME_PLACEHOLDER: string; USER_SETTINGS_NO_EMAIL_PLACEHOLDER: string; USER_SETTINGS_NO_PHONE_PLACEHOLDER: string; USER_SETTINGS_NO_SEARCH_RESULTS: string; USER_SETTINGS_NO_SUBSCRIPTION_CREDIT: string; USER_SETTINGS_NO_SUBSCRIPTIONS: string; USER_SETTINGS_NOISE_CANCELLATION: string; USER_SETTINGS_NOISE_CANCELLATION_DESCRIPTION: string; USER_SETTINGS_NOISE_CANCELLATION_DISABLED: string; USER_SETTINGS_NOISE_CANCELLATION_KRISP: string; USER_SETTINGS_NOISE_CANCELLATION_STANDARD: string; USER_SETTINGS_NOTIFICATIONS_NOTIFY_MESSAGES_IN_SELECTED_CHANNEL_LABEL: string; USER_SETTINGS_NOTIFICATIONS_NOTIFY_MESSAGES_IN_SELECTED_CHANNEL_NOTE: string; USER_SETTINGS_NOTIFICATIONS_PREVIEW_SOUND: string; USER_SETTINGS_NOTIFICATIONS_SHOW_BADGE_BODY: string; USER_SETTINGS_NOTIFICATIONS_SHOW_BADGE_LABEL: string; USER_SETTINGS_NOTIFICATIONS_SHOW_FLASH_BODY: string; USER_SETTINGS_NOTIFICATIONS_SHOW_FLASH_LABEL: string; USER_SETTINGS_OPEN_ON_STARTUP_BODY: string; USER_SETTINGS_OPEN_ON_STARTUP_LABEL: string; USER_SETTINGS_PRIVACY_TERMS: FM<"privacyLink" | "termsLink", true>; USER_SETTINGS_PRIVACY_TERMS_SEARCHABLE: string; USER_SETTINGS_PROFILE_BANNER: string; USER_SETTINGS_PROFILE_COLOR: string; USER_SETTINGS_PROFILE_COLOR_CUSTOM: string; USER_SETTINGS_PROFILE_COLOR_CUSTOM_BUTTON: FM<"colorHex", false>; USER_SETTINGS_PROFILE_COLOR_DEFAULT: string; USER_SETTINGS_PROFILE_COLOR_DEFAULT_BUTTON: FM<"colorHex", false>; USER_SETTINGS_PROFILE_COLOR_MOBILE: string; USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR: string; USER_SETTINGS_PROFILE_EFFECT: string; USER_SETTINGS_PROFILE_PREVIEW_MOBILE: string; USER_SETTINGS_PROFILE_PREVIEW_NOTICE_MOBILE: string; USER_SETTINGS_PROFILE_THEME: string; USER_SETTINGS_PROFILE_THEME_ACCENT: string; USER_SETTINGS_PROFILE_THEME_PRIMARY: string; USER_SETTINGS_PROFILE_THEMES_BANNER_MODAL_SPECS: string; USER_SETTINGS_PROFILE_THEMES_UPSELL_PREVIEW_NITRO: string; USER_SETTINGS_PROFILE_THEMES_UPSELL_TRY_IT_OUT: string; USER_SETTINGS_PROFILE_THEMES_UPSELL_TRY_IT_OUT_DESCRIPTION: string; USER_SETTINGS_PROFILE_THEMES_UPSELL_UPGRADE: string; USER_SETTINGS_PROFILES: string; USER_SETTINGS_PRONOUNS: string; USER_SETTINGS_PRONOUNS_EDIT_A11Y_HINT: string; USER_SETTINGS_PRONOUNS_EDIT_A11Y_LABEL: string; USER_SETTINGS_PRONOUNS_HINT: string; USER_SETTINGS_REMOVE_AVATAR: string; USER_SETTINGS_REMOVE_AVATAR_DECORATION: string; USER_SETTINGS_REMOVE_BANNER: string; USER_SETTINGS_REMOVE_PER_GUILD_AVATAR_DECORATION: string; USER_SETTINGS_REMOVE_PROFILE_EFFECT: string; USER_SETTINGS_RESET_AVATAR: string; USER_SETTINGS_RESET_BANNER: string; USER_SETTINGS_RESET_PROFILE_THEME: string; USER_SETTINGS_RESET_PROFILE_THEME_DESCRIPTION: string; USER_SETTINGS_RESTART_APP_MOBILE: string; USER_SETTINGS_SAFETY_FRIEND_REQUESTS: string; USER_SETTINGS_SCAN_QR_CODE: string; USER_SETTINGS_SEARCH_BAR: string; USER_SETTINGS_SHOW_LIBRARY: string; USER_SETTINGS_SHOW_LIBRARY_NOTE: string; USER_SETTINGS_SIDECHAIN_COMPRESSION: string; USER_SETTINGS_SOUNDBOARD: string; USER_SETTINGS_SOUNDBOARD_VOLUME: string; USER_SETTINGS_SOUNDBOARD_VOLUME_DESCRIPTION: string; USER_SETTINGS_SOUNDBOARD_VOLUME_DESCRIPTION_WITH_LINK: FM<"helpCenterArticle", true>; USER_SETTINGS_START_MINIMIZED_BODY: string; USER_SETTINGS_START_MINIMIZED_LABEL: string; USER_SETTINGS_STARTUP_BEHAVIOR: string; USER_SETTINGS_STREAM_PREVIEWS: string; USER_SETTINGS_STREAMER_NOTICE_BODY: FM<"streamkitURL", true>; USER_SETTINGS_STREAMER_NOTICE_TITLE: string; USER_SETTINGS_SUBSCRIPTIONS_HEADER: string; USER_SETTINGS_TRY_IT_OUT: string; USER_SETTINGS_TRY_OUT_PREMIUM_ALSO_INCLUDES: string; USER_SETTINGS_TRY_OUT_PREMIUM_DESCRIPTION: string; USER_SETTINGS_TRY_OUT_PREMIUM_DESCRIPTION_VARIANT: string; USER_SETTINGS_TRY_OUT_PREMIUM_HEADER: string; USER_SETTINGS_TRY_OUT_PREMIUM_HEADER_MOBILE: string; USER_SETTINGS_TRY_OUT_PREMIUM_PREVIEW: string; USER_SETTINGS_UNLOCK_BANNER: string; USER_SETTINGS_UNVERIFIED_EMAIL_BODY: string; USER_SETTINGS_UPDATE_FAILURE: string; USER_SETTINGS_UPLOAD_AVATAR: string; USER_SETTINGS_USE_DEFAULT_PROFILE_EFFECT: string; USER_SETTINGS_USED_BACKUP_CODES: string; USER_SETTINGS_USER_PROFILE: string; USER_SETTINGS_VOICE_ADD_MULTIPLE: FM; USER_SETTINGS_VOICE_CODEC_DESCRIPTION: string; USER_SETTINGS_VOICE_CODEC_TITLE: string; USER_SETTINGS_VOICE_EXPERIMENTAL_SOUNDSHARE_LABEL: string; USER_SETTINGS_VOICE_HARDWARE_ENCODING: string; USER_SETTINGS_VOICE_MIC_TEST_BUTTON_ACTIVE: string; USER_SETTINGS_VOICE_MIC_TEST_BUTTON_INACTIVE: string; USER_SETTINGS_VOICE_MIC_TEST_DESCRIPTION: string; USER_SETTINGS_VOICE_MIC_TEST_TITLE: string; USER_SETTINGS_VOICE_MIC_TEST_VOICE_CAPTION: string; USER_SETTINGS_VOICE_MIC_TEST_VOICE_NO_INPUT_NOTICE: string; USER_SETTINGS_VOICE_OPEN_H264: string; USER_SETTINGS_VOICE_VIDEO_CODEC_TITLE: string; USER_SETTINGS_VOICE_VIDEO_HOOK_LABEL: string; USER_SETTINGS_WINDOWS_SETTINGS: string; USER_SETTINGS_WITH_BUILD_OVERRIDE: FM<"webBuildOverride", false>; USER_SETTINGS_WITH_IMAGE_DESCRIPTIONS: string; USER_SETTIONS_NEW_DISCORD_TITLE: string; USER_SIGNED_IN_AS: FM<[never, "signedInAs" | "userTag"], true>; USER_SUMMARY_AND_OTHERS: FM<"count", false>; USER_SUMMARY_ONE: FM<"first", false>; USER_SUMMARY_THREE: FM<"first" | "second" | "third", false>; USER_SUMMARY_THREE_AND_OTHERS: FM<"count" | "first" | "second" | "third", false>; USER_SUMMARY_TWO: FM<"first" | "second", false>; USER_SUMMARY_WITH_OTHERS: FM<"count" | "name", false>; USER_SURVEY_ERROR: string; USER_TRIAL_OFFER_ATTRIBUTION_BANNER: FM<"username", false>; USER_VOLUME: string; USERNAME: string; USERNAME_AND_TAG: string; USERNAME_REQUIRED: string; USERNAME_SEARCH_BODY: string; USERNAME_SEARCH_HEADER: string; USERS: string; UU_FORCE_MIGRATION_EXISTING_FLOW_REMINDER_BODY_1: FM<"date", false>; UU_FORCE_MIGRATION_EXISTING_FLOW_REMINDER_BODY_2: FM<"date", false>; UU_REGISTER_AGE_GATE_HEADER: string; UU_REGISTER_DISPLAY_NAME_ERROR: string; UU_REGISTER_DISPLAY_NAME_HEADER: string; UU_REGISTER_DISPLAY_NAME_HINT: string; UU_REGISTER_DISPLAY_NAME_HINT_2: string; UU_REGISTER_HEADER: string; UU_REGISTER_PASSWORD_HINT: string; UU_REGISTER_SUGGESTION: FM<"suggestion", true>; UU_REGISTER_UNCLAIMED_HINT: FM<"name", true>; UU_REGISTER_USERNAME_HINT: string; VAD_PERMISSION_BODY: string; VAD_PERMISSION_ENABLE_PTT: string; VAD_PERMISSION_OKAY: string; VAD_PERMISSION_SMALL: string; VAD_PERMISSION_TITLE: string; VANITY_URL: string; VANITY_URL_DEFAULT_CHANNEL: string; VANITY_URL_EMPLOYEE_ONLY_GUILD_DISABLED: string; VANITY_URL_HEADER_USES: FM<"uses", false>; VANITY_URL_HELP: string; VANITY_URL_HELP_CONFLICT: string; VANITY_URL_HELP_EXTENDED: FM<"url", true>; VANITY_URL_HELP_EXTENDED_LINK: FM<"urlText" | "urlValue", true>; VANITY_URL_HINT_MOBILE: string; VANITY_URL_USES: FM<"uses", false>; VERFICATION_EXPIRED: string; VERIFICATION_BODY: FM; VERIFICATION_BODY_ALT: string; VERIFICATION_BODY_WITH_HELP_LINK: FM<"helpCenterURL", true>; VERIFICATION_EMAIL_BODY: FM<"email", true>; VERIFICATION_EMAIL_ERROR_BODY: string; VERIFICATION_EMAIL_ERROR_TITLE: string; VERIFICATION_EMAIL_TITLE: string; VERIFICATION_FOOTER: string; VERIFICATION_FOOTER_LOGOUT: FM; VERIFICATION_FOOTER_SUPPORT: FM<"supportURL", true>; VERIFICATION_HEADER_MORE_OPTIONS_BUTTON_LABEL: string; VERIFICATION_LEVEL_HIGH: string; VERIFICATION_LEVEL_HIGH_CRITERIA: FM<"min", false>; VERIFICATION_LEVEL_LOW: string; VERIFICATION_LEVEL_LOW_CRITERIA: string; VERIFICATION_LEVEL_MEDIUM: string; VERIFICATION_LEVEL_MEDIUM_CRITERIA: FM<"min", false>; VERIFICATION_LEVEL_NONE: string; VERIFICATION_LEVEL_NONE_CRITERIA: string; VERIFICATION_LEVEL_VERY_HIGH: string; VERIFICATION_LEVEL_VERY_HIGH_CRITERIA: string; VERIFICATION_OPEN_DISCORD: string; VERIFICATION_PHONE_DESCRIPTION: string; VERIFICATION_PHONE_TITLE: string; VERIFICATION_TITLE: string; VERIFICATION_VERIFIED: string; VERIFICATION_VERIFYING: string; VERIFIED_BOT_TOOLTIP: string; VERIFY: string; VERIFY_ACCOUNT: string; VERIFY_BY: string; VERIFY_BY_EMAIL: string; VERIFY_BY_EMAIL_FORMATTED: FM; VERIFY_BY_HCAPTCHA: string; VERIFY_BY_PHONE_BAIL: string; VERIFY_BY_PHONE_FORMATTED: FM; VERIFY_BY_RECAPTCHA: string; VERIFY_BY_RECAPTCHA_DESCRIPTION: string; VERIFY_EMAIL: string; VERIFY_EMAIL_BODY: string; VERIFY_EMAIL_BODY_RESENT: FM<"email", true>; VERIFY_PHONE: string; VERIFY_PHONE_FOR_SUPPORT: string; VERIFY_YOUR_EMAIL: string; VERIFYING: string; VERY_OUT_OF_DATE_DESCRIPTION: string; vi: string; VIDEO: string; VIDEO_BACKGROUND_BIRTHDAY_BACKGROUND_NAME_1: string; VIDEO_BACKGROUND_CANNOT_REMOVE_DEFAULT: string; VIDEO_BACKGROUND_CANNOT_REMOVE_SELECTED: string; VIDEO_BACKGROUND_CONTEXT_MENU_LABEL: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_1: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_10: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_2: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_3: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_4: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_7: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_8: string; VIDEO_BACKGROUND_DEFAULT_BACKGROUND_NAME_9: string; VIDEO_BACKGROUND_ERROR_APPLY: string; VIDEO_BACKGROUND_ERROR_UPLOAD: string; VIDEO_BACKGROUND_ERROR_UPLOAD_FILE_SIZE: string; VIDEO_BACKGROUND_FEEDBACK_BODY: string; VIDEO_BACKGROUND_FEEDBACK_HEADER: string; VIDEO_BACKGROUND_FEEDBACK_OPTION_BACKGROUND_DETECTION_ACCURACY: string; VIDEO_BACKGROUND_FEEDBACK_OPTION_BACKGROUND_DETECTION_LAG: string; VIDEO_BACKGROUND_FEEDBACK_OPTION_BAD_OUTLINE: string; VIDEO_BACKGROUND_FEEDBACK_OPTION_FLICKERING: string; VIDEO_BACKGROUND_FEEDBACK_PROBLEM_TITLE: string; VIDEO_BACKGROUND_ISSUE_REPORTED_BODY: string; VIDEO_BACKGROUND_REMOVE: string; VIDEO_BACKGROUND_UPSELL_BODY: FM; VIDEO_BACKGROUND_UPSELL_BODY_TIER_0: FM; VIDEO_BACKGROUND_UPSELL_TITLE: string; VIDEO_CALL: string; VIDEO_CALL_AUTO_SELECT: string; VIDEO_CALL_HIDE_CHAT: string; VIDEO_CALL_HIDE_MEMBERS: string; VIDEO_CALL_RETURN_TO_GRID: string; VIDEO_CALL_RETURN_TO_LIST: string; VIDEO_CALL_SHOW_CHAT: string; VIDEO_CALL_SHOW_MEMBERS: string; VIDEO_CALL_VIEW_ALL_COUNT: FM<"count", false>; VIDEO_CAPACITY_MODAL_BODY: FM<"videoUserLimit", false>; VIDEO_CAPACITY_MODAL_HEADER: string; VIDEO_PAUSED: string; VIDEO_PAUSED_REASON: string; VIDEO_PLAYBACK_MUTE_ACCESSIBILITY_LABEL: string; VIDEO_PLAYBACK_UNMUTE_ACCESSIBILITY_LABEL: string; VIDEO_QUALITY_MODE_AUTO: string; VIDEO_QUALITY_MODE_FULL: string; VIDEO_SETTINGS: string; VIDEO_UNAVAILABLE: string; VIDEO_UNSUPPORTED_BROWSER_BODY: string; VIDEO_UNSUPPORTED_BROWSER_TITLE: string; VIDEO_UPLOAD_QUALITY_NITRO_UPSELL: FM; VIDEO_UPLOAD_QUALITY_SETTING_BEST: string; VIDEO_UPLOAD_QUALITY_SETTING_DATA_SAVER: string; VIDEO_UPLOAD_QUALITY_SETTING_HELP: FM<"supportURL", true>; VIDEO_UPLOAD_QUALITY_SETTING_STANDARD: string; VIDEO_UPLOAD_QUALITY_SETTING_TITLE: string; VIEW: string; VIEW_ALL: string; VIEW_ALL_ROLES: string; VIEW_AS_MEMBER_DESCRIPTION: string; VIEW_AS_MEMBER_DESCRIPTION_WITH_ROLES: FM<"numRoles", false>; VIEW_AS_MEMBER_ROLES_WARNING: string; VIEW_AS_ROLE: string; VIEW_AS_ROLE_DESCRIPTION: string; VIEW_AS_ROLES_HIDDEN_VC_WARNING: string; VIEW_AS_ROLES_MENTIONS_WARNING: string; VIEW_AS_ROLES_NO_ACCESS: string; VIEW_AS_ROLES_SEE_ROLES: string; VIEW_AS_ROLES_VOICE_WARNING: string; VIEW_AUDIT_LOG: string; VIEW_AUDIT_LOG_DESCRIPTION: string; VIEW_CHANNEL: string; VIEW_CREATOR_MONETIZATION_ANALYTICS: string; VIEW_FRIEND_REQUESTS: string; VIEW_FULL_PROFILE: string; VIEW_GAME_PROFILE: string; VIEW_GUILD_ANALYTICS: string; VIEW_GUILD_ANALYTICS_DESCRIPTION: string; VIEW_INTERACTION_INFO: string; VIEW_MAIN_PROFILE: string; VIEW_MORE: string; VIEW_PROFILE: string; VIEW_PROFILE_USERNAME: FM<"username", false>; VIEW_REACTIONS: string; VIEW_SERVER_PROFILE: string; VIEW_SPECTATORS: string; VIEW_THREAD: string; VIEWING_AS_ONBOARDING_MEMBER_BACK: string; VIEWING_AS_ROLES: FM<"numRoles", false>; VIEWING_AS_ROLES_BACK: string; VIEWING_AS_ROLES_BACK_INTEGRATIONS: string; VIEWING_AS_ROLES_SELECT: string; VIEWING_AS_SUBSCRIPTION_ROLES_BACK: string; VIEWING_AS_SUBSCRIPTION_ROLES_SELECT: string; VISIT_COMMUNITY: string; VISIT_THE_SHOP_CTA: string; VISITORS_INFO: string; VND_NAME: string; VOICE: string; VOICE_AND_VIDEO: string; VOICE_BACKGROUND_BLUE_SLUSH: string; VOICE_BACKGROUND_BLUE_WORLD: string; VOICE_BACKGROUND_DEBIL: string; VOICE_BACKGROUND_DEFAULT: string; VOICE_BACKGROUND_FIGHT_SCENE: string; VOICE_BACKGROUND_HIGH_TIDE: string; VOICE_BACKGROUND_MILAN: string; VOICE_BACKGROUND_NEUTRAL: string; VOICE_BACKGROUND_PICNIC: string; VOICE_BACKGROUND_PURPLE_LAVA: string; VOICE_BACKGROUND_SAKURA: string; VOICE_BACKGROUND_SOFT_RAIN: string; VOICE_CALL: string; VOICE_CALL_ACTION_A11Y_HINT: string; VOICE_CALL_MEMBER_LIST_TITLE: FM<"count", false>; VOICE_CHANNEL: string; VOICE_CHANNEL_ACTIVITY_STATUS_REDIRECT: FM; VOICE_CHANNEL_BAR_ACTIVE: FM<"count", false>; VOICE_CHANNEL_CHANGE_CONFIRMATION_BODY: FM<"channel", true>; VOICE_CHANNEL_CHANGE_CONFIRMATION_HEADER: string; VOICE_CHANNEL_CLEAR_STATUS: string; VOICE_CHANNEL_DEAFENED: string; VOICE_CHANNEL_DESC: string; VOICE_CHANNEL_EFFECTS: string; VOICE_CHANNEL_EFFECTS_COOLDOWN: FM<"seconds", false>; VOICE_CHANNEL_EFFECTS_HOTBAR_TITLE: string; VOICE_CHANNEL_EFFECTS_MORE: string; VOICE_CHANNEL_EFFECTS_NOTICE_BETA_TAG: string; VOICE_CHANNEL_EFFECTS_NOTICE_DESCRIPTION_2: string; VOICE_CHANNEL_EFFECTS_NOTICE_TITLE_2: string; VOICE_CHANNEL_EFFECTS_REDUCED_MOTION_TOOLTIP_BODY: string; VOICE_CHANNEL_EFFECTS_REDUCED_MOTION_TOOLTIP_CANCEL: string; VOICE_CHANNEL_EFFECTS_REDUCED_MOTION_TOOLTIP_CONFIRM: string; VOICE_CHANNEL_EFFECTS_REDUCED_MOTION_TOOLTIP_TITLE: string; VOICE_CHANNEL_EFFECTS_SPARKLE_TOOLTIP: string; VOICE_CHANNEL_EFFECTS_TOGGLE: string; VOICE_CHANNEL_EFFECTS_TOGGLE_TADA_ALT: string; VOICE_CHANNEL_EFFECTS_TOGGLE_TOOLTIP_DISABLED: string; VOICE_CHANNEL_EFFECTS_TOGGLE_TOOLTIP_ENABLED: string; VOICE_CHANNEL_EFFECTS_TOGGLE_UPSELL: string; VOICE_CHANNEL_EFFECTS_UPSELL_BODY_2: FM; VOICE_CHANNEL_EFFECTS_UPSELL_CTA: string; VOICE_CHANNEL_EFFECTS_UPSELL_HEADER_2: string; VOICE_CHANNEL_HIDE_NAMES: string; VOICE_CHANNEL_LOCKED: string; VOICE_CHANNEL_MUTED: string; VOICE_CHANNEL_MUTED_CUSTOM_JOIN_SOUND: string; VOICE_CHANNEL_SET_STATUS: string; VOICE_CHANNEL_SHOW_NAMES: string; VOICE_CHANNEL_STATUS: string; VOICE_CHANNEL_STATUS_MODAL_PREFILL_CHANNEL: FM<"channelName", false>; VOICE_CHANNEL_STATUS_MODAL_SET_STATUS: string; VOICE_CHANNEL_STATUS_MODAL_SUBTITLE: string; VOICE_CHANNEL_STATUS_MODAL_TITLE: string; VOICE_CHANNEL_STATUS_PERMISSION_DESCRIPTION: string; VOICE_CHANNEL_STATUS_PERMISSION_TITLE: string; VOICE_CHANNEL_STATUS_PERMISSION_TOOLTIP_BODY: FM; VOICE_CHANNEL_TYPE: string; VOICE_CHANNEL_UNDEAFENED: string; VOICE_CHANNEL_UNMUTED: string; VOICE_CHANNELS: string; VOICE_CHANNELS_CATEGORY_BUTTON_COLLAPSE: string; VOICE_CHANNELS_CATEGORY_BUTTON_EXPAND: string; VOICE_CHANNELS_CATEGORY_HEADER: string; VOICE_CHANNELS_MATCHING: FM<"prefix", true>; VOICE_CHAT_TEXT_CHANNEL: string; VOICE_CONNECTED: string; VOICE_CONNECTION_ERROR_GENERIC: string; VOICE_CONTROLS_SHEET_TOOLTIP_SWIPE_UP: string; VOICE_MESSAGES_A11Y_LABEL: string; VOICE_MESSAGES_A11Y_STATUS: FM<"duration", false>; VOICE_MESSAGES_CANCEL: string; VOICE_MESSAGES_LIMIT: string; VOICE_MESSAGES_LIMIT_CANCEL: string; VOICE_MESSAGES_LIMIT_SEND: string; VOICE_MESSAGES_LOCK: string; VOICE_MESSAGES_PLAYING_A11Y_STATUS: FM<"currentTime" | "duration", false>; VOICE_MESSAGES_RECORDING_FAILED: string; VOICE_MESSAGES_SEND: string; VOICE_MESSAGES_SENT_NOTIFICATION: string; VOICE_MESSAGES_TAP: string; VOICE_MESSAGES_UPSELL_BUTTON_LABEL: string; VOICE_MESSAGES_UPSELL_LABEL_DM: string; VOICE_MESSAGES_UPSELL_LABEL_GUILD: string; VOICE_MESSAGES_UPSELL_TITLE: string; VOICE_PANEL_ACTIVITIES_SHAPES_BUTTON_EDUCATION_TOOLTIP: string; VOICE_PANEL_AUDIO_SELECTOR_EXTERNAL: string; VOICE_PANEL_AUDIO_SELECTOR_PHONE: string; VOICE_PANEL_BAD_CONNECTION_CTA_LABEL: string; VOICE_PANEL_BAD_CONNECTION_CTA_SUB_LABEL: string; VOICE_PANEL_CHANGE_BACKGROUND_FOOTER: string; VOICE_PANEL_CHANGE_BACKGROUND_SUBTITLE: string; VOICE_PANEL_CHANGE_BACKGROUND_SUBTITLE_DISABLED: string; VOICE_PANEL_CHANGE_BACKGROUND_TITLE: string; VOICE_PANEL_CHANNEL_SETTINGS_SUBTITLE: string; VOICE_PANEL_CUSTOMIZE_BACKGROUND_SUBTITLE: string; VOICE_PANEL_CUSTOMIZE_BACKGROUND_TITLE: string; VOICE_PANEL_DEAFEN_SUBTITLE: string; VOICE_PANEL_EMPTY_SUBTITLE: string; VOICE_PANEL_FLOATING_CTA_INVITE_LABEL: string; VOICE_PANEL_FLOATING_CTA_INVITE_SUBLABEL: string; VOICE_PANEL_HEADER_ACCESSIBILITY_HINT: string; VOICE_PANEL_HIDE_EXTRAS: string; VOICE_PANEL_INTRODUCTION_CLOSE: string; VOICE_PANEL_INTRODUCTION_HEADER: string; VOICE_PANEL_INTRODUCTION_TEXT: string; VOICE_PANEL_LOAD_MORE: string; VOICE_PANEL_MAX_CAPACITY_ALERT_SUBTITLE: FM<"count", false>; VOICE_PANEL_MAX_CAPACITY_ALERT_TITLE: string; VOICE_PANEL_NAVIGATE_TO_GRID_A11Y_LABEL: string; VOICE_PANEL_NAVIGATE_TO_PIP_A11Y_LABEL: string; VOICE_PANEL_NO_JOIN_PERMISSIONS_ALERT_SUBTITLE: string; VOICE_PANEL_NO_JOIN_PERMISSIONS_ALERT_TITLE: string; VOICE_PANEL_ONLY_SHOW_VIDEO_SUBTITLE: string; VOICE_PANEL_ONLY_SHOW_VIDEO_TITLE: string; VOICE_PANEL_OVERVIEW_HEADER_2_PEOPLE: FM<"user1" | "user2", false>; VOICE_PANEL_OVERVIEW_HEADER_3_OR_MORE_PEOPLE: FM<"numPeople" | "user1" | "user2", false>; VOICE_PANEL_PEOPLE_IN_VOICE: FM<"n", false>; VOICE_PANEL_SHOW_EXTRAS: string; VOICE_PANEL_SHOW_VOICE_USERS: string; VOICE_PANEL_STREAM_PREVIEW_HEADER: FM<"username", false>; VOICE_PANEL_USER_A11Y_DEAFENED_LABEL: FM<"username", false>; VOICE_PANEL_USER_A11Y_MUTED_LABEL: FM<"username", false>; VOICE_PANEL_USER_TOOLTIP: FM<"status" | "userName", false>; VOICE_PANEL_USERS_A11Y_LABEL: string; VOICE_PANEL_VOICE_SETTINGS_SUBTITLE: string; VOICE_PERMISSIONS: string; VOICE_SETTINGS: string; VOICE_STATUS_CONNECTING: string; VOICE_STATUS_NOT_CONNECTED: string; VOICE_STATUS_NOT_CONNECTED_MOBILE: string; VOICE_STATUS_RINGING: string; VOICE_UNAVAILABLE: string; WARNING_SCREEN_RECORDING_PERMISSION_BODY: string; WARNING_SCREEN_RECORDING_PERMISSION_TITLE: string; WATCH: string; WATCH_ON_CRUNCHYROLL: string; WATCH_STREAM: string; WATCH_STREAM_IN_APP: string; WATCH_STREAM_STREAMING: string; WATCH_STREAM_TIP: string; WATCH_STREAM_WATCHING: string; WATCH_USER_STREAM: FM<"streamerName", false>; WATCHING: FM<"name", true>; WAVE: string; WAVE_AGAIN: string; WAVE_BACK: string; WAVE_CTA: string; WAVE_DEFAULT_RECIPIENT: string; WAVE_TO: FM<"username", false>; WAVED_AT_USER: FM<"username", false>; WAVED_AT_YOU: FM<"username", false>; WEB_BROWSER: string; WEB_BROWSER_CHROME: string; WEB_BROWSER_EXTERNAL: string; WEB_BROWSER_IN_APP: string; WEB_BROWSER_SAFARI: string; WEBHOOK_CANCEL: string; WEBHOOK_CREATE: string; WEBHOOK_CREATED_ON: FM<"timestamp" | "username", false>; WEBHOOK_DELETE: string; WEBHOOK_DELETE_BODY: FM<"name", true>; WEBHOOK_DELETE_TITLE: FM<"name", false>; WEBHOOK_ERROR_CREATING_WEBHOOK: string; WEBHOOK_ERROR_CREATING_WEBHOOK_RATE_LIMIT: string; WEBHOOK_ERROR_DELETING_WEBHOOK: string; WEBHOOK_ERROR_DELETING_WEBHOOK_RATE_LIMIT: string; WEBHOOK_ERROR_INTERNAL_SERVER_ERROR: string; WEBHOOK_ERROR_MAX_WEBHOOKS_REACHED: string; WEBHOOK_FORM_NAME: string; WEBHOOK_FORM_URL: string; WEBHOOK_MODAL_ICON_DESCRIPTION: string; WEBHOOK_MODAL_TITLE: string; WEBHOOKS: string; WEEKLY_COMMUNICATORS: string; WEEKLY_NEW_MEMBER_RETENTION: string; WEEKLY_NEW_MEMBERS: string; WEEKLY_VISITORS: string; WELCOME_CHANNEL_DELETE_CONFIRM_BODY: FM<"channelName", true>; WELCOME_CHANNEL_DELETE_CONFIRM_BODY_GENERIC: string; WELCOME_CHANNEL_DELETE_CONFIRM_TITLE: string; WELCOME_CHANNEL_EMOJI_PICKER_TOOLTIP: string; WELCOME_CTA_APPS_RECOMMENDATION_TITLE: string; WELCOME_CTA_BOOSTING: string; WELCOME_CTA_BOOSTING_AWARENESS_SUBTITLE: FM; WELCOME_CTA_BOOSTING_AWARENESS_TITLE: string; WELCOME_CTA_BOOSTING_PROGRESS_BAR: string; WELCOME_CTA_BOOSTING_PROGRESS_BAR_SUBTITLE: FM; WELCOME_CTA_BOOSTING_PURCHASE_MODAL_TITLE: string; WELCOME_CTA_DOWNLOAD_TITLE: string; WELCOME_CTA_INVITE_TITLE: string; WELCOME_CTA_LABEL: string; WELCOME_CTA_MESSAGE_TITLE: string; WELCOME_CTA_PERSONALIZE_TITLE: string; WELCOME_CTA_PERSONALIZE_TITLE_MOBILE: string; WELCOME_CTA_SUBTITLE_ACTION_WITH_GUIDE: FM<"guideURL", true>; WELCOME_CTA_SUBTITLE_EXISTING_SERVER: string; WELCOME_CTA_SUBTITLE_MEMBER: string; WELCOME_CTA_SUBTITLE_OWNER: string; WELCOME_CTA_TITLE: FM<"guildName", true>; WELCOME_CTA_TITLE_MOBILE: FM<"guildName", false>; WELCOME_MESSAGE_EDIT_CHANNEL: string; WELCOME_MESSAGE_SUBTITLE_CHANNEL: FM<"channelName", false>; WELCOME_MESSAGE_TITLE_CHANNEL: FM<"channelName", false>; WELCOME_MESSAGE_VALIDATION_ERROR_AUTHOR: string; WELCOME_MESSAGE_VALIDATION_ERROR_AUTHOR_AND_MESSAGE: FM<"minLength", false>; WELCOME_MESSAGE_VALIDATION_ERROR_MESSAGE: FM<"minLength", false>; WELCOME_SCREEN_CHOICE_HEADER: string; WELCOME_SCREEN_DEPRECATED: FM<[never, "onboardingLink"], true>; WELCOME_SCREEN_SKIP: string; WELCOME_SCREEN_TITLE: FM<["guildName", "guildNameHook"], true>; WHATS_NEW: string; WHATS_NEW_DATE: FM<"date", false>; WHITELIST_FAILED: string; WHITELISTED: string; WHITELISTING: string; WIDGET: string; WINDOWS: string; WINDOWS_32_BIT_DEPRECATED_WARNING: FM<"helpCenterLink", true>; WINDOWS_7_8_DEPRECATED_WARNING: FM<"helpCenterLink", true>; WORKING: string; WRONG_USER_LOGOUT: string; WUMPUS: string; XBOX: string; XBOX_APP_FOR_MOBILE: string; XBOX_APP_REQUIRED_SUBHEADER: string; XBOX_APP_STEP_ONE: string; XBOX_APP_STEP_TWO: string; XBOX_AUTHORIZATION_TITLE: string; XBOX_DETAILS_BODY: string; XBOX_DETAILS_BODY_WAITING: string; XBOX_DETAILS_TITLE: string; XBOX_DETAILS_TITLE_WAITING: string; XBOX_LINK: string; XBOX_PIN_STEP1: string; XBOX_PIN_STEP2: string; XBOX_PIN_STEP3: string; XBOX_REMOTE_CONNECTED: FM; XBOX_REMOTE_CONNECTED_RAW: string; XBOX_REMOTE_CONNECTING: FM; XBOX_REMOTE_CONNECTING_ELLIPSIS: FM; XBOX_REMOTE_CONNECTING_RAW: string; XBOX_REMOTE_CONNECTING_SUBTITLE: string; XBOX_TRANSFERRING: string; XBOX_TRANSFERRING_ELLIPSIS: string; XBOX_TRANSFERRING_ELLIPSIS_BOLD: FM; XBOX_TWO_WAY_UPSELL_BODY: FM<"help_article", true>; XBOX_TWO_WAY_UPSELL_TITLE: string; YEARLY: string; YEARLY_GUILD_SUBSCRIPTION: FM<"planName", false>; YELLOW: string; YES_TEXT: string; YOU: string; YOU_ARE_IN_CHANNEL: FM<[never, "channelHook"], true>; YOU_ARE_IN_CHANNEL_NAME: FM<"channelName", false>; YOU_TAB_ONBOARDING_ABOUT_ME_DESCRIPTION: string; YOU_TAB_ONBOARDING_ABOUT_ME_TITLE: string; YOU_TAB_ONBOARDING_AVATAR_DESCRIPTION: string; YOU_TAB_ONBOARDING_AVATAR_TITLE: string; YOUR_ACCOUNT_IS_QUARANTINED: string; YOUR_EMAIL: string; YOUR_FRIENDS: string; YOUR_HUB: string; YOUR_PIN_EXPIRES: FM<"time", false>; YOUR_PIN_IS_EXPIRED: string; YOURE_VIEWING_OLDER_MESSAGES: string; "zh-CN": string; "zh-TW": string; } diff --git a/packages/discord-types/src/i18n/Provider.ts b/packages/discord-types/src/i18n/Provider.ts new file mode 100644 index 000000000..201852e79 --- /dev/null +++ b/packages/discord-types/src/i18n/Provider.ts @@ -0,0 +1,42 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { FormattedMessage } from "./FormattedMessage"; + +type GenericMessages = Record; + +// Original name: ProxyProvider +export declare class Provider = GenericMessages> { + constructor(getParsedMessages: ProviderParsedMessagesGetter); + + getMessages(): Messages & Record; + refresh(context: ProviderContext): void; + + _context: ProviderContext; + _createProxy: ( + context?: ProviderContext /* = this._context */ + ) => Messages & Record; + _getParsedMessages: ProviderParsedMessagesGetter; + /** + * Values will never be undefined. + * @see {@link https://github.com/microsoft/TypeScript/issues/47594} + */ + _parsedMessages: Messages & Record; +} + +export interface ProviderContext { + defaultMessages: Partial>; + locale: string; + messages: Partial>; +} + +export type ProviderParsedMessagesGetter< + Messages extends GenericMessages = GenericMessages +> = ( + context: ProviderContext, + key: Key, + createProxy: Provider["_createProxy"] +) => Key extends keyof Messages ? Messages[Key] : string; diff --git a/packages/discord-types/src/i18n/index.ts b/packages/discord-types/src/i18n/index.ts new file mode 100644 index 000000000..14df6fa5d --- /dev/null +++ b/packages/discord-types/src/i18n/index.ts @@ -0,0 +1,11 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export * from "./FormattedMessage"; +export * from "./I18N"; +export * from "./I18NMessages"; +export * from "./Provider"; +export * from "./utils"; diff --git a/packages/discord-types/src/i18n/utils.ts b/packages/discord-types/src/i18n/utils.ts new file mode 100644 index 000000000..711d6d58c --- /dev/null +++ b/packages/discord-types/src/i18n/utils.ts @@ -0,0 +1,24 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { ParserRules } from "simple-markdown"; + +import type { FormattedMessage, FormattedMessageArgs } from "./FormattedMessage"; + +// For getSystemLocale +export type SystemLocaleGetter = () => string; + +// For setUpdateRules +export type UpdateRulesSetter = (updater: (rules: ParserRules) => ParserRules) => void; + +// For getMessage +export interface MessageFactory { + ( + message: string, + locales?: string | readonly string[] + ): FormattedMessage; + (message?: null, locales?: string | readonly string[]): ""; +} diff --git a/packages/discord-types/src/index.ts b/packages/discord-types/src/index.ts new file mode 100644 index 000000000..4986443ea --- /dev/null +++ b/packages/discord-types/src/index.ts @@ -0,0 +1,10 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export * from "./flux"; +export * from "./general"; +export * from "./i18n"; +export * from "./stores"; diff --git a/packages/discord-types/src/internal.ts b/packages/discord-types/src/internal.ts new file mode 100644 index 000000000..c444a037e --- /dev/null +++ b/packages/discord-types/src/internal.ts @@ -0,0 +1,106 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** @internal */ +export type Defined = Exclude; + +/** @internal */ +export type GenericConstructor = new (...args: never) => unknown; + +/** @internal */ +export type IsAny = 0 extends 1 & T ? unknown : never; + +/** @internal */ +export type IsDomainFinite + = unknown extends ( + T extends unknown + ? {} extends Record + ? unknown + : never + : never + ) + ? never + : unknown; + +/** @internal */ +export type Nullish = null | undefined; + +/** @internal */ +export type OmitIndexSignature + = { [Key in keyof T as {} extends Record ? never : Key]: T[Key]; }; + +/** @internal */ +export type OmitOptional + = { [Key in keyof T as T extends Record ? Key : never]: T[Key]; }; + +/** @internal */ +export type Optional + = ExcludeKeys extends true + ? Pick & { [Key in Exclude]?: T[Key] | Value; } + : Omit & { [Key in Keys]?: T[Key] | Value; }; + +/** @internal */ +export type OptionalTuple + = { [Key in keyof T]?: T[Key] | Value; }; + +/** @internal */ +export type PartialOnUndefined = Partial + & { [Key in keyof T as undefined extends T[Key] ? never : Key]: T[Key]; }; + +type SnakeCase + = T extends `${infer First}${infer Second}${infer Rest}` + ? InAcronym extends true + ? Second extends Uppercase + ? `${Lowercase}${SnakeCase<`${Second}${Rest}`, true>}` + : `_${Lowercase}${SnakeCase<`${Second}${Rest}`>}` + : First extends Lowercase + ? Second extends Lowercase + ? `${First}${SnakeCase<`${Second}${Rest}`>}` + : `${First}_${SnakeCase<`${Second}${Rest}`>}` + : Second extends Uppercase + ? `${Lowercase}${SnakeCase<`${Second}${Rest}`, true>}` + : `${Lowercase}${SnakeCase<`${Second}${Rest}`>}` + : Lowercase; + +/** @internal */ +export type SnakeCasedProperties + = { [Key in keyof T as Key extends string ? SnakeCase : Key]: T[Key]; }; + +type StringablePrimitive = string | bigint | number | boolean | Nullish; + +/** @internal */ +export type Stringable + = { [Symbol.toPrimitive]: (hint: "default" | "string") => StringablePrimitive; } + | ({ toString: () => StringablePrimitive; } | { valueOf: () => StringablePrimitive; }) + & { [Symbol.toPrimitive]?: Nullish; }; + +/** @internal */ +export type StringProperties + = { [Key in keyof T as Exclude]: T[Key]; }; + +/** @internal */ +export type Subtract = { + [TKey in keyof T as keyof { + [UKey in keyof U as UKey extends TKey + ? TKey extends UKey + ? UKey + : never + : never + ]: never; + } extends never + ? TKey + : never + ]: T[TKey]; +}; + +/** @internal */ +export type UnionToIntersection = ( + Union extends unknown + ? (arg: Union) => unknown + : never +) extends ((arg: infer Intersection) => unknown) + ? Intersection & Union + : never; diff --git a/packages/discord-types/src/stores/ApplicationStore.ts b/packages/discord-types/src/stores/ApplicationStore.ts new file mode 100644 index 000000000..4e1244590 --- /dev/null +++ b/packages/discord-types/src/stores/ApplicationStore.ts @@ -0,0 +1,23 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { ApplicationRecord, ApplicationType } from "../general/ApplicationRecord"; +import type { Nullish } from "../internal"; + +export declare class ApplicationStore extends Store { + static displayName: "ApplicationStore"; + + _getAllApplications(): ApplicationRecord[]; + didFetchingApplicationFail(applicationId: string): boolean; + getApplication(applicationId: string): ApplicationRecord | undefined; + getApplicationByName(applicationName?: string | null): ApplicationRecord | undefined; + getApplicationLastUpdated(applicationId: string): number | undefined; + getFetchingOrFailedFetchingIds(): string[]; + getGuildApplication(guildId: string | Nullish, applicationType: ApplicationType): ApplicationRecord | undefined; + getGuildApplicationIds(guildId?: string | null): string[]; + isFetchingApplication(applicationId: string): boolean; +} diff --git a/packages/discord-types/src/stores/ChannelStore.ts b/packages/discord-types/src/stores/ChannelStore.ts new file mode 100644 index 000000000..2f87d2d01 --- /dev/null +++ b/packages/discord-types/src/stores/ChannelStore.ts @@ -0,0 +1,41 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { ChannelRecord, GuildChannelRecord } from "../general/channels/ChannelRecord"; +import type { DMChannelRecord, PrivateChannelRecord } from "../general/channels/PrivateChannelRecord"; +import type { ThreadChannelRecord } from "../general/channels/ThreadChannelRecord"; + +export declare class ChannelStore extends Store { + static displayName: "ChannelStore"; + + getAllThreadsForParent(channelId: string): ThreadChannelRecord[]; + /** @todo May not return a ChannelRecord. */ + getBasicChannel(channelId?: string | null): ChannelRecord | null; + getChannel(channelId?: string | null): ChannelRecord | undefined; + getChannelIds(guildId?: string | null): string[]; + getDebugInfo(): { + guildSizes: string[]; + loadedGuildIds: string[]; + /** @todo */ + pendingGuildLoads: any[]; + }; + getDMChannelFromUserId(userId?: string | null): DMChannelRecord | undefined; + getDMFromUserId(userId?: string | null): string | undefined; + getDMUserIds(): string[]; + getGuildChannelsVersion(guildId: string): number; + getInitialOverlayState(): { [channelId: string]: ChannelRecord; }; + /** @todo The returned object may not have ChannelRecords. */ + getMutableBasicGuildChannelsForGuild(guildId: string): { [channelId: string]: GuildChannelRecord; }; + getMutableDMsByUserIds(): { [userId: string]: string; }; + getMutableGuildChannelsForGuild(guildId: string): { [channelId: string]: GuildChannelRecord; }; + getMutablePrivateChannels(): { [channelId: string]: PrivateChannelRecord; }; + getPrivateChannelsVersion(): number; + getSortedPrivateChannels(): PrivateChannelRecord[]; + hasChannel(channelId: string): boolean; + initialize(): void; + loadAllGuildAndPrivateChannelsFromDisk(): { [channelId: string]: GuildChannelRecord | PrivateChannelRecord; }; +} diff --git a/packages/discord-types/src/stores/DraftStore.ts b/packages/discord-types/src/stores/DraftStore.ts new file mode 100644 index 000000000..64a5cc8fe --- /dev/null +++ b/packages/discord-types/src/stores/DraftStore.ts @@ -0,0 +1,33 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { PersistedStore } from "../flux/PersistedStore"; +import type { Draft, DraftForumThreadSettings, DraftNonForumThreadSettings, DraftType } from "../general/Draft"; +import type { GenericConstructor, Nullish } from "../internal"; + +export interface DraftStoreState { + [userId: string]: { [channelId: string]: { [Type in DraftType]?: Draft; }; }; +} + +export declare class DraftStore< + Constructor extends GenericConstructor = typeof DraftStore, + State extends DraftStoreState = DraftStoreState +> extends PersistedStore { + static displayName: "DraftStore"; + static persistKey: "DraftStore"; + + getDraft(channelId: string, draftType: DraftType): string; + getRecentlyEditedDrafts(draftType: Type): { + channelId: string; + draft: "draft" extends keyof Draft ? Draft["draft"] : undefined; + timestamp: number; + }[]; + getState(): State; + getThreadDraftWithParentMessageId(messageId: string): DraftNonForumThreadSettings | Nullish; + getThreadSettings(threadId: string): + (ForumThread extends true ? DraftForumThreadSettings : DraftNonForumThreadSettings) | Nullish; + initialize(state?: State | null): void; +} diff --git a/packages/discord-types/src/stores/EmojiStore.ts b/packages/discord-types/src/stores/EmojiStore.ts new file mode 100644 index 000000000..7a0c447b3 --- /dev/null +++ b/packages/discord-types/src/stores/EmojiStore.ts @@ -0,0 +1,88 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { PersistedStore } from "../flux/PersistedStore"; +import type { ChannelRecord } from "../general/channels/ChannelRecord"; +import type { Emoji, GuildEmoji } from "../general/emojis/Emoji"; +import type { EmojiDisambiguations } from "../general/emojis/EmojiDisambiguations"; +import type { GuildEmojis } from "../general/emojis/GuildEmojis"; +import type { Frecency } from "../general/Frecency"; +import type { GenericConstructor, Nullish } from "../internal"; + +export interface EmojiStoreState { + emojiReactionPendingUsages: EmojiUsage[]; + expandedSectionsByGuildIds: Set; + pendingUsages: EmojiUsage[]; +} + +export interface EmojiUsage { + key: string; + timestamp: number; +} + +export declare class EmojiStore< + Constructor extends GenericConstructor = typeof EmojiStore, + State extends EmojiStoreState = EmojiStoreState +> extends PersistedStore { + static displayName: "EmojiStore"; + static persistKey: "EmojiStoreV2"; + + get categories(): string[]; + get diversitySurrogate(): string; + get emojiFrecencyWithoutFetchingLatest(): Frecency; + get emojiReactionFrecencyWithoutFetchingLatest(): Frecency; + get expandedSectionsByGuildIds(): EmojiStoreState["expandedSectionsByGuildIds"]; + getCustomEmojiById(emojiId: string): GuildEmoji | undefined; + getDisambiguatedEmojiContext(guildId?: string | null): EmojiDisambiguations; + getEmojiAutosuggestion(channel?: ChannelRecord): Emoji[]; + getGuildEmoji(guildId: string): GuildEmoji[]; + getGuilds(): { [guildId: string]: GuildEmojis; }; + getNewlyAddedEmoji(guildId?: string | null): GuildEmoji[]; + /** If count is less than or equal to 0, all results will be returned. */ + getSearchResultsOrder(emojis: Emoji[], query: string, count: number): Emoji[]; + getState(): State; + getTopEmoji(guildId?: string | null): GuildEmoji[]; + getTopEmojisMetadata(guildId: string): GuildTopEmojisMetadata | undefined; + getUsableCustomEmojiById(emojiId: string): GuildEmoji | undefined; + getUsableGuildEmoji(guildId: string): GuildEmoji[]; + hasFavoriteEmojis(guildId?: string | null): boolean; + hasPendingUsage(): boolean; + hasUsableEmojiInAnyGuild(): boolean; + initialize(state?: State | null): void; + get loadState(): number; + /** If count is less than or equal to 0, all unlocked results will be returned. */ + searchWithoutFetchingLatest(options: { + channel?: ChannelRecord | Nullish; + count?: number | undefined /* = 0 */; + includeExternalGuilds?: boolean | undefined /* = true */; + intention: EmojiIntention; + matchComparator?: ((value: string, index: number, array: string[]) => unknown) | Nullish; + query: string; + }): { + locked: GuildEmoji[]; + unlocked: Emoji[]; + }; +} + +export interface GuildTopEmojisMetadata { + emojiIds: string[]; + topEmojisTTL: number; +} + +export enum EmojiIntention { + REACTION = 0, + STATUS = 1, + COMMUNITY_CONTENT = 2, + CHAT = 3, + GUILD_STICKER_RELATED_EMOJI = 4, + GUILD_ROLE_BENEFIT_EMOJI = 5, + SOUNDBOARD = 6, + VOICE_CHANNEL_TOPIC = 7, + GIFT = 8, + AUTO_SUGGESTION = 9, + POLLS = 10, + PROFILE = 11, +} diff --git a/packages/discord-types/src/stores/GuildChannelStore.ts b/packages/discord-types/src/stores/GuildChannelStore.ts new file mode 100644 index 000000000..2359aded3 --- /dev/null +++ b/packages/discord-types/src/stores/GuildChannelStore.ts @@ -0,0 +1,88 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import { ChannelType, type GuildChannelRecord, type GuildSelectableChannelRecord } from "../general/channels/ChannelRecord"; +import type { GuildCategoryChannelRecord } from "../general/channels/GuildTextualChannelRecord"; +import type { GuildVocalChannelRecord } from "../general/channels/GuildVocalChannelRecord"; + +export declare class GuildChannelStore extends Store { + static displayName: "GuildChannelStore"; + + getAllGuilds(): { [guildId: string]: GuildChannels | undefined; }; + getChannels(guildId?: string | null): GuildChannels; + getDefaultChannel( + guild: string, + searchVocal?: SearchVocal /* = false */, + permissions?: /* Permissions */ bigint /* = Permissions.VIEW_CHANNEL */ + ): ChannelFromSearchVocal | null; + getDirectoryChannelIds(guildId: string): string[]; + getFirstChannel( + guildId: string, + predicate: ( + value: ChannelFromSearchVocal, + index: number, + array: ChannelFromSearchVocal[] + ) => unknown, + searchVocal?: SearchVocal /* = false */ + ): ChannelFromSearchVocal | null; + getFirstChannelOfType( + guildId: string, + predicate: ( + value: ChannelFromGuildChannelType, + index: number, + array: ChannelFromGuildChannelType[] + ) => unknown, + type: Type + ): ChannelFromGuildChannelType | null; + getSelectableChannelIds(guildId: string): string[]; + getSelectableChannels(guildId: string): GuildChannel[]; + getSFWDefaultChannel( + guild: string, + searchVocal?: SearchVocal /* = false */, + permissions?: /* Permissions */ bigint /* = Permissions.VIEW_CHANNEL */ + ): ChannelFromSearchVocal | null; + getTextChannelNameDisambiguations(guildId?: string | null): { + [channelId: string]: { id: string; name: string; }; + }; + getVocalChannelIds(guildId: string): string[]; + hasCategories(guildId: string): boolean; + hasChannels(guildId: string): boolean; + hasElevatedPermissions(guildId: string): boolean; + hasSelectableChannel(guildId: string, channelId: string): boolean; + initialize(): void; +} + +export interface GuildChannels { + count: number; + [GuildChannelType.CATEGORY]: GuildChannel[]; + [GuildChannelType.SELECTABLE]: GuildChannel[]; + [GuildChannelType.VOCAL]: GuildChannel[]; + /** The ID of the guild. */ + id: string; +} + +// Does not actually exist. +export enum GuildChannelType { + CATEGORY = ChannelType.GUILD_CATEGORY, + SELECTABLE = "SELECTABLE", + VOCAL = "VOCAL", +} + +export interface GuildChannel { + channel: Channel; + comparator: number; +} + +type ChannelFromSearchVocal + = GuildSelectableChannelRecord + | (SearchVocal extends true ? GuildVocalChannelRecord : never); + +type ChannelFromGuildChannelType = { + [GuildChannelType.CATEGORY]: GuildCategoryChannelRecord; + [GuildChannelType.SELECTABLE]: GuildSelectableChannelRecord; + [GuildChannelType.VOCAL]: GuildVocalChannelRecord; +}[Type]; diff --git a/packages/discord-types/src/stores/GuildMemberStore.ts b/packages/discord-types/src/stores/GuildMemberStore.ts new file mode 100644 index 000000000..c7eb28e7f --- /dev/null +++ b/packages/discord-types/src/stores/GuildMemberStore.ts @@ -0,0 +1,36 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { GuildMember } from "../general/GuildMember"; +import type { Nullish } from "../internal"; + +export declare class GuildMemberStore extends Store { + static displayName: "GuildMemberStore"; + + getCommunicationDisabledUserMap(): { [userId: string]: string; }; + getCommunicationDisabledVersion(): number; + getMember(guildId: string, userId: string): GuildMember | null; + getMemberIds(guildId?: string | null): string[]; + getMemberRoleWithPendingUpdates(guildId: string, userId: string): string[]; + getMembers(guildId?: string | null): GuildMember[]; + getMemberVersion(): number; + getMutableAllGuildsAndMembers(): { [guildId: string]: { [userId: string]: GuildMember; }; }; + getNick(guildId?: string | null, userId?: string | null): string | null; + getNicknameGuildsMapping(userId: string): { [nickname: string]: string[]; }; + getNicknames(userId: string): string[]; + getPendingRoleUpdates(guildId: string): { + added: string[]; + removed: string[]; + }; + getSelfMember(guildId: string): GuildMember | Nullish; + getTrueMember(guildId: string, userId: string): GuildMember | Nullish; + initialize(): void; + isCurrentUserGuest(guildId?: string | null): boolean; + isGuestOrLurker(guildId?: string | null, userId?: string | null): boolean; + isMember(guildId?: string | null, userId?: string | null): boolean; + memberOf(userId: string): string[]; +} diff --git a/packages/discord-types/src/stores/GuildStore.ts b/packages/discord-types/src/stores/GuildStore.ts new file mode 100644 index 000000000..3737ed532 --- /dev/null +++ b/packages/discord-types/src/stores/GuildStore.ts @@ -0,0 +1,23 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { GuildRecord } from "../general/GuildRecord"; +import type { Role } from "../general/Role"; + +export declare class GuildStore extends Store { + static displayName: "GuildStore"; + + getAllGuildsRoles(): { [guildId: string]: { [roleId: string]: Role; }; }; + getGeoRestrictedGuilds(): { [guildId: string]: GuildRecord; }; + getGuild(guildId?: string | null): GuildRecord | undefined; + getGuildCount(): number; + getGuildIds(): string[]; + getGuilds(): { [guildId: string]: GuildRecord; }; + getRole(guildId: string, roleId: string): Role | undefined; + getRoles(guildId: string): { [roleId: string]: Role; }; + isLoaded(): boolean; +} diff --git a/packages/discord-types/src/stores/MessageStore.ts b/packages/discord-types/src/stores/MessageStore.ts new file mode 100644 index 000000000..59a263114 --- /dev/null +++ b/packages/discord-types/src/stores/MessageStore.ts @@ -0,0 +1,30 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { ChannelMessages } from "../general/messages/ChannelMessages"; +import type { MessageRecord } from "../general/messages/MessageRecord"; +import type { Nullish } from "../internal"; + +export declare class MessageStore extends Store { + static displayName: "MessageStore"; + + focusedMessageId(channelId: string): string | undefined; + getLastCommandMessage(channelId: string): MessageRecord | undefined; + getLastEditableMessage(channelId: string): MessageRecord | undefined; + getLastMessage(channelId: string): MessageRecord | undefined; + getLastNonCurrentUserMessage(channelId: string): MessageRecord | undefined; + getMessage(channelId: string, messageId: string): MessageRecord | undefined; + getMessages(channelId: string): ChannelMessages; + hasCurrentUserSentMessage(channelId: string): boolean; + hasCurrentUserSentMessageSinceAppStart(): boolean; + hasPresent(channelId: string): boolean; + initialize(): void; + isLoadingMessages(channelId: string): boolean; + isReady(channelId: string): boolean; + jumpedMessageId(channelId: string): string | Nullish; + whenReady(channelId: string, callback: () => void): void; +} diff --git a/packages/discord-types/src/stores/PermissionStore.ts b/packages/discord-types/src/stores/PermissionStore.ts new file mode 100644 index 000000000..3870fe975 --- /dev/null +++ b/packages/discord-types/src/stores/PermissionStore.ts @@ -0,0 +1,79 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { ChannelRecord } from "../general/channels/ChannelRecord"; +import type { GuildRecord } from "../general/GuildRecord"; +import type { PermissionOverwriteMap } from "../general/Permissions"; +import type { Role } from "../general/Role"; +import type { UserRecord } from "../general/UserRecord"; + +export declare class PermissionStore extends Store { + static displayName: "PermissionStore"; + + /** Always returns false for private (non-guild) channels. */ + can( + permissions: /* Permissions */ bigint, + context?: GuildRecord | ChannelRecord | null, + overwrites?: PermissionOverwriteMap | null, + roles?: { [roleId: string]: Role; } | null, + excludeGuildPermissions?: boolean /* = false */ + ): boolean; + canAccessGuildSettings(guild: GuildRecord): boolean; + canAccessMemberSafetyPage(guild: GuildRecord): boolean; + canBasicChannel( + permissions: Context extends BasicPermissionsObject ? /* Permissions */ bigint : Parameters[0], + context: Context, + overwrites?: PermissionOverwriteMap | null, + roles?: { [roleId: string]: Role; } | null, + excludeGuildPermissions?: boolean /* = false */ + ): boolean; + canImpersonateRole(guild: GuildRecord, role: Role): boolean; + canManageUser( + permissions: /* Permissions */ bigint, + userOrUserId: UserRecord | string, + guild: GuildRecord + ): boolean; + canWithPartialContext( + context: { guildId: string; } | { channelId: string; }, + permissions: /* Permissions */ bigint + ): boolean; + computeBasicPermissions(context: BasicPermissionsObject): /* Permissions */ bigint; + computePermissions( + context?: GuildRecord | ChannelRecord | null, + overwrites?: PermissionOverwriteMap | null, + roles?: { [roleId: string]: Role; } | null, + excludeGuildPermissions?: boolean /* = false */ + ): /* Permissions */ bigint; + getChannelPermissions(channel: ChannelRecord): /* Permissions */ bigint; + getChannelsVersion(): number; + getGuildPermissionProps(guild: GuildRecord): { + canAccessMembersPage: boolean; + canManageBans: boolean; + canManageChannels: boolean; + canManageGuild: boolean; + canManageGuildExpressions: boolean; + canManageNicknames: boolean; + canManageRoles: boolean; + canManageWebhooks: boolean; + canViewAuditLog: boolean; + canViewAuditLogV2: boolean; + canViewGuildAnalytics: boolean; + guild: GuildRecord; + isGuildAdmin: boolean; + isOwner: boolean; + isOwnerWithRequiredMfaLevel: boolean; + }; + getGuildPermissions(guild: GuildRecord): /* Permissions */ bigint; + getGuildVersion(guildId: string): number; + getHighestRole(guild: GuildRecord): Role; + initialize(): void; + isRoleHigher(guild: GuildRecord, roleA: Role, roleB: Role): boolean; +} + +export interface BasicPermissionsObject { + basicPermissions: bigint; +} diff --git a/packages/discord-types/src/stores/PresenceStore.ts b/packages/discord-types/src/stores/PresenceStore.ts new file mode 100644 index 000000000..03c096ed8 --- /dev/null +++ b/packages/discord-types/src/stores/PresenceStore.ts @@ -0,0 +1,90 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { Activity } from "../general/Activity"; + +export declare class PresenceStore extends Store { + static displayName: "PresenceStore"; + + findActivity( + userId: string, + predicate: ( + value: Activity, + index: number, + array: Activity[] + ) => value is T, + guildId?: string | null /* = null */ + ): T | undefined; + findActivity( + userId: string, + predicate: ( + value: Activity, + index: number, + array: Activity[] + ) => unknown, + guildId?: string | null /* = null */ + ): Activity | undefined; + getActivities(userId: string, guildId?: string | null /* = null */): Activity[]; + getActivityMetadata(userId: string): Record | undefined; + getAllApplicationActivities(applicationId?: Activity["application_id"]): { + activity: Activity; + userId: string; + }[]; + getApplicationActivity( + userId: string, + applicationId?: Activity["application_id"], + guildId?: string | null /* = null */ + ): Activity | undefined; + getClientStatus(userId: string): ClientStatusMap | undefined; + getPrimaryActivity(userId: string, guildId?: string | null /* = null */): Activity | undefined; + getState(): { + activities: { [userId: string]: Activity[]; }; + activityMetadata: { [userId: string]: Record; }; + clientStatuses: { [userId: string]: ClientStatusMap; }; + lastOnlineTimestamps: { [userId: string]: number; }; + presencesForGuilds: { [userId: string]: { [guildId: string]: GuildPresence; }; }; + statuses: { [userId: string]: StatusType; }; + }; + getStatus( + userId: string, + guildId?: string | null /* = null */, + defaultStatus?: StatusType /* = StatusType.OFFLINE */ + ): StatusType; + getUserIds(): string[]; + initialize(): void; + isMobileOnline(userId: string): boolean; + setCurrentUserOnConnectionOpen(status: StatusType, activities: Activity[]): void; +} + +export type ClientStatusMap = Partial>; + +// Original name: ClientTypes +export enum ClientType { + DESKTOP = "desktop", + EMBEDDED = "embedded", // Undocumented + MOBILE = "mobile", + UNKNOWN = "unknown", + WEB = "web", +} + +// Original name: StatusTypes +export enum StatusType { + DND = "dnd", + IDLE = "idle", + INVISIBLE = "invisible", + OFFLINE = "offline", + ONLINE = "online", + STREAMING = "streaming", + UNKNOWN = "unknown", +} + +export interface GuildPresence { + activities: Activity[]; + clientStatus: ClientStatusMap; + status: StatusType; + timestamp: number; +} diff --git a/packages/discord-types/src/stores/ReadStateStore.ts b/packages/discord-types/src/stores/ReadStateStore.ts new file mode 100644 index 000000000..50dac7bc5 --- /dev/null +++ b/packages/discord-types/src/stores/ReadStateStore.ts @@ -0,0 +1,71 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { GuildChannelRecord } from "../general/channels/ChannelRecord"; +import type { GuildRecord } from "../general/GuildRecord"; +import type { ChannelIdReadStateType, GuildChannelOverride, GuildIdReadStateType, ReadState, ReadStateSnapshot, ReadStateType, SerializedReadState, UserIdReadStateType } from "../general/ReadState"; +import type { BasicPermissionsObject } from "./PermissionStore"; + +export declare class ReadStateStore extends Store { + static displayName: "ReadStateStore"; + + ackMessageId(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): string | null; + getAllReadStates(forCache: ForCache): SerializedReadState; + getForDebugging(channelId: string, type?: ChannelIdReadStateType): ReadState | undefined; + getForDebugging(userId: string, type: Type): ReadState | undefined; + getForDebugging(guildId: string, type: Type): ReadState | undefined; + getGuildChannelUnreadState( + guildChannel: BasicPermissionsObject | GuildChannelRecord, + isOptInEnabled: boolean, + guildChannelOverrides: { [channelId: string]: GuildChannelOverride; }, + isChannelMuted: boolean, + isReadStateTypeUnread?: boolean + ): { + mentionCount: boolean; + unread: boolean; + }; + getGuildUnreadsSentinel(guildId: string): typeof ReadState["_guildReadStateSentinels"]; + getMentionChannelIds(): string[]; + getMentionCount(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): number; + getNonChannelAckId(type: ReadStateType.NOTIFICATION_CENTER | ReadStateType.MESSAGE_REQUESTS): string | null; + /** + * @param meId The user ID of the current user. + * @returns The ReadState object for the inbox of the current user. If the current user has not yet been loaded, undefined is returned. + */ + getNotifCenterReadState(meId: string): ReadState | undefined; + getOldestUnreadMessageId(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): string | null; + getOldestUnreadTimestamp(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): number; + getReadStatesByChannel(): { [channelId: string]: ReadState; }; + getSnapshot(id: string, snapshotTTL: number): ReadStateSnapshot; + getTrackedAckMessageId(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): string | null; + getUnreadCount(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): number; + hasOpenedThread(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): boolean; + hasRecentlyVisitedAndRead(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): boolean; + hasTrackedUnread(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): boolean; + hasUnread(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): boolean; + hasUnreadOrMentions(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): boolean; + hasUnreadPins(channelId: string): boolean; + initialize(): void; + isEstimated(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): boolean; + isForumPostUnread(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): boolean; + isNewForumThread(forumThreadId: string, forumId: string, guild?: GuildRecord | null): boolean; + /** + * Returns the ID of the last message in the channel associated with the specified ID. + * @returns The ID of the channel's last message or null if no messages have ever been sent in the channel. If the channel has not been fetched, null is returned. + */ + lastMessageId(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): string | null; + /** + * Returns the timestamp of the last message in the channel associated with the specified ID. + * @returns The timestamp of the channel's last message or 0 if no messages have ever been sent in the channel. If the channel has not been fetched, 0 is returned. + */ + lastMessageTimestamp(id: string, type?: ReadStateType /* = ReadStateType.CHANNEL */): number; + /** + * Returns the timestamp of the last pin in the channel associated with the specified ID. + * @returns The timestamp of the channel's last pin or 0 if the channel has no pins. If the channel has not been fetched, null is returned. + */ + lastPinTimestamp(channelId: string): number | null; +} diff --git a/packages/discord-types/src/stores/RelationshipStore.ts b/packages/discord-types/src/stores/RelationshipStore.ts new file mode 100644 index 000000000..3bf744c90 --- /dev/null +++ b/packages/discord-types/src/stores/RelationshipStore.ts @@ -0,0 +1,47 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { MessageRecord } from "../general/messages/MessageRecord"; +import type { Nullish } from "../internal"; + +export declare class RelationshipStore extends Store { + static displayName: "RelationshipStore"; + + /** @todo May eventually be renamed to `getBlockedIds`. */ + getBlockedIDs(): string[]; + getFriendCount(): number; + /** @todo May eventually be renamed to `getFriendIds`. */ + getFriendIDs(): string[]; + getNickname(userId: string): string | undefined; + getOutgoingCount(): number; + getPendingCount(): number; + getRelationshipCount(): number; + getRelationships(): { [userId: string]: RelationshipType; }; + getRelationshipType(userId: string): RelationshipType; + getSince(userId: string): string | undefined; + getSinces(): { [userId: string]: string; }; + getSpamCount(): number; + initialize(): void; + isBlocked(userId?: string | null): boolean; + isBlockedForMessage(message?: MessageRecord | { + author?: { id: string; } | Nullish; + interaction_metadata?: { user: { id?: string | Nullish; } | Nullish; } | Nullish; + }): boolean; + isFriend(userId?: string | null): boolean; + isSpam(userId: string): boolean; +} + +// Original name: RelationshipTypes +export enum RelationshipType { + NONE = 0, + FRIEND = 1, + BLOCKED = 2, + PENDING_INCOMING = 3, + PENDING_OUTGOING = 4, + IMPLICIT = 5, + SUGGESTION = 6, +} diff --git a/packages/discord-types/src/stores/SelectedChannelStore.ts b/packages/discord-types/src/stores/SelectedChannelStore.ts new file mode 100644 index 000000000..45f6dee3a --- /dev/null +++ b/packages/discord-types/src/stores/SelectedChannelStore.ts @@ -0,0 +1,24 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; +import type { Nullish } from "../internal"; + +export declare class SelectedChannelStore extends Store { + static displayName: "SelectedChannelStore"; + + getChannelId(guildId?: string | null): string | undefined; + getCurrentlySelectedChannelId(guildId?: string | null): string | Nullish; + getLastChannelFollowingDestination(): { + channelId: string; + guildId: string; + }; + getLastSelectedChannelId(guildId?: string | null): string | undefined; + getLastSelectedChannels(guildId: string | null): string | undefined; + getMostRecentSelectedTextChannelId(guildId?: string | null): string | null; + getVoiceChannelId(): string | null; + initialize(): void; +} diff --git a/packages/discord-types/src/stores/SelectedGuildStore.ts b/packages/discord-types/src/stores/SelectedGuildStore.ts new file mode 100644 index 000000000..b053add01 --- /dev/null +++ b/packages/discord-types/src/stores/SelectedGuildStore.ts @@ -0,0 +1,28 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { PersistedStore } from "../flux/PersistedStore"; +import type { GenericConstructor } from "../internal"; + +export interface SelectedGuildStoreState { + lastSelectedGuildId: string | null; + selectedGuildId: string | null; + selectedGuildTimestampMillis: { [guildId: string]: number; }; +} + +export declare class SelectedGuildStore< + Constructor extends GenericConstructor = typeof SelectedGuildStore, + State extends SelectedGuildStoreState = SelectedGuildStoreState +> extends PersistedStore { + static displayName: "SelectedGuildStore"; + static persistKey: "SelectedGuildStore"; + + getGuildId(): string | null; + getLastSelectedGuildId(): string | null; + getLastSelectedTimestamp(guildId: string): number | undefined; + getState(): State; + initialize(state?: State | null): void; +} diff --git a/packages/discord-types/src/stores/ThemeStore.ts b/packages/discord-types/src/stores/ThemeStore.ts new file mode 100644 index 000000000..d364c58b1 --- /dev/null +++ b/packages/discord-types/src/stores/ThemeStore.ts @@ -0,0 +1,37 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { PersistedStore } from "../flux"; +import type { GenericConstructor } from "../internal"; + +export interface ThemeStoreState { + theme: Theme; +} + +export declare class ThemeStore< + Constructor extends GenericConstructor = typeof ThemeStore, + State extends ThemeStoreState = ThemeStoreState +> extends PersistedStore { + static displayName: "ThemeStore"; + static persistKey: "ThemeStore"; + + get darkSidebar(): boolean; + getState(): State; + initialize(state?: State | null): void; + get isSystemThemeAvailable(): boolean; + get systemPrefersColorScheme(): Theme.DARK | Theme.LIGHT | undefined; + /** Only null when `isSystemThemeAvailable` is false. */ + get systemTheme(): Theme.DARK | Theme.LIGHT | null; + get theme(): Theme; +} + +// Original name: Themes +export enum Theme { + DARK = "dark", + DARKER = "darker", + LIGHT = "light", + MIDNIGHT = "midnight", +} diff --git a/packages/discord-types/src/stores/UserProfileStore.ts b/packages/discord-types/src/stores/UserProfileStore.ts new file mode 100644 index 000000000..9c7281fae --- /dev/null +++ b/packages/discord-types/src/stores/UserProfileStore.ts @@ -0,0 +1,49 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { SnapshotStore, SnapshotStoreSnapshot } from "../flux/SnapshotStore"; +import type { GuildMemberProfile } from "../general/GuildMemberProfile"; +import type { GuildRecord } from "../general/GuildRecord"; +import type { UserProfile } from "../general/UserProfile"; +import type { UserRecord } from "../general/UserRecord"; +import type { GenericConstructor, Nullish } from "../internal"; +import type { StatusType } from "./PresenceStore"; + +export interface UserProfileStoreSnapshotData { + profile: UserProfile | undefined; + userId: string; +} + +export declare class UserProfileStore< + Constructor extends GenericConstructor = typeof UserProfileStore, + SnapshotData extends UserProfileStoreSnapshotData = UserProfileStoreSnapshotData +> extends SnapshotStore { + constructor(); + + static displayName: "UserProfileStore"; + static LATEST_SNAPSHOT_VERSION: number; + + getGuildMemberProfile(userId: string, guildId?: string | null): GuildMemberProfile | Nullish; + getMutualFriends(userId: string): { + /** The ID of the user. */ + key: string; + status: StatusType; + user: UserRecord; + }[] | undefined; + getMutualFriendsCount(userId: string): number | undefined; + getMutualGuilds(userId: string): { + guild: GuildRecord; + nick: string | null; + }[] | undefined; + getUserProfile(userId: string): UserProfile | undefined; + initialize(): void; + isFetchingFriends(userId: string): boolean; + isFetchingProfile(userId: string): boolean; + get isSubmitting(): boolean; + takeSnapshot(): SnapshotStoreSnapshot; + + loadCache: () => void; +} diff --git a/packages/discord-types/src/stores/UserStore.ts b/packages/discord-types/src/stores/UserStore.ts new file mode 100644 index 000000000..45c7be99e --- /dev/null +++ b/packages/discord-types/src/stores/UserStore.ts @@ -0,0 +1,48 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { SnapshotStore, SnapshotStoreSnapshot } from "../flux/SnapshotStore"; +import type { UserRecord } from "../general/UserRecord"; +import type { GenericConstructor, Nullish } from "../internal"; + +export interface UserStoreSnapshotData { + users: [UserRecord?]; +} + +export declare class UserStore< + Constructor extends GenericConstructor = typeof UserStore, + SnapshotData extends UserStoreSnapshotData = UserStoreSnapshotData +> extends SnapshotStore { + constructor(); + + static displayName: "UserStore"; + static LATEST_SNAPSHOT_VERSION: number; + + filter(predicate: (user: UserRecord) => user is T, sort?: boolean /* = false */): T[]; + filter(predicate: (user: UserRecord) => unknown, sort?: boolean /* = false */): UserRecord[]; + findByTag(username: string, discriminator?: string | null): UserRecord | undefined; + /** + * @param callback The iteratee. Iteration will terminate early if it returns false. + */ + forEach(callback: (user: UserRecord) => unknown): void; + /** + * @returns The UserRecord object for the current user. If the current user has not yet been loaded, undefined is returned. + */ + getCurrentUser(): UserRecord | undefined; + getUser(userId?: string | null): UserRecord | undefined; + getUsers(): { [userId: string]: UserRecord; }; + getUserStoreVersion(): number; + handleLoadCache(cache: { + /** @todo */ + initialGuildChannels: readonly any[]; + /** @todo */ + privateChannels: readonly any[]; + /** @todo */ + users: readonly any[] | Nullish; + }): void; + initialize(): void; + takeSnapshot(): SnapshotStoreSnapshot; +} diff --git a/packages/discord-types/src/stores/WindowStore.ts b/packages/discord-types/src/stores/WindowStore.ts new file mode 100644 index 000000000..3fbffe7f6 --- /dev/null +++ b/packages/discord-types/src/stores/WindowStore.ts @@ -0,0 +1,18 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { Store } from "../flux/Store"; + +export declare class WindowStore extends Store { + static displayName: "WindowStore"; + + getFocusedWindowId(): string | null; + getLastFocusedWindowId(): string | null; + isElementFullScreen(windowId?: string): boolean; + isFocused(windowId?: string): boolean; + isVisible(windowId?: string): boolean; + windowSize(windowId?: string): { height: number; width: number; }; +} diff --git a/packages/discord-types/src/stores/index.ts b/packages/discord-types/src/stores/index.ts new file mode 100644 index 000000000..dc7004d63 --- /dev/null +++ b/packages/discord-types/src/stores/index.ts @@ -0,0 +1,24 @@ +/* + * discord-types + * Copyright (C) 2024 Vencord project contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export * from "./ApplicationStore"; +export * from "./ChannelStore"; +export * from "./DraftStore"; +export * from "./EmojiStore"; +export * from "./GuildChannelStore"; +export * from "./GuildMemberStore"; +export * from "./GuildStore"; +export * from "./MessageStore"; +export * from "./PermissionStore"; +export * from "./PresenceStore"; +export * from "./ReadStateStore"; +export * from "./RelationshipStore"; +export * from "./SelectedChannelStore"; +export * from "./SelectedGuildStore"; +export * from "./ThemeStore"; +export * from "./UserProfileStore"; +export * from "./UserStore"; +export * from "./WindowStore"; diff --git a/packages/discord-types/src/tsconfig.json b/packages/discord-types/src/tsconfig.json new file mode 100644 index 000000000..896bfe150 --- /dev/null +++ b/packages/discord-types/src/tsconfig.json @@ -0,0 +1,37 @@ +{ + "compilerOptions": { + "exactOptionalPropertyTypes": true, + "noUncheckedIndexedAccess": true, + "noUncheckedSideEffectImports": true, + "strict": true, + + "module": "Node16", + "typeRoots": ["../node_modules/@types"], + "types": [ + "events", + "intl-messageformat", + "lodash", + "react" + ], + + "noEmit": true, + + "isolatedModules": true, + + "lib": [ + "ES2019", + "ES2020.BigInt", + "ES2020.Date", + "ES2020.Intl", + "ES2020.Number", + "ES2020.Promise", + "ES2020.String", + "ES2021.String", + "ES2022.Array", + "ES2022.Object", + "ES2022.String", + "ES2023.Array" + ], + "target": "ES2020" + } +} diff --git a/packages/discord-types/tsconfig.json b/packages/discord-types/tsconfig.json new file mode 100644 index 000000000..24f5e38ac --- /dev/null +++ b/packages/discord-types/tsconfig.json @@ -0,0 +1,29 @@ +{ + "exclude": ["src"], + "references": [{ "path": "../.." }], + + "compilerOptions": { + "exactOptionalPropertyTypes": true, + "noUncheckedIndexedAccess": true, + "noUncheckedSideEffectImports": true, + "strict": true, + + "module": "NodeNext", + "typeRoots": ["./node_modules/@types"], + "types": ["node", "semver"], + + "inlineSourceMap": true, + "noEmit": true, + + "allowJs": true, + "checkJs": true, + + // https://github.com/microsoft/TypeScript/issues/58353 + // https://github.com/microsoft/TypeScript/issues/44540 + "jsx": "preserve", + "target": "ESNext", + + // https://github.com/microsoft/TypeScript/issues/8836 + "skipLibCheck": true + } +} diff --git a/packages/vencord-types/.gitignore b/packages/vencord-types/.gitignore index bc23f8b6a..f643e5b2f 100644 --- a/packages/vencord-types/.gitignore +++ b/packages/vencord-types/.gitignore @@ -5,3 +5,4 @@ !prepare.ts !index.d.ts !globals.d.ts +!LICENSE diff --git a/packages/vencord-types/LICENSE b/packages/vencord-types/LICENSE new file mode 100644 index 000000000..f288702d2 --- /dev/null +++ b/packages/vencord-types/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/packages/vencord-types/package.json b/packages/vencord-types/package.json index 8f9d852e4..192bf5f2c 100644 --- a/packages/vencord-types/package.json +++ b/packages/vencord-types/package.json @@ -1,28 +1,34 @@ { "name": "@vencord/types", - "private": false, "version": "0.1.3", "description": "", - "types": "index.d.ts", + "license": "GPL-3.0-or-later", + "author": "Vencord", + "repository": { + "type": "git", + "url": "https://github.com/Vendicated/Vencord.git", + "directory": "packages/vencord-types" + }, "scripts": { "prepublishOnly": "tsx ./prepare.ts", "test": "echo \"Error: no test specified\" && exit 1" }, - "keywords": [], - "author": "Vencord", - "license": "GPL-3.0", + "sideEffects": false, + "types": "./index.d.ts", + "dependencies": { + "@types/lodash": "~4.17.7", + "@types/node": "^18.19.50", + "@types/react": "~18.2.79", + "@types/react-dom": "~18.2.25", + "@vencord/discord-types": "workspace:^", + "discord-types": "latest", + "standalone-electron-types": "^1.0.0", + "type-fest": "^4.26.1" + }, "devDependencies": { "@types/fs-extra": "^11.0.4", "fs-extra": "^11.2.0", - "tsx": "^3.12.6" - }, - "dependencies": { - "@types/lodash": "^4.14.191", - "@types/node": "^18.11.18", - "@types/react": "^18.2.0", - "@types/react-dom": "^18.0.10", - "discord-types": "^1.3.26", - "standalone-electron-types": "^1.0.0", - "type-fest": "^3.5.3" + "tsx": "^4.19.1", + "typescript": "^5.6.2" } } diff --git a/packages/vencord-types/prepare.ts b/packages/vencord-types/prepare.ts index de1f6b04b..a2eda1acf 100644 --- a/packages/vencord-types/prepare.ts +++ b/packages/vencord-types/prepare.ts @@ -20,7 +20,7 @@ import { cpSync, moveSync, readdirSync, rmSync } from "fs-extra"; import { join } from "path"; readdirSync(join(__dirname, "src")) - .forEach(child => moveSync(join(__dirname, "src", child), join(__dirname, child), { overwrite: true })); + .forEach(child => { moveSync(join(__dirname, "src", child), join(__dirname, child), { overwrite: true }); }); const VencordSrc = join(__dirname, "..", "..", "src"); diff --git a/patches/@stylistic__eslint-plugin@2.8.0.patch b/patches/@stylistic__eslint-plugin@2.8.0.patch new file mode 100644 index 000000000..61b05dbc9 --- /dev/null +++ b/patches/@stylistic__eslint-plugin@2.8.0.patch @@ -0,0 +1,52 @@ +diff --git a/dist/rules/brace-style.js b/dist/rules/brace-style.js +index 224d58eb1e9047e572c6e3cecb567a5b69379392..3b6dbdefb1968efdbbe7887bac11baff8bbe2816 100644 +--- a/dist/rules/brace-style.js ++++ b/dist/rules/brace-style.js +@@ -6,6 +6,38 @@ require('eslint-visitor-keys'); + require('espree'); + require('estraverse'); + ++function* getAllCommentRanges(sourceCode) { ++ for (const { loc } of sourceCode.getAllComments()) ++ if (loc) yield [loc.start.line, loc.end.line]; ++} ++ ++function createLineSet(length) { ++ return (1n << BigInt(length)) - 1n; ++} ++ ++function isTokenOnSameLine(left, right, sourceCode) { ++ const leftEnd = left?.loc?.end.line; ++ const rightStart = right?.loc?.start.line; ++ if (leftEnd === rightStart) return true; ++ if (leftEnd !== undefined && rightStart !== undefined) { ++ if (rightStart - leftEnd <= 1) { ++ for (const [start, end] of getAllCommentRanges(sourceCode)) ++ if (start === leftEnd || end === rightStart) return true; ++ } else { ++ const targetLines = createLineSet(rightStart - leftEnd - 1); ++ let totalLines = 0n; ++ for (let [start, end] of getAllCommentRanges(sourceCode)) { ++ if (start >= rightStart || end <= leftEnd) continue; ++ start = Math.max(start, leftEnd + 1); ++ end = Math.min(rightStart - 1, end); ++ totalLines |= createLineSet(end - start + 1) << BigInt(start - leftEnd - 1); ++ if (totalLines === targetLines) return true; ++ } ++ } ++ } ++ return false; ++} ++ + var _baseRule = utils.createRule({ + name: "brace-style", + package: "js", +@@ -90,7 +122,7 @@ var _baseRule = utils.createRule({ + } + function validateCurlyBeforeKeyword(curlyToken) { + const keywordToken = sourceCode.getTokenAfter(curlyToken); +- if (style === "1tbs" && !utils.isTokenOnSameLine(curlyToken, keywordToken)) { ++ if (style === "1tbs" && !isTokenOnSameLine(curlyToken, keywordToken, sourceCode)) { + context.report({ + node: curlyToken, + messageId: "nextLineClose", diff --git a/patches/@typescript-eslint__eslint-plugin@8.6.0.patch b/patches/@typescript-eslint__eslint-plugin@8.6.0.patch new file mode 100644 index 000000000..75e7f26a2 --- /dev/null +++ b/patches/@typescript-eslint__eslint-plugin@8.6.0.patch @@ -0,0 +1,72 @@ +diff --git a/dist/rules/class-literal-property-style.js b/dist/rules/class-literal-property-style.js +index 2454cd853753408dca5335cf7cf7eccbd28d5255..c8c0aef6ef8fa1ce8beafeed06e68ebf88c3ec87 100644 +--- a/dist/rules/class-literal-property-style.js ++++ b/dist/rules/class-literal-property-style.js +@@ -79,8 +79,7 @@ exports.default = (0, util_1.createRule)({ + function excludeAssignedProperty(node) { + if ((0, util_1.isAssignee)(node)) { + const { excludeSet } = propertiesInfoStack[propertiesInfoStack.length - 1]; +- const name = (0, util_1.getStaticStringValue)(node.property) ?? +- context.sourceCode.getText(node.property); ++ const name = (0, util_1.getStaticMemberAccessValue)(node, context); + if (name) { + excludeSet.add(name); + } +diff --git a/dist/rules/class-methods-use-this.js b/dist/rules/class-methods-use-this.js +index 6d4a871cb4f6f57b97c338a472ea77dc10841706..acaa45fde2a8a9a2f9702cc80737c1b0bcc078ee 100644 +--- a/dist/rules/class-methods-use-this.js ++++ b/dist/rules/class-methods-use-this.js +@@ -121,7 +121,7 @@ exports.default = (0, util_1.createRule)({ + } + const hashIfNeeded = node.key.type === utils_1.AST_NODE_TYPES.PrivateIdentifier ? '#' : ''; + const name = (0, util_1.getStaticMemberAccessValue)(node, context); +- return !exceptMethods.has(hashIfNeeded + (name ?? '')); ++ return (typeof name !== 'string' || !exceptMethods.has(hashIfNeeded + name)); + } + /** + * Checks if we are leaving a function that is a method, and reports if 'this' has not been used. +diff --git a/dist/util/isArrayMethodCallWithPredicate.js b/dist/util/isArrayMethodCallWithPredicate.js +index eba71334f16a931ee51e9ad6d11cf4bba3c41a75..73a4044660d223450c54a9f9939631ad71562c05 100644 +--- a/dist/util/isArrayMethodCallWithPredicate.js ++++ b/dist/util/isArrayMethodCallWithPredicate.js +@@ -42,7 +42,7 @@ function isArrayMethodCallWithPredicate(context, services, node) { + return false; + } + const staticAccessValue = (0, misc_1.getStaticMemberAccessValue)(node.callee, context); +- if (!staticAccessValue || !ARRAY_PREDICATE_FUNCTIONS.has(staticAccessValue)) { ++ if (!ARRAY_PREDICATE_FUNCTIONS.has(staticAccessValue)) { + return false; + } + const checker = services.program.getTypeChecker(); +diff --git a/dist/util/misc.js b/dist/util/misc.js +index 4b4d937ee0f1c6bd51de3d5c7fb931648642abf6..826dcee437f9df7d81168bd5229c79a769692d89 100644 +--- a/dist/util/misc.js ++++ b/dist/util/misc.js +@@ -198,13 +198,21 @@ function isParenlessArrowFunction(node, sourceCode) { + } + function getStaticMemberAccessValue(node, { sourceCode }) { + const key = node.type === utils_1.AST_NODE_TYPES.MemberExpression ? node.property : node.key; +- if (!node.computed) { +- return key.type === utils_1.AST_NODE_TYPES.Literal +- ? `${key.value}` +- : key.name; ++ const { type } = key; ++ if (type === utils_1.AST_NODE_TYPES.Literal) { ++ return String(key.value); + } +- const value = (0, astUtils_1.getStaticValue)(key, sourceCode.getScope(node))?.value; +- return value == null ? undefined : `${value}`; ++ if (!node.computed && ++ (type === utils_1.AST_NODE_TYPES.Identifier || ++ type === utils_1.AST_NODE_TYPES.PrivateIdentifier)) { ++ return key.name; ++ } ++ const result = (0, astUtils_1.getStaticValue)(key, sourceCode.getScope(node)); ++ if (!result) { ++ return undefined; ++ } ++ const { value } = result; ++ return typeof value === 'symbol' ? value : String(value); + } + /** + * Answers whether the member expression looks like diff --git a/patches/eslint@9.8.0.patch b/patches/eslint@9.10.0.patch similarity index 94% rename from patches/eslint@9.8.0.patch rename to patches/eslint@9.10.0.patch index c91e45d56..ed2d15b3c 100644 --- a/patches/eslint@9.8.0.patch +++ b/patches/eslint@9.10.0.patch @@ -1,11 +1,11 @@ diff --git a/lib/rules/no-useless-escape.js b/lib/rules/no-useless-escape.js -index 0e0f6f09f2c35f3276173c08f832cde9f2cf56a0..7dc22851715f3574d935f513c1b5e35552985711 100644 +index 0e0f6f09f2c35f3276173c08f832cde9f2cf56a0..f764ac7ab6eebbdab22a4d0b12c4fd3919f56368 100644 --- a/lib/rules/no-useless-escape.js +++ b/lib/rules/no-useless-escape.js @@ -65,13 +65,31 @@ module.exports = { escapeBackslash: "Replace the `\\` with `\\\\` to include the actual backslash character." }, - + - schema: [] + schema: [{ + type: "object", @@ -22,13 +22,13 @@ index 0e0f6f09f2c35f3276173c08f832cde9f2cf56a0..7dc22851715f3574d935f513c1b5e355 + additionalProperties: false + }] }, - + create(context) { + const options = context.options[0] || {}; + const { extra, extraCharClass } = options; const sourceCode = context.sourceCode; const parser = new RegExpParser(); - + + const NON_CHARCLASS_ESCAPES = union(REGEX_NON_CHARCLASS_ESCAPES, new Set(extra)); + const CHARCLASS_ESCAPES = union(REGEX_GENERAL_ESCAPES, new Set(extraCharClass)); + @@ -37,7 +37,7 @@ index 0e0f6f09f2c35f3276173c08f832cde9f2cf56a0..7dc22851715f3574d935f513c1b5e355 * @param {ASTNode} node The node to report @@ -200,9 +218,9 @@ module.exports = { let allowedEscapes; - + if (characterClassStack.length) { - allowedEscapes = unicodeSets ? REGEX_CLASSSET_CHARACTER_ESCAPES : REGEX_GENERAL_ESCAPES; + allowedEscapes = unicodeSets ? REGEX_CLASSSET_CHARACTER_ESCAPES : CHARCLASS_ESCAPES; diff --git a/patches/standalone-electron-types@1.0.0.patch b/patches/standalone-electron-types@1.0.0.patch new file mode 100644 index 000000000..f32357ca8 --- /dev/null +++ b/patches/standalone-electron-types@1.0.0.patch @@ -0,0 +1,64 @@ +diff --git a/electron.d.ts b/electron.d.ts +index 492b758a13de744b5ddc47ef55e701b993f9aa32..4b571dd945eb1a222c061e93fd7db72314dd89b6 100644 +--- a/electron.d.ts ++++ b/electron.d.ts +@@ -5,7 +5,12 @@ + + /// + ++declare module "standalone-electron-types" { ++ export = Electron; ++ global { + type GlobalEvent = Event & { returnValue: any }; ++ } ++} + + declare namespace Electron { + const NodeEventEmitter: typeof import('events').EventEmitter; +@@ -1199,6 +1204,7 @@ declare namespace Electron { + * `userData` directory on _Linux_ and _Windows_. + */ + setAppLogsPath(path?: string): void; ++ setAppPath(path: string | null): void; + /** + * Changes the Application User Model ID to `id`. + * +@@ -17599,6 +17605,8 @@ declare module 'electron/renderer' { + export = Electron.Renderer + } + ++declare module "standalone-electron-types" { ++ global { + interface NodeRequireFunction { + (moduleName: 'electron'): typeof Electron.CrossProcessExports; + (moduleName: 'electron/main'): typeof Electron.Main; +@@ -17619,17 +17627,21 @@ interface File { + */ + path: string; + } ++ } ++} + + declare module 'original-fs' { + import * as fs from 'fs'; + export = fs; + } + ++declare module "standalone-electron-types" { ++ global { + interface Document { + createElement(tagName: 'webview'): Electron.WebviewTag; + } + +-declare namespace NodeJS { ++namespace NodeJS { + interface Process extends NodeJS.EventEmitter { + + // Docs: https://electronjs.org/docs/api/process +@@ -17840,4 +17852,6 @@ declare namespace NodeJS { + readonly electron: string; + readonly chrome: string; + } ++} ++ } + } diff --git a/patches/typescript-transform-paths@3.5.1.patch b/patches/typescript-transform-paths@3.5.1.patch new file mode 100644 index 000000000..15689cda7 --- /dev/null +++ b/patches/typescript-transform-paths@3.5.1.patch @@ -0,0 +1,13 @@ +diff --git a/dist/transformer.js b/dist/transformer.js +index a065be75d92d96332bb38dd66e45aa742c191446..259463bb61e50396289cf56abcaf89de5009e6a4 100644 +--- a/dist/transformer.js ++++ b/dist/transformer.js +@@ -108,7 +108,7 @@ manualTransformOptions) { + ...tsTransformPathsContext, + sourceFile, + isDeclarationFile: sourceFile.isDeclarationFile, +- originalSourceFile: tsInstance.getOriginalSourceFile(sourceFile), ++ originalSourceFile: tsInstance.getSourceFileOfNode(sourceFile), + getVisitor() { + return visitor_1.nodeVisitor.bind(this); + }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eaa6b537c..585c7f893 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,13 +4,44 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + array-includes: npm:@nolyfill/array-includes@^1 + array.prototype.findlast: npm:@nolyfill/array.prototype.findlast@^1 + array.prototype.flat: npm:@nolyfill/array.prototype.flat@^1 + array.prototype.flatmap: npm:@nolyfill/array.prototype.flatmap@^1 + array.prototype.tosorted: npm:@nolyfill/array.prototype.tosorted@^1 + es-iterator-helpers: npm:@nolyfill/es-iterator-helpers@^1 + hasown: npm:@nolyfill/hasown@^1 + is-core-module: npm:@nolyfill/is-core-module@^1 + isarray: npm:@nolyfill/isarray@^1 + object.assign: npm:@nolyfill/object.assign@^1 + object.entries: npm:@nolyfill/object.entries@^1 + object.fromentries: npm:@nolyfill/object.fromentries@^1 + object.values: npm:@nolyfill/object.values@^1 + string.prototype.matchall: npm:@nolyfill/string.prototype.matchall@^1 + string.prototype.repeat: npm:@nolyfill/string.prototype.repeat@^1 + +packageExtensionsChecksum: fb2f27f382982b88ddd5814c14a6a444 + patchedDependencies: + '@stylistic/eslint-plugin@2.8.0': + hash: hgabz23qzpdlfvbmkgegp3so3q + path: patches/@stylistic__eslint-plugin@2.8.0.patch + '@typescript-eslint/eslint-plugin@8.6.0': + hash: rf3fsbgjxv7ylxpzkcvrp4lpfq + path: patches/@typescript-eslint__eslint-plugin@8.6.0.patch eslint-plugin-path-alias@2.1.0: hash: japuwsqfkulviwgkm4kd2oi3ky path: patches/eslint-plugin-path-alias@2.1.0.patch - eslint@9.8.0: - hash: xm46kqcmdgzlmm4aifkfpxaho4 - path: patches/eslint@9.8.0.patch + eslint@9.10.0: + hash: wy5a2dwvtxac2ygzwebqqjurgi + path: patches/eslint@9.10.0.patch + standalone-electron-types@1.0.0: + hash: cvychuhjtbzvtowhc2efrgpqjq + path: patches/standalone-electron-types@1.0.0.patch + typescript-transform-paths@3.5.1: + hash: 67beklx2y5qvw7iy3wqqxjhwr4 + path: patches/typescript-transform-paths@3.5.1.patch importers: @@ -32,135 +63,223 @@ importers: specifier: github:mattdesl/gifenc#64842fca317b112a8590f8fef2bf3825da8f6fe3 version: https://codeload.github.com/mattdesl/gifenc/tar.gz/64842fca317b112a8590f8fef2bf3825da8f6fe3 monaco-editor: - specifier: ^0.50.0 - version: 0.50.0 + specifier: ^0.51.0 + version: 0.51.0 nanoid: specifier: ^5.0.7 version: 5.0.7 - virtual-merge: - specifier: ^1.0.1 - version: 1.0.1 devDependencies: '@stylistic/eslint-plugin': - specifier: ^2.6.1 - version: 2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) + specifier: ^2.8.0 + version: 2.8.0(patch_hash=hgabz23qzpdlfvbmkgegp3so3q)(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + '@stylistic/stylelint-config': + specifier: ^2.0.0 + version: 2.0.0(stylelint@16.9.0(typescript@5.6.2)) + '@stylistic/stylelint-plugin': + specifier: ^3.0.1 + version: 3.0.1(stylelint@16.9.0(typescript@5.6.2)) '@types/chrome': - specifier: ^0.0.269 - version: 0.0.269 + specifier: ^0.0.271 + version: 0.0.271 '@types/diff': - specifier: ^5.2.1 - version: 5.2.1 + specifier: ^5.2.2 + version: 5.2.2 + '@types/html-minifier-terser': + specifier: ^7.0.2 + version: 7.0.2 '@types/lodash': - specifier: ^4.17.7 + specifier: ~4.17.7 version: 4.17.7 '@types/node': - specifier: ^22.0.3 - version: 22.0.3 + specifier: ^18.19.50 + version: 18.19.50 '@types/react': - specifier: ^18.3.3 - version: 18.3.3 + specifier: ~18.2.79 + version: 18.2.79 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ~18.2.25 + version: 18.2.25 '@types/yazl': specifier: ^2.4.5 version: 2.4.5 + '@vencord/discord-types': + specifier: workspace:^ + version: link:packages/discord-types diff: - specifier: ^5.2.0 - version: 5.2.0 + specifier: ^7.0.0 + version: 7.0.0 discord-types: - specifier: ^1.3.26 - version: 1.3.26 + specifier: latest + version: 1.3.3 esbuild: - specifier: ^0.15.18 - version: 0.15.18 + specifier: ^0.23.1 + version: 0.23.1 eslint: - specifier: ^9.8.0 - version: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) - eslint-import-resolver-alias: - specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))) + specifier: ^9.10.0 + version: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) eslint-plugin-path-alias: - specifier: 2.1.0 - version: 2.1.0(patch_hash=japuwsqfkulviwgkm4kd2oi3ky)(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) + specifier: ^2.1.0 + version: 2.1.0(patch_hash=japuwsqfkulviwgkm4kd2oi3ky)(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + eslint-plugin-react: + specifier: ^7.36.1 + version: 7.36.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) eslint-plugin-simple-header: - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.2.1 + version: 1.2.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) + version: 12.1.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) eslint-plugin-unused-imports: - specifier: ^4.0.1 - version: 4.0.1(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) + specifier: ^4.1.4 + version: 4.1.4(@typescript-eslint/eslint-plugin@8.6.0(patch_hash=rf3fsbgjxv7ylxpzkcvrp4lpfq)(@typescript-eslint/parser@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) highlight.js: - specifier: 10.7.3 - version: 10.7.3 + specifier: 11.8.0 + version: 11.8.0 html-minifier-terser: specifier: ^7.2.0 version: 7.2.0 moment: - specifier: ^2.30.1 - version: 2.30.1 + specifier: 2.22.2 + version: 2.22.2 puppeteer-core: - specifier: ^22.15.0 - version: 22.15.0 + specifier: ^23.4.0 + version: 23.4.0 standalone-electron-types: specifier: ^1.0.0 - version: 1.0.0 + version: 1.0.0(patch_hash=cvychuhjtbzvtowhc2efrgpqjq) stylelint: - specifier: ^16.8.1 - version: 16.8.1(typescript@5.5.4) + specifier: ^16.9.0 + version: 16.9.0(typescript@5.6.2) stylelint-config-standard: specifier: ^36.0.1 - version: 36.0.1(stylelint@16.8.1(typescript@5.5.4)) + version: 36.0.1(stylelint@16.9.0(typescript@5.6.2)) ts-patch: specifier: ^3.2.1 version: 3.2.1 ts-pattern: - specifier: ^5.3.1 - version: 5.3.1 + specifier: 5.0.4 + version: 5.0.4 tsx: - specifier: ^4.16.5 - version: 4.16.5 + specifier: ^4.19.1 + version: 4.19.1 type-fest: - specifier: ^4.23.0 - version: 4.23.0 + specifier: ^4.26.1 + version: 4.26.1 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.2 + version: 5.6.2 typescript-eslint: - specifier: ^8.0.0 - version: 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) + specifier: ^8.6.0 + version: 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) typescript-transform-paths: - specifier: ^3.4.7 - version: 3.4.7(typescript@5.5.4) + specifier: ^3.5.1 + version: 3.5.1(patch_hash=67beklx2y5qvw7iy3wqqxjhwr4)(typescript@5.6.2) zip-local: specifier: ^0.3.5 version: 0.3.5 + packages/discord-types: + dependencies: + '@types/events': + specifier: ~3.0.3 + version: 3.0.3 + '@types/intl-messageformat': + specifier: ~1.3.1 + version: 1.3.1 + '@types/lodash': + specifier: ~4.17.7 + version: 4.17.7 + '@types/react': + specifier: ~18.2.79 + version: 18.2.79 + dependency-graph: + specifier: 0.9.0 + version: 0.9.0 + moment: + specifier: 2.22.2 + version: 2.22.2 + simple-markdown: + specifier: 0.7.2 + version: 0.7.2 + devDependencies: + '@stylistic/eslint-plugin': + specifier: ^2.8.0 + version: 2.8.0(patch_hash=hgabz23qzpdlfvbmkgegp3so3q)(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + '@types/node': + specifier: ^20.16.5 + version: 20.16.5 + '@types/semver': + specifier: ^7.5.8 + version: 7.5.8 + '@typescript-eslint/typescript-estree': + specifier: ^8.6.0 + version: 8.6.0(typescript@5.6.2) + eslint: + specifier: ^9.10.0 + version: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) + eslint-plugin-check-file: + specifier: ^2.8.0 + version: 2.8.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + eslint-plugin-import-x: + specifier: ^4.2.1 + version: 4.2.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + eslint-plugin-simple-header: + specifier: ^1.2.1 + version: 1.2.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + eslint-plugin-simple-import-sort: + specifier: ^12.1.1 + version: 12.1.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + eslint-plugin-unicorn: + specifier: ^55.0.0 + version: 55.0.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + eslint-plugin-unused-imports: + specifier: ^4.1.4 + version: 4.1.4(@typescript-eslint/eslint-plugin@8.6.0(patch_hash=rf3fsbgjxv7ylxpzkcvrp4lpfq)(@typescript-eslint/parser@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + puppeteer-core: + specifier: ^23.4.0 + version: 23.4.0 + semver: + specifier: ^7.6.3 + version: 7.6.3 + tsx: + specifier: ^4.19.1 + version: 4.19.1 + type-fest: + specifier: ^4.26.1 + version: 4.26.1 + typescript: + specifier: ^5.6.2 + version: 5.6.2 + typescript-eslint: + specifier: ^8.6.0 + version: 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + packages/vencord-types: dependencies: '@types/lodash': - specifier: ^4.14.191 - version: 4.14.194 + specifier: ~4.17.7 + version: 4.17.7 '@types/node': - specifier: ^18.11.18 - version: 18.16.3 + specifier: ^18.19.50 + version: 18.19.50 '@types/react': - specifier: ^18.2.0 - version: 18.2.0 + specifier: ~18.2.79 + version: 18.2.79 '@types/react-dom': - specifier: ^18.0.10 - version: 18.2.1 + specifier: ~18.2.25 + version: 18.2.25 + '@vencord/discord-types': + specifier: workspace:^ + version: link:../discord-types discord-types: - specifier: ^1.3.26 - version: 1.3.26 + specifier: latest + version: 1.3.3 standalone-electron-types: specifier: ^1.0.0 - version: 1.0.0 + version: 1.0.0(patch_hash=cvychuhjtbzvtowhc2efrgpqjq) type-fest: - specifier: ^3.5.3 - version: 3.9.0 + specifier: ^4.26.1 + version: 4.26.1 devDependencies: '@types/fs-extra': specifier: ^11.0.4 @@ -169,337 +288,197 @@ importers: specifier: ^11.2.0 version: 11.2.0 tsx: - specifier: ^3.12.6 - version: 3.12.7 + specifier: ^4.19.1 + version: 4.19.1 + typescript: + specifier: ^5.6.2 + version: 5.6.2 packages: - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@babel/code-frame@7.21.4': + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + '@babel/helper-validator-identifier@7.24.6': + resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + '@babel/highlight@7.18.6': + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} - '@csstools/css-parser-algorithms@2.7.1': - resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/css-parser-algorithms@3.0.1': + resolution: {integrity: sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==} + engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^2.4.1 + '@csstools/css-tokenizer': ^3.0.1 - '@csstools/css-tokenizer@2.4.1': - resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/css-tokenizer@3.0.1': + resolution: {integrity: sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==} + engines: {node: '>=18'} - '@csstools/media-query-list-parser@2.1.13': - resolution: {integrity: sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/media-query-list-parser@3.0.1': + resolution: {integrity: sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==} + engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^2.7.1 - '@csstools/css-tokenizer': ^2.4.1 + '@csstools/css-parser-algorithms': ^3.0.1 + '@csstools/css-tokenizer': ^3.0.1 - '@csstools/selector-specificity@3.1.1': - resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/selector-specificity@4.0.0': + resolution: {integrity: sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==} + engines: {node: '>=18'} peerDependencies: - postcss-selector-parser: ^6.0.13 + postcss-selector-parser: ^6.1.0 '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} - '@esbuild-kit/cjs-loader@2.4.2': - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - - '@esbuild-kit/core-utils@3.1.0': - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} - - '@esbuild-kit/esm-loader@2.5.5': - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.17.18': - resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.15.18': - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.17.18': - resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.17.18': - resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.17.18': - resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.17.18': - resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.17.18': - resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.17.18': - resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.17.18': - resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.17.18': - resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.17.18': - resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.15.18': - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.17.18': - resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.17.18': - resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.17.18': - resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.17.18': - resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.17.18': - resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.17.18': - resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.17.18': - resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} - engines: {node: '>=12'} + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] - '@esbuild/openbsd-x64@0.17.18': - resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.17.18': - resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.17.18': - resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.17.18': - resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.17.18': - resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -513,22 +492,26 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.1': - resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.8.0': - resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} + '@eslint/js@9.10.0': + resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.1.0': + resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -570,126 +553,175 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@puppeteer/browsers@2.3.0': - resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} + '@nolyfill/array-includes@1.0.28': + resolution: {integrity: sha512-3LFZArKSQTQu//UvQXb4lBHWvhxmiZ5h2v50WIXfWb5UPNgeLpeGP8WgsfTePCpZgNlxt5JVFDdv5zLRa7cQXw==} + engines: {node: '>=12.4.0'} + + '@nolyfill/array.prototype.findlast@1.0.24': + resolution: {integrity: sha512-yFCyZLs0iNNubzYnBINcOCJAiGtusxiR2F1DnwkOB1HQbWXl/zltkDIWIXO3cJxhQdngDlmM4ysTfyAfoB297g==} + engines: {node: '>=12.4.0'} + + '@nolyfill/array.prototype.flat@1.0.28': + resolution: {integrity: sha512-bvBWaZDCWV7+jD70tJCy3Olp03Qx9svHN2KmC2j0CYvqfYRet5+iOb09nzb6QULqGrj7O8DQJ03ZQk6gih9J3g==} + engines: {node: '>=12.4.0'} + + '@nolyfill/array.prototype.flatmap@1.0.28': + resolution: {integrity: sha512-Ui/aMijqnYISchzIG0MbRiRh2DKWORJW2s//nw6rJ5jFp6x+nmFCQ5U2be3+id36VsmTxXiv+qLAHxdfXz8g8g==} + engines: {node: '>=12.4.0'} + + '@nolyfill/array.prototype.tosorted@1.0.24': + resolution: {integrity: sha512-lVo8TVDqaslOaOvEH7iL7glu/WdlX7ZrB+7FZY4BL25hg8TLHvg3e9pxafCp8vAQ96IOL+tdgBdfeoC7qLeQYg==} + engines: {node: '>=12.4.0'} + + '@nolyfill/es-iterator-helpers@1.0.21': + resolution: {integrity: sha512-i326KeE0nhW4STobcUhkxpXzZUddedCmfh7b/IyXR9kW0CFHiNNT80C3JSEy33mUlhZtk/ezX47nymcFxyBigg==} + engines: {node: '>=12.4.0'} + + '@nolyfill/hasown@1.0.29': + resolution: {integrity: sha512-9h/nxZqmCy26r9VXGUz+Q77vq3eINXOYgE4st3dj6DoE7tulfJueCLw5d4hfDy3S8mKg4cFXaP+KxYQ+txvMzw==} + engines: {node: '>=12.4.0'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@nolyfill/isarray@1.0.29': + resolution: {integrity: sha512-YXk/GW1mquC9LpdjrwhY/RjGWp3ud4JZopFjU0XDHHOCy1h1lzMaiUzH8cjLDrbgSDe3yuk2wL4DNPgpkypulA==} + engines: {node: '>=12.4.0'} + + '@nolyfill/object.assign@1.0.28': + resolution: {integrity: sha512-rrtnXgU2XJvUF9jFMwRbyvLdAlCIJOKtecflza4xWDom6u8UPliTOS0OQ6kvhql7/hpv9b8x9p0s467BVY58xg==} + engines: {node: '>=12.4.0'} + + '@nolyfill/object.entries@1.0.28': + resolution: {integrity: sha512-2t4PayP6Sx7Z20HJjcf8XhhPBO8/H31bwMdP0yEdDcxSXeEhl90Ibb9E3XKzSlcsGf43nXyfabHNrnfvdWE4Ng==} + engines: {node: '>=12.4.0'} + + '@nolyfill/object.fromentries@1.0.28': + resolution: {integrity: sha512-EUt70p38p+xdHDi2i8pIgw6HjrI3y9zndVhAZdEQsAvatKGKRpe3XWZRleEwYRZjkbeAG53Pz30j4tE1IJjvQQ==} + engines: {node: '>=12.4.0'} + + '@nolyfill/object.values@1.0.28': + resolution: {integrity: sha512-W6CdQv4Y/19aA5tenUhRELqlBoD92D4Uh1TDp5uHXD7s9zEHgcDCPCdA8ak6y4I66fR//Fir6C1mAQWv1QLnXw==} + engines: {node: '>=12.4.0'} + + '@nolyfill/shared@1.0.21': + resolution: {integrity: sha512-qDc/NoaFU23E0hhiDPeUrvWzTXIPE+RbvRQtRWSeHHNmCIgYI9HS1jKzNYNJxv4jvZ/1VmM3L6rNVxbj+LBMNA==} + + '@nolyfill/shared@1.0.24': + resolution: {integrity: sha512-TGCpg3k5N7jj9AgU/1xFw9K1g4AC1vEE5ZFkW77oPNNLzprxT17PvFaNr/lr3BkkT5fJ5LNMntaTIq+pyWaeEA==} + + '@nolyfill/shared@1.0.28': + resolution: {integrity: sha512-UJTshFMDgugBcYXGLopbL1enYpGREOEfjUMQKLPLeJqWfbfElGtYbGbUcucCENa7cicGo3M5u/DnPiZe/PYQyw==} + + '@nolyfill/string.prototype.matchall@1.0.28': + resolution: {integrity: sha512-k74WKi7WmtRV847QWlY1ndg6XU1loeAyO9+NVoXrd7RL5lEjBtovp4CPZkifipBMBrZrZu2WwrQqkGrvLNZYpw==} + engines: {node: '>=12.4.0'} + + '@nolyfill/string.prototype.repeat@1.0.28': + resolution: {integrity: sha512-8ww39xe0r4qki8HwAaXTRamO0KpkHHyYoG+PCOFGaBZ8rrlAKcGQcJhu5aB2axauggqsnUfU25j5snEC0aJvYg==} + engines: {node: '>=12.4.0'} + + '@puppeteer/browsers@2.4.0': + resolution: {integrity: sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==} engines: {node: '>=18'} hasBin: true '@sapphi-red/web-noise-suppressor@0.3.5': resolution: {integrity: sha512-jh3+V9yM+zxLriQexoGm0GatoPaJWjs6ypFIbFYwQp+AoUb55eUXrjKtKQyuC5zShzzeAQUl0M5JzqB7SSrsRA==} - '@stylistic/eslint-plugin-js@2.6.1': - resolution: {integrity: sha512-iLOiVzcvqzDGD9U0EuVOX680v+XOPiPAjkxWj+Q6iV2GLOM5NB27tKVOpJY7AzBhidwpRbaLTgg3T4UzYx09jw==} + '@stylistic/eslint-plugin@2.8.0': + resolution: {integrity: sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' - '@stylistic/eslint-plugin-jsx@2.6.1': - resolution: {integrity: sha512-5qHLXqxfY6jubAQfDqrifv41fx7gaqA9svDaChxMI6JiHpEBfh+PXxmm3g+B8gJCYVBTC62Rjl0Ny5QabK58bw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@stylistic/stylelint-config@2.0.0': + resolution: {integrity: sha512-8J4YAxggy2Nzkb8KJIOLbtMXTPZ5gpKVmyhiiuKEUgCl9XFND5lM0e/ZZBMGEYZ68h5qcsS/jgg1wh235erRAw==} + engines: {node: ^18.12 || >=20.9} peerDependencies: - eslint: '>=8.40.0' + stylelint: ^16.8.0 - '@stylistic/eslint-plugin-plus@2.6.1': - resolution: {integrity: sha512-z/IYu/q8ipApzNam5utSU+BrXg4pK/Gv9xNbr4eWv/bZppvTWJU62xCO4nw/6r2dHNPnqc7uCHEC7GMlBnPY0A==} + '@stylistic/stylelint-plugin@3.0.1': + resolution: {integrity: sha512-j3mH8HSw2Rob/KJFWZ627w3CQ8gQqVHtzCdPeEffUg5vOgpz4rgrR+Xw2kU0OQCDcdW8Y1nKfdXKKjM5Rn8X0g==} + engines: {node: ^18.12 || >=20.9} peerDependencies: - eslint: '*' - - '@stylistic/eslint-plugin-ts@2.6.1': - resolution: {integrity: sha512-Mxl1VMorEG1Hc6oBYPD0+KIJOWkjEF1R0liL7wWgKfwpqOkgmnh5lVdZBrYyfRKOE4RlGcwEFTNai1IW6orgVg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@stylistic/eslint-plugin@2.6.1': - resolution: {integrity: sha512-UT0f4t+3sQ/GKW7875NiIIjZJ1Bh4gd7JNfoIkwIQyWqO7wGd0Pqzu0Ho30Ka8MNF5lm++SkVeqAk26vGxoUpg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' + stylelint: ^16.8.0 '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@types/chrome@0.0.269': - resolution: {integrity: sha512-vF7x8YywnhXX2F06njQ/OE7a3Qeful43C5GUOsUksXWk89WoSFUU3iLeZW8lDpVO9atm8iZIEiLQTRC3H7NOXQ==} + '@types/chrome@0.0.271': + resolution: {integrity: sha512-K0qgXvkwA5ic+/eygF1xiypHEvCoBgH5lwrhg3yva2mqJuCWyYm0vpZQ22GksAxgGfo0PWev9Zx3plp2clMlwg==} - '@types/diff@5.2.1': - resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==} - - '@types/eslint@9.6.0': - resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} + '@types/diff@5.2.2': + resolution: {integrity: sha512-qVqLpd49rmJA2nZzLVsmfS/aiiBpfVE95dHhPVwG0NmSBAt+riPxnj53wq2oBq5m4Q2RF1IWFEUpnZTgrQZfEQ==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/filesystem@0.0.36': - resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} + '@types/events@3.0.3': + resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==} - '@types/filewriter@0.0.33': - resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} + '@types/filesystem@0.0.33': + resolution: {integrity: sha512-2KedRPzwu2K528vFkoXnnWdsG0MtUwPjuA7pRy4vKxlxHEe8qUDZibYHXJKZZr2Cl/ELdCWYqyb/MKwsUuzBWw==} + + '@types/filewriter@0.0.30': + resolution: {integrity: sha512-lB98tui0uxc7erbj0serZfJlHKLNJHwBltPnbmO1WRpL5T325GOHRiQfr2E29V2q+S1brDO63Fpdt6vb3bES9Q==} '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - '@types/har-format@1.2.15': - resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} + '@types/har-format@1.2.13': + resolution: {integrity: sha512-PwBsCBD3lDODn4xpje3Y1di0aDJp4Ww7aSfMRVw6ysnxD4I7Wmq2mBkSKaDtN403hqH5sp6c9xQUvFYY3+lkBg==} + + '@types/html-minifier-terser@7.0.2': + resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} + + '@types/intl-messageformat@1.3.1': + resolution: {integrity: sha512-/nofAE5XZ3MnJXy1AaS+/BxjNL3zjHciDBZHhE7f8wIOAgS9FM1JduGXAM3xn08rXumOPIIFRAr41aXf7dLN7w==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/jsonfile@6.1.4': resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - '@types/lodash@4.14.194': - resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} - '@types/lodash@4.17.7': resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} - '@types/node@18.16.3': - resolution: {integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==} + '@types/node@18.19.50': + resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@18.19.43': - resolution: {integrity: sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==} + '@types/node@20.16.5': + resolution: {integrity: sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==} - '@types/node@22.0.3': - resolution: {integrity: sha512-/e0NZtK2gs6Vk2DoyrXSZZ4AlamqTkx0CcKx1Aq8/P4ITlRgU9OtVf5fl+LXkWWJce1M89pkSlH6lJJEnK7bQA==} - - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + '@types/normalize-package-data@2.4.1': + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} '@types/prop-types@15.7.5': resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - '@types/react-dom@18.2.1': - resolution: {integrity: sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + '@types/react-dom@18.2.25': + resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} '@types/react@17.0.2': resolution: {integrity: sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==} - '@types/react@18.2.0': - resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} + '@types/react@18.2.79': + resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/scheduler@0.16.3': - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@types/yauzl@2.10.0': + resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} '@types/yazl@2.4.5': resolution: {integrity: sha512-qpmPfx32HS7vlGJf7EsoM9qJnLZhXJBf1KH0hzfdc+D794rljQWh4H0I/UrZy+6Nhqn0l2jdBZXBGZtR1vnHqw==} - '@typescript-eslint/eslint-plugin@8.0.0': - resolution: {integrity: sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==} + '@typescript-eslint/eslint-plugin@8.6.0': + resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -699,8 +731,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.0.0': - resolution: {integrity: sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==} + '@typescript-eslint/parser@8.6.0': + resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -709,12 +741,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.0.0': - resolution: {integrity: sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==} + '@typescript-eslint/scope-manager@8.6.0': + resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.0.0': - resolution: {integrity: sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==} + '@typescript-eslint/type-utils@8.6.0': + resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -722,12 +754,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.0.0': - resolution: {integrity: sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==} + '@typescript-eslint/types@8.6.0': + resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.0.0': - resolution: {integrity: sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==} + '@typescript-eslint/typescript-estree@8.6.0': + resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -735,14 +767,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.0.0': - resolution: {integrity: sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==} + '@typescript-eslint/utils@8.6.0': + resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.0.0': - resolution: {integrity: sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==} + '@typescript-eslint/visitor-keys@8.6.0': + resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vap/core@0.0.12': @@ -756,16 +788,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.12.0: - resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} @@ -778,8 +800,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -808,14 +830,6 @@ packages: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -824,22 +838,6 @@ packages: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} @@ -860,10 +858,6 @@ packages: engines: {node: '>= 4.5.0'} hasBin: true - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} @@ -905,14 +899,15 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -922,14 +917,14 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + cache-base@1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -937,6 +932,9 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + caniuse-lite@1.0.30001625: + resolution: {integrity: sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -945,11 +943,15 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chromium-bidi@0.6.3: - resolution: {integrity: sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==} + chromium-bidi@0.6.5: + resolution: {integrity: sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA==} peerDependencies: devtools-protocol: '*' + ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + class-utils@0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} @@ -958,6 +960,10 @@ packages: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -999,6 +1005,9 @@ packages: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} @@ -1028,25 +1037,10 @@ packages: csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-uri-to-buffer@6.0.2: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -1063,8 +1057,8 @@ packages: supports-color: optional: true - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1079,14 +1073,6 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - define-property@0.2.5: resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} engines: {node: '>=0.10.0'} @@ -1103,27 +1089,38 @@ packages: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} - devtools-protocol@0.0.1312386: - resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} + dependency-graph@0.9.0: + resolution: {integrity: sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==} + engines: {node: '>= 0.6.0'} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + devtools-protocol@0.0.1342118: + resolution: {integrity: sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w==} + + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - discord-types@1.3.26: - resolution: {integrity: sha512-ToG51AOCH+JTQf7b+8vuYQe5Iqwz7nZ7StpECAZ/VZcI1ZhQk13pvt9KkRTfRv1xNvwJ2qib4e3+RifQlo8VPQ==} + discord-types@1.3.3: + resolution: {integrity: sha512-6LGLIw8RBWKdio7FoIfwExSZQuej2XXDKgT7mfR3qMOpEspknVDFQJcfhPuiD1iy2NdcAygvvVfJMliYwiUwqw==} doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + electron-to-chromium@1.4.788: + resolution: {integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1141,166 +1138,9 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - esbuild-android-64@0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - esbuild-android-arm64@0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - esbuild-darwin-64@0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - esbuild-darwin-arm64@0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - esbuild-freebsd-64@0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - esbuild-freebsd-arm64@0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - esbuild-linux-32@0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - esbuild-linux-64@0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - esbuild-linux-arm64@0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - esbuild-linux-arm@0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - esbuild-linux-mips64le@0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - esbuild-linux-ppc64le@0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - esbuild-linux-riscv64@0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - esbuild-linux-s390x@0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - esbuild-netbsd-64@0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - esbuild-openbsd-64@0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - esbuild-sunos-64@0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - esbuild-windows-32@0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - esbuild-windows-64@0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - esbuild-windows-arm64@0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - esbuild@0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.17.18: - resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} hasBin: true escalade@3.1.2: @@ -1320,81 +1160,61 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-import-resolver-alias@1.1.2: - resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} - engines: {node: '>= 4'} - peerDependencies: - eslint-plugin-import: '>=1.4.0' - eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-module-utils@2.8.1: - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} + eslint-plugin-check-file@2.8.0: + resolution: {integrity: sha512-FvvafMTam2WJYH9uj+FuMxQ1y+7jY3Z6P9T4j2214cH0FBxNzTcmeCiGTj1Lxp3mI6kbbgsXvmgewvf+llKYyw==} + engines: {node: '>=18'} peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint: '>=7.28.0' - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} + eslint-plugin-import-x@4.2.1: + resolution: {integrity: sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint: ^8.57.0 || ^9.0.0 eslint-plugin-path-alias@2.1.0: resolution: {integrity: sha512-suHrHK2MmTDsmQhrZs+hvrNI2PBKAnZ4ir7y3oJLXJsjOFBfOJoQd+URqZC7ICHyNqesoZdcA0BxEG8z5p/mPw==} peerDependencies: eslint: ^8.0.0 - eslint-plugin-simple-header@1.1.1: - resolution: {integrity: sha512-xFK54pYcSEC2uULHTeo2aEgmTmdhZ9ry3zIV9OspLaEPb/Xg1oaFmOcmoNhk9WNJPwzUKrAmYyA8s4YDBfbD+g==} + eslint-plugin-react@7.36.1: + resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-simple-header@1.2.1: + resolution: {integrity: sha512-l9eEOpBkd4T6yVE09WADLVPU6eKHjQ7QjowMChsbYwsge+98NxyIlqvYpQQJWVxakgW7uooFGNVEFdFWzEMcVg==} + peerDependencies: + eslint: '>=8.41.0' eslint-plugin-simple-import-sort@12.1.1: resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} peerDependencies: eslint: '>=5.0.0' - eslint-plugin-unused-imports@4.0.1: - resolution: {integrity: sha512-rax76s05z64uQgG9YXsWFmXrgjkaK79AvfeAWiSxhPP6RVGxeRaj4+2u+wxxu/mDy2pmJoOy1QTOEALMia2xGQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-plugin-unicorn@55.0.0: + resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} + engines: {node: '>=18.18'} peerDependencies: - '@typescript-eslint/eslint-plugin': ^8.0.0-0 - eslint: ^9.0.0 + eslint: '>=8.56.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true - eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - eslint-scope@8.0.2: resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@3.4.2: - resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1403,10 +1223,15 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.8.0: - resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} + eslint@9.10.0: + resolution: {integrity: sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true espree@10.1.0: resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} @@ -1417,8 +1242,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -1459,10 +1284,6 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -1473,9 +1294,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -1497,10 +1315,6 @@ packages: resolution: {integrity: sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==} engines: {node: '>=18'} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1513,6 +1327,10 @@ packages: resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} engines: {node: '>=8'} + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1528,9 +1346,6 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} @@ -1543,51 +1358,22 @@ packages: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - get-tsconfig@4.7.5: resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} - get-tsconfig@4.7.6: - resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} - get-uri@6.0.3: resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} engines: {node: '>= 14'} @@ -1628,9 +1414,9 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + globals@15.8.0: + resolution: {integrity: sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==} + engines: {node: '>=18'} globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -1639,18 +1425,12 @@ packages: globjoin@0.1.4: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -1659,21 +1439,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - has-value@0.3.1: resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} engines: {node: '>=0.10.0'} @@ -1690,17 +1455,17 @@ packages: resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} engines: {node: '>=0.10.0'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + highlight.js@11.8.0: + resolution: {integrity: sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==} + engines: {node: '>=12.0.0'} homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + html-minifier-terser@7.2.0: resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} engines: {node: ^14.13.1 || >=16.0.0} @@ -1714,19 +1479,15 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} - https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} import-fresh@3.3.0: @@ -1737,13 +1498,13 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -1758,30 +1519,15 @@ packages: engines: {node: '>=0.10.0'} deprecated: Please upgrade to v1.0.1 - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.15.0: - resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} - engines: {node: '>= 0.4'} + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} is-data-descriptor@0.1.4: resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} @@ -1793,14 +1539,6 @@ packages: engines: {node: '>=0.10.0'} deprecated: Please upgrade to v1.0.1 - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - is-descriptor@0.1.6: resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} engines: {node: '>=0.10.0'} @@ -1829,14 +1567,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - is-number@3.0.0: resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} engines: {node: '>=0.10.0'} @@ -1857,39 +1587,10 @@ packages: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1911,6 +1612,15 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -1926,16 +1636,16 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + jszip@2.7.0: resolution: {integrity: sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==} @@ -1968,6 +1678,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1978,6 +1692,10 @@ packages: lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -2007,13 +1725,13 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2032,18 +1750,18 @@ packages: resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} engines: {node: '>=0.10.0'} - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + moment@2.22.2: + resolution: {integrity: sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==} - monaco-editor@0.50.0: - resolution: {integrity: sha512-8CclLCmrRRh+sul7C08BmPBP3P8wVWfBHomsTcndxg5NRCEPfu/mc2AGU8k37ajjDVXcXFc12ORAMUkmk+lkFA==} + moment@2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + + monaco-editor@0.51.0: + resolution: {integrity: sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw==} ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2071,63 +1789,61 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + object-copy@0.1.0: resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} engines: {node: '>=0.10.0'} - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - object-visit@1.0.1: resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} engines: {node: '>=0.10.0'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - object.pick@1.3.0: resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} engines: {node: '>=0.10.0'} - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - pac-proxy-agent@7.0.2: - resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + pac-proxy-agent@7.0.1: + resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} engines: {node: '>= 14'} pac-resolver@7.0.1: @@ -2188,12 +1904,12 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} - postcss-resolve-nested-selector@0.1.4: - resolution: {integrity: sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==} + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} postcss-safe-parser@7.0.0: resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} @@ -2201,15 +1917,15 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-selector-parser@6.1.1: - resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2220,6 +1936,9 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proxy-agent@6.4.0: resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} engines: {node: '>= 14'} @@ -2230,17 +1949,21 @@ packages: pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + punycode@2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - puppeteer-core@22.15.0: - resolution: {integrity: sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==} + puppeteer-core@23.4.0: + resolution: {integrity: sha512-fqkIP5FOcb38jfBj/OcBz1wFaI9nk40uQKSORvnXws6wCbep2dg8yxZ3ddJxBIfQsxoiEOvnrykFinUScrB/ew==} engines: {node: '>=18'} q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2248,13 +1971,28 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} @@ -2291,6 +2029,10 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} @@ -2302,17 +2044,13 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - safe-regex@1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2322,14 +2060,6 @@ packages: engines: {node: '>=10'} hasBin: true - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - set-value@2.0.1: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} @@ -2342,14 +2072,13 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + signal-exit@4.0.1: + resolution: {integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==} engines: {node: '>=14'} + simple-markdown@0.7.2: + resolution: {integrity: sha512-XfCvqqzMyzRj4L7eIxJgGaQ2Gaxr20GhTFMB+1yuY8q3xffjzmOg4Q5tC0kcaJPV42NNUHCQDaRK6jzi3/RhrA==} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2366,8 +2095,8 @@ packages: resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} engines: {node: '>=0.10.0'} - socks-proxy-agent@8.0.4: - resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + socks-proxy-agent@8.0.3: + resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} engines: {node: '>= 14'} socks@2.8.3: @@ -2397,6 +2126,18 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} @@ -2404,6 +2145,9 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + standalone-electron-types@1.0.0: resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==} @@ -2418,17 +2162,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2437,14 +2170,17 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + stylelint-config-recommended@14.0.1: resolution: {integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==} engines: {node: '>=18.12.0'} @@ -2457,8 +2193,8 @@ packages: peerDependencies: stylelint: ^16.1.0 - stylelint@16.8.1: - resolution: {integrity: sha512-O8aDyfdODSDNz/B3gW2HQ+8kv8pfhSu7ZR7xskQ93+vI6FhKKGUJMQ03Ydu+w3OvXXE0/u4hWU4hCPNOyld+OA==} + stylelint@16.9.0: + resolution: {integrity: sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==} engines: {node: '>=18.12.0'} hasBin: true @@ -2470,8 +2206,8 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-hyperlinks@3.0.0: - resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: @@ -2496,8 +2232,8 @@ packages: engines: {node: '>=10'} hasBin: true - text-decoder@1.1.1: - resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} + text-decoder@1.1.0: + resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -2527,24 +2263,14 @@ packages: resolution: {integrity: sha512-hlR43v+GUIUy8/ZGFP1DquEqPh7PFKQdDMTAmYt671kCCA6AkDQMoeFaFmZ7ObPLYOmpMgyKUqL1C+coFMf30w==} hasBin: true - ts-pattern@5.3.1: - resolution: {integrity: sha512-1RUMKa8jYQdNfmnK4jyzBK3/PS/tnjcZ1CW0v1vWDeYe5RBklc/nquw03MEoB66hVBm4BnlCfmOqDVxHyT1DpA==} + ts-pattern@5.0.4: + resolution: {integrity: sha512-D5iVliqugv2C9541W2CNXFYNEZxr4TiHuLPuf49tKEdQFp/8y8fR0v1RExUvXkiWozKCwE7zv07C6EKxf0lKuQ==} - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - - tsx@3.12.7: - resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} - hasBin: true - - tsx@4.16.5: - resolution: {integrity: sha512-ArsiAQHEW2iGaqZ8fTA1nX0a+lN5mNTyuGRRO6OW3H/Yno1y9/t1f9YOI1Cfoqz63VAthn++ZYcbDP7jPflc+A==} + tsx@4.19.1: + resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} engines: {node: '>=18.0.0'} hasBin: true @@ -2552,32 +2278,23 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@3.9.0: - resolution: {integrity: sha512-hR8JP2e8UiH7SME5JZjsobBlEiatFoxpzCP+R3ZeCo7kAaG1jXQE5X/buLzogM6GJu8le9Y4OcfNuIQX0rZskA==} - engines: {node: '>=14.16'} + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} - type-fest@4.23.0: - resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==} + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - - typescript-eslint@8.0.0: - resolution: {integrity: sha512-yQWBJutWL1PmpmDddIOl9/Mi6vZjqNCjqSGBMQ4vsc2Aiodk0SnbQQWPXbSy0HNuKCuGkw1+u4aQ2mO40TdhDQ==} + typescript-eslint@8.6.0: + resolution: {integrity: sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2585,27 +2302,24 @@ packages: typescript: optional: true - typescript-transform-paths@3.4.7: - resolution: {integrity: sha512-1Us1kdkdfKd2unbkBAOV2HHRmbRBYpSuk9nJ7cLD2hP4QmfToiM/VpxNlhJc1eezVwVqSKSBjNSzZsK/fWR/9A==} + typescript-transform-paths@3.5.1: + resolution: {integrity: sha512-nq+exuF+38rAby9zrP+S6t0HWuwv69jeFu0I5UwjdoCIDPmnKIAr6a7JfYkbft7h5OzYKEDRhT/jLvvtTvWF4Q==} peerDependencies: typescript: '>=3.6.5' - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.11.1: - resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} union-value@1.0.1: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} @@ -2619,6 +2333,12 @@ packages: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -2636,8 +2356,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - virtual-merge@1.0.1: - resolution: {integrity: sha512-h7rzV6n5fZJbDu2lP4iu+IOtsZ00uqECFUxFePK1uY0pz/S5B7FNDJpmdDVfyGL7poyJECEHfTaIpJaknNkU0Q==} + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} @@ -2645,13 +2365,6 @@ packages: vscode-textmate@5.2.0: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -2661,10 +2374,6 @@ packages: engines: {node: '>= 8'} hasBin: true - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -2715,204 +2424,120 @@ packages: snapshots: - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + '@aashutoshrathi/word-wrap@1.2.6': {} - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/highlight@7.24.7': + '@babel/code-frame@7.21.4': dependencies: - '@babel/helper-validator-identifier': 7.24.7 + '@babel/highlight': 7.18.6 + + '@babel/helper-validator-identifier@7.24.6': {} + + '@babel/highlight@7.18.6': + dependencies: + '@babel/helper-validator-identifier': 7.24.6 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 - '@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)': + '@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1)': dependencies: - '@csstools/css-tokenizer': 2.4.1 + '@csstools/css-tokenizer': 3.0.1 - '@csstools/css-tokenizer@2.4.1': {} + '@csstools/css-tokenizer@3.0.1': {} - '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)': + '@csstools/media-query-list-parser@3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)': dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 + '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) + '@csstools/css-tokenizer': 3.0.1 - '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.1)': + '@csstools/selector-specificity@4.0.0(postcss-selector-parser@6.1.2)': dependencies: - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 6.1.2 '@dual-bundle/import-meta-resolve@4.1.0': {} - '@esbuild-kit/cjs-loader@2.4.2': + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))': dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.5.0 - - '@esbuild-kit/core-utils@3.1.0': - dependencies: - esbuild: 0.17.18 - source-map-support: 0.5.21 - - '@esbuild-kit/esm-loader@2.5.5': - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.5.0 - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.17.18': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.15.18': - optional: true - - '@esbuild/android-arm@0.17.18': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.17.18': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.17.18': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.17.18': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.17.18': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.17.18': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.17.18': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.17.18': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.17.18': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.15.18': - optional: true - - '@esbuild/linux-loong64@0.17.18': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.17.18': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.17.18': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.17.18': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.17.18': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.17.18': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.17.18': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.17.18': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.17.18': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.17.18': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.17.18': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.17.18': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))': - dependencies: - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) - eslint-visitor-keys: 3.4.2 + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) + eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.17.1': + '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.6 + debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2920,10 +2545,10 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.6 + debug: 4.3.7 espree: 10.1.0 globals: 14.0.0 - ignore: 5.3.1 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -2931,10 +2556,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.8.0': {} + '@eslint/js@9.10.0': {} '@eslint/object-schema@2.1.4': {} + '@eslint/plugin-kit@0.1.0': + dependencies: + levn: 0.4.1 + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.0': {} @@ -2973,9 +2602,69 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - '@puppeteer/browsers@2.3.0': + '@nolyfill/array-includes@1.0.28': dependencies: - debug: 4.3.6 + '@nolyfill/shared': 1.0.28 + + '@nolyfill/array.prototype.findlast@1.0.24': + dependencies: + '@nolyfill/shared': 1.0.24 + + '@nolyfill/array.prototype.flat@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@nolyfill/array.prototype.flatmap@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@nolyfill/array.prototype.tosorted@1.0.24': + dependencies: + '@nolyfill/shared': 1.0.24 + + '@nolyfill/es-iterator-helpers@1.0.21': + dependencies: + '@nolyfill/shared': 1.0.21 + + '@nolyfill/hasown@1.0.29': {} + + '@nolyfill/is-core-module@1.0.39': {} + + '@nolyfill/isarray@1.0.29': {} + + '@nolyfill/object.assign@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@nolyfill/object.entries@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@nolyfill/object.fromentries@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@nolyfill/object.values@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@nolyfill/shared@1.0.21': {} + + '@nolyfill/shared@1.0.24': {} + + '@nolyfill/shared@1.0.28': {} + + '@nolyfill/string.prototype.matchall@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@nolyfill/string.prototype.repeat@1.0.28': + dependencies: + '@nolyfill/shared': 1.0.28 + + '@puppeteer/browsers@2.4.0': + dependencies: + debug: 4.3.7 extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.4.0 @@ -2988,222 +2677,188 @@ snapshots: '@sapphi-red/web-noise-suppressor@0.3.5': {} - '@stylistic/eslint-plugin-js@2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))': + '@stylistic/eslint-plugin@2.8.0(patch_hash=hgabz23qzpdlfvbmkgegp3so3q)(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2)': dependencies: - '@types/eslint': 9.6.0 - acorn: 8.12.1 - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) + '@typescript-eslint/utils': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) eslint-visitor-keys: 4.0.0 espree: 10.1.0 - - '@stylistic/eslint-plugin-jsx@2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))': - dependencies: - '@stylistic/eslint-plugin-js': 2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) - '@types/eslint': 9.6.0 - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) estraverse: 5.3.0 picomatch: 4.0.2 - - '@stylistic/eslint-plugin-plus@2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4)': - dependencies: - '@types/eslint': 9.6.0 - '@typescript-eslint/utils': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin-ts@2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4)': + '@stylistic/stylelint-config@2.0.0(stylelint@16.9.0(typescript@5.6.2))': dependencies: - '@stylistic/eslint-plugin-js': 2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) - '@types/eslint': 9.6.0 - '@typescript-eslint/utils': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) - transitivePeerDependencies: - - supports-color - - typescript + '@stylistic/stylelint-plugin': 3.0.1(stylelint@16.9.0(typescript@5.6.2)) + stylelint: 16.9.0(typescript@5.6.2) - '@stylistic/eslint-plugin@2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4)': + '@stylistic/stylelint-plugin@3.0.1(stylelint@16.9.0(typescript@5.6.2))': dependencies: - '@stylistic/eslint-plugin-js': 2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) - '@stylistic/eslint-plugin-jsx': 2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) - '@stylistic/eslint-plugin-plus': 2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - '@stylistic/eslint-plugin-ts': 2.6.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - '@types/eslint': 9.6.0 - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) - transitivePeerDependencies: - - supports-color - - typescript + '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) + '@csstools/css-tokenizer': 3.0.1 + '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1) + is-plain-object: 5.0.0 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + style-search: 0.1.0 + stylelint: 16.9.0(typescript@5.6.2) '@tootallnate/quickjs-emscripten@0.23.0': {} - '@types/chrome@0.0.269': + '@types/chrome@0.0.271': dependencies: - '@types/filesystem': 0.0.36 - '@types/har-format': 1.2.15 + '@types/filesystem': 0.0.33 + '@types/har-format': 1.2.13 - '@types/diff@5.2.1': {} - - '@types/eslint@9.6.0': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + '@types/diff@5.2.2': {} '@types/estree@1.0.5': {} - '@types/filesystem@0.0.36': - dependencies: - '@types/filewriter': 0.0.33 + '@types/events@3.0.3': {} - '@types/filewriter@0.0.33': {} + '@types/filesystem@0.0.33': + dependencies: + '@types/filewriter': 0.0.30 + + '@types/filewriter@0.0.30': {} '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 18.16.3 + '@types/node': 20.16.5 - '@types/har-format@1.2.15': {} + '@types/har-format@1.2.13': {} + + '@types/html-minifier-terser@7.0.2': {} + + '@types/intl-messageformat@1.3.1': {} '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} - '@types/jsonfile@6.1.4': dependencies: - '@types/node': 18.16.3 - - '@types/lodash@4.14.194': {} + '@types/node': 20.16.5 '@types/lodash@4.17.7': {} - '@types/node@18.16.3': {} - - '@types/node@18.19.43': + '@types/node@18.19.50': dependencies: undici-types: 5.26.5 - '@types/node@22.0.3': + '@types/node@20.16.5': dependencies: - undici-types: 6.11.1 + undici-types: 6.19.8 - '@types/prop-types@15.7.12': {} + '@types/normalize-package-data@2.4.1': {} '@types/prop-types@15.7.5': {} - '@types/react-dom@18.2.1': + '@types/react-dom@18.2.25': dependencies: - '@types/react': 18.2.0 - - '@types/react-dom@18.3.0': - dependencies: - '@types/react': 18.3.3 + '@types/react': 18.2.79 '@types/react@17.0.2': dependencies: '@types/prop-types': 15.7.5 csstype: 3.1.2 - '@types/react@18.2.0': + '@types/react@18.2.79': dependencies: '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 csstype: 3.1.2 - '@types/react@18.3.3': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 + '@types/semver@7.5.8': {} - '@types/scheduler@0.16.3': {} - - '@types/yauzl@2.10.3': + '@types/yauzl@2.10.0': dependencies: - '@types/node': 22.0.3 + '@types/node': 20.16.5 optional: true '@types/yazl@2.4.5': dependencies: - '@types/node': 22.0.3 + '@types/node': 20.16.5 - '@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.6.0(patch_hash=rf3fsbgjxv7ylxpzkcvrp4lpfq)(@typescript-eslint/parser@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.0.0 - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) + '@typescript-eslint/parser': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.6.0 + '@typescript-eslint/type-utils': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.6.0 + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4)': + '@typescript-eslint/parser@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.0.0 - debug: 4.3.6 - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) + '@typescript-eslint/scope-manager': 8.6.0 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.6.0 + debug: 4.3.7 + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.0.0': + '@typescript-eslint/scope-manager@8.6.0': dependencies: - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/visitor-keys': 8.0.0 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/visitor-keys': 8.6.0 - '@typescript-eslint/type-utils@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + debug: 4.3.7 + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color - '@typescript-eslint/types@8.0.0': {} + '@typescript-eslint/types@8.6.0': {} - '@typescript-eslint/typescript-estree@8.0.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2)': dependencies: - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/visitor-keys': 8.0.0 - debug: 4.3.6 - globby: 11.1.0 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/visitor-keys': 8.6.0 + debug: 4.3.7 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4)': + '@typescript-eslint/utils@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + '@typescript-eslint/scope-manager': 8.6.0 + '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2) + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.0.0': + '@typescript-eslint/visitor-keys@8.6.0': dependencies: - '@typescript-eslint/types': 8.0.0 + '@typescript-eslint/types': 8.6.0 eslint-visitor-keys: 3.4.3 '@vap/core@0.0.12': @@ -3216,19 +2871,15 @@ snapshots: vscode-oniguruma: 1.7.0 vscode-textmate: 5.2.0 - acorn-jsx@5.3.2(acorn@8.12.0): + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.12.0 - - acorn@8.10.0: {} - - acorn@8.12.0: {} + acorn: 8.12.1 acorn@8.12.1: {} agent-base@7.1.1: dependencies: - debug: 4.3.6 + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -3239,12 +2890,12 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + uri-js: 4.4.1 ansi-regex@5.0.1: {} @@ -3264,63 +2915,15 @@ snapshots: arr-union@3.1.0: {} - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - - array-includes@3.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - array-union@2.1.0: {} array-unique@0.3.2: {} - array.prototype.findlastindex@1.2.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.flatmap@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - assign-symbols@1.0.0: {} ast-types@0.13.4: dependencies: - tslib: 2.6.3 + tslib: 2.7.0 astral-regex@2.0.0: {} @@ -3328,10 +2931,6 @@ snapshots: atob@2.1.2: {} - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - b4a@1.6.6: {} balanced-match@1.0.2: {} @@ -3384,14 +2983,17 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - braces@3.0.3: dependencies: fill-range: 7.1.1 + browserslist@4.23.0: + dependencies: + caniuse-lite: 1.0.30001625 + electron-to-chromium: 1.4.788 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.0) + buffer-crc32@0.2.13: {} buffer-from@1.1.2: {} @@ -3401,6 +3003,8 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + builtin-modules@3.3.0: {} + cache-base@1.0.1: dependencies: collection-visit: 1.0.0 @@ -3413,20 +3017,14 @@ snapshots: union-value: 1.0.1 unset-value: 1.0.0 - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - callsites@3.1.0: {} camel-case@4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.7.0 + + caniuse-lite@1.0.30001625: {} chalk@2.4.2: dependencies: @@ -3439,13 +3037,15 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chromium-bidi@0.6.3(devtools-protocol@0.0.1312386): + chromium-bidi@0.6.5(devtools-protocol@0.0.1342118): dependencies: - devtools-protocol: 0.0.1312386 + devtools-protocol: 0.0.1342118 mitt: 3.0.1 urlpattern-polyfill: 10.0.0 zod: 3.23.8 + ci-info@4.0.0: {} + class-utils@0.3.6: dependencies: arr-union: 3.1.0 @@ -3457,6 +3057,10 @@ snapshots: dependencies: source-map: 0.6.1 + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -3492,14 +3096,18 @@ snapshots: copy-descriptor@0.1.1: {} - cosmiconfig@9.0.0(typescript@5.5.4): + core-js-compat@3.37.1: + dependencies: + browserslist: 4.23.0 + + cosmiconfig@9.0.0(typescript@5.6.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 cross-spawn@7.0.3: dependencies: @@ -3518,28 +3126,8 @@ snapshots: csstype@3.1.2: {} - csstype@3.1.3: {} - data-uri-to-buffer@6.0.2: {} - data-view-buffer@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-offset@1.0.0: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - debug@2.6.9: dependencies: ms: 2.0.0 @@ -3548,26 +3136,14 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.6: + debug@4.3.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 decode-uri-component@0.2.0: {} deep-is@0.1.4: {} - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - define-property@0.2.5: dependencies: is-descriptor: 0.1.6 @@ -3587,27 +3163,35 @@ snapshots: escodegen: 2.1.0 esprima: 4.0.1 - devtools-protocol@0.0.1312386: {} + dependency-graph@0.9.0: {} - diff@5.2.0: {} + devtools-protocol@0.0.1342118: {} + + diff@7.0.0: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 - discord-types@1.3.26: + discord-types@1.3.3: dependencies: '@types/react': 17.0.2 - moment: 2.30.1 + moment: 2.29.4 doctrine@2.1.0: dependencies: esutils: 2.0.3 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 + + electron-to-chromium@1.4.788: {} emoji-regex@8.0.0: {} @@ -3623,216 +3207,32 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.3: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - esbuild-android-64@0.15.18: - optional: true - - esbuild-android-arm64@0.15.18: - optional: true - - esbuild-darwin-64@0.15.18: - optional: true - - esbuild-darwin-arm64@0.15.18: - optional: true - - esbuild-freebsd-64@0.15.18: - optional: true - - esbuild-freebsd-arm64@0.15.18: - optional: true - - esbuild-linux-32@0.15.18: - optional: true - - esbuild-linux-64@0.15.18: - optional: true - - esbuild-linux-arm64@0.15.18: - optional: true - - esbuild-linux-arm@0.15.18: - optional: true - - esbuild-linux-mips64le@0.15.18: - optional: true - - esbuild-linux-ppc64le@0.15.18: - optional: true - - esbuild-linux-riscv64@0.15.18: - optional: true - - esbuild-linux-s390x@0.15.18: - optional: true - - esbuild-netbsd-64@0.15.18: - optional: true - - esbuild-openbsd-64@0.15.18: - optional: true - - esbuild-sunos-64@0.15.18: - optional: true - - esbuild-windows-32@0.15.18: - optional: true - - esbuild-windows-64@0.15.18: - optional: true - - esbuild-windows-arm64@0.15.18: - optional: true - - esbuild@0.15.18: + esbuild@0.23.1: optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 - - esbuild@0.17.18: - optionalDependencies: - '@esbuild/android-arm': 0.17.18 - '@esbuild/android-arm64': 0.17.18 - '@esbuild/android-x64': 0.17.18 - '@esbuild/darwin-arm64': 0.17.18 - '@esbuild/darwin-x64': 0.17.18 - '@esbuild/freebsd-arm64': 0.17.18 - '@esbuild/freebsd-x64': 0.17.18 - '@esbuild/linux-arm': 0.17.18 - '@esbuild/linux-arm64': 0.17.18 - '@esbuild/linux-ia32': 0.17.18 - '@esbuild/linux-loong64': 0.17.18 - '@esbuild/linux-mips64el': 0.17.18 - '@esbuild/linux-ppc64': 0.17.18 - '@esbuild/linux-riscv64': 0.17.18 - '@esbuild/linux-s390x': 0.17.18 - '@esbuild/linux-x64': 0.17.18 - '@esbuild/netbsd-x64': 0.17.18 - '@esbuild/openbsd-x64': 0.17.18 - '@esbuild/sunos-x64': 0.17.18 - '@esbuild/win32-arm64': 0.17.18 - '@esbuild/win32-ia32': 0.17.18 - '@esbuild/win32-x64': 0.17.18 - - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 escalade@3.1.2: {} @@ -3848,124 +3248,147 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))): - dependencies: - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) - eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.15.0 + is-core-module: '@nolyfill/is-core-module@1.0.39' resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)): + eslint-plugin-check-file@2.8.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)): dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)): - dependencies: - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) - hasown: 2.0.2 - is-core-module: 2.15.0 + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color + micromatch: 4.0.8 - eslint-plugin-path-alias@2.1.0(patch_hash=japuwsqfkulviwgkm4kd2oi3ky)(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)): + eslint-plugin-import-x@4.2.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2): dependencies: - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) + '@typescript-eslint/utils': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + debug: 4.3.7 + doctrine: 3.0.0 + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.7.5 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + stable-hash: 0.0.4 + tslib: 2.7.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-path-alias@2.1.0(patch_hash=japuwsqfkulviwgkm4kd2oi3ky)(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)): + dependencies: + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) find-pkg: 2.0.0 get-tsconfig: 4.7.5 nanomatch: 1.2.13 transitivePeerDependencies: - supports-color - eslint-plugin-simple-header@1.1.1: {} - - eslint-plugin-simple-import-sort@12.1.1(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)): + eslint-plugin-react@7.36.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)): dependencies: - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) + array-includes: '@nolyfill/array-includes@1.0.28' + array.prototype.findlast: '@nolyfill/array.prototype.findlast@1.0.24' + array.prototype.flatmap: '@nolyfill/array.prototype.flatmap@1.0.28' + array.prototype.tosorted: '@nolyfill/array.prototype.tosorted@1.0.24' + doctrine: 2.1.0 + es-iterator-helpers: '@nolyfill/es-iterator-helpers@1.0.21' + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) + estraverse: 5.3.0 + hasown: '@nolyfill/hasown@1.0.29' + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: '@nolyfill/object.entries@1.0.28' + object.fromentries: '@nolyfill/object.fromentries@1.0.28' + object.values: '@nolyfill/object.values@1.0.28' + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: '@nolyfill/string.prototype.matchall@1.0.28' + string.prototype.repeat: '@nolyfill/string.prototype.repeat@1.0.28' - eslint-plugin-unused-imports@4.0.1(@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)): + eslint-plugin-simple-header@1.2.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)): dependencies: - eslint: 9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4) - eslint-rule-composer: 0.3.0 + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) + + eslint-plugin-simple-import-sort@12.1.1(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)): + dependencies: + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) + + eslint-plugin-unicorn@55.0.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)): + dependencies: + '@babel/helper-validator-identifier': 7.24.6 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.37.1 + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) + esquery: 1.5.0 + globals: 15.8.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.3 + strip-indent: 3.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.6.0(patch_hash=rf3fsbgjxv7ylxpzkcvrp4lpfq)(@typescript-eslint/parser@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)): + dependencies: + eslint: 9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - - eslint-rule-composer@0.3.0: {} + '@typescript-eslint/eslint-plugin': 8.6.0(patch_hash=rf3fsbgjxv7ylxpzkcvrp4lpfq)(@typescript-eslint/parser@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-visitor-keys@3.4.2: {} - eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.0.0: {} - eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4): + eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi)) '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.1 + '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.8.0 + '@eslint/js': 9.10.0 + '@eslint/plugin-kit': 0.1.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.6 + debug: 4.3.7 escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 espree: 10.1.0 - esquery: 1.6.0 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.4 + optionator: 0.9.3 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -3973,13 +3396,13 @@ snapshots: espree@10.1.0: dependencies: - acorn: 8.12.0 - acorn-jsx: 5.3.2(acorn@8.12.0) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 4.0.0 esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.5.0: dependencies: estraverse: 5.3.0 @@ -4008,11 +3431,11 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.6 + debug: 4.3.7 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.3 + '@types/yauzl': 2.10.0 transitivePeerDependencies: - supports-color @@ -4020,28 +3443,18 @@ snapshots: fast-fifo@1.3.2: {} - fast-glob@3.2.12: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-uri@3.0.1: {} - fastest-levenshtein@1.0.16: {} fastq@1.13.0: @@ -4062,10 +3475,6 @@ snapshots: dependencies: flat-cache: 5.0.0 - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -4078,6 +3487,11 @@ snapshots: dependencies: find-file-up: 2.0.1 + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -4095,10 +3509,6 @@ snapshots: flatted@3.3.1: {} - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - for-in@1.0.2: {} fragment-cache@0.2.1: @@ -4111,58 +3521,24 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 - fsevents@2.3.2: - optional: true - fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - - functions-have-names@1.2.3: {} - get-caller-file@2.0.5: {} - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - get-stream@5.2.0: dependencies: pump: 3.0.0 - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - - get-tsconfig@4.5.0: {} - get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 - get-tsconfig@4.7.6: - dependencies: - resolve-pkg-maps: 1.0.0 - get-uri@6.0.3: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.6 + debug: 4.3.7 fs-extra: 11.2.0 transitivePeerDependencies: - supports-color @@ -4205,48 +3581,27 @@ snapshots: globals@14.0.0: {} - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.0.1 + globals@15.8.0: {} globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 globjoin@0.1.4: {} - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - graceful-fs@4.2.11: {} graphemer@1.4.0: {} - has-bigints@1.0.2: {} - has-flag@3.0.0: {} has-flag@4.0.0: {} - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - has-value@0.3.1: dependencies: get-value: 2.0.6 @@ -4266,16 +3621,14 @@ snapshots: is-number: 3.0.0 kind-of: 4.0.0 - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - highlight.js@10.7.3: {} + highlight.js@11.8.0: {} homedir-polyfill@1.0.3: dependencies: parse-passwd: 1.0.0 + hosted-git-info@2.8.9: {} + html-minifier-terser@7.2.0: dependencies: camel-case: 4.1.2 @@ -4291,22 +3644,20 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.6 + debug: 4.3.7 transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.5: + https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.6 + debug: 4.3.7 transitivePeerDependencies: - supports-color ieee754@1.2.1: {} - ignore@5.2.4: {} - - ignore@5.3.1: {} + ignore@5.3.2: {} import-fresh@3.3.0: dependencies: @@ -4315,13 +3666,9 @@ snapshots: imurmurhash@0.1.4: {} - ini@1.3.8: {} + indent-string@4.0.0: {} - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 + ini@1.3.8: {} ip-address@9.0.5: dependencies: @@ -4336,29 +3683,13 @@ snapshots: dependencies: kind-of: 6.0.3 - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - is-arrayish@0.2.1: {} - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-buffer@1.1.6: {} - is-callable@1.2.7: {} - - is-core-module@2.15.0: + is-builtin-module@3.2.1: dependencies: - hasown: 2.0.2 + builtin-modules: 3.3.0 is-data-descriptor@0.1.4: dependencies: @@ -4368,14 +3699,6 @@ snapshots: dependencies: kind-of: 6.0.3 - is-data-view@1.0.1: - dependencies: - is-typed-array: 1.1.13 - - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.2 - is-descriptor@0.1.6: dependencies: is-accessor-descriptor: 0.1.6 @@ -4402,12 +3725,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-negative-zero@2.0.3: {} - - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - is-number@3.0.0: dependencies: kind-of: 3.2.2 @@ -4422,42 +3739,13 @@ snapshots: is-plain-object@5.0.0: {} - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 - is-windows@1.0.2: {} - isarray@1.0.0: {} - - isarray@2.0.5: {} - isexe@2.0.0: {} isobject@2.1.0: dependencies: - isarray: 1.0.0 + isarray: '@nolyfill/isarray@1.0.29' isobject@3.0.1: {} @@ -4469,6 +3757,10 @@ snapshots: jsbn@1.1.0: {} + jsesc@0.5.0: {} + + jsesc@3.0.2: {} + json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -4479,10 +3771,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json5@1.0.2: - dependencies: - minimist: 1.2.8 - jsonc-parser@3.2.0: {} jsonfile@6.1.0: @@ -4491,6 +3779,13 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsx-ast-utils@3.3.5: + dependencies: + array-includes: '@nolyfill/array-includes@1.0.28' + array.prototype.flat: '@nolyfill/array.prototype.flat@1.0.28' + object.assign: '@nolyfill/object.assign@1.0.28' + object.values: '@nolyfill/object.values@1.0.28' + jszip@2.7.0: dependencies: pako: 1.0.11 @@ -4520,6 +3815,10 @@ snapshots: lines-and-columns@1.2.4: {} + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -4528,9 +3827,13 @@ snapshots: lodash.truncate@4.4.2: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + lower-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 lru-cache@7.18.3: {} @@ -4548,16 +3851,13 @@ snapshots: merge2@1.4.1: {} - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - micromatch@4.0.7: + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 + min-indent@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -4575,14 +3875,14 @@ snapshots: for-in: 1.0.2 is-extendable: 1.0.1 - moment@2.30.1: {} + moment@2.22.2: {} - monaco-editor@0.50.0: {} + moment@2.29.4: {} + + monaco-editor@0.51.0: {} ms@2.0.0: {} - ms@2.1.2: {} - ms@2.1.3: {} nanoid@3.3.7: {} @@ -4612,85 +3912,76 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.7.0 + + node-releases@2.0.14: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} + object-assign@4.1.1: {} + object-copy@0.1.0: dependencies: copy-descriptor: 0.1.1 define-property: 0.2.5 kind-of: 3.2.2 - object-inspect@1.13.2: {} - - object-keys@1.1.1: {} - object-visit@1.0.1: dependencies: isobject: 3.0.1 - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - object.pick@1.3.0: dependencies: isobject: 3.0.1 - object.values@1.2.0: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - once@1.4.0: dependencies: wrappy: 1.0.2 - optionator@0.9.4: + optionator@0.9.3: dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.5 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - pac-proxy-agent@7.0.2: + p-try@2.2.0: {} + + pac-proxy-agent@7.0.1: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.1 - debug: 4.3.6 + debug: 4.3.7 get-uri: 6.0.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 + https-proxy-agent: 7.0.4 pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.4 + socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color @@ -4704,7 +3995,7 @@ snapshots: param-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 parent-module@1.0.1: dependencies: @@ -4712,7 +4003,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.21.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -4722,7 +4013,7 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 pascalcase@0.1.1: {} @@ -4742,22 +4033,22 @@ snapshots: picomatch@4.0.2: {} - possible-typed-array-names@1.0.0: {} + pluralize@8.0.0: {} - postcss-resolve-nested-selector@0.1.4: {} + postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.0(postcss@8.4.40): + postcss-safe-parser@7.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-selector-parser@6.1.1: + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 postcss-value-parser@4.2.0: {} - postcss@8.4.40: + postcss@8.4.41: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -4767,16 +4058,22 @@ snapshots: progress@2.0.3: {} + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + proxy-agent@6.4.0: dependencies: agent-base: 7.1.1 - debug: 4.3.6 + debug: 4.3.7 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 + https-proxy-agent: 7.0.4 lru-cache: 7.18.3 - pac-proxy-agent: 7.0.2 + pac-proxy-agent: 7.0.1 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.4 + socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color @@ -4787,14 +4084,15 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - punycode@2.3.1: {} + punycode@2.1.1: {} - puppeteer-core@22.15.0: + puppeteer-core@23.4.0: dependencies: - '@puppeteer/browsers': 2.3.0 - chromium-bidi: 0.6.3(devtools-protocol@0.0.1312386) - debug: 4.3.6 - devtools-protocol: 0.0.1312386 + '@puppeteer/browsers': 2.4.0 + chromium-bidi: 0.6.5(devtools-protocol@0.0.1342118) + debug: 4.3.7 + devtools-protocol: 0.0.1342118 + typed-query-selector: 2.12.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -4807,17 +4105,31 @@ snapshots: queue-tick@1.0.1: {} + react-is@16.13.1: {} + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + regex-not@1.0.2: dependencies: extend-shallow: 3.0.2 safe-regex: 1.1.0 - regexp.prototype.flags@1.5.2: + regexp-tree@0.1.27: {} + + regjsparser@0.10.0: dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 + jsesc: 0.5.0 relateurl@0.2.7: {} @@ -4840,7 +4152,13 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.15.0 + is-core-module: '@nolyfill/is-core-module@1.0.39' + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: '@nolyfill/is-core-module@1.0.39' path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -4852,43 +4170,16 @@ snapshots: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.2: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - safe-regex@1.1.0: dependencies: ret: 0.1.15 + semver@5.7.1: {} + semver@6.3.1: {} semver@7.6.3: {} - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - set-value@2.0.1: dependencies: extend-shallow: 2.0.1 @@ -4902,14 +4193,11 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + signal-exit@4.0.1: {} - signal-exit@4.1.0: {} + simple-markdown@0.7.2: + dependencies: + '@types/react': 18.2.79 slash@3.0.0: {} @@ -4934,10 +4222,10 @@ snapshots: transitivePeerDependencies: - supports-color - socks-proxy-agent@8.0.4: + socks-proxy-agent@8.0.3: dependencies: agent-base: 7.1.1 - debug: 4.3.6 + debug: 4.3.7 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -4968,15 +4256,31 @@ snapshots: source-map@0.6.1: {} + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + + spdx-exceptions@2.3.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + + spdx-license-ids@3.0.13: {} + split-string@3.1.0: dependencies: extend-shallow: 3.0.2 sprintf-js@1.1.3: {} - standalone-electron-types@1.0.0: + stable-hash@0.0.4: {} + + standalone-electron-types@1.0.0(patch_hash=cvychuhjtbzvtowhc2efrgpqjq): dependencies: - '@types/node': 18.19.43 + '@types/node': 18.19.50 static-extend@0.1.2: dependencies: @@ -4987,7 +4291,7 @@ snapshots: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.1.1 + text-decoder: 1.1.0 optionalDependencies: bare-events: 2.4.2 @@ -4997,25 +4301,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string.prototype.trim@1.2.9: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - string.prototype.trimend@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -5024,32 +4309,36 @@ snapshots: dependencies: ansi-regex: 6.0.1 - strip-bom@3.0.0: {} + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 strip-json-comments@3.1.1: {} - stylelint-config-recommended@14.0.1(stylelint@16.8.1(typescript@5.5.4)): - dependencies: - stylelint: 16.8.1(typescript@5.5.4) + style-search@0.1.0: {} - stylelint-config-standard@36.0.1(stylelint@16.8.1(typescript@5.5.4)): + stylelint-config-recommended@14.0.1(stylelint@16.9.0(typescript@5.6.2)): dependencies: - stylelint: 16.8.1(typescript@5.5.4) - stylelint-config-recommended: 14.0.1(stylelint@16.8.1(typescript@5.5.4)) + stylelint: 16.9.0(typescript@5.6.2) - stylelint@16.8.1(typescript@5.5.4): + stylelint-config-standard@36.0.1(stylelint@16.9.0(typescript@5.6.2)): dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 - '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.1) + stylelint: 16.9.0(typescript@5.6.2) + stylelint-config-recommended: 14.0.1(stylelint@16.9.0(typescript@5.6.2)) + + stylelint@16.9.0(typescript@5.6.2): + dependencies: + '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) + '@csstools/css-tokenizer': 3.0.1 + '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.2) css-functions-list: 3.2.2 css-tree: 2.3.1 - debug: 4.3.6 + debug: 4.3.7 fast-glob: 3.3.2 fastest-levenshtein: 1.0.16 file-entry-cache: 9.0.0 @@ -5057,24 +4346,24 @@ snapshots: globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-plain-object: 5.0.0 known-css-properties: 0.34.0 mathml-tag-names: 2.1.3 meow: 13.2.0 - micromatch: 4.0.7 + micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.40 - postcss-resolve-nested-selector: 0.1.4 - postcss-safe-parser: 7.0.0(postcss@8.4.40) - postcss-selector-parser: 6.1.1 + postcss: 8.4.41 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.0(postcss@8.4.41) + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 strip-ansi: 7.1.0 - supports-hyperlinks: 3.0.0 + supports-hyperlinks: 3.1.0 svg-tags: 1.0.0 table: 6.8.2 write-file-atomic: 5.0.1 @@ -5090,7 +4379,7 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.0.0: + supports-hyperlinks@3.1.0: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 @@ -5101,7 +4390,7 @@ snapshots: table@6.8.2: dependencies: - ajv: 8.17.1 + ajv: 8.12.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -5124,11 +4413,11 @@ snapshots: terser@5.31.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.10.0 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 - text-decoder@1.1.1: + text-decoder@1.1.0: dependencies: b4a: 1.6.6 @@ -5151,9 +4440,9 @@ snapshots: regex-not: 1.0.2 safe-regex: 1.1.0 - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: - typescript: 5.5.4 + typescript: 5.6.2 ts-patch@3.2.1: dependencies: @@ -5164,31 +4453,14 @@ snapshots: semver: 7.6.3 strip-ansi: 6.0.1 - ts-pattern@5.3.1: {} + ts-pattern@5.0.4: {} - tsconfig-paths@3.15.0: + tslib@2.7.0: {} + + tsx@4.19.1: dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@2.6.2: {} - - tslib@2.6.3: {} - - tsx@3.12.7: - dependencies: - '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.1.0 - '@esbuild-kit/esm-loader': 2.5.5 - optionalDependencies: - fsevents: 2.3.2 - - tsx@4.16.5: - dependencies: - esbuild: 0.21.5 - get-tsconfig: 4.7.6 + esbuild: 0.23.1 + get-tsconfig: 4.7.5 optionalDependencies: fsevents: 2.3.3 @@ -5196,66 +4468,31 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@3.9.0: {} + type-fest@0.6.0: {} - type-fest@4.23.0: {} + type-fest@0.8.1: {} - typed-array-buffer@1.0.2: + type-fest@4.26.1: {} + + typed-query-selector@2.12.0: {} + + typescript-eslint@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2): dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.6: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - - typescript-eslint@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4): - dependencies: - '@typescript-eslint/eslint-plugin': 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4))(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - '@typescript-eslint/parser': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0(eslint@9.8.0(patch_hash=xm46kqcmdgzlmm4aifkfpxaho4))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.6.0(patch_hash=rf3fsbgjxv7ylxpzkcvrp4lpfq)(@typescript-eslint/parser@8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2))(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + '@typescript-eslint/parser': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) + '@typescript-eslint/utils': 8.6.0(eslint@9.10.0(patch_hash=wy5a2dwvtxac2ygzwebqqjurgi))(typescript@5.6.2) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript-transform-paths@3.4.7(typescript@5.5.4): + typescript-transform-paths@3.5.1(patch_hash=67beklx2y5qvw7iy3wqqxjhwr4)(typescript@5.6.2): dependencies: - minimatch: 3.1.2 - typescript: 5.5.4 + minimatch: 9.0.5 + typescript: 5.6.2 - typescript@5.5.4: {} - - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 + typescript@5.6.2: {} unbzip2-stream@1.4.3: dependencies: @@ -5264,7 +4501,7 @@ snapshots: undici-types@5.26.5: {} - undici-types@6.11.1: {} + undici-types@6.19.8: {} union-value@1.0.1: dependencies: @@ -5280,9 +4517,15 @@ snapshots: has-value: 0.3.1 isobject: 3.0.1 + update-browserslist-db@1.0.16(browserslist@4.23.0): + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.1 + uri-js@4.4.1: dependencies: - punycode: 2.3.1 + punycode: 2.1.1 urix@0.1.0: {} @@ -5292,28 +4535,15 @@ snapshots: util-deprecate@1.0.2: {} - virtual-merge@1.0.1: {} + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 vscode-oniguruma@1.7.0: {} vscode-textmate@5.2.0: {} - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -5322,8 +4552,6 @@ snapshots: dependencies: isexe: 2.0.0 - word-wrap@1.2.5: {} - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -5335,7 +4563,7 @@ snapshots: write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 - signal-exit: 4.1.0 + signal-exit: 4.0.1 ws@8.18.0: {} diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs index 623f9f940..5ee5413e8 100755 --- a/scripts/build/build.mjs +++ b/scripts/build/build.mjs @@ -21,27 +21,26 @@ import esbuild from "esbuild"; import { readdir } from "fs/promises"; import { join } from "path"; -import { BUILD_TIMESTAMP, commonOpts, exists, globPlugins, IS_DEV, IS_REPORTER, IS_STANDALONE, IS_UPDATER_DISABLED, resolvePluginName, VERSION, commonRendererPlugins, watch } from "./common.mjs"; +import { BUILD_TIMESTAMP, commonOpts, commonRendererPlugins, disposeAll, exists, globPlugins, IS_DEV, IS_REPORTER, IS_STANDALONE, IS_UPDATER_DISABLED, rebuildAll, resolvePluginName, VERSION, watch, watchAll } from "./common.mjs"; +/** @type {Record} */ const defines = { - IS_STANDALONE, - IS_DEV, - IS_REPORTER, - IS_UPDATER_DISABLED, - IS_WEB: false, - IS_EXTENSION: false, + IS_STANDALONE: IS_STANDALONE.toString(), + IS_DEV: IS_DEV.toString(), + IS_REPORTER: IS_REPORTER.toString(), + IS_UPDATER_DISABLED: IS_UPDATER_DISABLED.toString(), + IS_WEB: "false", + IS_EXTENSION: "false", VERSION: JSON.stringify(VERSION), - BUILD_TIMESTAMP + BUILD_TIMESTAMP: BUILD_TIMESTAMP.toString() }; -if (defines.IS_STANDALONE === false) +if (defines.IS_STANDALONE === "false") // If this is a local build (not standalone), optimize // for the specific platform we're on defines["process.platform"] = JSON.stringify(process.platform); -/** - * @type {esbuild.BuildOptions} - */ +/** @satisfies {esbuild.BuildOptions} */ const nodeCommonOpts = { ...commonOpts, format: "cjs", @@ -51,12 +50,11 @@ const nodeCommonOpts = { define: defines }; -const sourceMapFooter = s => watch ? "" : `//# sourceMappingURL=vencord://${s}.js.map`; +/** @param {string} fileName */ +const sourceMapFooter = fileName => watch ? "" : `//# sourceMappingURL=vencord://${fileName}.js.map`; const sourcemap = watch ? "inline" : "external"; -/** - * @type {import("esbuild").Plugin} - */ +/** @satisfies {esbuild.Plugin} */ const globNativesPlugin = { name: "glob-natives-plugin", setup: build => { @@ -82,7 +80,7 @@ const globNativesPlugin = { const nativePath = join(dirPath, fileName, "native.ts"); const indexNativePath = join(dirPath, fileName, "native/index.ts"); - if (!(await exists(nativePath)) && !(await exists(indexNativePath))) + if (!await exists(nativePath) && !await exists(indexNativePath)) continue; const pluginName = await resolvePluginName(dirPath, file); @@ -102,9 +100,9 @@ const globNativesPlugin = { } }; -await Promise.all([ +const contexts = await Promise.all([ // Discord Desktop main & renderer & preload - esbuild.build({ + esbuild.context({ ...nodeCommonOpts, entryPoints: ["src/main/index.ts"], outfile: "dist/patcher.js", @@ -112,15 +110,15 @@ await Promise.all([ sourcemap, define: { ...defines, - IS_DISCORD_DESKTOP: true, - IS_VESKTOP: false + IS_DISCORD_DESKTOP: "true", + IS_VESKTOP: "false" }, plugins: [ ...nodeCommonOpts.plugins, globNativesPlugin ] }), - esbuild.build({ + esbuild.context({ ...commonOpts, entryPoints: ["src/Vencord.ts"], outfile: "dist/renderer.js", @@ -135,11 +133,11 @@ await Promise.all([ ], define: { ...defines, - IS_DISCORD_DESKTOP: true, - IS_VESKTOP: false + IS_DISCORD_DESKTOP: "true", + IS_VESKTOP: "false" } }), - esbuild.build({ + esbuild.context({ ...nodeCommonOpts, entryPoints: ["src/preload.ts"], outfile: "dist/preload.js", @@ -147,13 +145,12 @@ await Promise.all([ sourcemap, define: { ...defines, - IS_DISCORD_DESKTOP: true, - IS_VESKTOP: false + IS_DISCORD_DESKTOP: "true", + IS_VESKTOP: "false" } }), - // Vencord Desktop main & renderer & preload - esbuild.build({ + esbuild.context({ ...nodeCommonOpts, entryPoints: ["src/main/index.ts"], outfile: "dist/vencordDesktopMain.js", @@ -161,15 +158,15 @@ await Promise.all([ sourcemap, define: { ...defines, - IS_DISCORD_DESKTOP: false, - IS_VESKTOP: true + IS_DISCORD_DESKTOP: "false", + IS_VESKTOP: "true" }, plugins: [ ...nodeCommonOpts.plugins, globNativesPlugin ] }), - esbuild.build({ + esbuild.context({ ...commonOpts, entryPoints: ["src/Vencord.ts"], outfile: "dist/vencordDesktopRenderer.js", @@ -184,11 +181,11 @@ await Promise.all([ ], define: { ...defines, - IS_DISCORD_DESKTOP: false, - IS_VESKTOP: true + IS_DISCORD_DESKTOP: "false", + IS_VESKTOP: "true" } }), - esbuild.build({ + esbuild.context({ ...nodeCommonOpts, entryPoints: ["src/preload.ts"], outfile: "dist/vencordDesktopPreload.js", @@ -196,14 +193,15 @@ await Promise.all([ sourcemap, define: { ...defines, - IS_DISCORD_DESKTOP: false, - IS_VESKTOP: true + IS_DISCORD_DESKTOP: "false", + IS_VESKTOP: "true" } }), -]).catch(err => { - console.error("Build failed"); - console.error(err.message); - // make ci fail - if (!commonOpts.watch) - process.exitCode = 1; -}); +]); + +await rebuildAll(contexts); + +if (watch) + await watchAll(contexts); +else + disposeAll(contexts); diff --git a/scripts/build/buildWeb.mjs b/scripts/build/buildWeb.mjs index deab86610..fe1c0d8a4 100644 --- a/scripts/build/buildWeb.mjs +++ b/scripts/build/buildWeb.mjs @@ -21,13 +21,12 @@ import esbuild from "esbuild"; import { readFileSync } from "fs"; import { appendFile, mkdir, readdir, readFile, rm, writeFile } from "fs/promises"; import { join } from "path"; +// @ts-expect-error: No types import Zip from "zip-local"; -import { BUILD_TIMESTAMP, commonOpts, globPlugins, IS_DEV, IS_REPORTER, VERSION, commonRendererPlugins } from "./common.mjs"; +import { BUILD_TIMESTAMP, commonOpts, commonRendererPlugins, disposeAll, globPlugins, IS_DEV, IS_REPORTER, rebuildAll, VERSION, watch, watchAll } from "./common.mjs"; -/** - * @type {esbuild.BuildOptions} - */ +/** @satisfies {esbuild.BuildOptions} */ const commonOptions = { ...commonOpts, entryPoints: ["browser/Vencord.ts"], @@ -40,16 +39,16 @@ const commonOptions = { ], target: ["esnext"], define: { - IS_WEB: true, - IS_EXTENSION: false, - IS_STANDALONE: true, - IS_DEV, - IS_REPORTER, - IS_DISCORD_DESKTOP: false, - IS_VESKTOP: false, - IS_UPDATER_DISABLED: true, + IS_WEB: "true", + IS_EXTENSION: "false", + IS_STANDALONE: "true", + IS_DEV: IS_DEV.toString(), + IS_REPORTER: IS_REPORTER.toString(), + IS_DISCORD_DESKTOP: "false", + IS_VESKTOP: "false", + IS_UPDATER_DISABLED: "true", VERSION: JSON.stringify(VERSION), - BUILD_TIMESTAMP + BUILD_TIMESTAMP: BUILD_TIMESTAMP.toString() } }; @@ -65,68 +64,70 @@ const RnNoiseFiles = [ "LICENSE" ]; -await Promise.all( - [ - esbuild.build({ - entryPoints: MonacoWorkerEntryPoints.map(entry => `node_modules/monaco-editor/esm/${entry}`), - bundle: true, - minify: true, - format: "iife", - outbase: "node_modules/monaco-editor/esm/", - outdir: "dist/monaco" - }), - esbuild.build({ - entryPoints: ["browser/monaco.ts"], - bundle: true, - minify: true, - format: "iife", - outfile: "dist/monaco/index.js", - loader: { - ".ttf": "file" - } - }), - esbuild.build({ - ...commonOptions, - outfile: "dist/browser.js", - footer: { js: "//# sourceURL=VencordWeb" } - }), - esbuild.build({ - ...commonOptions, - outfile: "dist/extension.js", - define: { - ...commonOptions?.define, - IS_EXTENSION: true, - }, - footer: { js: "//# sourceURL=VencordWeb" } - }), - esbuild.build({ - ...commonOptions, - inject: ["browser/GMPolyfill.js", ...(commonOptions?.inject || [])], - define: { - ...(commonOptions?.define), - window: "unsafeWindow", - }, - outfile: "dist/Vencord.user.js", - banner: { - js: readFileSync("browser/userscript.meta.js", "utf-8").replace("%version%", `${VERSION}.${new Date().getTime()}`) - }, - footer: { - // UserScripts get wrapped in an iife, so define Vencord prop on window that returns our local - js: "Object.defineProperty(unsafeWindow,'Vencord',{get:()=>Vencord});" - } - }) - ] -).catch(err => { - console.error("Build failed"); - console.error(err.message); - if (!commonOpts.watch) - process.exit(1); -});; +const contexts = await Promise.all([ + esbuild.context({ + entryPoints: MonacoWorkerEntryPoints.map(entry => `node_modules/monaco-editor/esm/${entry}`), + bundle: true, + minify: true, + format: "iife", + outbase: "node_modules/monaco-editor/esm/", + outdir: "dist/monaco" + }), + esbuild.context({ + entryPoints: ["browser/monaco.ts"], + bundle: true, + minify: true, + format: "iife", + outfile: "dist/monaco/index.js", + loader: { + ".ttf": "file" + } + }), + esbuild.context({ + ...commonOptions, + outfile: "dist/browser.js", + footer: { js: "//# sourceURL=VencordWeb" } + }), + esbuild.context({ + ...commonOptions, + outfile: "dist/extension.js", + define: { + ...commonOptions.define, + IS_EXTENSION: "true", + }, + footer: { js: "//# sourceURL=VencordWeb" } + }), + esbuild.context({ + ...commonOptions, + inject: ["browser/GMPolyfill.js", ...commonOptions.inject], + define: { + ...(commonOptions.define), + window: "unsafeWindow", + }, + outfile: "dist/Vencord.user.js", + banner: { + js: readFileSync("browser/userscript.meta.js", "utf-8").replace("%version%", `${VERSION}.${new Date().getTime()}`) + }, + footer: { + // UserScripts get wrapped in an iife, so define Vencord prop on window that returns our local + js: "Object.defineProperty(unsafeWindow,'Vencord',{get:()=>Vencord});" + } + }) +]); + +await rebuildAll(contexts); + +if (watch) + await watchAll(contexts); +else + disposeAll(contexts); /** - * @type {(dir: string) => Promise} + * @param {string} dir + * @returns {Promise} */ async function globDir(dir) { + /** @type {string[]} */ const files = []; for (const child of await readdir(dir, { withFileTypes: true })) { @@ -141,7 +142,9 @@ async function globDir(dir) { } /** - * @type {(dir: string, basePath?: string) => Promise>} + * @param {string} dir + * @param {string} [basePath] + * @returns {Promise>} */ async function loadDir(dir, basePath = "") { const files = await globDir(dir); @@ -149,7 +152,8 @@ async function loadDir(dir, basePath = "") { } /** - * @type {(target: string, files: string[]) => Promise} + * @param {string} target + * @param {string[]} files */ async function buildExtension(target, files) { const entries = { @@ -160,6 +164,7 @@ async function buildExtension(target, files) { [`third-party/rnnoise/${file.replace(/^dist\//, "")}`, await readFile(`node_modules/@sapphi-red/web-noise-suppressor/${file}`)] ))), ...Object.fromEntries(await Promise.all(files.map(async f => { + /** @type {Buffer | Uint8Array} */ let content = await readFile(join("browser", f)); if (f.startsWith("manifest")) { const json = JSON.parse(content.toString("utf-8")); @@ -210,7 +215,6 @@ if (!process.argv.includes("--skip-extension")) { Zip.sync.zip("dist/firefox-unpacked").compress().save("dist/extension-firefox.zip"); console.info("Packed Firefox Extension written to dist/extension-firefox.zip"); - } else { await appendCssRuntime; } diff --git a/scripts/build/common.mjs b/scripts/build/common.mjs index e88f1e2b9..db5f49653 100644 --- a/scripts/build/common.mjs +++ b/scripts/build/common.mjs @@ -24,14 +24,14 @@ import esbuild from "esbuild"; import { constants as FsConstants, readFileSync } from "fs"; import { access, readdir, readFile } from "fs/promises"; import { minify as minifyHtml } from "html-minifier-terser"; +import { builtinModules } from "module"; import { join, relative } from "path"; import { promisify } from "util"; import { getPluginTarget } from "../utils.mjs"; -import { builtinModules } from "module"; /** @type {import("../../package.json")} */ -const PackageJSON = JSON.parse(readFileSync("package.json")); +const PackageJSON = JSON.parse(readFileSync("package.json", "utf-8")); export const VERSION = PackageJSON.version; // https://reproducible-builds.org/docs/source-date-epoch/ @@ -80,16 +80,18 @@ export async function resolvePluginName(base, dirent) { })(); } +/** @param {string} path */ export async function exists(path) { - return await access(path, FsConstants.F_OK) - .then(() => true) - .catch(() => false); + try { + await access(path, FsConstants.F_OK); + return true; + } catch { + return false; + } } // https://github.com/evanw/esbuild/issues/619#issuecomment-751995294 -/** - * @type {import("esbuild").Plugin} - */ +/** @satisfies {esbuild.Plugin} */ export const makeAllPackagesExternalPlugin = { name: "make-all-packages-external", setup(build) { @@ -99,18 +101,17 @@ export const makeAllPackagesExternalPlugin = { }; /** - * @type {(kind: "web" | "discordDesktop" | "vencordDesktop") => import("esbuild").Plugin} + * @param {"web" | "discordDesktop" | "vencordDesktop"} kind + * @returns {esbuild.Plugin} */ export const globPlugins = kind => ({ name: "glob-plugins", setup: build => { const filter = /^~plugins$/; - build.onResolve({ filter }, args => { - return { - namespace: "import-plugins", - path: args.path - }; - }); + build.onResolve({ filter }, args => ({ + namespace: "import-plugins", + path: args.path + })); build.onLoad({ filter, namespace: "import-plugins" }, async () => { const pluginDirs = ["plugins/_api", "plugins/_core", "plugins", "userplugins"]; @@ -165,9 +166,7 @@ export const globPlugins = kind => ({ } }); -/** - * @type {import("esbuild").Plugin} - */ +/** @satisfies {esbuild.Plugin} */ export const gitHashPlugin = { name: "git-hash-plugin", setup: build => { @@ -181,9 +180,7 @@ export const gitHashPlugin = { } }; -/** - * @type {import("esbuild").Plugin} - */ +/** @satisfies {esbuild.Plugin} */ export const gitRemotePlugin = { name: "git-remote-plugin", setup: build => { @@ -206,9 +203,7 @@ export const gitRemotePlugin = { } }; -/** - * @type {import("esbuild").Plugin} - */ +/** @satisfies {esbuild.Plugin} */ export const fileUrlPlugin = { name: "file-uri-plugin", setup: build => { @@ -218,6 +213,7 @@ export const fileUrlPlugin = { path: args.path, pluginData: { uri: args.path, + // @ts-expect-error path: join(args.resolveDir, args.path.slice("file://".length).split("?")[0]) } })); @@ -252,6 +248,7 @@ export const fileUrlPlugin = { write: false, minify: true }); + // @ts-expect-error content = res.outputFiles[0].text; } else { throw new Error(`Don't know how to minify file type: ${path}`); @@ -269,9 +266,7 @@ export const fileUrlPlugin = { }; const styleModule = readFileSync("./scripts/build/module/style.js", "utf-8"); -/** - * @type {import("esbuild").Plugin} - */ +/** @satisfies {esbuild.Plugin} */ export const stylePlugin = { name: "style-plugin", setup: ({ onResolve, onLoad }) => { @@ -293,8 +288,24 @@ export const stylePlugin = { } }; +/** @param {esbuild.BuildContext[]} contexts */ +export const disposeAll = contexts => Promise.all(contexts.map(ctx => ctx.dispose())); + +/** @param {esbuild.BuildContext[]} contexts */ +export const rebuildAll = contexts => + Promise.all(contexts.map(ctx => ctx.rebuild().catch(error => { + disposeAll(contexts); + console.error("Build failed:\n" + error.stack); + process.exitCode = 1; + }))); + +/** @param {esbuild.BuildContext[]} contexts */ +export const watchAll = contexts => Promise.all(contexts.map(ctx => ctx.watch())); + /** - * @type {(filter: RegExp, message: string) => import("esbuild").Plugin} + * @param {RegExp} filter + * @param {string} message + * @returns {esbuild.Plugin} */ export const banImportPlugin = (filter, message) => ({ name: "ban-imports", @@ -305,15 +316,14 @@ export const banImportPlugin = (filter, message) => ({ } }); -/** - * @type {import("esbuild").BuildOptions} - */ +/** @satisfies {esbuild.BuildOptions} */ export const commonOpts = { + // Does not work with esbuild.BuildContext.rebuild: https://github.com/evanw/esbuild/issues/2886#issuecomment-1416397046 + // Warnings and errors should still get logged logLevel: "info", bundle: true, - watch, minify: !watch, - sourcemap: watch ? "inline" : "", + sourcemap: watch ? "inline" : undefined, legalComments: "linked", banner, plugins: [fileUrlPlugin, gitHashPlugin, gitRemotePlugin, stylePlugin], diff --git a/scripts/build/inject/react.mjs b/scripts/build/inject/react.mjs index 591a25b5a..d4a1bac3e 100644 --- a/scripts/build/inject/react.mjs +++ b/scripts/build/inject/react.mjs @@ -17,5 +17,7 @@ */ export const VencordFragment = /* #__PURE__*/ Symbol.for("react.fragment"); -export let VencordCreateElement = - (...args) => (VencordCreateElement = Vencord.Webpack.Common.React.createElement)(...args); + +/** @param {Parameters} args */ +export let VencordCreateElement + = (...args) => (VencordCreateElement = Vencord.Webpack.Common.React.createElement)(...args); diff --git a/scripts/build/module/style.js b/scripts/build/module/style.js index 5981a3de2..5dee12afc 100644 --- a/scripts/build/module/style.js +++ b/scripts/build/module/style.js @@ -16,6 +16,8 @@ * along with this program. If not, see . */ +// @ts-nocheck +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition (window.VencordStyles ??= new Map()).set(STYLE_NAME, { name: STYLE_NAME, source: STYLE_SOURCE, diff --git a/scripts/generatePluginList.ts b/scripts/generatePluginList.mts similarity index 51% rename from scripts/generatePluginList.ts rename to scripts/generatePluginList.mts index 3d7c16c01..5dc70a160 100644 --- a/scripts/generatePluginList.ts +++ b/scripts/generatePluginList.mts @@ -16,11 +16,11 @@ * along with this program. If not, see . */ -import { Dirent, readdirSync, readFileSync, writeFileSync } from "fs"; +import { type Dirent, readdirSync, readFileSync, writeFileSync } from "fs"; import { access, readFile } from "fs/promises"; import { join, sep } from "path"; import { normalize as posixNormalize, sep as posixSep } from "path/posix"; -import { BigIntLiteral, createSourceFile, Identifier, isArrayLiteralExpression, isCallExpression, isExportAssignment, isIdentifier, isObjectLiteralExpression, isPropertyAccessExpression, isPropertyAssignment, isSatisfiesExpression, isStringLiteral, isVariableStatement, NamedDeclaration, NodeArray, ObjectLiteralExpression, ScriptTarget, StringLiteral, SyntaxKind } from "typescript"; +import ts from "typescript"; import { getPluginTarget } from "./utils.mjs"; @@ -43,44 +43,50 @@ interface PluginData { filePath: string; } -const devs = {} as Record; +const devs: Record = {}; -function getName(node: NamedDeclaration) { - return node.name && isIdentifier(node.name) ? node.name.text : undefined; +function getName(node: ts.NamedDeclaration) { + return node.name && ts.isIdentifier(node.name) ? node.name.text : undefined; } -function hasName(node: NamedDeclaration, name: string) { +function hasName(node: ts.NamedDeclaration, name: string) { return getName(node) === name; } -function getObjectProp(node: ObjectLiteralExpression, name: string) { +function getObjectProp(node: ts.ObjectLiteralExpression, name: string) { const prop = node.properties.find(p => hasName(p, name)); - if (prop && isPropertyAssignment(prop)) return prop.initializer; + if (prop && ts.isPropertyAssignment(prop)) return prop.initializer; return prop; } function parseDevs() { - const file = createSourceFile("constants.ts", readFileSync("src/utils/constants.ts", "utf8"), ScriptTarget.Latest); + const file = ts.createSourceFile( + "constants.ts", + readFileSync("src/utils/constants.ts", "utf8"), + ts.ScriptTarget.Latest + ); for (const child of file.getChildAt(0).getChildren()) { - if (!isVariableStatement(child)) continue; + if (!ts.isVariableStatement(child)) continue; const devsDeclaration = child.declarationList.declarations.find(d => hasName(d, "Devs")); - if (!devsDeclaration?.initializer || !isCallExpression(devsDeclaration.initializer)) continue; + if (!devsDeclaration?.initializer || !ts.isCallExpression(devsDeclaration.initializer)) continue; - const value = devsDeclaration.initializer.arguments[0]; + const value = devsDeclaration.initializer.arguments[0]!; - if (!isSatisfiesExpression(value) || !isObjectLiteralExpression(value.expression)) throw new Error("Failed to parse devs: not an object literal"); + if (!ts.isSatisfiesExpression(value) || !ts.isObjectLiteralExpression(value.expression)) + throw new Error("Failed to parse devs: not an object literal"); for (const prop of value.expression.properties) { - const name = (prop.name as Identifier).text; - const value = isPropertyAssignment(prop) ? prop.initializer : prop; + const name = (prop.name as ts.Identifier).text; + const value = ts.isPropertyAssignment(prop) ? prop.initializer : prop; - if (!isObjectLiteralExpression(value)) throw new Error(`Failed to parse devs: ${name} is not an object literal`); + if (!ts.isObjectLiteralExpression(value)) + throw new Error(`Failed to parse devs: ${name} is not an object literal`); devs[name] = { - name: (getObjectProp(value, "name") as StringLiteral).text, - id: (getObjectProp(value, "id") as BigIntLiteral).text.slice(0, -1) + name: (getObjectProp(value, "name") as ts.StringLiteral).text, + id: (getObjectProp(value, "id") as ts.BigIntLiteral).text.slice(0, -1) }; } @@ -91,21 +97,22 @@ function parseDevs() { } async function parseFile(fileName: string) { - const file = createSourceFile(fileName, await readFile(fileName, "utf8"), ScriptTarget.Latest); + const file = ts.createSourceFile(fileName, await readFile(fileName, "utf8"), ts.ScriptTarget.Latest); - const fail = (reason: string) => { - return new Error(`Invalid plugin ${fileName}, because ${reason}`); - }; + const fail = (reason: string) => + new Error(`Invalid plugin ${fileName}, because ${reason}`); for (const node of file.getChildAt(0).getChildren()) { - if (!isExportAssignment(node) || !isCallExpression(node.expression)) continue; + if (!ts.isExportAssignment(node) || !ts.isCallExpression(node.expression)) continue; const call = node.expression; - if (!isIdentifier(call.expression) || call.expression.text !== "definePlugin") continue; + if (!ts.isIdentifier(call.expression) || call.expression.text !== "definePlugin") continue; - const pluginObj = node.expression.arguments[0]; - if (!isObjectLiteralExpression(pluginObj)) throw fail("no object literal passed to definePlugin"); + const pluginObj = node.expression.arguments[0]!; + if (!ts.isObjectLiteralExpression(pluginObj)) + throw fail("no object literal passed to definePlugin"); + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions const data = { hasPatches: false, hasCommands: false, @@ -116,12 +123,13 @@ async function parseFile(fileName: string) { for (const prop of pluginObj.properties) { const key = getName(prop); - const value = isPropertyAssignment(prop) ? prop.initializer : prop; + const value = ts.isPropertyAssignment(prop) ? prop.initializer : prop; switch (key) { case "name": case "description": - if (!isStringLiteral(value)) throw fail(`${key} is not a string literal`); + if (!ts.isStringLiteral(value)) + throw fail(`${key} is not a string literal`); data[key] = value.text; break; case "patches": @@ -131,39 +139,48 @@ async function parseFile(fileName: string) { data.hasCommands = true; break; case "authors": - if (!isArrayLiteralExpression(value)) throw fail("authors is not an array literal"); + if (!ts.isArrayLiteralExpression(value)) + throw fail("authors is not an array literal"); data.authors = value.elements.map(e => { - if (!isPropertyAccessExpression(e)) throw fail("authors array contains non-property access expressions"); + if (!ts.isPropertyAccessExpression(e)) + throw fail("authors array contains non-property access expressions"); const d = devs[getName(e)!]; if (!d) throw fail(`couldn't look up author ${getName(e)}`); return d; }); break; case "tags": - if (!isArrayLiteralExpression(value)) throw fail("tags is not an array literal"); + if (!ts.isArrayLiteralExpression(value)) + throw fail("tags is not an array literal"); data.tags = value.elements.map(e => { - if (!isStringLiteral(e)) throw fail("tags array contains non-string literals"); + if (!ts.isStringLiteral(e)) + throw fail("tags array contains non-string literals"); return e.text; }); break; case "dependencies": - if (!isArrayLiteralExpression(value)) throw fail("dependencies is not an array literal"); + if (!ts.isArrayLiteralExpression(value)) + throw fail("dependencies is not an array literal"); const { elements } = value; - if (elements.some(e => !isStringLiteral(e))) throw fail("dependencies array contains non-string elements"); - data.dependencies = (elements as NodeArray).map(e => e.text); + if (elements.some(e => !ts.isStringLiteral(e))) + throw fail("dependencies array contains non-string elements"); + data.dependencies = (elements as ts.NodeArray).map(e => e.text); break; case "required": case "enabledByDefault": - data[key] = value.kind === SyntaxKind.TrueKeyword; + data[key] = value.kind === ts.SyntaxKind.TrueKeyword; break; } } - if (!data.name || !data.description || !data.authors) throw fail("name, description or authors are missing"); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!data.name || !data.description || !data.authors) + throw fail("name, description or authors are missing"); const target = getPluginTarget(fileName); if (target) { - if (!["web", "discordDesktop", "vencordDesktop", "desktop", "dev"].includes(target)) throw fail(`invalid target ${target}`); + if (!["web", "discordDesktop", "vencordDesktop", "desktop", "dev"].includes(target)) + throw fail(`invalid target ${target}`); data.target = target as any; } @@ -203,28 +220,26 @@ function isPluginFile({ name }: { name: string; }) { return !name.startsWith("_") && !name.startsWith("."); } -(async () => { - parseDevs(); +parseDevs(); - const plugins = [] as PluginData[]; - const readmes = {} as Record; +const plugins: PluginData[] = []; +const readmes: Record = {}; - await Promise.all(["src/plugins", "src/plugins/_core"].flatMap(dir => - readdirSync(dir, { withFileTypes: true }) - .filter(isPluginFile) - .map(async dirent => { - const [data, readme] = await parseFile(await getEntryPoint(dir, dirent)); - plugins.push(data); - if (readme) readmes[data.name] = readme; - }) - )); +await Promise.all(["src/plugins", "src/plugins/_core"].flatMap(dir => + readdirSync(dir, { withFileTypes: true }) + .filter(isPluginFile) + .map(async dirent => { + const [data, readme] = await parseFile(await getEntryPoint(dir, dirent)); + plugins.push(data); + if (readme) readmes[data.name] = readme; + }) +)); - const data = JSON.stringify(plugins); +const data = JSON.stringify(plugins); - if (process.argv.length > 3) { - writeFileSync(process.argv[2], data); - writeFileSync(process.argv[3], JSON.stringify(readmes)); - } else { - console.log(data); - } -})(); +if (process.argv.length > 3) { + writeFileSync(process.argv[2]!, data); + writeFileSync(process.argv[3]!, JSON.stringify(readmes)); +} else { + console.log(data); +} diff --git a/scripts/generateReport.ts b/scripts/generateReport.mts similarity index 81% rename from scripts/generateReport.ts rename to scripts/generateReport.mts index 2ec9fba7c..e173db12c 100644 --- a/scripts/generateReport.ts +++ b/scripts/generateReport.mts @@ -18,13 +18,11 @@ /* eslint-disable no-fallthrough */ -// eslint-disable-next-line spaced-comment -/// -// eslint-disable-next-line spaced-comment -/// +/// +/// import { readFileSync } from "fs"; -import pup, { JSHandle } from "puppeteer-core"; +import pup, { type JSHandle } from "puppeteer-core"; for (const variable of ["DISCORD_TOKEN", "CHROMIUM_BIN"]) { if (!process.env[variable]) { @@ -44,9 +42,9 @@ const page = await browser.newPage(); await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"); await page.setBypassCSP(true); -async function maybeGetError(handle: JSHandle): Promise { - return await (handle as JSHandle)?.getProperty("message") - .then(m => m?.jsonValue()) +async function maybeGetError(handle: JSHandle) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + return (await (handle as JSHandle)?.getProperty("message"))?.jsonValue() .catch(() => undefined); } @@ -67,20 +65,20 @@ const report = { badWebpackFinds: [] as string[] }; -const IGNORED_DISCORD_ERRORS = [ +const IGNORED_DISCORD_ERRORS: (RegExp | string)[] = [ "KeybindStore: Looking for callback action", "Unable to process domain list delta: Client revision number is null", "Downloading the full bad domains file", /\[GatewaySocket\].{0,110}Cannot access '/, "search for 'name' in undefined", "Attempting to set fast connect zstd when unsupported" -] as Array; +]; function toCodeBlock(s: string, indentation = 0, isDiscord = false) { - s = s.replace(/```/g, "`\u200B`\u200B`"); + s = s.replaceAll(/```/g, "`\u200B`\u200B`"); - const indentationStr = Array(!isDiscord ? indentation : 0).fill(" ").join(""); - return `\`\`\`\n${s.split("\n").map(s => indentationStr + s).join("\n")}\n${indentationStr}\`\`\``; + const indentationStr = " ".repeat(!isDiscord ? indentation : 0); + return `\`\`\`\n${s.replaceAll(/^/gm, indentationStr)}\n${indentationStr}\`\`\``; } async function printReport() { @@ -101,7 +99,7 @@ async function printReport() { console.log(); console.log("## Bad Webpack Finds"); - report.badWebpackFinds.forEach(p => console.log("- " + toCodeBlock(p, "- ".length))); + report.badWebpackFinds.forEach(p => { console.log("- " + toCodeBlock(p, "- ".length)); }); console.log(); @@ -128,7 +126,7 @@ async function printReport() { console.log(); if (process.env.DISCORD_WEBHOOK) { - await fetch(process.env.DISCORD_WEBHOOK, { + const res = await fetch(process.env.DISCORD_WEBHOOK, { method: "POST", headers: { "Content-Type": "application/json" @@ -174,10 +172,11 @@ async function printReport() { } ] }) - }).then(res => { - if (!res.ok) console.error(`Webhook failed with status ${res.status}`); - else console.error("Posted to Discord Webhook successfully"); }); + if (res.ok) + console.error("Posted to Discord Webhook successfully"); + else + console.error(`Webhook failed with status ${res.status}`); } } @@ -187,11 +186,9 @@ page.on("console", async e => { async function getText() { try { - return await Promise.all( - e.args().map(async a => { - return await maybeGetError(a) || await a.jsonValue(); - }) - ).then(a => a.join(" ").trim()); + return (await Promise.all( + e.args().map(async a => await maybeGetError(a) || await a.jsonValue()) + )).join(" ").trim(); } catch { return e.text(); } @@ -204,17 +201,18 @@ page.on("console", async e => { outer: if (isVencord) { + let args: string[]; try { - var args = await Promise.all(e.args().map(a => a.jsonValue())); + args = await Promise.all(e.args().map(a => a.jsonValue())); } catch { break outer; } - const [, tag, message, otherMessage] = args as Array; + const [, tag, message, otherMessage] = args; switch (tag) { case "WebpackInterceptor:": - const patchFailMatch = message.match(/Patch by (.+?) (had no effect|errored|found no module) \(Module id is (.+?)\): (.+)/)!; + const patchFailMatch = message!.match(/Patch by (.+?) (had no effect|errored|found no module) \(Module id is (.+?)\): (.+)/); if (!patchFailMatch) break; console.error(await getText()); @@ -222,16 +220,16 @@ page.on("console", async e => { const [, plugin, type, id, regex] = patchFailMatch; report.badPatches.push({ - plugin, - type, - id, - match: regex.replace(/\[A-Za-z_\$\]\[\\w\$\]\*/g, "\\i"), - error: await maybeGetError(e.args()[3]) + plugin: plugin!, + type: type!, + id: id!, + match: regex!.replaceAll(/\[A-Za-z_\$\]\[\\w\$\]\*/g, "\\i"), + error: await maybeGetError(e.args()[3]!) }); break; case "PluginManager:": - const failedToStartMatch = message.match(/Failed to start (.+)/); + const failedToStartMatch = message!.match(/Failed to start (.+)/); if (!failedToStartMatch) break; console.error(await getText()); @@ -239,8 +237,8 @@ page.on("console", async e => { const [, name] = failedToStartMatch; report.badStarts.push({ - plugin: name, - error: await maybeGetError(e.args()[3]) ?? "Unknown error" + plugin: name!, + error: await maybeGetError(e.args()[3]!) ?? "Unknown error" }); break; @@ -261,7 +259,7 @@ page.on("console", async e => { process.exit(1); case "Webpack Find Fail:": process.exitCode = 1; - report.badWebpackFinds.push(otherMessage); + report.badWebpackFinds.push(otherMessage!); break; case "Finished test": await browser.close(); @@ -287,7 +285,7 @@ page.on("console", async e => { } }); -page.on("error", e => console.error("[Error]", e.message)); +page.on("error", e => { console.error("[Error]", e.message); }); page.on("pageerror", e => { if (e.message.includes("Sentry successfully disabled")) return; @@ -299,7 +297,7 @@ page.on("pageerror", e => { } }); -async function reporterRuntime(token: string) { +function reporterRuntime(token: string) { Vencord.Webpack.waitFor( "loginToken", m => { @@ -310,7 +308,7 @@ async function reporterRuntime(token: string) { } await page.evaluateOnNewDocument(` - if (location.host.endsWith("discord.com")) { + if (/(?:^|\\.)discord\\.com$/.test(location.hostname)) { ${readFileSync("./dist/browser.js", "utf-8")}; (${reporterRuntime.toString()})(${JSON.stringify(process.env.DISCORD_TOKEN)}); } diff --git a/scripts/runInstaller.mjs b/scripts/runInstaller.mjs index 145ea5a5e..d2257ca7c 100644 --- a/scripts/runInstaller.mjs +++ b/scripts/runInstaller.mjs @@ -60,11 +60,13 @@ async function ensureBinary() { ? readFileSync(ETAG_FILE, "utf-8") : null; + const headers = new Headers(); + headers.append("User-Agent", "Vencord (https://github.com/Vendicated/Vencord)"); + if (etag !== null) + headers.append("If-None-Match", etag); + const res = await fetch(BASE_URL + filename, { - headers: { - "User-Agent": "Vencord (https://github.com/Vendicated/Vencord)", - "If-None-Match": etag - } + headers }); if (res.status === 304) { @@ -74,7 +76,7 @@ async function ensureBinary() { if (!res.ok) throw new Error(`Failed to download installer: ${res.status} ${res.statusText}`); - writeFileSync(ETAG_FILE, res.headers.get("etag")); + writeFileSync(ETAG_FILE, res.headers.get("etag") ?? ""); if (process.platform === "darwin") { console.log("Unzipping..."); @@ -85,11 +87,13 @@ async function ensureBinary() { filter: f => f.name === INSTALLER_PATH_DARWIN })[INSTALLER_PATH_DARWIN]; + // @ts-expect-error writeFileSync(outputFile, bytes, { mode: 0o755 }); console.log("Overriding security policy for installer binary (this is required to run it)"); console.log("xattr might error, that's okay"); + /** @param {string} cmd */ const logAndRun = cmd => { console.log("Running", cmd); try { @@ -100,6 +104,7 @@ async function ensureBinary() { logAndRun(`sudo xattr -d com.apple.quarantine '${outputFile}'`); } else { // WHY DOES NODE FETCH RETURN A WEB STREAM OH MY GOD + // @ts-expect-error const body = Readable.fromWeb(res.body); await finished(body.pipe(createWriteStream(outputFile, { mode: 0o755, diff --git a/scripts/suppressExperimentalWarnings.js b/scripts/suppressExperimentalWarnings.js index 978f033a4..fa77b4c2f 100644 --- a/scripts/suppressExperimentalWarnings.js +++ b/scripts/suppressExperimentalWarnings.js @@ -16,9 +16,14 @@ * along with this program. If not, see . */ -process.emit = (originalEmit => function (name, data) { - if (name === "warning" && data?.name === "ExperimentalWarning") - return false; +// @ts-expect-error +process.emit = (originalEmit => + function (event, data) { + // @ts-expect-error + if (event === "warning" && data?.name === "ExperimentalWarning") + return false; - return originalEmit.apply(process, arguments); -})(process.emit); + // @ts-expect-error + return originalEmit.apply(process, arguments); + } +)(process.emit); diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 000000000..7f5f2c0de --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,25 @@ +{ + "include": ["**/*", "../eslint.config.mjs"], + "references": [{ "path": ".." }], + + "compilerOptions": { + "noUncheckedIndexedAccess": true, + "noUncheckedSideEffectImports": true, + "strict": true, + + "module": "NodeNext", + "resolveJsonModule": true, + + "noEmit": true, + + "allowJs": true, + "checkJs": true, + + "allowSyntheticDefaultImports": true, + + // https://github.com/microsoft/TypeScript/issues/58353 + // https://github.com/microsoft/TypeScript/issues/44540 + "jsx": "preserve", + "target": "ESNext" + } +} diff --git a/scripts/utils.mjs b/scripts/utils.mjs index 5b84c9878..33605acfd 100644 --- a/scripts/utils.mjs +++ b/scripts/utils.mjs @@ -18,12 +18,14 @@ /** * @param {string} filePath - * @returns {string | null} + * @returns {string | null | undefined} */ export function getPluginTarget(filePath) { const pathParts = filePath.split(/[/\\]/); + // @ts-expect-error if (/^index\.tsx?$/.test(pathParts.at(-1))) pathParts.pop(); + // @ts-expect-error const identifier = pathParts.at(-1).replace(/\.tsx?$/, ""); const identiferBits = identifier.split("."); return identiferBits.length === 1 ? null : identiferBits.at(-1); diff --git a/src/Vencord.ts b/src/Vencord.ts index c4c6d4705..b0b8ef708 100644 --- a/src/Vencord.ts +++ b/src/Vencord.ts @@ -40,7 +40,7 @@ import { relaunch } from "./utils/native"; import { getCloudSettings, putCloudSettings } from "./utils/settingsSync"; import { checkForUpdates, update, UpdateLogger } from "./utils/updater"; import { onceReady } from "./webpack"; -import { SettingsRouter } from "./webpack/common"; +import { UserSettingsModalActionCreators } from "./webpack/common"; if (IS_REPORTER) { require("./debug/runReporter"); @@ -58,7 +58,7 @@ async function syncSettings() { body: "We've noticed you have cloud integrations enabled in another client! Due to limitations, you will " + "need to re-authenticate to continue using them. Click here to go to the settings page to do so!", color: "var(--yellow-360)", - onClick: () => SettingsRouter.open("VencordCloud") + onClick: () => { UserSettingsModalActionCreators.open("VencordCloud"); } }); return; } @@ -99,23 +99,27 @@ async function init() { if (Settings.autoUpdate) { await update(); if (Settings.autoUpdateNotification) - setTimeout(() => showNotification({ - title: "Vencord has been updated!", - body: "Click here to restart", - permanent: true, - noPersist: true, - onClick: relaunch - }), 10_000); + setTimeout(() => { + showNotification({ + title: "Vencord has been updated!", + body: "Click here to restart", + permanent: true, + noPersist: true, + onClick: relaunch + }); + }, 10_000); return; } - setTimeout(() => showNotification({ - title: "A Vencord update is available!", - body: "Click here to view the update", - permanent: true, - noPersist: true, - onClick: openUpdaterModal! - }), 10_000); + setTimeout(() => { + showNotification({ + title: "A Vencord update is available!", + body: "Click here to view the update", + permanent: true, + noPersist: true, + onClick: openUpdaterModal! + }); + }, 10_000); } catch (err) { UpdateLogger.error("Failed to check for updates", err); } diff --git a/src/VencordNative.ts b/src/VencordNative.ts index 42e697452..1c2c8c5b7 100644 --- a/src/VencordNative.ts +++ b/src/VencordNative.ts @@ -4,28 +4,29 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { PluginIpcMappings } from "@main/ipcPlugins"; +import type { Settings } from "@api/Settings"; +import type { PluginIpcMappings } from "@main/ipcPlugins"; import type { UserThemeHeader } from "@main/themes"; import { IpcEvents } from "@shared/IpcEvents"; -import { IpcRes } from "@utils/types"; -import type { Settings } from "api/Settings"; +import type { IpcRes } from "@utils/types"; import { ipcRenderer } from "electron"; -function invoke(event: IpcEvents, ...args: any[]) { - return ipcRenderer.invoke(event, ...args) as Promise; +function invoke(event: IpcEvents, ...args: unknown[]): Promise { + return ipcRenderer.invoke(event, ...args); } -export function sendSync(event: IpcEvents, ...args: any[]) { - return ipcRenderer.sendSync(event, ...args) as T; +// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters +export function sendSync(event: IpcEvents, ...args: unknown[]): T { + return ipcRenderer.sendSync(event, ...args); } -const PluginHelpers = {} as Record Promise>>; +const PluginHelpers: Record Promise>> = {}; const pluginIpcMap = sendSync(IpcEvents.GET_PLUGIN_IPC_METHOD_MAP); for (const [plugin, methods] of Object.entries(pluginIpcMap)) { - const map = PluginHelpers[plugin] = {}; + const map: typeof PluginHelpers[string] = PluginHelpers[plugin] = {}; for (const [methodName, method] of Object.entries(methods)) { - map[methodName] = (...args: any[]) => invoke(method as IpcEvents, ...args); + map[methodName] = (...args) => invoke(method as IpcEvents, ...args); } } @@ -34,7 +35,7 @@ export default { uploadTheme: (fileName: string, fileData: string) => invoke(IpcEvents.UPLOAD_THEME, fileName, fileData), deleteTheme: (fileName: string) => invoke(IpcEvents.DELETE_THEME, fileName), getThemesDir: () => invoke(IpcEvents.GET_THEMES_DIR), - getThemesList: () => invoke>(IpcEvents.GET_THEMES_LIST), + getThemesList: () => invoke(IpcEvents.GET_THEMES_LIST), getThemeData: (fileName: string) => invoke(IpcEvents.GET_THEME_DATA, fileName), getSystemValues: () => invoke>(IpcEvents.GET_THEME_SYSTEM_VALUES), }, @@ -57,11 +58,11 @@ export default { set: (css: string) => invoke(IpcEvents.SET_QUICK_CSS, css), addChangeListener(cb: (newCss: string) => void) { - ipcRenderer.on(IpcEvents.QUICK_CSS_UPDATE, (_, css) => cb(css)); + ipcRenderer.on(IpcEvents.QUICK_CSS_UPDATE, (_, css) => { cb(css); }); }, addThemeChangeListener(cb: () => void) { - ipcRenderer.on(IpcEvents.THEME_UPDATE, () => cb()); + ipcRenderer.on(IpcEvents.THEME_UPDATE, () => { cb(); }); }, openFile: () => invoke(IpcEvents.OPEN_QUICKCSS), @@ -69,7 +70,7 @@ export default { }, native: { - getVersions: () => process.versions as Partial, + getVersions: (): Partial => process.versions, openExternal: (url: string) => invoke(IpcEvents.OPEN_EXTERNAL, url) }, diff --git a/src/api/Badges.ts b/src/api/Badges.ts index 7a041f1ee..d0834ff41 100644 --- a/src/api/Badges.ts +++ b/src/api/Badges.ts @@ -17,7 +17,7 @@ */ import ErrorBoundary from "@components/ErrorBoundary"; -import { ComponentType, HTMLProps } from "react"; +import type { ComponentType, HTMLProps, MouseEvent } from "react"; import Plugins from "~plugins"; @@ -35,9 +35,9 @@ export interface ProfileBadge { image?: string; link?: string; /** Action to perform when you click the badge */ - onClick?(event: React.MouseEvent, props: BadgeUserArgs): void; + onClick?: (event: MouseEvent, props: BadgeUserArgs) => void; /** Should the user display this badge? */ - shouldShow?(userInfo: BadgeUserArgs): boolean; + shouldShow?: (userInfo: BadgeUserArgs) => boolean; /** Optional props (e.g. style) for the badge, ignored for component badges */ props?: HTMLProps; /** Insert at start or end? */ @@ -48,7 +48,7 @@ export interface ProfileBadge { /** * Allows dynamically returning multiple badges */ - getBadges?(userInfo: BadgeUserArgs): ProfileBadge[]; + getBadges?: (userInfo: BadgeUserArgs) => ProfileBadge[]; } const Badges = new Set(); @@ -75,7 +75,7 @@ export function removeBadge(badge: ProfileBadge) { * You probably don't need to use this. */ export function _getBadges(args: BadgeUserArgs) { - const badges = [] as ProfileBadge[]; + const badges: ProfileBadge[] = []; for (const badge of Badges) { if (!badge.shouldShow || badge.shouldShow(args)) { const b = badge.getBadges @@ -85,9 +85,10 @@ export function _getBadges(args: BadgeUserArgs) { }) : [{ ...badge, ...args }]; - badge.position === BadgePosition.START - ? badges.unshift(...b) - : badges.push(...b); + if (badge.position === BadgePosition.START) + badges.unshift(...b); + else + badges.push(...b); } } const donorBadges = (Plugins.BadgeAPI as unknown as typeof import("../plugins/_api/badges").default).getDonorBadges(args.userId); @@ -100,20 +101,3 @@ export interface BadgeUserArgs { userId: string; guildId: string; } - -interface ConnectedAccount { - type: string; - id: string; - name: string; - verified: boolean; -} - -interface Profile { - connectedAccounts: ConnectedAccount[]; - premiumType: number; - premiumSince: string; - premiumGuildSince?: any; - lastFetched: number; - profileFetchFailed: boolean; - application?: any; -} diff --git a/src/api/ChatButtons.tsx b/src/api/ChatButtons.tsx index fcb76fffc..d1bc759cb 100644 --- a/src/api/ChatButtons.tsx +++ b/src/api/ChatButtons.tsx @@ -8,73 +8,73 @@ import "./ChatButton.css"; import ErrorBoundary from "@components/ErrorBoundary"; import { Logger } from "@utils/Logger"; +import type { ChannelRecord } from "@vencord/discord-types"; import { waitFor } from "@webpack"; import { Button, ButtonLooks, ButtonWrapperClasses, Tooltip } from "@webpack/common"; -import { Channel } from "discord-types/general"; -import { HTMLProps, MouseEventHandler, ReactNode } from "react"; +import type { ComponentType, HTMLProps, MouseEventHandler, ReactNode } from "react"; -let ChannelTextAreaClasses: Record<"button" | "buttonContainer", string>; -waitFor(["buttonContainer", "channelTextArea"], m => ChannelTextAreaClasses = m); +let ChannelTextAreaClasses: Record<"button" | "buttonContainer", string> | undefined; +waitFor(["buttonContainer", "channelTextArea"], m => { ChannelTextAreaClasses = m; }); export interface ChatBarProps { - channel: Channel; + channel: ChannelRecord; disabled: boolean; isEmpty: boolean; type: { analyticsName: string; attachments: boolean; autocomplete: { - addReactionShortcut: boolean, - forceChatLayer: boolean, + addReactionShortcut: boolean; + forceChatLayer: boolean; reactions: boolean; - }, + }; commands: { enabled: boolean; - }, + }; drafts: { - type: number, - commandType: number, + type: number; + commandType: number; autoSave: boolean; - }, + }; emojis: { button: boolean; - }, + }; gifs: { - button: boolean, + button: boolean; allowSending: boolean; - }, + }; gifts: { button: boolean; - }, + }; permissions: { requireSendMessages: boolean; - }, - showThreadPromptOnReply: boolean, + }; + showThreadPromptOnReply: boolean; stickers: { - button: boolean, - allowSending: boolean, + button: boolean; + allowSending: boolean; autoSuggest: boolean; - }, + }; users: { allowMentioning: boolean; - }, + }; submit: { - button: boolean, - ignorePreference: boolean, - disableEnterToSubmit: boolean, - clearOnSubmit: boolean, + button: boolean; + ignorePreference: boolean; + disableEnterToSubmit: boolean; + clearOnSubmit: boolean; useDisabledStylesOnSubmit: boolean; - }, - uploadLongMessages: boolean, + }; + uploadLongMessages: boolean; upsellLongMessages: { iconOnly: boolean; - }, - showCharacterCount: boolean, + }; + showCharacterCount: boolean; sedReplace: boolean; }; } -export type ChatBarButton = (props: ChatBarProps & { isMainChat: boolean; }) => JSX.Element | null; +export type ChatBarButton = ComponentType; const buttonFactories = new Map(); const logger = new Logger("ChatButtons"); @@ -84,7 +84,11 @@ export function _injectButtons(buttons: ReactNode[], props: ChatBarProps) { for (const [key, Button] of buttonFactories) { buttons.push( - logger.error(`Failed to render ${key}`, e.error)}> + { logger.error(`Failed to render ${key}`, e.error); }} + >

- {richBody ??

{body}

} + {richBody ??

{body}

}
- {image && } + {image && } {timeout !== 0 && !permanent && (
)} ); }, { - onError: ({ props }) => props.onClose!() + onError: ({ props }) => { props.onClose(); } }); diff --git a/src/api/Notifications/Notifications.tsx b/src/api/Notifications/Notifications.tsx index 1350e5bdc..95912ee02 100644 --- a/src/api/Notifications/Notifications.tsx +++ b/src/api/Notifications/Notifications.tsx @@ -27,7 +27,7 @@ import { persistNotification } from "./notificationLog"; const NotificationQueue = new Queue(); -let reactRoot: Root; +let reactRoot: Root | undefined; let id = 42; function getRoot() { @@ -52,8 +52,8 @@ export interface NotificationData { icon?: string; /** Large image. Optimally, this should be around 16x9 but it doesn't matter much. Desktop Notifications might not support this */ image?: string; - onClick?(): void; - onClose?(): void; + onClick?: () => void; + onClose?: () => void; color?: string; /** Whether this notification should not have a timeout */ permanent?: boolean; @@ -67,11 +67,15 @@ function _showNotification(notification: NotificationData, id: number) { const root = getRoot(); return new Promise(resolve => { root.render( - { - notification.onClose?.(); - root.render(null); - resolve(); - }} />, + { + notification.onClose?.(); + root.render(null); + resolve(); + }} + /> ); }); } @@ -100,9 +104,8 @@ export async function showNotification(data: NotificationData) { const n = new Notification(title, { body, icon, - // @ts-expect-error ts is drunk image - }); + } as NotificationOptions); n.onclick = onClick; n.onclose = onClose; } else { diff --git a/src/api/Notifications/notificationLog.tsx b/src/api/Notifications/notificationLog.tsx index 5df31d4cd..0b32041e4 100644 --- a/src/api/Notifications/notificationLog.tsx +++ b/src/api/Notifications/notificationLog.tsx @@ -21,9 +21,9 @@ import { Settings } from "@api/Settings"; import { classNameFactory } from "@api/Styles"; import { Flex } from "@components/Flex"; import { openNotificationSettingsModal } from "@components/VencordSettings/NotificationSettings"; -import { closeModal, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalProps, ModalRoot, ModalSize, openModal } from "@utils/modal"; +import { closeModal, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, type ModalProps, ModalRoot, ModalSize, openModal } from "@utils/modal"; import { useAwaiter } from "@utils/react"; -import { Alerts, Button, Forms, React, Text, Timestamp, useEffect, useReducer, useState } from "@webpack/common"; +import { AlertActionCreators, Button, Forms, Text, Timestamp, useEffect, useReducer, useRef, useState } from "@webpack/common"; import { nanoid } from "nanoid"; import type { DispatchWithoutAction } from "react"; @@ -35,12 +35,9 @@ interface PersistentNotificationData extends Pick { - const log = await DataStore.get(KEY) as PersistentNotificationData[] | undefined; - return log ?? []; -}; +const getLog = async () => (await DataStore.get(DATA_KEY)) ?? []; const cl = classNameFactory("vc-notification-log-"); const signals = new Set(); @@ -51,7 +48,7 @@ export async function persistNotification(notification: NotificationData) { const limit = Settings.notifications.logLimit; if (limit === 0) return; - await DataStore.update(KEY, (old: PersistentNotificationData[] | undefined) => { + await DataStore.update(DATA_KEY, (old: PersistentNotificationData[] | undefined) => { const log = old ?? []; // Omit stuff we don't need @@ -72,7 +69,7 @@ export async function persistNotification(notification: NotificationData) { return log; }); - signals.forEach(x => x()); + signals.forEach(x => { x(); }); } export async function deleteNotification(timestamp: number) { @@ -81,8 +78,8 @@ export async function deleteNotification(timestamp: number) { if (index === -1) return; log.splice(index, 1); - await DataStore.set(KEY, log); - signals.forEach(x => x()); + await DataStore.set(DATA_KEY, log); + signals.forEach(x => { x(); }); } export function useLogs() { @@ -90,7 +87,7 @@ export function useLogs() { useEffect(() => { signals.add(setSignal); - return () => void signals.delete(setSignal); + return () => { signals.delete(setSignal); }; }, []); const [log, _, pending] = useAwaiter(getLog, { @@ -103,7 +100,7 @@ export function useLogs() { function NotificationEntry({ data }: { data: PersistentNotificationData; }) { const [removing, setRemoving] = useState(false); - const ref = React.useRef(null); + const ref = useRef(null); useEffect(() => { const div = ref.current!; @@ -139,7 +136,7 @@ function NotificationEntry({ data }: { data: PersistentNotificationData; }) { ); } -export function NotificationLog({ log, pending }: { log: PersistentNotificationData[], pending: boolean; }) { +export function NotificationLog({ log, pending }: { log: PersistentNotificationData[]; pending: boolean; }) { if (!log.length && !pending) return (
@@ -157,7 +154,7 @@ export function NotificationLog({ log, pending }: { log: PersistentNotificationD ); } -function LogModal({ modalProps, close }: { modalProps: ModalProps; close(): void; }) { +function LogModal({ modalProps, close }: { modalProps: ModalProps; close: () => void; }) { const [log, pending] = useLogs(); return ( @@ -181,12 +178,12 @@ function LogModal({ modalProps, close }: { modalProps: ModalProps; close(): void disabled={log.length === 0} color={Button.Colors.RED} onClick={() => { - Alerts.show({ + AlertActionCreators.show({ title: "Are you sure?", body: `This will permanently remove ${log.length} notification${log.length === 1 ? "" : "s"}. This action cannot be undone.`, async onConfirm() { - await DataStore.set(KEY, []); - signals.forEach(x => x()); + await DataStore.set(DATA_KEY, []); + signals.forEach(x => { x(); }); }, confirmText: "Do it!", confirmColor: "vc-notification-log-danger-btn", @@ -206,7 +203,7 @@ export function openNotificationLogModal() { const key = openModal(modalProps => ( closeModal(key)} + close={() => { closeModal(key); }} /> )); } diff --git a/src/api/ServerList.ts b/src/api/ServerList.ts index 75016e897..62c7de2b2 100644 --- a/src/api/ServerList.ts +++ b/src/api/ServerList.ts @@ -17,6 +17,7 @@ */ import { Logger } from "@utils/Logger"; +import type { ReactNode } from "react"; const logger = new Logger("ServerListAPI"); @@ -25,23 +26,23 @@ export const enum ServerListRenderPosition { In, } -const renderFunctionsAbove = new Set(); -const renderFunctionsIn = new Set(); +const renderFunctionsAbove = new Set<(...args: any[]) => ReactNode>(); +const renderFunctionsIn = new Set<(...args: any[]) => ReactNode>(); function getRenderFunctions(position: ServerListRenderPosition) { return position === ServerListRenderPosition.Above ? renderFunctionsAbove : renderFunctionsIn; } -export function addServerListElement(position: ServerListRenderPosition, renderFunction: Function) { +export function addServerListElement(position: ServerListRenderPosition, renderFunction: (...args: any[]) => ReactNode) { getRenderFunctions(position).add(renderFunction); } -export function removeServerListElement(position: ServerListRenderPosition, renderFunction: Function) { +export function removeServerListElement(position: ServerListRenderPosition, renderFunction: (...args: any[]) => ReactNode) { getRenderFunctions(position).delete(renderFunction); } export const renderAll = (position: ServerListRenderPosition) => { - const ret: Array = []; + const ret: ReactNode[] = []; for (const renderFunction of getRenderFunctions(position)) { try { diff --git a/src/api/Settings.ts b/src/api/Settings.ts index ac116f547..0a1afe3ee 100644 --- a/src/api/Settings.ts +++ b/src/api/Settings.ts @@ -22,15 +22,15 @@ import { localStorage } from "@utils/localStorage"; import { Logger } from "@utils/Logger"; import { mergeDefaults } from "@utils/mergeDefaults"; import { putCloudSettings } from "@utils/settingsSync"; -import { DefinedSettings, OptionType, SettingsChecks, SettingsDefinition } from "@utils/types"; -import { React } from "@webpack/common"; +import { type DefinedSettings, OptionType, type SettingsChecks, type SettingsDefinition } from "@utils/types"; +import { useEffect, useReducer } from "@webpack/common"; import plugins from "~plugins"; const logger = new Logger("Settings"); export interface Settings { autoUpdate: boolean; - autoUpdateNotification: boolean, + autoUpdateNotification: boolean; useQuickCss: boolean; enableReactDevtools: boolean; themeLinks: string[]; @@ -106,6 +106,7 @@ const DefaultSettings: Settings = { } }; +// eslint-disable-next-line @typescript-eslint/consistent-type-assertions const settings = !IS_REPORTER ? VencordNative.settings.get() : {} as Settings; mergeDefaults(settings, DefaultSettings); @@ -125,11 +126,12 @@ export const SettingsStore = new SettingsStoreClass(settings, { path }) { const v = target[key]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!plugins) return v; // plugins not initialised yet. this means this path was reached by being called on the top level if (path === "plugins" && key in plugins) return target[key] = { - enabled: IS_REPORTER || plugins[key].required || plugins[key].enabledByDefault || false + enabled: IS_REPORTER || plugins[key]!.required || (plugins[key]!.enabledByDefault ?? false) }; // Since the property is not set, check if this is a plugin's setting and if so, try to resolve @@ -137,7 +139,7 @@ export const SettingsStore = new SettingsStoreClass(settings, { if (path.startsWith("plugins.")) { const plugin = path.slice("plugins.".length); if (plugin in plugins) { - const setting = plugins[plugin].options?.[key]; + const setting = plugins[plugin]!.options?.[key]; if (!setting) return v; if ("default" in setting) @@ -190,15 +192,15 @@ export const Settings = SettingsStore.store; */ // TODO: Representing paths as essentially "string[].join('.')" wont allow dots in paths, change to "paths?: string[][]" later export function useSettings(paths?: UseSettings[]) { - const [, forceUpdate] = React.useReducer(() => ({}), {}); + const [, forceUpdate] = useReducer(() => ({}), {}); - React.useEffect(() => { + useEffect(() => { if (paths) { - paths.forEach(p => SettingsStore.addChangeListener(p, forceUpdate)); - return () => paths.forEach(p => SettingsStore.removeChangeListener(p, forceUpdate)); + paths.forEach(p => { SettingsStore.addChangeListener(p, forceUpdate); }); + return () => { paths.forEach(p => { SettingsStore.removeChangeListener(p, forceUpdate); }); }; } else { SettingsStore.addGlobalChangeListener(forceUpdate); - return () => SettingsStore.removeGlobalChangeListener(forceUpdate); + return () => { SettingsStore.removeGlobalChangeListener(forceUpdate); }; } }, []); @@ -212,7 +214,7 @@ export function migratePluginSettings(name: string, ...oldNames: string[]) { for (const oldName of oldNames) { if (oldName in plugins) { logger.info(`Migrating settings from old name ${oldName} to ${name}`); - plugins[name] = plugins[oldName]; + plugins[name] = plugins[oldName]!; delete plugins[oldName]; SettingsStore.markAsChanged(); break; @@ -223,7 +225,7 @@ export function migratePluginSettings(name: string, ...oldNames: string[]) { export function definePluginSettings< Def extends SettingsDefinition, Checks extends SettingsChecks, - PrivateSettings extends object = {} + PrivateSettings extends object = object >(def: Def, checks?: Checks) { const definedSettings: DefinedSettings = { get store() { @@ -252,11 +254,11 @@ export function definePluginSettings< type UseSettings = ResolveUseSettings[keyof T]; type ResolveUseSettings = { - [Key in keyof T]: - Key extends string - ? T[Key] extends Record - // @ts-ignore "Type instantiation is excessively deep and possibly infinite" - ? UseSettings extends string ? `${Key}.${UseSettings}` : never - : Key - : never; + [Key in keyof T]: Key extends `${infer Key1}` + ? T[Key] extends Record + ? UseSettings extends `${infer Key2}` + ? `${Key1}.${Key2}` + : never + : Key + : never; }; diff --git a/src/api/Styles.ts b/src/api/Styles.ts index 6b0ac2cdf..690a6c403 100644 --- a/src/api/Styles.ts +++ b/src/api/Styles.ts @@ -20,6 +20,7 @@ import type { MapValue } from "type-fest/source/entry"; export type Style = MapValue; +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition export const styleMap = window.VencordStyles ??= new Map(); export function requireStyle(name: string) { @@ -126,7 +127,7 @@ export const compileStyle = (style: Style) => { if (!style.dom) throw new Error("Style has no DOM element"); style.dom.textContent = style.source - .replace(/\[--(\w+)\]/g, (match, name) => { + .replaceAll(/\[--(\w+)\]/g, (match, name) => { const className = style.classNames[name]; return className ? classNameToSelector(className) : match; }); @@ -139,9 +140,10 @@ export const compileStyle = (style: Style) => { * @example * classNameToSelector("foo bar") // => ".foo.bar" */ -export const classNameToSelector = (name: string, prefix = "") => name.split(" ").map(n => `.${prefix}${n}`).join(""); +export const classNameToSelector = (name: string, prefix = "") => + name.replaceAll(/ *([^ ]+) */g, `.${prefix}$1`); -type ClassNameFactoryArg = string | string[] | Record | false | null | undefined | 0 | ""; +type ClassNameFactoryArg = string | string[] | Record | false | null | undefined | 0n | 0 | ""; /** * @param prefix The prefix to add to each class, defaults to `""` * @returns A classname generator function @@ -151,12 +153,18 @@ type ClassNameFactoryArg = string | string[] | Record | false | * cl("base", ["item", "editable"], { selected: null, disabled: true }) * // => "plugin-base plugin-item plugin-editable plugin-disabled" */ -export const classNameFactory = (prefix: string = "") => (...args: ClassNameFactoryArg[]) => { +export const classNameFactory = (prefix = "") => (...args: ClassNameFactoryArg[]) => { const classNames = new Set(); for (const arg of args) { - if (arg && typeof arg === "string") classNames.add(arg); - else if (Array.isArray(arg)) arg.forEach(name => classNames.add(name)); - else if (arg && typeof arg === "object") Object.entries(arg).forEach(([name, value]) => value && classNames.add(name)); + if (typeof arg === "string") { + if (arg) classNames.add(arg); + } else if (Array.isArray(arg)) { + for (const name of arg) + classNames.add(name); + } else if (typeof arg === "object" && arg !== null) { + for (const name in arg) + if (arg[name]) classNames.add(name); + } } return Array.from(classNames, name => prefix + name).join(" "); }; diff --git a/src/api/UserSettings.ts b/src/api/UserSettings.ts index 4de92a81a..508f45d47 100644 --- a/src/api/UserSettings.ts +++ b/src/api/UserSettings.ts @@ -22,56 +22,54 @@ import { findModuleId, proxyLazyWebpack, wreq } from "@webpack"; interface UserSettingDefinition { /** - * Get the setting value + * Gets the setting value */ - getSetting(): T; + getSetting: () => T; /** - * Update the setting value + * Updates the setting value * @param value The new value */ - updateSetting(value: T): Promise; - /** - * Update the setting value - * @param value A callback that accepts the old value as the first argument, and returns the new value - */ - updateSetting(value: (old: T) => T): Promise; + updateSetting: ((value: T) => Promise) & ((value: (old: T) => T) => Promise); /** * Stateful React hook for this setting value */ - useSetting(): T; + useSetting: () => T; userSettingsAPIGroup: string; userSettingsAPIName: string; } export const UserSettings: Record> | undefined = proxyLazyWebpack(() => { const modId = findModuleId('"textAndImages","renderSpoilers"'); - if (modId == null) return new Logger("UserSettingsAPI ").error("Didn't find settings module."); + if (modId == null) { + new Logger("UserSettingsAPI").error("Didn't find settings module."); + return; + } return wreq(modId as any); }); /** - * Get the setting with the given setting group and name. + * Gets the setting with the given setting group and name. * * @param group The setting group * @param name The name of the setting */ export function getUserSetting(group: string, name: string): UserSettingDefinition | undefined { - if (!Vencord.Plugins.isPluginEnabled("UserSettingsAPI")) throw new Error("Cannot use UserSettingsAPI without setting as dependency."); + if (!Vencord.Plugins.isPluginEnabled("UserSettingsAPI")) + throw new Error("Cannot use UserSettingsAPI without setting as dependency."); for (const key in UserSettings) { const userSetting = UserSettings[key]; - if (userSetting.userSettingsAPIGroup === group && userSetting.userSettingsAPIName === name) { + if (userSetting!.userSettingsAPIGroup === group && userSetting!.userSettingsAPIName === name) return userSetting; - } } } /** - * {@link getUserSettingDefinition}, lazy. + * {@link getUserSetting}, lazy. * - * Get the setting with the given setting group and name. + * Gets the setting with the given setting group and name. * * @param group The setting group * @param name The name of the setting diff --git a/src/components/Badge.tsx b/src/components/Badge.tsx index 0ed45ff81..535ed29b4 100644 --- a/src/components/Badge.tsx +++ b/src/components/Badge.tsx @@ -16,14 +16,17 @@ * along with this program. If not, see . */ -export function Badge({ text, color }): JSX.Element { - return ( -
( +
- {text} -
- ); -} + }} + > + {text} +
+); diff --git a/src/components/CheckedTextInput.tsx b/src/components/CheckedTextInput.tsx index cf4aa119b..82b8a0fa7 100644 --- a/src/components/CheckedTextInput.tsx +++ b/src/components/CheckedTextInput.tsx @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -import { React, TextInput } from "@webpack/common"; +import { TextInput, useState } from "@webpack/common"; // TODO: Refactor settings to use this as well interface TextInputProps { @@ -27,13 +27,13 @@ interface TextInputProps { /** * This will only be called if the new value passed validate() */ - onChange(newValue: string): void; + onChange: (newValue: string) => void; /** * Optionally validate the user input * Return true if the input is valid * Otherwise, return a string containing the reason for this input being invalid */ - validate(v: string): true | string; + validate: (v: string) => true | string; } /** @@ -41,14 +41,14 @@ interface TextInputProps { * the user an error message and only calls your onChange when the input is valid */ export function CheckedTextInput({ value: initialValue, onChange, validate }: TextInputProps) { - const [value, setValue] = React.useState(initialValue); - const [error, setError] = React.useState(); + const [value, setValue] = useState(initialValue); + const [error, setError] = useState(); function handleChange(v: string) { setValue(v); const res = validate(v); if (res === true) { - setError(void 0); + setError(undefined); onChange(v); } else { setError(res); @@ -56,13 +56,11 @@ export function CheckedTextInput({ value: initialValue, onChange, validate }: Te } return ( - <> - - + ); } diff --git a/src/components/CodeBlock.tsx b/src/components/CodeBlock.tsx index 41c5ef0c1..6f31455fc 100644 --- a/src/components/CodeBlock.tsx +++ b/src/components/CodeBlock.tsx @@ -5,17 +5,15 @@ */ import { findByPropsLazy } from "@webpack"; -import { Parser } from "@webpack/common"; +import { MarkupUtils } from "@webpack/common"; -const CodeContainerClasses = findByPropsLazy("markup", "codeContainer"); +const CodeContainerClasses: Record = findByPropsLazy("markup", "codeContainer"); /** * Renders code in a Discord codeblock */ -export function CodeBlock(props: { content?: string, lang: string; }) { - return ( -
- {Parser.defaultRules.codeBlock.react(props, null, {})} -
- ); -} +export const CodeBlock = (props: { content?: string; lang: string; }) => ( +
+ {MarkupUtils.defaultRules.codeBlock!.react(props, null, {})} +
+); diff --git a/src/components/DonateButton.tsx b/src/components/DonateButton.tsx index c027fcf27..7ae5cdaea 100644 --- a/src/components/DonateButton.tsx +++ b/src/components/DonateButton.tsx @@ -26,7 +26,7 @@ export default function DonateButton(props: any) { {...props} look={Button.Looks.LINK} color={Button.Colors.TRANSPARENT} - onClick={() => VencordNative.native.openExternal("https://github.com/sponsors/Vendicated")} + onClick={() => { VencordNative.native.openExternal("https://github.com/sponsors/Vendicated"); }} > Donate diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx index ea2e02b51..14d7f2647 100644 --- a/src/components/ErrorBoundary.tsx +++ b/src/components/ErrorBoundary.tsx @@ -20,6 +20,7 @@ import { Logger } from "@utils/Logger"; import { Margins } from "@utils/margins"; import { LazyComponent } from "@utils/react"; import { React } from "@webpack/common"; +import type { ComponentType, ErrorInfo, FunctionComponent, PropsWithChildren } from "react"; import { ErrorCard } from "./ErrorCard"; @@ -27,9 +28,9 @@ interface Props { /** Render nothing if an error occurs */ noop?: boolean; /** Fallback component to render if an error occurs */ - fallback?: React.ComponentType>; + fallback?: ComponentType>; /** called when an error occurs. The props property is only available if using .wrap */ - onError?(data: { error: Error, errorInfo: React.ErrorInfo, props: T; }): void; + onError?: (data: { error: Error; errorInfo: ErrorInfo; props: T; }) => void; /** Custom error message */ message?: string; @@ -46,7 +47,7 @@ const NO_ERROR = {}; // We might want to import this in a place where React isn't ready yet. // Thus, wrap in a LazyComponent const ErrorBoundary = LazyComponent(() => { - return class ErrorBoundary extends React.PureComponent> { + return class ErrorBoundary extends React.PureComponent> { state = { error: NO_ERROR as any, stack: "", @@ -61,14 +62,14 @@ const ErrorBoundary = LazyComponent(() => { const eolIdx = stack.indexOf("\n"); if (eolIdx !== -1) { message = stack.slice(0, eolIdx); - stack = stack.slice(eolIdx + 1).replace(/https:\/\/\S+\/assets\//g, ""); + stack = stack.slice(eolIdx + 1).replaceAll(/https:\/\/\S+\/assets\//g, ""); } } return { error, stack, message }; } - componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { + componentDidCatch(error: Error, errorInfo: ErrorInfo) { this.props.onError?.({ error, errorInfo, props: this.props.wrappedProps }); logger.error("A component threw an Error\n", error); logger.error("Component Stack", errorInfo.componentStack); @@ -80,10 +81,12 @@ const ErrorBoundary = LazyComponent(() => { if (this.props.noop) return null; if (this.props.fallback) - return ; + return ( + + ); const msg = this.props.message || "An error occurred while rendering this Component. More info can be found below and in your console."; @@ -103,10 +106,12 @@ const ErrorBoundary = LazyComponent(() => { ); } }; -}) as - React.ComponentType> & { - wrap(Component: React.ComponentType, errorBoundaryProps?: Omit, "wrappedProps">): React.FunctionComponent; - }; +}) as ComponentType> & { + wrap: ( + Component: ComponentType, + errorBoundaryProps?: Omit, "wrappedProps"> + ) => FunctionComponent; +}; ErrorBoundary.wrap = (Component, errorBoundaryProps) => props => ( diff --git a/src/components/ErrorCard.tsx b/src/components/ErrorCard.tsx index 7ce8cad1f..a30fb8c76 100644 --- a/src/components/ErrorCard.tsx +++ b/src/components/ErrorCard.tsx @@ -19,12 +19,10 @@ import "./ErrorCard.css"; import { classes } from "@utils/misc"; -import type { HTMLProps } from "react"; +import type { HTMLProps, PropsWithChildren } from "react"; -export function ErrorCard(props: React.PropsWithChildren>) { - return ( -
- {props.children} -
- ); -} +export const ErrorCard = (props: PropsWithChildren>) => ( +
+ {props.children} +
+); diff --git a/src/components/ExpandableHeader.tsx b/src/components/ExpandableHeader.tsx index 473dffaa0..7fc5f8fc6 100644 --- a/src/components/ExpandableHeader.tsx +++ b/src/components/ExpandableHeader.tsx @@ -20,6 +20,7 @@ import "./ExpandableHeader.css"; import { classNameFactory } from "@api/Styles"; import { Text, Tooltip, useState } from "@webpack/common"; +import type { ReactNode } from "react"; const cl = classNameFactory("vc-expandableheader-"); @@ -29,8 +30,8 @@ export interface ExpandableHeaderProps { onDropDownClick?: (state: boolean) => void; defaultState?: boolean; headerText: string; - children: React.ReactNode; - buttons?: React.ReactNode[]; + children: ReactNode; + buttons?: ReactNode[]; forceOpen?: boolean; } @@ -48,12 +49,14 @@ export function ExpandableHeader({ return ( <> -
+
- { - buttons ?? null - } + {buttons ?? null} - { - onMoreClick && // only show more button if callback is provided + {/* only show more button if callback is provided */} + {onMoreClick && ( {tooltipProps => ( )} - } + )} @@ -106,9 +109,10 @@ export function ExpandableHeader({ width="24" height="24" viewBox="0 0 24 24" + fill="var(--text-normal)" transform={showContent ? "scale(1 -1)" : "scale(1 1)"} > - + )} diff --git a/src/components/Flex.tsx b/src/components/Flex.tsx index 430d85768..faca5523f 100644 --- a/src/components/Flex.tsx +++ b/src/components/Flex.tsx @@ -16,13 +16,13 @@ * along with this program. If not, see . */ -import type { React } from "@webpack/common"; +import type { CSSProperties, HTMLProps, PropsWithChildren } from "react"; -export function Flex(props: React.PropsWithChildren<{ - flexDirection?: React.CSSProperties["flexDirection"]; - style?: React.CSSProperties; +export function Flex(props: PropsWithChildren<{ + flexDirection?: CSSProperties["flexDirection"]; + style?: CSSProperties; className?: string; -} & React.HTMLProps>) { +} & HTMLProps>) { props.style ??= {}; props.style.display = "flex"; // TODO(ven): Remove me, what was I thinking?? diff --git a/src/components/Grid.tsx b/src/components/Grid.tsx index 1f757f457..f66edf2b6 100644 --- a/src/components/Grid.tsx +++ b/src/components/Grid.tsx @@ -4,7 +4,7 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { CSSProperties } from "react"; +import type { CSSProperties, JSX } from "react"; interface Props { columns: number; diff --git a/src/components/Icons.tsx b/src/components/Icons.tsx index fa142a18c..27e660aa5 100644 --- a/src/components/Icons.tsx +++ b/src/components/Icons.tsx @@ -21,7 +21,7 @@ import "./iconStyles.css"; import { getTheme, Theme } from "@utils/discord"; import { classes } from "@utils/misc"; import { i18n } from "@webpack/common"; -import type { PropsWithChildren } from "react"; +import type { JSX, PropsWithChildren } from "react"; interface BaseIconProps extends IconProps { viewBox: string; @@ -30,382 +30,277 @@ interface BaseIconProps extends IconProps { type IconProps = JSX.IntrinsicElements["svg"]; type ImageProps = JSX.IntrinsicElements["img"]; -function Icon({ height = 24, width = 24, className, children, viewBox, ...svgProps }: PropsWithChildren) { - return ( - - {children} - - ); -} +const Icon = ({ height = 24, width = 24, className, children, viewBox, ...svgProps }: PropsWithChildren) => ( + + {children} + +); /** * Discord's link icon, as seen in the Message context menu "Copy Message Link" option */ -export function LinkIcon({ height = 24, width = 24, className }: IconProps) { - return ( - - - - - - - ); -} +export const LinkIcon = ({ height = 24, width = 24, className }: IconProps) => ( + + + +); /** * Discord's copy icon, as seen in the user panel popout on the right of the username and in large code blocks */ -export function CopyIcon(props: IconProps) { - return ( - - - - - - - - ); -} +export const CopyIcon = (props: IconProps) => ( + + + +); /** * Discord's open external icon, as seen in the user profile connections */ -export function OpenExternalIcon(props: IconProps) { - return ( - - - - ); -} +export const OpenExternalIcon = (props: IconProps) => ( + + + +); -export function ImageIcon(props: IconProps) { - return ( - - - - ); -} +export const ImageIcon = (props: IconProps) => ( + + + +); -export function InfoIcon(props: IconProps) { - return ( - - - - ); -} +export const InfoIcon = (props: IconProps) => ( + + + +); -export function OwnerCrownIcon(props: IconProps) { - return ( - - - - ); -} +export const OwnerCrownIcon = (props: IconProps) => ( + + + +); /** * Discord's screenshare icon, as seen in the connection panel */ -export function ScreenshareIcon(props: IconProps) { - return ( - - - - ); -} +export const ScreenshareIcon = (props: IconProps) => ( + + + +); -export function ImageVisible(props: IconProps) { - return ( - - - - ); -} +export const ImageVisible = (props: IconProps) => ( + + + +); -export function ImageInvisible(props: IconProps) { - return ( - - - - ); -} +export const ImageInvisible = (props: IconProps) => ( + + + +); -export function Microphone(props: IconProps) { - return ( - - - - - ); -} +export const Microphone = (props: IconProps) => ( + + + +); -export function CogWheel(props: IconProps) { - return ( - - - - ); -} +export const CogWheel = (props: IconProps) => ( + + + +); -export function ReplyIcon(props: IconProps) { - return ( - - - - ); -} +export const ReplyIcon = (props: IconProps) => ( + + + +); -export function DeleteIcon(props: IconProps) { - return ( - - - - - ); -} +export const DeleteIcon = (props: IconProps) => ( + + + +); -export function PlusIcon(props: IconProps) { - return ( - - - - ); -} +export const PlusIcon = (props: IconProps) => ( + + + +); -export function NoEntrySignIcon(props: IconProps) { - return ( - - - - - ); -} +export const NoEntrySignIcon = (props: IconProps) => ( + + + +); -export function SafetyIcon(props: IconProps) { - return ( - - - +export const SafetyIcon = (props: IconProps) => ( + + + +); - ); -} +export const NotesIcon = (props: IconProps) => ( + + + +); -export function NotesIcon(props: IconProps) { - return ( - - - - - ); -} +export const FolderIcon = (props: IconProps) => ( + + + +); -export function FolderIcon(props: IconProps) { - return ( - - - - ); -} +export const LogIcon = (props: IconProps) => ( + + + +); -export function LogIcon(props: IconProps) { - return ( - - - - ); -} +export const RestartIcon = (props: IconProps) => ( + + + +); -export function RestartIcon(props: IconProps) { - return ( - - - - ); -} +export const PaintbrushIcon = (props: IconProps) => ( + + + +); -export function PaintbrushIcon(props: IconProps) { - return ( - - - - ); -} - -export function PencilIcon(props: IconProps) { - return ( - - - - ); -} +export const PencilIcon = (props: IconProps) => ( + + + +); const WebsiteIconDark = "/assets/e1e96d89e192de1997f73730db26e94f.svg"; const WebsiteIconLight = "/assets/730f58bcfd5a57a5e22460c445a0c6cf.svg"; diff --git a/src/components/Link.tsx b/src/components/Link.tsx index 0f4eb07db..fb256af3c 100644 --- a/src/components/Link.tsx +++ b/src/components/Link.tsx @@ -16,13 +16,13 @@ * along with this program. If not, see . */ -import { React } from "@webpack/common"; +import type { AnchorHTMLAttributes, DetailedHTMLProps, PropsWithChildren } from "react"; -interface Props extends React.DetailedHTMLProps, HTMLAnchorElement> { +interface Props extends DetailedHTMLProps, HTMLAnchorElement> { disabled?: boolean; } -export function Link(props: React.PropsWithChildren) { +export function Link(props: PropsWithChildren) { if (props.disabled) { props.style ??= {}; props.style.pointerEvents = "none"; diff --git a/src/components/PluginSettings/ContributorModal.tsx b/src/components/PluginSettings/ContributorModal.tsx index c3c36f1e6..8057f6d70 100644 --- a/src/components/PluginSettings/ContributorModal.tsx +++ b/src/components/PluginSettings/ContributorModal.tsx @@ -14,8 +14,8 @@ import { DevsById } from "@utils/constants"; import { fetchUserProfile } from "@utils/discord"; import { classes, pluralise } from "@utils/misc"; import { ModalContent, ModalRoot, openModal } from "@utils/modal"; +import type { UserRecord } from "@vencord/discord-types"; import { Forms, showToast, useEffect, useMemo, UserProfileStore, useStateFromStores } from "@webpack/common"; -import { User } from "discord-types/general"; import Plugins from "~plugins"; @@ -24,8 +24,8 @@ import { GithubButton, WebsiteButton } from "./LinkIconButton"; const cl = classNameFactory("vc-author-modal-"); -export function openContributorModal(user: User) { - openModal(modalProps => +export function openContributorModal(user: UserRecord) { + openModal(modalProps => ( @@ -33,26 +33,26 @@ export function openContributorModal(user: User) { - ); + )); } -function ContributorModal({ user }: { user: User; }) { +function ContributorModal({ user }: { user: UserRecord; }) { useSettings(); const profile = useStateFromStores([UserProfileStore], () => UserProfileStore.getUserProfile(user.id)); useEffect(() => { - if (!profile && !user.bot && user.id) + if ((!profile || profile.profileFetchFailed) && !user.bot && user.id) fetchUserProfile(user.id); }, [user.id]); - const githubName = profile?.connectedAccounts?.find(a => a.type === "github")?.name; - const website = profile?.connectedAccounts?.find(a => a.type === "domain")?.name; + const githubName = profile?.connectedAccounts.find(a => a.type === "github")?.name; + const website = profile?.connectedAccounts.find(a => a.type === "domain")?.name; const plugins = useMemo(() => { const allPlugins = Object.values(Plugins); const pluginsByAuthor = DevsById[user.id] - ? allPlugins.filter(p => p.authors.includes(DevsById[user.id])) + ? allPlugins.filter(p => p.authors.includes(DevsById[user.id]!)) : allPlugins.filter(p => p.authors.some(a => a.name === user.username)); return pluginsByAuthor @@ -67,7 +67,7 @@ function ContributorModal({ user }: { user: User; }) {
{user.username} @@ -100,14 +100,14 @@ function ContributorModal({ user }: { user: User; }) { {!!plugins.length && (
- {plugins.map(p => + {plugins.map(p => ( showToast("Restart to apply changes!")} + onRestartNeeded={() => { showToast("Restart to apply changes!"); }} /> - )} + ))}
)} diff --git a/src/components/PluginSettings/LinkIconButton.css b/src/components/PluginSettings/LinkIconButton.css index 1055d6c70..3cee7b2ca 100644 --- a/src/components/PluginSettings/LinkIconButton.css +++ b/src/components/PluginSettings/LinkIconButton.css @@ -3,7 +3,7 @@ width: 32px; border-radius: 50%; border: 4px solid var(--background-tertiary); - box-sizing: border-box + box-sizing: border-box; } .vc-settings-modal-links { diff --git a/src/components/PluginSettings/LinkIconButton.tsx b/src/components/PluginSettings/LinkIconButton.tsx index dd840f52e..a13b2ca6e 100644 --- a/src/components/PluginSettings/LinkIconButton.tsx +++ b/src/components/PluginSettings/LinkIconButton.tsx @@ -7,33 +7,32 @@ import "./LinkIconButton.css"; import { MaskedLink, Tooltip } from "@webpack/common"; +import type { ComponentType } from "react"; import { GithubIcon, WebsiteIcon } from ".."; -export function GithubLinkIcon() { - return ; -} +export const GithubLinkIcon = () => ( + +); -export function WebsiteLinkIcon() { - return ; -} +export const WebsiteLinkIcon = () => ( + +); interface Props { text: string; href: string; } -function LinkIcon({ text, href, Icon }: Props & { Icon: React.ComponentType; }) { - return ( - - {props => ( - - - - )} - - ); -} +const LinkIcon = ({ text, href, Icon }: Props & { Icon: ComponentType; }) => ( + + {props => ( + + + + )} + +); export const WebsiteButton = (props: Props) => ; export const GithubButton = (props: Props) => ; diff --git a/src/components/PluginSettings/PluginModal.tsx b/src/components/PluginSettings/PluginModal.tsx index 8b14283b8..2348f010e 100644 --- a/src/components/PluginSettings/PluginModal.tsx +++ b/src/components/PluginSettings/PluginModal.tsx @@ -27,17 +27,17 @@ import { gitRemote } from "@shared/vencordUserAgent"; import { proxyLazy } from "@utils/lazy"; import { Margins } from "@utils/margins"; import { classes, isObjectEmpty } from "@utils/misc"; -import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalProps, ModalRoot, ModalSize, openModal } from "@utils/modal"; -import { OptionType, Plugin } from "@utils/types"; +import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, type ModalProps, ModalRoot, ModalSize, openModal } from "@utils/modal"; +import { OptionType, type Plugin } from "@utils/types"; +import type { UserRecord as $UserRecord } from "@vencord/discord-types"; import { findByPropsLazy, findComponentByCodeLazy } from "@webpack"; -import { Button, Clickable, FluxDispatcher, Forms, React, Text, Tooltip, UserStore, UserUtils } from "@webpack/common"; -import { User } from "discord-types/general"; -import { Constructor } from "type-fest"; +import { Button, Clickable, FluxDispatcher, Forms, Text, Tooltip, useEffect, UserActionCreators, UserStore, useState } from "@webpack/common"; +import type { ComponentType } from "react"; import { PluginMeta } from "~plugins"; import { - ISettingElementProps, + type ISettingElementProps, SettingBooleanComponent, SettingCustomComponent, SettingNumericComponent, @@ -51,12 +51,12 @@ import { GithubButton, WebsiteButton } from "./LinkIconButton"; const cl = classNameFactory("vc-plugin-modal-"); const UserSummaryItem = findComponentByCodeLazy("defaultRenderUser", "showDefaultAvatarsForNullUsers"); -const AvatarStyles = findByPropsLazy("moreUsers", "emptyUser", "avatarContainer", "clickableAvatar"); -const UserRecord: Constructor> = proxyLazy(() => UserStore.getCurrentUser().constructor) as any; +const AvatarStyles: Record = findByPropsLazy("moreUsers", "emptyUser", "avatarContainer", "clickableAvatar"); +const UserRecord: typeof $UserRecord = proxyLazy(() => UserStore.getCurrentUser()!.constructor); interface PluginModalProps extends ModalProps { plugin: Plugin; - onRestartNeeded(): void; + onRestartNeeded: () => void; } function makeDummyUser(user: { username: string; id?: string; avatar?: string; }) { @@ -74,7 +74,7 @@ function makeDummyUser(user: { username: string; id?: string; avatar?: string; } return newUser; } -const Components: Record>> = { +const Components: Record>> = { [OptionType.STRING]: SettingTextComponent, [OptionType.NUMBER]: SettingNumericComponent, [OptionType.BIGINT]: SettingNumericComponent, @@ -85,25 +85,25 @@ const Components: Record[]>([]); + const [authors, setAuthors] = useState[]>([]); const pluginSettings = useSettings().plugins[plugin.name]; - const [tempSettings, setTempSettings] = React.useState>({}); + const [tempSettings, setTempSettings] = useState>({}); - const [errors, setErrors] = React.useState>({}); - const [saveError, setSaveError] = React.useState(null); + const [errors, setErrors] = useState>({}); + const [saveError, setSaveError] = useState(null); const canSubmit = () => Object.values(errors).every(e => !e); const hasSettings = Boolean(pluginSettings && plugin.options && !isObjectEmpty(plugin.options)); - React.useEffect(() => { + useEffect(() => { (async () => { for (const user of plugin.authors.slice(0, 6)) { const author = user.id - ? await UserUtils.getUser(`${user.id}`) - .catch(() => makeDummyUser({ username: user.name })) + ? (await UserActionCreators.getUser(`${user.id}`) + .catch(() => makeDummyUser({ username: user.name })))! : makeDummyUser({ username: user.name }); setAuthors(a => [...a, author]); @@ -118,7 +118,7 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti } if (plugin.beforeSave) { - const result = await Promise.resolve(plugin.beforeSave(tempSettings)); + const result = await plugin.beforeSave(tempSettings); if (result !== true) { setSaveError(result); return; @@ -128,7 +128,7 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti let restartNeeded = false; for (const [key, value] of Object.entries(tempSettings)) { const option = plugin.options[key]; - pluginSettings[key] = value; + pluginSettings![key] = value; option?.onChange?.(value); if (option?.restartNeeded) restartNeeded = true; } @@ -159,7 +159,7 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti option={setting} onChange={onChange} onError={onError} - pluginSettings={pluginSettings} + pluginSettings={pluginSettings!} definedSettings={plugin.settings} /> ); @@ -206,7 +206,7 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti } */ - const pluginMeta = PluginMeta[plugin.name]; + const pluginMeta = PluginMeta[plugin.name]!; return ( @@ -248,14 +248,14 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti showDefaultAvatarsForNullUsers showUserPopout renderMoreUsers={renderMoreUsers} - renderUser={(user: User) => ( + renderUser={(user: $UserRecord) => ( openContributorModal(user)} + onClick={() => { openContributorModal(user); }} > {user.username} @@ -278,35 +278,41 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti {renderSettings()} - {hasSettings && - - - - - {({ onMouseEnter, onMouseLeave }) => ( - - )} - + {hasSettings && ( + + + + + + {({ onMouseEnter, onMouseLeave }) => ( + + )} + + + {saveError && ( + + Error while saving: {saveError} + + )} - {saveError && Error while saving: {saveError}} - - } + + )} ); } diff --git a/src/components/PluginSettings/components/SettingBooleanComponent.tsx b/src/components/PluginSettings/components/SettingBooleanComponent.tsx index e5219e45f..3ecb4a1b0 100644 --- a/src/components/PluginSettings/components/SettingBooleanComponent.tsx +++ b/src/components/PluginSettings/components/SettingBooleanComponent.tsx @@ -17,18 +17,18 @@ */ import { wordsFromCamel, wordsToTitle } from "@utils/text"; -import { PluginOptionBoolean } from "@utils/types"; -import { Forms, React, Switch } from "@webpack/common"; +import type { PluginOptionBoolean } from "@utils/types"; +import { Forms, Switch, useEffect, useState } from "@webpack/common"; -import { ISettingElementProps } from "."; +import type { ISettingElementProps } from "."; export function SettingBooleanComponent({ option, pluginSettings, definedSettings, id, onChange, onError }: ISettingElementProps) { const def = pluginSettings[id] ?? option.default; - const [state, setState] = React.useState(def ?? false); - const [error, setError] = React.useState(null); + const [state, setState] = useState(def ?? false); + const [error, setError] = useState(null); - React.useEffect(() => { + useEffect(() => { onError(error !== null); }, [error]); diff --git a/src/components/PluginSettings/components/SettingCustomComponent.tsx b/src/components/PluginSettings/components/SettingCustomComponent.tsx index af7192f3f..a8f2dcaf4 100644 --- a/src/components/PluginSettings/components/SettingCustomComponent.tsx +++ b/src/components/PluginSettings/components/SettingCustomComponent.tsx @@ -16,10 +16,9 @@ * along with this program. If not, see . */ -import { PluginOptionComponent } from "@utils/types"; +import type { PluginOptionComponent } from "@utils/types"; -import { ISettingElementProps } from "."; +import type { ISettingElementProps } from "."; -export function SettingCustomComponent({ option, onChange, onError }: ISettingElementProps) { - return option.component({ setValue: onChange, setError: onError, option }); -} +export const SettingCustomComponent = ({ option, onChange, onError }: ISettingElementProps) => + option.component({ setValue: onChange, setError: onError, option }); diff --git a/src/components/PluginSettings/components/SettingNumericComponent.tsx b/src/components/PluginSettings/components/SettingNumericComponent.tsx index 446d2504b..04d19fe73 100644 --- a/src/components/PluginSettings/components/SettingNumericComponent.tsx +++ b/src/components/PluginSettings/components/SettingNumericComponent.tsx @@ -16,10 +16,10 @@ * along with this program. If not, see . */ -import { OptionType, PluginOptionNumber } from "@utils/types"; -import { Forms, React, TextInput } from "@webpack/common"; +import { OptionType, type PluginOptionNumber } from "@utils/types"; +import { Forms, TextInput, useEffect, useState } from "@webpack/common"; -import { ISettingElementProps } from "."; +import type { ISettingElementProps } from "."; const MAX_SAFE_NUMBER = BigInt(Number.MAX_SAFE_INTEGER); @@ -29,14 +29,14 @@ export function SettingNumericComponent({ option, pluginSettings, definedSetting return Number(value); } - const [state, setState] = React.useState(`${pluginSettings[id] ?? option.default ?? 0}`); - const [error, setError] = React.useState(null); + const [state, setState] = useState(`${pluginSettings[id] ?? option.default ?? 0}`); + const [error, setError] = useState(null); - React.useEffect(() => { + useEffect(() => { onError(error !== null); }, [error]); - function handleChange(newValue) { + function handleChange(newValue: any) { const isValid = option.isValid?.call(definedSettings, newValue) ?? true; setError(null); diff --git a/src/components/PluginSettings/components/SettingSelectComponent.tsx b/src/components/PluginSettings/components/SettingSelectComponent.tsx index 97c17071b..7541ed4a2 100644 --- a/src/components/PluginSettings/components/SettingSelectComponent.tsx +++ b/src/components/PluginSettings/components/SettingSelectComponent.tsx @@ -16,22 +16,23 @@ * along with this program. If not, see . */ -import { PluginOptionSelect } from "@utils/types"; -import { Forms, React, Select } from "@webpack/common"; +import type { PluginOptionSelect } from "@utils/types"; +import { Forms, Select, useEffect, useState } from "@webpack/common"; -import { ISettingElementProps } from "."; +import type { ISettingElementProps } from "."; export function SettingSelectComponent({ option, pluginSettings, definedSettings, onChange, onError, id }: ISettingElementProps) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const def = pluginSettings[id] ?? option.options?.find(o => o.default)?.value; - const [state, setState] = React.useState(def ?? null); - const [error, setError] = React.useState(null); + const [state, setState] = useState(def ?? null); + const [error, setError] = useState(null); - React.useEffect(() => { + useEffect(() => { onError(error !== null); }, [error]); - function handleChange(newValue) { + function handleChange(newValue: any) { const isValid = option.isValid?.call(definedSettings, newValue) ?? true; if (typeof isValid === "string") setError(isValid); else if (!isValid) setError("Invalid input provided."); diff --git a/src/components/PluginSettings/components/SettingSliderComponent.tsx b/src/components/PluginSettings/components/SettingSliderComponent.tsx index 3dda19be1..6bf274372 100644 --- a/src/components/PluginSettings/components/SettingSliderComponent.tsx +++ b/src/components/PluginSettings/components/SettingSliderComponent.tsx @@ -16,10 +16,10 @@ * along with this program. If not, see . */ -import { PluginOptionSlider } from "@utils/types"; -import { Forms, React, Slider } from "@webpack/common"; +import type { PluginOptionSlider } from "@utils/types"; +import { Forms, Slider, useEffect, useState } from "@webpack/common"; -import { ISettingElementProps } from "."; +import type { ISettingElementProps } from "."; export function makeRange(start: number, end: number, step = 1) { const ranges: number[] = []; @@ -32,16 +32,18 @@ export function makeRange(start: number, end: number, step = 1) { export function SettingSliderComponent({ option, pluginSettings, definedSettings, id, onChange, onError }: ISettingElementProps) { const def = pluginSettings[id] ?? option.default; - const [error, setError] = React.useState(null); + const [error, setError] = useState(null); - React.useEffect(() => { + useEffect(() => { onError(error !== null); }, [error]); function handleChange(newValue: number): void { const isValid = option.isValid?.call(definedSettings, newValue) ?? true; - if (typeof isValid === "string") setError(isValid); - else if (!isValid) setError("Invalid input provided."); + if (typeof isValid === "string") + setError(isValid); + else if (!isValid) + setError("Invalid input provided."); else { setError(null); onChange(newValue); diff --git a/src/components/PluginSettings/components/SettingTextComponent.tsx b/src/components/PluginSettings/components/SettingTextComponent.tsx index abf1bbbed..a9da10e7e 100644 --- a/src/components/PluginSettings/components/SettingTextComponent.tsx +++ b/src/components/PluginSettings/components/SettingTextComponent.tsx @@ -16,20 +16,20 @@ * along with this program. If not, see . */ -import { PluginOptionString } from "@utils/types"; -import { Forms, React, TextInput } from "@webpack/common"; +import type { PluginOptionString } from "@utils/types"; +import { Forms, TextInput, useEffect, useState } from "@webpack/common"; -import { ISettingElementProps } from "."; +import type { ISettingElementProps } from "."; export function SettingTextComponent({ option, pluginSettings, definedSettings, id, onChange, onError }: ISettingElementProps) { - const [state, setState] = React.useState(pluginSettings[id] ?? option.default ?? null); - const [error, setError] = React.useState(null); + const [state, setState] = useState(pluginSettings[id] ?? option.default ?? null); + const [error, setError] = useState(null); - React.useEffect(() => { + useEffect(() => { onError(error !== null); }, [error]); - function handleChange(newValue) { + function handleChange(newValue: any) { const isValid = option.isValid?.call(definedSettings, newValue) ?? true; if (typeof isValid === "string") setError(isValid); else if (!isValid) setError("Invalid input provided."); diff --git a/src/components/PluginSettings/components/index.ts b/src/components/PluginSettings/components/index.ts index d307b4e68..406b76686 100644 --- a/src/components/PluginSettings/components/index.ts +++ b/src/components/PluginSettings/components/index.ts @@ -16,17 +16,17 @@ * along with this program. If not, see . */ -import { DefinedSettings, PluginOptionBase } from "@utils/types"; +import type { DefinedSettings, PluginOptionBase } from "@utils/types"; export interface ISettingElementProps { option: T; - onChange(newValue: any): void; + onChange: (newValue: any) => void; pluginSettings: { [setting: string]: any; enabled: boolean; }; id: string; - onError(hasError: boolean): void; + onError: (hasError: boolean) => void; definedSettings?: DefinedSettings; } diff --git a/src/components/PluginSettings/index.tsx b/src/components/PluginSettings/index.tsx index c3b6e9082..c562daf49 100644 --- a/src/components/PluginSettings/index.tsx +++ b/src/components/PluginSettings/index.tsx @@ -32,9 +32,10 @@ import { Logger } from "@utils/Logger"; import { Margins } from "@utils/margins"; import { classes, isObjectEmpty } from "@utils/misc"; import { useAwaiter } from "@utils/react"; -import { Plugin } from "@utils/types"; +import type { Plugin } from "@utils/types"; import { findByPropsLazy } from "@webpack"; -import { Alerts, Button, Card, Forms, lodash, Parser, React, Select, Text, TextInput, Toasts, Tooltip, useMemo } from "@webpack/common"; +import { AlertActionCreators, Button, Card, Forms, lodash, MarkupUtils, Select, Text, TextInput, Toasts, Tooltip, useEffect, useMemo, useState } from "@webpack/common"; +import type { HTMLProps, ReactElement } from "react"; import Plugins, { ExcludedPlugins } from "~plugins"; @@ -44,8 +45,8 @@ const { startDependenciesRecursive, startPlugin, stopPlugin } = proxyLazy(() => const cl = classNameFactory("vc-plugins-"); const logger = new Logger("PluginSettings", "#a6d189"); -const InputStyles = findByPropsLazy("inputWrapper", "inputDefault", "error"); -const ButtonClasses = findByPropsLazy("button", "disabled", "enabled"); +const InputStyles: Record = findByPropsLazy("inputWrapper", "inputDefault", "error"); +const ButtonClasses: Record = findByPropsLazy("button", "disabled", "enabled"); function showErrorToast(message: string) { @@ -59,40 +60,39 @@ function showErrorToast(message: string) { }); } -function ReloadRequiredCard({ required }: { required: boolean; }) { - return ( - - {required ? ( - <> - Restart required! - - Restart now to apply new plugins and their settings - - - - ) : ( - <> - Plugin Management - Press the cog wheel or info icon to get more info on a plugin - Plugins with a cog wheel have settings you can modify! - - )} - - ); -} +const ReloadRequiredCard = ({ required }: { required: boolean; }) => ( + + {required ? ( + <> + Restart required! + + Restart now to apply new plugins and their settings + + + + ) : ( + <> + Plugin Management + Press the cog wheel or info icon to get more info on a plugin + Plugins with a cog wheel have settings you can modify! + + )} + +); -interface PluginCardProps extends React.HTMLProps { +interface PluginCardProps extends HTMLProps { plugin: Plugin; disabled: boolean; - onRestartNeeded(name: string): void; + onRestartNeeded: (name: string) => void; isNew?: boolean; } export function PluginCard({ plugin, disabled, onRestartNeeded, onMouseEnter, onMouseLeave, isNew }: PluginCardProps) { - const settings = Settings.plugins[plugin.name]; + const settings = Settings.plugins[plugin.name]!; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const isEnabled = () => settings.enabled ?? false; function toggleEnabled() { @@ -153,7 +153,7 @@ export function PluginCard({ plugin, disabled, onRestartNeeded, onMouseEnter, on infoButton={
- + ); } -function makeDependencyList(deps: string[]) { - return ( - - This plugin is required by: - {deps.map((dep: string) => {dep})} - - ); -} +const makeDependencyList = (deps?: string[]) => ( + <> + This plugin is required by: + {deps?.map((dep: string) => {dep})} + +); diff --git a/src/components/Switch.tsx b/src/components/Switch.tsx index 10904e141..a9a3c5ad3 100644 --- a/src/components/Switch.tsx +++ b/src/components/Switch.tsx @@ -29,49 +29,49 @@ interface SwitchProps { const SWITCH_ON = "var(--green-360)"; const SWITCH_OFF = "var(--primary-400)"; -const SwitchClasses = findByPropsLazy("slider", "input", "container"); +const SwitchClasses: Record = findByPropsLazy("slider", "input", "container"); -export function Switch({ checked, onChange, disabled }: SwitchProps) { - return ( -
-
( +
+
-
+ + { onChange(e.currentTarget.checked); }} + />
- ); -} +
+); diff --git a/src/components/VencordSettings/BackupAndRestoreTab.tsx b/src/components/VencordSettings/BackupAndRestoreTab.tsx index a9a1c9fec..1f155bf9f 100644 --- a/src/components/VencordSettings/BackupAndRestoreTab.tsx +++ b/src/components/VencordSettings/BackupAndRestoreTab.tsx @@ -24,44 +24,42 @@ import { Button, Card, Text } from "@webpack/common"; import { SettingsTab, wrapTab } from "./shared"; -function BackupRestoreTab() { - return ( - - - - Warning - Importing a settings file will overwrite your current settings. - - - - You can import and export your Vencord settings as a JSON file. - This allows you to easily transfer your settings to another device, - or recover your settings after reinstalling Vencord or Discord. - - - Settings Export contains: -
    -
  • — Custom QuickCSS
  • -
  • — Theme Links
  • -
  • — Plugin Settings
  • -
-
- - - +const BackupRestoreTab = () => ( + + + + Warning + Importing a settings file will overwrite your current settings. - - ); -} + + + You can import and export your Vencord settings as a JSON file. + This allows you to easily transfer your settings to another device, + or recover your settings after reinstalling Vencord or Discord. + + + Settings Export contains: +
    +
  • — Custom QuickCSS
  • +
  • — Theme Links
  • +
  • — Plugin Settings
  • +
+
+ + + + +
+); export default wrapTab(BackupRestoreTab, "Backup & Restore"); diff --git a/src/components/VencordSettings/CloudTab.tsx b/src/components/VencordSettings/CloudTab.tsx index a13c3f6ca..ab4355562 100644 --- a/src/components/VencordSettings/CloudTab.tsx +++ b/src/components/VencordSettings/CloudTab.tsx @@ -24,7 +24,7 @@ import { Link } from "@components/Link"; import { authorizeCloud, cloudLogger, deauthorizeCloud, getCloudAuth, getCloudUrl } from "@utils/cloud"; import { Margins } from "@utils/margins"; import { deleteCloudSettings, getCloudSettings, putCloudSettings } from "@utils/settingsSync"; -import { Alerts, Button, Forms, Switch, Tooltip } from "@webpack/common"; +import { AlertActionCreators, Button, Forms, Switch, Tooltip } from "@webpack/common"; import { SettingsTab, wrapTab } from "./shared"; @@ -85,7 +85,7 @@ function SettingsSyncSection() { @@ -97,7 +97,7 @@ function SettingsSyncSection() { size={Button.Sizes.SMALL} color={Button.Colors.RED} disabled={!sectionEnabled} - onClick={() => getCloudSettings(true, true)} + onClick={() => { getCloudSettings(true, true); }} > Sync from Cloud @@ -107,7 +107,7 @@ function SettingsSyncSection() { size={Button.Sizes.SMALL} color={Button.Colors.RED} disabled={!sectionEnabled} - onClick={() => deleteCloudSettings()} + onClick={() => { deleteCloudSettings(); }} > Delete Cloud Settings @@ -148,7 +148,7 @@ function CloudTab() { { + onChange={v => { settings.cloud.url = v; settings.cloud.authenticated = false; deauthorizeCloud(); @@ -172,21 +172,23 @@ function CloudTab() { size={Button.Sizes.MEDIUM} color={Button.Colors.RED} disabled={!settings.cloud.authenticated} - onClick={() => Alerts.show({ - title: "Are you sure?", - body: "Once your data is erased, we cannot recover it. There's no going back!", - onConfirm: eraseAllData, - confirmText: "Erase it!", - confirmColor: "vc-cloud-erase-data-danger-btn", - cancelText: "Nevermind" - })} + onClick={() => { + AlertActionCreators.show({ + title: "Are you sure?", + body: "Once your data is erased, we cannot recover it. There's no going back!", + onConfirm: eraseAllData, + confirmText: "Erase it!", + confirmColor: "vc-cloud-erase-data-danger-btn", + cancelText: "Nevermind" + }); + }} > Erase All Data - + ); diff --git a/src/components/VencordSettings/NotificationSettings.tsx b/src/components/VencordSettings/NotificationSettings.tsx index c0fb393b6..7612e3bf5 100644 --- a/src/components/VencordSettings/NotificationSettings.tsx +++ b/src/components/VencordSettings/NotificationSettings.tsx @@ -18,6 +18,7 @@ export function NotificationSettings() { return (
Notification Style + {/* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition */} {settings.useNative !== "never" && Notification?.permission === "denied" && ( Desktop Notification Permission denied @@ -37,7 +38,7 @@ export function NotificationSettings() { { label: "Only use Desktop notifications when Discord is not focused", value: "not-focused", default: true }, { label: "Always use Desktop notifications", value: "always" }, { label: "Always use Vencord notifications", value: "never" }, - ] satisfies Array<{ value: typeof settings["useNative"]; } & Record>} + ] satisfies ({ value: typeof settings["useNative"]; } & Record)[]} closeOnSelect={true} select={v => settings.useNative = v} isSelected={v => v === settings.useNative} @@ -51,7 +52,7 @@ export function NotificationSettings() { options={[ { label: "Bottom Right", value: "bottom-right", default: true }, { label: "Top Right", value: "top-right" }, - ] satisfies Array<{ value: typeof settings["position"]; } & Record>} + ] satisfies ({ value: typeof settings["position"]; } & Record)[]} select={v => settings.position = v} isSelected={v => v === settings.position} serialize={identity} diff --git a/src/components/VencordSettings/PatchHelperTab.tsx b/src/components/VencordSettings/PatchHelperTab.tsx index fd33c09df..d477e862f 100644 --- a/src/components/VencordSettings/PatchHelperTab.tsx +++ b/src/components/VencordSettings/PatchHelperTab.tsx @@ -21,9 +21,9 @@ import { debounce } from "@shared/debounce"; import { Margins } from "@utils/margins"; import { canonicalizeMatch, canonicalizeReplace } from "@utils/patches"; import { makeCodeblock } from "@utils/text"; -import { Patch, ReplaceFn } from "@utils/types"; +import type { Patch, ReplaceFn } from "@utils/types"; import { search } from "@webpack"; -import { Button, Clipboard, Forms, Parser, React, Switch, TextArea, TextInput } from "@webpack/common"; +import { Button, ClipboardUtils, Forms, MarkupUtils, Switch, TextArea, TextInput, useEffect, useMemo, useState } from "@webpack/common"; import { SettingsTab, wrapTab } from "./shared"; @@ -32,7 +32,12 @@ if (IS_DEV) { var differ = require("diff") as typeof import("diff"); } -const findCandidates = debounce(function ({ find, setModule, setError }) { +interface FindCandidatesOptions extends Pick { + setError: (error: string) => void; + setModule: (module: ReplacementComponentProps["module"]) => void; +} + +const findCandidates = debounce(({ find, setError, setModule }: FindCandidatesOptions) => { const candidates = search(find); const keys = Object.keys(candidates); const len = keys.length; @@ -41,21 +46,21 @@ const findCandidates = debounce(function ({ find, setModule, setError }) { else if (len !== 1) setError("Multiple matches. Please refine your filter"); else - setModule([keys[0], candidates[keys[0]]]); + setModule([keys[0]!, candidates[keys[0]!]!]); }); interface ReplacementComponentProps { - module: [id: number, factory: Function]; + module: [id: string | number, factory: (...args: any[]) => unknown]; match: string; replacement: string | ReplaceFn; - setReplacementError(error: any): void; + setReplacementError: (error: any) => void; } function ReplacementComponent({ module, match, replacement, setReplacementError }: ReplacementComponentProps) { const [id, fact] = module; - const [compileResult, setCompileResult] = React.useState<[boolean, string]>(); + const [compileResult, setCompileResult] = useState<[boolean, string]>(); - const [patchedCode, matchResult, diff] = React.useMemo(() => { + const [patchedCode, matchResult, diff] = useMemo(() => { const src: string = fact.toString().replaceAll("\n", ""); try { @@ -67,7 +72,7 @@ function ReplacementComponent({ module, match, replacement, setReplacementError try { const canonicalReplace = canonicalizeReplace(replacement, "YourPlugin"); var patched = src.replace(canonicalMatch, canonicalReplace as string); - setReplacementError(void 0); + setReplacementError(undefined); } catch (e) { setReplacementError((e as Error).message); return ["", [], []]; @@ -104,8 +109,8 @@ function ReplacementComponent({ module, match, replacement, setReplacementError return ( <> -
{Parser.parse(fullMatch)}
-
{Parser.parse(groups)}
+
{MarkupUtils.parse(fullMatch)}
+
{MarkupUtils.parse(groups)}
); } @@ -125,8 +130,8 @@ function ReplacementComponent({ module, match, replacement, setReplacementError <> Match {renderMatch()} - ) - } + + )} {!!diff?.length && ( <> @@ -136,50 +141,66 @@ function ReplacementComponent({ module, match, replacement, setReplacementError )} {!!diff?.length && ( - + )} - {compileResult && - + {compileResult && ( + {compileResult[1]} - } + )} ); } -function ReplacementInput({ replacement, setReplacement, replacementError }) { - const [isFunc, setIsFunc] = React.useState(false); - const [error, setError] = React.useState(); +interface ReplacementInputProps { + replacement: string | ReplaceFn; + setReplacement: (value: string | ReplaceFn) => void; + replacementError?: string; +} - function onChange(v: string) { - setError(void 0); +function ReplacementInput({ replacement, setReplacement, replacementError }: ReplacementInputProps) { + const [isFunc, setIsFunc] = useState(false); + const [error, setError] = useState(); + + function onChange(val: string | ReplaceFn) { + setError(undefined); if (isFunc) { try { - const func = (0, eval)(v); + const func = (0, eval)(val as string); if (typeof func === "function") setReplacement(() => func); else setError("Replacement must be a function"); } catch (e) { - setReplacement(v); + setReplacement(val); setError((e as Error).message); } } else { - setReplacement(v); + setReplacement(val); } } - React.useEffect( - () => void (isFunc ? onChange(replacement) : setError(void 0)), + useEffect( + () => { + if (isFunc) + onChange(replacement); + else + setError(undefined); + }, [isFunc] ); @@ -188,7 +209,7 @@ function ReplacementInput({ replacement, setReplacement, replacementError }) { {/* FormTitle adds a class if className is not set, so we set it to an empty string to prevent that */} replacement @@ -205,7 +226,7 @@ function ReplacementInput({ replacement, setReplacement, replacementError }) { "$self": "Insert the plugin instance", }).map(([placeholder, desc]) => ( - {Parser.parse("`" + placeholder + "`")}: {desc} + {MarkupUtils.parse("`" + placeholder + "`")}: {desc} ))}
@@ -225,15 +246,15 @@ function ReplacementInput({ replacement, setReplacement, replacementError }) { } interface FullPatchInputProps { - setFind(v: string): void; - setParsedFind(v: string | RegExp): void; - setMatch(v: string): void; - setReplacement(v: string | ReplaceFn): void; + setFind: (v: string) => void; + setParsedFind: (v: string | RegExp) => void; + setMatch: (v: string) => void; + setReplacement: (v: string | ReplaceFn) => void; } function FullPatchInput({ setFind, setParsedFind, setMatch, setReplacement }: FullPatchInputProps) { - const [fullPatch, setFullPatch] = React.useState(""); - const [fullPatchError, setFullPatchError] = React.useState(""); + const [fullPatch, setFullPatch] = useState(""); + const [fullPatchError, setFullPatchError] = useState(""); function update() { if (fullPatch === "") { @@ -247,17 +268,18 @@ function FullPatchInput({ setFind, setParsedFind, setMatch, setReplacement }: Fu } try { - const parsed = (0, eval)(`(${fullPatch})`) as Patch; + const parsed: Patch = (0, eval)(`(${fullPatch})`); if (!parsed.find) throw new Error("No 'find' field"); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!parsed.replacement) throw new Error("No 'replacement' field"); - if (parsed.replacement instanceof Array) { + if (Array.isArray(parsed.replacement)) { if (parsed.replacement.length === 0) throw new Error("Invalid replacement"); parsed.replacement = { - match: parsed.replacement[0].match, - replace: parsed.replacement[0].replace + match: parsed.replacement[0]!.match, + replace: parsed.replacement[0]!.replace }; } @@ -274,31 +296,33 @@ function FullPatchInput({ setFind, setParsedFind, setMatch, setReplacement }: Fu } } - return <> - Paste your full JSON patch here to fill out the fields -