import { FilterTextMask, ConditionalRule } from './table-properties-types.js';

/**
 * Conditional-formatting matchers shared by `DataTable` cells,
 * `data-row-list` rows, and board card backgrounds. Keeping the logic
 * here ensures the table grid and the list / board derivatives all
 * paint the same row with the same rule (no UI drift between views).
 *
 * `columns` is optional and only used when the consumer needs to:
 *   - read from a different row key than the rule's `fieldKey`
 *     (`sortKey`-aliased columns), or
 *   - apply a `textMask` (phone / zip) so "contains 555" matches the
 *     raw digits of "(415) 555-0100".
 */
type ConditionalColumnHint = {
    key: string;
    sortKey?: string;
    filter?: {
        type?: string;
        textMask?: FilterTextMask;
    };
};
/** Whether a conditional rule matches a row (same logic as DataTable cells). */
declare function conditionalRuleMatchesRow<T extends Record<string, unknown>>(row: T, rule: ConditionalRule, columns?: ConditionalColumnHint[]): boolean;
/** First matching conditional rule background for a row (list/board row tint). */
declare function getConditionalRowBackground<T extends Record<string, unknown>>(row: T, rules: ConditionalRule[] | undefined, columns?: ConditionalColumnHint[]): string | undefined;
/** Background for one table cell from conditional rules on that column. */
declare function getConditionalCellBackground<T extends Record<string, unknown>>(row: T, colKey: string, rules: ConditionalRule[] | undefined, columns?: ConditionalColumnHint[]): string | undefined;

export { type ConditionalColumnHint, conditionalRuleMatchesRow, getConditionalCellBackground, getConditionalRowBackground };
