import { UserBenchmarkConfig } from '../../types/user-benchmark-config' /** * Define a configuration for ESLint Rule Benchmark. * * This function provides type checking and autocompletion for configuration * options. It doesn't transform the config object in any way, but just returns * it with proper typing. * * @example * // benchmark.config.ts * import { defineConfig } from 'eslint-rule-benchmark' * * export default defineConfig({ * // Global settings (optional) * iterations: 100, * warmup: { iterations: 10, enabled: true }, * timeout: 500, * * tests: [ * // Array of test specifications * { * name: 'My Rule: Specific Scenarios', * ruleId: 'my-plugin/my-rule', * rulePath: './rules/my-rule.js', * // Test-specific benchmark settings (optional, overrides globals) * iterations: 50, * warmup: { iterations: 5 }, * * cases: [ * // Array of test cases for 'My Rule' * { * name: 'Case with specific options', // Optional case name * testPath: './test-files/my-rule/case1.js', * options: [{ strict: true }], * severity: 2, * }, * { * testPath: './test-files/my-rule/case2.js', * // Uses default severity and no options * }, * { * testPath: [ * // Multiple paths for one case * './test-files/my-rule/edge-caseA.ts', * './test-files/my-rule/edge-caseB.ts', * ], * }, * ], * }, * { * name: 'Core ESLint Rule: no-unused-vars', * ruleId: 'no-unused-vars', // rulePath can be omitted for core rules * cases: [ * { * testPath: './large-project-snippet.js', * }, * ], * }, * ], * }) * * @param config - User configuration object. * @returns The same configuration with proper typing. */ export declare function defineConfig( config: UserBenchmarkConfig, ): UserBenchmarkConfig