import { LucidModel, ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';
import '@akago/vine-lucid';
import { AKModel } from '../../model.js';
import { QueryTransformer } from '../fetch.js';
export declare const LIST_FILTER_SEPARATOR = "__";
export declare abstract class AKListFilter {
    abstract matches(qsFilters: Record<string, any>): boolean;
    abstract apply<Model extends LucidModel, Q extends ModelQueryBuilderContract<Model, InstanceType<Model>>>(dbQuery: Q, qsFilters: Record<string, any>, model: Model): void;
    abstract clear(qsFilters: Record<string, any>): void;
    static parseQueryString<M extends typeof AKModel>(queryString: Record<string, any>, filters: AKListFilter[], model: M, allowedFields: (keyof InstanceType<M>['$attributes'])[]): QueryTransformer<M>;
}
export type SingleFieldQueryOperator = <Q extends ModelQueryBuilderContract<Model, InstanceType<Model>>, Model extends LucidModel>(q: Q, field: string, value: any, model: Model) => Q;
