import { Awaitable, ConfigNames, OptionsConfig, OptionsFiles, OptionsOverrides, TypedFlatConfigItem } from "@antfu/eslint-config";
import { Linter } from "eslint";
import { FlatConfigComposer } from "eslint-flat-config-utils";
//#region src/types.d.ts
type Matchers = [name: string, configurations: {
  match: "objectKeys" | "objectValues" | "strings";
  pathPattern?: string;
}[]][];
interface OptionsTailwindcss {
  settings?: {
    entryPoint?: string | undefined;
    tailwindConfig?: string | undefined;
    tsconfig?: string | undefined;
    detectComponentClasses?: boolean | undefined;
    rootFontSize?: number | undefined;
    messageStyle?: "visual" | "compact" | "raw" | undefined;
    attributes?: Array<string | Matchers> | undefined;
    callees?: Array<string | Matchers> | undefined;
    variables?: Array<string | Matchers> | undefined;
    tags?: Array<string | Matchers> | undefined;
  };
}
interface OptionsAddons {
  tailwindcss?: boolean | (OptionsOverrides & OptionsFiles & OptionsTailwindcss);
}
type Options = OptionsConfig & Omit<TypedFlatConfigItem, "files" | "ignores"> & OptionsAddons;
//#endregion
//#region src/index.d.ts
declare function defineConfig(options?: Options, ...userConfigs: Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[] | FlatConfigComposer<any, any> | Linter.Config[]>[]): FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
//#endregion
export { type Options, type OptionsTailwindcss, defineConfig };