{
	"plugins": [
		"cadence"
	],
	"extends": [
		"plugin:cadence/recommended"
	],
	"root": true,
	"ignorePatterns": [
		"node_modules",
		"js",
		"package.json",
		"*.d.ts"
	],
	"rules": {},
	"overrides": [
		{
			"files": [
				"**/*.ts"
			],
			"rules": {
				// broken
				"lines-around-comment": "off",
				// no idea why this is on
				"no-param-reassign": "off",
				// TENPORARILY OFF AS THEY'RE BROKEN.
				"@typescript-eslint/no-unsafe-assignment": "off",
				"@typescript-eslint/no-unsafe-return": "off",
				"@typescript-eslint/no-unsafe-argument": "off",
				"@typescript-eslint/no-unsafe-member-access": "off",
				"@typescript-eslint/no-unsafe-property-computation": "off",
				"@typescript-eslint/no-unsafe-call": "off",
				"@typescript-eslint/strict-boolean-expressions": "off"
			}
		},
		{
			"files": [
				"**/*.test.ts"
			],
			"rules": {
				// Our test files break these rules *all* the time, and there's
				// no point refactoring. Our tests deliberately play with the
				// dynamic nature of TS to more accurately test arbitrary input.
				"@typescript-eslint/no-floating-promises": "off",
				"@typescript-eslint/no-unsafe-member-access": "off",
				"@typescript-eslint/no-unsafe-assignment": "off",
				"@typescript-eslint/no-unsafe-return": "off",
				"@typescript-eslint/no-unsafe-argument": "off",
				"@typescript-eslint/no-unsafe-call": "off",
				// we abuse this one for faking data, but we really shouldn't.
				"@typescript-eslint/consistent-type-assertions": "warn"
			}
		}
	]
}