{
	"extends": ["neon/common", "neon/node", "neon/typescript", "neon/prettier"],
	"parser": "@typescript-eslint/parser",
	"parserOptions": {
		"project": "./tsconfig.eslint.json"
	},
	"plugins": ["local"],
	"rules": {
		"local/explicit-undefined-on-optional-properties": ["error", { "interfaceEndings": ["JSONBody"] }],
		"local/explicitly-optional-undefined-properties": ["error", { "interfaceEndings": ["JSONBody"] }],
		"@typescript-eslint/consistent-type-definitions": ["error", "interface"],
		"@typescript-eslint/prefer-literal-enum-member": "off",
		"@typescript-eslint/sort-type-union-intersection-members": "off",
		"import/extensions": "off",
		"tsdoc/syntax": "off",
		"typescript-sort-keys/interface": "off",
		"typescript-sort-keys/string-enum": "off",
		"unicorn/prefer-math-trunc": "off",
		"jsdoc/no-undefined-types": "off"
	},
	"overrides": [
		{
			"files": ["rest/v10/*.ts", "rest/v9/*.ts"],
			"excludedFiles": ["rest/v10/index.ts", "rest/v9/index.ts"],
			"rules": {
				"local/rest-type-naming-convention": [
					"error",
					{
						"whitelist": [
							"RESTAPIAttachment",
							"RESTAPIChannelPatchOverwrite",
							"RESTAPIGuildChannelResolvable",
							"RESTAPIGuildCreateOverwrite",
							"RESTAPIGuildCreatePartialChannel",
							"RESTAPIGuildCreateRole",
							"RESTAPIGuildOnboardingPrompt",
							"RESTAPIGuildOnboardingPromptOption",
							"RESTAPIInteractionCallbackActivityInstanceResource",
							"RESTAPIInteractionCallbackObject",
							"RESTAPIInteractionCallbackResourceObject",
							"RESTAPIMessageReference",
							"RESTAPIPartialCurrentUserGuild",
							"RESTAPIPoll",

							"RESTOAuth2AdvancedBotAuthorizationQuery",
							"RESTOAuth2AdvancedBotAuthorizationQueryResult",
							"RESTOAuth2AuthorizationQuery",
							"RESTOAuth2BotAuthorizationQuery",
							"RESTOAuth2ImplicitAuthorizationQuery",
							"RESTOAuth2ImplicitAuthorizationURLFragmentResult",

							// Deprecated types
							"APIChannelPatchOverwrite",
							"APIGuildChannelResolvable",
							"APIGuildCreateOverwrite",
							"APIGuildCreatePartialChannel",
							"APIGuildCreateRole",
							"APIMessageReferenceSend",
							"GetAPIVoiceRegionsResult",
							"RESTAPIModifyGuildOnboardingPromptData",
							"RESTAPIModifyGuildOnboardingPromptOptionData",
							"RESTAPIPollCreate",
							"RESTDeleteAPIChannelMessageOwnReaction",
							"RESTGetAPIStickerPack",
							"RESTOAuth2AuthorizationQueryResult",
							"RESTPostAPIEntitlementBody"
						]
					}
				]
			}
		}
	]
}
