import { type AbstractMixable, type AnyValue, type Model, type OrderingCallback } from '../Contracts';
import type AvonRequest from '../Http/Requests/AvonRequest';
import type { Ordering } from '../Orderings';
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.
     */
    orderableCallback?: OrderingCallback;
    /**
     * Apply the order to the given query.
     */
    applyOrdering(request: AvonRequest, queryBuilder: Repository<Model>, value: AnyValue): void;
    /**
     * Make the field order.
     */
    resolveOrdering(request: AvonRequest): Ordering | undefined;
    /**
     * The callback used to determine if the field is orderable.
     */
    orderable(callback?: OrderingCallback): any;
    /**
     * Define the default orderable callback.
     */
    defaultOrderingCallback(): OrderingCallback;
    /**
     * Make the field order.
     */
    makeOrdering(request: AvonRequest): Ordering;
    /**
     * Define orderable attribute.
     */
    orderableAttribute(request: AvonRequest): string;
}) & T;
export default _default;
