export type DifficultyLabel = 'Easy' | 'Medium' | 'Hard';
/**
 * Extract the category from a labels array, or undefined when not present.
 * If multiple `category:` labels are present, the first one wins.
 */
export declare function getCategoryFromLabels(labels?: string[]): string | undefined;
/**
 * Extract the difficulty from a labels array, or undefined when not present.
 * Values are normalized to the canonical `Easy | Medium | Hard` form when
 * possible; non-canonical values are returned as-is.
 */
export declare function getDifficultyFromLabels(labels?: string[]): DifficultyLabel | string | undefined;
/**
 * Extract the subcategory from a labels array, or undefined when not present.
 */
export declare function getSubcategoryFromLabels(labels?: string[]): string | undefined;
/**
 * Build a labels array from the legacy top-level `category` / `difficulty`
 * fields, preserving any existing labels and refusing to add a duplicate
 * facet (e.g. won't add `category:RCA` if a `category:` label is already
 * present).
 */
export declare function migrateLegacyFieldsToLabels(input: {
    category?: string;
    difficulty?: string;
    subcategory?: string;
    labels?: string[];
}): string[];
/**
 * Returns true when the labels array contains a structured facet for the
 * given prefix. Useful in migrations to avoid double-applying.
 */
export declare function hasLabelPrefix(labels: string[] | undefined, prefix: string): boolean;
//# sourceMappingURL=testCaseLabels.d.ts.map