/**
 * Runs the normalizeRansackParams helper.
 * @param {RansackModelClass} modelClass - Model class.
 * @param {Record<string, ?>} params - Ransack-style params hash.
 * @returns {RansackCondition[]} - Normalized conditions.
 */
export function normalizeRansackParams(modelClass: RansackModelClass, params: Record<string, unknown>): RansackCondition[];
/**
 * Runs the normalizeRansackGroup helper.
 * @param {RansackModelClass} modelClass - Model class.
 * @param {Record<string, ?>} params - Ransack-style params hash.
 * @returns {RansackGroup} - Normalized group.
 */
export function normalizeRansackGroup(modelClass: RansackModelClass, params: Record<string, unknown>): RansackGroup;
/**
 * RansackSort type.
 * @typedef {object} RansackSort
 * @property {string} attribute - Resolved attribute name.
 * @property {"asc" | "desc"} direction - Sort direction.
 */
/**
 * Parses and validates a ransack `s` sort string against model attributes.
 * @param {RansackModelClass} modelClass - Model class for attribute validation.
 * @param {string} sortString - Ransack sort string (e.g., "name asc" or "name asc, createdAt desc").
 * @returns {RansackSort[]} - Validated sort definitions.
 */
export function parseRansackSort(modelClass: RansackModelClass, sortString: string): RansackSort[];
/**
 * RansackSort type.
 */
export type RansackSort = {
    /**
     * - Resolved attribute name.
     */
    attribute: string;
    /**
     * - Sort direction.
     */
    direction: "asc" | "desc";
};
/**
 * RansackPredicate type.
 */
export type RansackPredicate = "cont" | "end" | "eq" | "gt" | "gteq" | "in" | "lt" | "lteq" | "not_eq" | "not_in" | "null" | "start";
/**
 * RansackCombinator type.
 */
export type RansackCombinator = "and" | "or";
/**
 * RansackModelClass type.
 */
export type RansackModelClass = typeof import("../database/record/index.js").default | typeof import("../frontend-models/base.js").default;
/**
 * RansackAttribute type.
 */
export type RansackAttribute = {
    /**
     * - Resolved attribute name.
     */
    attributeName: string;
    /**
     * - Resolved relationship path.
     */
    path: string[];
};
/**
 * RansackCondition type.
 */
export type RansackCondition = {
    /**
     * - Resolved attributes to test.
     */
    attributes: RansackAttribute[];
    /**
     * - How multiple attributes are combined.
     */
    combinator: RansackCombinator;
    /**
     * - Parsed Ransack predicate.
     */
    predicate: RansackPredicate;
    /**
     * - Normalized value.
     */
    value: unknown;
};
/**
 * RansackGroup type.
 */
export type RansackGroup = {
    /**
     * - How entries inside this group are combined.
     */
    combinator: RansackCombinator;
    /**
     * - Conditions in this group.
     */
    conditions: RansackCondition[];
    /**
     * - Nested groups.
     */
    groupings: RansackGroup[];
};
//# sourceMappingURL=ransack.d.ts.map