import type { HotInstance } from '../../../core/types'; import type { ColumnConditions } from '../../filters/filters'; /** * Shape of a single column entry in the DataProvider server-side filter payload. * Uses `prop` (column data key) instead of a numeric column index. */ interface FilterPayloadColumn { prop: string; operation: string; conditions: { name?: string; args: unknown[]; }[]; } /** * Deep-clones DataProvider server filter payload for safe return from getters (mutations do not affect plugin state). * * @param {Array<{ prop: string, operation: string, conditions: Array<{ name?: string, args: Array<*> }> }>|null} filters Server filter columns from query parameters, or `null`. * @returns {Array<{ prop: string, operation: string, conditions: Array<{ name?: string, args: Array<*> }> }>|null} */ export declare function cloneDataProviderFiltersPayload(filters: FilterPayloadColumn[] | null): FilterPayloadColumn[] | null; /** * Converts Filters plugin condition stack (physical column indexes) to query filters (prop = column data key). * Expects the same shape as [[Filters#exportConditions]] returns. * * @param {Core} hot Handsontable instance. * @param {Array} conditionsStack Array of { column, operation, conditions } (same shape as exportConditions). * @returns {Array<{ prop: string, operation: 'conjunction'|'disjunction'|'disjunctionWithExtraCondition', conditions: Array<{ name?: string, args: Array<*> }> }>|null} Payload or null when empty. */ export declare function conditionsStackToFiltersPayload(hot: HotInstance, conditionsStack: ColumnConditions[]): FilterPayloadColumn[] | null; /** * Converts DataProvider `fetchRows` filter payload (prop keys) back to a Filters plugin condition stack (physical columns). * Inverse of [[conditionsStackToFiltersPayload]] for restoring UI state after a successful fetch. * * @param {object} hot Handsontable instance. * @param {Array<{ prop: string, operation: string, conditions: Array<{ name?: string, args: Array<*> }> }>|null} filtersPayload Filters from [[DataProviderQueryParameters]], or `null` when no column filters. * @returns {Array<{ column: number, operation: string, conditions: Array<{ name: string, args: Array<*> }> }>} Shape accepted by [[Filters#importConditions]]. */ export declare function filtersPayloadToConditionsStack(hot: HotInstance, filtersPayload: FilterPayloadColumn[] | null | undefined): ColumnConditions[]; /** * When `getFetchFn()` returns a function and the Filters plugin is enabled, sets `queryParameters.filters` from * [[Filters#exportConditions]] (same mapping as server-side `beforeFilter`). * * @param {Core} hot Handsontable instance. * @param {{ filters: * }} queryParameters Target object (mutated). * @param {function(): Function|undefined} getFetchFn Returns `fetchRows` or a falsy value when not configured. * @returns {void} */ export declare function applyFiltersFromFiltersPluginToQueryParameters(hot: HotInstance, queryParameters: { filters: FilterPayloadColumn[] | null; }, getFetchFn: () => Function | undefined): void; /** * Server-backed filter: write query `filters`, reset page, refetch; return false so Filters skip client-side row trimming. * * @param {object} ctx Hook context. * @param {Core} ctx.hot Handsontable instance. * @param {function(): boolean} ctx.hasFetchFn Whether `fetchRows` is configured. * @param {function(Array|null): void} ctx.applyFiltersAndRefetch Receives payload from [[conditionsStackToFiltersPayload]] (or null), updates query and refetches. * @param {Array} conditionsStack Exported filter conditions (column = physical index). * @returns {boolean|void} False when the server path handled the filter. */ export declare function handleBeforeFilterForServer(ctx: { hot: HotInstance; hasFetchFn: () => boolean; applyFiltersAndRefetch: (payload: FilterPayloadColumn[] | null) => void; }, conditionsStack: unknown[]): boolean | void; export {};