'use strict';
import { ESLintUtils } from '@typescript-eslint/utils';
import { isPascalCase } from '@flint/infra/analysis';
import { url, ruleTypes } from '@flint/infra/constants/rules-meta';

var __defProp=Object['defineProperty'],__name=(_0x53f954,_0x563fc5)=>__defProp(_0x53f954,'name',{'value':_0x563fc5,'configurable':!![]});const ruleName='must-use-pascal-case-for-types-and-interfaces';const messageId='mustUsePascalCaseForTypesAndInterfaces',createRule=ESLintUtils['RuleCreator'](_0xddf544=>''+url+_0xddf544),mustUsePascalCaseForTypesAndInterfaces=createRule({'name':ruleName,'meta':{'type':ruleTypes['problem'],'docs':{'description':'Enforce\x20pascal\x20case\x20for\x20types\x20and\x20interfaces'},'messages':{[messageId]:ruleName+'\x0a###\x20**Must**\x20use\x20Pascal\x20case\x20for\x20types\x20and\x20interfaces\x20names.\x0a\x0a####\x20Wrong\x0a\x0atype\x20foo\x20=\x20…\x0ainterface\x20bar\x20{\x20…\x20}\x0a\x0a####\x20Correct\x0a\x0atype\x20Foo\x20=\x20…\x0ainterface\x20Bar\x20{\x20…\x20}\x0a\x0a####\x20Why\x0a\x0aThis\x20helps\x20for\x20consistency\x20in\x20naming,\x20allowing\x20to\x20differentiate\x20variables/fields\x20and\x20types/interfaces'},'schema':[]},'create'(_0x6bcf0f){return {'TSTypeAliasDeclaration'(_0x4a310a){validateTypeAndInterfaceNaming(_0x4a310a,_0x6bcf0f);},'TSInterfaceDeclaration'(_0x1a1916){validateTypeAndInterfaceNaming(_0x1a1916,_0x6bcf0f);}};},'defaultOptions':[]});function validateTypeAndInterfaceNaming(_0x1c7f37,_0x535640){!isPascalCase(_0x1c7f37['id']['name'])&&_0x535640['report']({'node':_0x1c7f37['id'],'messageId':messageId});}__name(validateTypeAndInterfaceNaming,'validateTypeAndInterfaceNaming');

export { mustUsePascalCaseForTypesAndInterfaces as default, ruleName };
