import * as _typescript_eslint_utils_dist_ts_eslint from '@typescript-eslint/utils/dist/ts-eslint'; type RegexParameters = Record; type Pattern = string | (string | string[])[]; type ImportPattern = string | string[]; interface Module { name: string; pattern: Pattern; errorMessage?: string; allowImportsFrom: ImportPattern[]; allowExternalImports?: boolean; } type Paths = Record; interface PathAliases { baseUrl: string; paths: Paths; } interface IndependentModulesConfig { tsconfigPath?: string; pathAliases?: PathAliases; extensions?: string[]; reusableImportPatterns?: Record; modules: Module[]; debugMode?: boolean; packageRoot?: string; } type SelectorType = "class" | "variable" | "variableExpression" | "propertyDefinition" | "function" | "arrowFunction" | "type" | "interface" | "enum"; interface VariableExpression { type: "variableExpression"; limitTo: string | string[]; } type Selector = SelectorType | VariableExpression; type ScopeAll = "fileExport" | "fileRoot" | "nestedSelectors" | "file"; interface PositionIndex { index: number; sorting?: "az" | "none"; } interface Rule$1 { selector: Selector | Selector[]; scope?: ScopeAll | ScopeAll[]; positionIndex?: number | PositionIndex; filenamePartsToRemove?: string | string[]; format?: string[] | string; } type CustomErrors = Partial>; interface RootSelectorLimit { selector: SelectorType | SelectorType[]; limit: number | { max?: number; min?: number; }; } interface AllowOnlySpecifiedSelectors { error?: CustomErrors; fileRoot?: boolean | CustomErrors; fileExport?: boolean | CustomErrors; nestedSelectors?: boolean | CustomErrors; } interface FileRules { filePattern: Pattern; allowOnlySpecifiedSelectors?: AllowOnlySpecifiedSelectors | boolean; rootSelectorsLimits?: RootSelectorLimit[]; rules?: Rule$1[]; } interface FileCompositionConfig { projectRoot?: string; regexParameters?: RegexParameters; filesRules: FileRules[]; } interface Rule { ruleId?: T; name?: string; enforceExistence?: string[] | string; children?: Rule[]; } interface FolderRecursionRule extends Rule { folderRecursionLimit?: number; } interface LongPathsInfo { maxLength?: number; root?: string; countFromSystemRoot?: boolean; mode: "warn" | "error"; } interface FolderStructureConfig { ignorePatterns?: Pattern; longPathsInfo?: LongPathsInfo | false; structureRoot?: string; projectRoot?: string; structure: Rule | Rule[]; rules?: Record>; regexParameters?: RegexParameters; } interface ParserReturn { ast: { type: string; start: number; end: number; loc: { start: { line: number; column: number; }; end: { line: number; column: number; }; }; tokens: never[]; comments: never[]; range: number[]; sourceType: string; body: never[]; }; scopeManager: null; visitorKeys: null; } interface ParserProps { meta: { name: string; }; parseForESLint: () => ParserReturn; } declare const parser: ParserProps; declare const createIndependentModules: (config: IndependentModulesConfig) => IndependentModulesConfig; declare const createFolderStructure: >>(config: { longPathsInfo?: LongPathsInfo | false; structureRoot?: string; projectRoot?: string; structure: Rule | Rule[]; rules?: R; ignorePatterns?: Pattern; regexParameters?: RegexParameters; }) => FolderStructureConfig; declare const createFileComposition: (config: FileCompositionConfig) => FileCompositionConfig; declare const projectStructurePlugin: { rules: { "folder-structure": _typescript_eslint_utils_dist_ts_eslint.RuleModule<"error", [FolderStructureConfig] | [], unknown, _typescript_eslint_utils_dist_ts_eslint.RuleListener> & { name: string; }; "file-composition": _typescript_eslint_utils_dist_ts_eslint.RuleModule<"invalidName" | "invalidPosition" | "prohibitedSelectorRoot" | "prohibitedSelectorNested" | "prohibitedSelectorExport" | "rootSelectorsLimits", [] | [FileCompositionConfig], unknown, _typescript_eslint_utils_dist_ts_eslint.RuleListener> & { name: string; }; "independent-modules": _typescript_eslint_utils_dist_ts_eslint.RuleModule<"error", [] | [IndependentModulesConfig], unknown, _typescript_eslint_utils_dist_ts_eslint.RuleListener> & { name: string; }; }; }; export { type FileCompositionConfig, type FolderStructureConfig, type IndependentModulesConfig, createFileComposition, createFolderStructure, createIndependentModules, parser as projectStructureParser, projectStructurePlugin };