export declare interface PickierRulesConfig { noDebugger: RuleSeverity noConsole: RuleSeverity curly?: RuleSeverity noUnusedCapturingGroup?: RuleSeverity noCondAssign?: RuleSeverity noTemplateCurlyInString?: RuleSeverity } export declare interface LintIssue { filePath: string line: number column: number ruleId: string message: string severity: 'warning' | 'error' help?: string } export declare interface PickierLintConfig { extensions: Extension[] reporter: 'stylish' | 'json' | 'compact' cache: boolean maxWarnings: number } export declare interface PickierFormatConfig { extensions: Extension[] trimTrailingWhitespace: boolean maxConsecutiveBlankLines: number finalNewline: 'one' | 'two' | 'none' indent: number indentStyle?: 'spaces' | 'tabs' preserveCodeIndentation?: boolean quotes: 'single' | 'double' semi: boolean } export declare interface PickierTailwindConfig { enabled: boolean configPath?: string callees?: string[] attributes?: string[] } export declare interface PickierConfig { verbose: boolean ignores: string[] lint: PickierLintConfig format: PickierFormatConfig rules: PickierRulesConfig tailwind?: PickierTailwindConfig plugins?: Array pluginRules?: RulesConfigMap } export declare interface RuleMeta { docs?: string recommended?: boolean wip?: boolean editsStringContent?: boolean } export declare interface RuleContext { filePath: string config: PickierConfig options?: unknown } export declare interface RuleModule { meta?: RuleMeta check: (content: string, context: RuleContext) => LintIssue[] fix?: (content: string, context: RuleContext) => string } export declare interface PickierPlugin { name: string rules: Record } // CLI option types (centralized) export declare interface LintOptions { fix?: boolean dryRun?: boolean maxWarnings?: number reporter?: 'stylish' | 'json' | 'compact' config?: string ignorePath?: string ext?: string cache?: boolean verbose?: boolean _formatOnly?: boolean } export declare interface FormatOptions { write?: boolean check?: boolean config?: string ignorePath?: string ext?: string verbose?: boolean } export type RuleSeverity = 'off' | 'warn' | 'error'; export type Extension = 'ts' | 'js' | 'html' | 'css' | 'json' | 'jsonc' | 'md' | 'yaml' | 'yml' | 'stx' | 'lock' | 'sh' | 'bash' | 'zsh'; // User-facing config type — all fields optional, merged with defaults at runtime export type PickierOptions = Partial<{ verbose: boolean ignores: string[] lint: Partial format: Partial rules: Partial tailwind: PickierTailwindConfig plugins: Array pluginRules: RulesConfigMap }>; // Plugin system types export type RulesConfigMap = Record;