import { ParseOptions } from "./utils/getParseOptions/types.js";
import { BaseNode } from "estree-walker";
import * as change_case0 from "change-case";

//#region src/types.d.ts
declare type FormatType = keyof typeof change_case0;
interface InjectDataQaParams {
  include?: string[];
  exclude?: string[];
  format?: FormatType;
  childOverrideParent?: boolean;
  options?: InjectDataQaOptions;
}
interface InjectDataQaOptions {
  disabledStyledComponent?: boolean;
  disabledReactFunctionComponent?: boolean;
  styledComponentNames?: string[];
}
interface PluginTransformContext {
  parse: (input: string, options?: ParseOptions) => BaseNode;
  warn: (message: string) => void;
}
interface InjectDataQaPlugin {
  name: string;
  options?: (this: PluginTransformContext, options: Record<string, any>) => Record<string, any> | void;
  transform?: (this: PluginTransformContext, code: string, id: string) => null | {
    code: string;
    map?: unknown;
  };
}
//#endregion
export { FormatType, InjectDataQaOptions, InjectDataQaParams, InjectDataQaPlugin, PluginTransformContext };