import { type AstNode } from './util'; /** * Options for {@link DBX_WEB_REQUIRE_COMPONENT_CONFIG_INPUT_RULE}. */ export interface DbxWebRequireComponentConfigInputRuleOptions { /** * Maximum number of signal-input properties allowed before the rule reports. * Defaults to {@link DEFAULT_INPUT_THRESHOLD}. */ readonly threshold?: number; } /** * ESLint rule definition shape used by `require-component-config-input`. */ export interface DbxWebRequireComponentConfigInputRuleDefinition { readonly meta: { readonly type: 'suggestion'; readonly fixable: undefined; readonly docs: { readonly description: string; readonly recommended: boolean; }; readonly messages: { readonly tooManySignalInputs: string; }; readonly schema: readonly object[]; }; create(context: AstNode): Record void>; } /** * ESLint rule that flags `@Component` / `@Directive` / `@Pipe` classes which * declare more than `threshold` (default 3) signal-input properties. * * When a component-tier class drifts past the threshold, the convention is to * consolidate the loose inputs into a single config-typed input, e.g. * `config = input>()`. This rule does not enforce a specific * property name or shape — it is purely a count, analogous to the workspace's * `dereekb-util/prefer-config-object` rule for function parameters. * * Only `input(...)` and `input.required(...)` calls whose root identifier is * imported from `@angular/core` are counted. Static and `declare` members are * ignored, as are non-decorated classes and imports from other modules. * * Not auto-fixable: consolidating loose inputs into a config interface is a * design-level refactor that updates the template, the consuming sites, and the * type surface — outside the safe scope of an ESLint autofix. * * @see `dbx__note__angular-conventions` → ANG-C1 Component Config Input. */ export declare const DBX_WEB_REQUIRE_COMPONENT_CONFIG_INPUT_RULE: DbxWebRequireComponentConfigInputRuleDefinition;