import { type AbstractMixable, type AnyValue, type FilterableCallback, type Model } from '../Contracts';
import type { Filter } from '../Filters';
import type AvonRequest from '../Http/Requests/AvonRequest';
import type { Repository } from '../Repositories';
declare const _default: <T extends AbstractMixable = AbstractMixable>(Parent: T) => (abstract new (...args: import("../Contracts").Args) => {
    /**
     * The callback to be used for the field's default value.
     */
    filterableCallback?: FilterableCallback | boolean;
    /**
     * Apply the filter to the given query.
     */
    applyFilter(request: AvonRequest, queryBuilder: Repository<Model>, value: AnyValue): Promise<void>;
    /**
     * Make the field filter.
     */
    resolveFilter(request: AvonRequest): Filter | undefined;
    /**
     * The callback used to determine if the field is filterable.
     */
    filterable(callback?: FilterableCallback | boolean): any;
    /**
     * Make the field filter.
     */
    makeFilter(request: AvonRequest): Filter;
    /**
     * Define filterable attribute.
     */
    filterableAttribute(request: AvonRequest): string;
}) & T;
export default _default;
