{
  "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
  "linter": { "rules": { "recommended": false }, "ignore": ["dist"] },
  "overrides": [
    {
      "include": ["**/*.{ts,tsx}"],
      "linter": {
        "rules": {
          "complexity": {
            "noExtraBooleanCast": "error",
            "noMultipleSpacesInRegularExpressionLiterals": "error",
            "noUselessCatch": "error",
            "noWith": "error"
          },
          "correctness": {
            "noConstAssign": "error",
            "noConstantCondition": "error",
            "noEmptyCharacterClassInRegex": "error",
            "noEmptyPattern": "error",
            "noGlobalObjectCalls": "error",
            "noInvalidBuiltinInstantiation": "error",
            "noInvalidConstructorSuper": "error",
            "noNonoctalDecimalEscape": "error",
            "noPrecisionLoss": "error",
            "noSelfAssign": "error",
            "noSetterReturn": "error",
            "noSwitchDeclarations": "error",
            "noUndeclaredVariables": "error",
            "noUnreachable": "error",
            "noUnreachableSuper": "error",
            "noUnsafeFinally": "error",
            "noUnsafeOptionalChaining": "error",
            "noUnusedLabels": "error",
            "noUnusedPrivateClassMembers": "error",
            "noUnusedVariables": "error",
            "useIsNan": "error",
            "useValidForDirection": "error",
            "useYield": "error"
          },
          "suspicious": {
            "noAsyncPromiseExecutor": "error",
            "noCatchAssign": "error",
            "noClassAssign": "error",
            "noCompareNegZero": "error",
            "noControlCharactersInRegex": "error",
            "noDebugger": "error",
            "noDuplicateCase": "error",
            "noDuplicateClassMembers": "error",
            "noDuplicateObjectKeys": "error",
            "noDuplicateParameters": "error",
            "noEmptyBlockStatements": "error",
            "noFallthroughSwitchClause": "error",
            "noFunctionAssign": "error",
            "noGlobalAssign": "error",
            "noImportAssign": "error",
            "noMisleadingCharacterClass": "error",
            "noPrototypeBuiltins": "error",
            "noRedeclare": "error",
            "noShadowRestrictedNames": "error",
            "noSparseArray": "error",
            "noUnsafeNegation": "error",
            "useGetterReturn": "error",
            "useValidTypeof": "error"
          }
        }
      }
    },
    { "include": ["**/*.{ts,tsx}"], "javascript": { "globals": [] } },
    {
      "include": ["**/*.{ts,tsx}"],
      "linter": {
        "rules": {
          "correctness": {
            "noConstAssign": "off",
            "noGlobalObjectCalls": "off",
            "noInvalidBuiltinInstantiation": "off",
            "noInvalidConstructorSuper": "off",
            "noNewSymbol": "off",
            "noSetterReturn": "off",
            "noUndeclaredVariables": "off",
            "noUnreachable": "off",
            "noUnreachableSuper": "off"
          },
          "style": {
            "noArguments": "error",
            "noVar": "error",
            "useConst": "error"
          },
          "suspicious": {
            "noClassAssign": "off",
            "noDuplicateClassMembers": "off",
            "noDuplicateObjectKeys": "off",
            "noDuplicateParameters": "off",
            "noFunctionAssign": "off",
            "noImportAssign": "off",
            "noRedeclare": "off",
            "noUnsafeNegation": "off",
            "useGetterReturn": "off"
          }
        }
      }
    },
    {
      "include": ["**/*.{ts,tsx}"],
      "linter": {
        "rules": {
          "complexity": { "noUselessTypeConstraint": "error" },
          "correctness": {
            "noUnusedVariables": "error",
            "useArrayLiterals": "off"
          },
          "style": { "noNamespace": "error", "useAsConstAssertion": "error" },
          "suspicious": {
            "noExplicitAny": "error",
            "noExtraNonNullAssertion": "error",
            "noMisleadingInstantiator": "error",
            "noUnsafeDeclarationMerging": "error",
            "useNamespaceKeyword": "error"
          }
        }
      }
    },
    {
      "include": ["**/*.{ts,tsx}"],
      "javascript": {
        "globals": [
          "onscrollend",
          "onpointerleave",
          "oncontextrestored",
          "onemptied",
          "ongamepaddisconnected",
          "onkeypress",
          "onloadeddata",
          "onmouseup",
          "onvolumechange",
          "onpaste",
          "onstorage",
          "onkeyup",
          "onabort",
          "oncut",
          "ontransitionrun",
          "onafterprint",
          "onblur",
          "ondurationchange",
          "ontransitionstart",
          "oncanplaythrough",
          "onanimationend",
          "onmouseleave",
          "ondragleave",
          "onplay",
          "onunhandledrejection",
          "onbeforeprint",
          "onpointercancel",
          "onsubmit",
          "ondragstart",
          "onmessage",
          "location",
          "onoffline",
          "onappinstalled",
          "onwheel",
          "onended",
          "onkeydown",
          "onclick",
          "onfocus",
          "onscroll",
          "ongamepadconnected",
          "oncanplay",
          "onpointerdown",
          "ondeviceorientationabsolute",
          "onauxclick",
          "ondevicemotion",
          "onratechange",
          "ontransitionend",
          "onscrollsnapchanging",
          "onchange",
          "onselect",
          "onbeforeinstallprompt",
          "onbeforetoggle",
          "onmouseout",
          "ontimeupdate",
          "ondragover",
          "oncuechange",
          "ontransitioncancel",
          "onprogress",
          "onbeforeinput",
          "onpointerenter",
          "onmouseenter",
          "oninvalid",
          "onpointerout",
          "onpagereveal",
          "onpause",
          "onanimationstart",
          "onwaiting",
          "onscrollsnapchange",
          "ondeviceorientation",
          "onclose",
          "onbeforeunload",
          "oncancel",
          "onseeked",
          "onpointerover",
          "ongotpointercapture",
          "onloadedmetadata",
          "onpageshow",
          "onstalled",
          "oncontextmenu",
          "onreset",
          "ondrag",
          "onbeforematch",
          "onload",
          "onlostpointercapture",
          "onsuspend",
          "onselectionchange",
          "onpagehide",
          "onrejectionhandled",
          "onunload",
          "onanimationcancel",
          "onmousedown",
          "onpointerup",
          "onmouseover",
          "onformdata",
          "oncontentvisibilityautostatechange",
          "onresize",
          "onsearch",
          "ontoggle",
          "onpageswap",
          "onbeforexrselect",
          "onlanguagechange",
          "ondragenter",
          "onerror",
          "onpointermove",
          "onmousemove",
          "ondrop",
          "onhashchange",
          "onsecuritypolicyviolation",
          "onslotchange",
          "oncopy",
          "onanimationiteration",
          "ondblclick",
          "ondragend",
          "onpointerrawupdate",
          "onpopstate",
          "onplaying",
          "oncontextlost",
          "onloadstart",
          "onseeking",
          "oninput",
          "onmessageerror",
          "onselectstart",
          "onmousewheel",
          "ononline"
        ]
      },
      "linter": {
        "rules": {
          "correctness": {
            "useExhaustiveDependencies": "warn",
            "useHookAtTopLevel": "error"
          }
        }
      }
    }
  ],
  "formatter": {
    "enabled": true,
    "useEditorconfig": true
  },
  "organizeImports": {
    "enabled": true
  },
  "javascript": {
    "formatter": {
      "jsxQuoteStyle": "double",
      "quoteStyle": "single",
      "semicolons": "always"
    }
  }
}