import { ConditionGroupLogic, ConditionLogic, ConditionParam, Conditional } from '../definitions/shared/conditions';
/**
 * Evaluator for the v2 condition contract.
 *
 * Accepts a `Conditional` (anything with `condition`, `conditionParams`,
 * `features`, or `permissions`) and a data model. Returns true if the
 * element/card should render.
 *
 * Precedence:
 *   1. `condition` function (if provided) — short-circuits everything.
 *   2. `features` / `permissions` — checked against the optional
 *      `availableFeatures` / `availablePermissions` lists in `ctx`.
 *   3. `conditionParams` — every entry must pass (default AND); the
 *      group logic is overridden by `conditionGroupLogic`.
 *
 * `subCondition: true` entries are themselves groups with their own
 * `conditionParams` and `conditionGroupLogic`.
 */
export interface EvaluationContext {
    /** Feature flags currently enabled for the consumer. */
    availableFeatures?: ReadonlyArray<string>;
    /** Permissions held by the current user. */
    availablePermissions?: ReadonlyArray<string>;
}
export declare function shouldRender(cfg: Conditional | undefined, item: Record<string, unknown>, ctx?: EvaluationContext): boolean;
declare function evaluateConditionGroup(params: ReadonlyArray<ConditionParam>, logic: ConditionGroupLogic, item: Record<string, unknown>): boolean;
declare function evaluateCondition(param: ConditionParam, item: Record<string, unknown>): boolean;
declare function applyLogic(logic: ConditionLogic, left: unknown, right: unknown): boolean;
declare function readPath(item: Record<string, unknown>, path: string): unknown;
declare function toNumber(value: unknown): number;
declare function lengthOf(value: unknown): number;
/**
 * Internal exports used by tests and the engine package only.
 */
export declare const __testing: {
    applyLogic: typeof applyLogic;
    evaluateCondition: typeof evaluateCondition;
    evaluateConditionGroup: typeof evaluateConditionGroup;
    lengthOf: typeof lengthOf;
    readPath: typeof readPath;
    toNumber: typeof toNumber;
};
export {};
//# sourceMappingURL=useDisplayConditions.d.ts.map