/// <reference types="node" />
import Module from "module";
/** Try to make the string follow the snake case pattern (e.g. "SOME_ELEMENT") */
type IDENTIFIER = string;
type PossibleT = (IDENTIFIER | readonly [id: IDENTIFIER, func: <X>(n: X) => string])[];
type T<IDS extends PossibleT> = {
    [k in Extract<IDS[number], string>]: k;
} & {
    [k in Exclude<IDS[number], Extract<IDS[number], string>>[0]]: Exclude<IDS[number], Extract<IDS[number], string>>[1];
};
/**
 * Creates an data-testid map generator instance based on the module name or arbitrary id
 * @returns A function to set the IDs that this created instance will provide
 */
/**
 * Creates a data-testid map generator for use in end-to-end tests.
 */
export declare function testIDFactory(moduleOrId: Pick<Module, "id"> | string): <const IDS extends PossibleT>(idsArr: IDS) => T<IDS>;
export {};
