declare module "layup-id-injector" {
  /**
   * Injects or removes data-testid attributes from a React component file
   * @param filePath The path to the file to process
   * @returns boolean indicating whether the file was modified
   */
  export function injectIdsInFile(filePath: string): boolean;

  /**
   * Runs the ID injector on all matching files in the project
   * @param options Optional configuration options
   * @param customElements Optional array of custom component names to process
   * @param ignoreDefaults When true, ignores default HTML elements (requires customElements to be provided)
   * @param ignorePath Optional path to ignore when processing files
   * @param remove When true, removes data-testid attributes instead of adding them
   */
  export function run(options?: { 
    staged?: boolean;
    path?: string;
    customElements?: string[];
    ignoreDefaults?: boolean;
    ignorePath?: string;
    remove?: boolean;
  }): Promise<void>;
  
  /**
   * Sets the custom elements to be processed by the injector
   * @param elements Array of custom component names to process
   */
  export function setCustomElements(elements: string[]): void;
  
  /**
   * Sets whether to ignore default HTML elements (requires custom elements to be set)
   * @param ignore Whether to ignore default HTML elements
   */
  export function setIgnoreDefaults(ignore: boolean): void;
  
  /**
   * Sets paths to ignore when processing files
   * @param paths Array of paths to ignore
   */
  export function setIgnorePaths(paths: string[]): void;
  
  /**
   * Sets whether to remove data-testid attributes instead of adding them
   * @param remove Whether to remove data-testid attributes
   */
  export function setRemoveTestIds(remove: boolean): void;
}
