import type { OpenAPIV3 } from 'openapi-types';
import { type AnyValue, Direction, type HasSchema, type Model, type OpenApiSchema, type ParameterSerializable, type SeeCallback } from '../Contracts';
import type AvonRequest from '../Http/Requests/AvonRequest';
import QueryParameter from '../Http/Requests/QueryParameter';
import type { Repository } from '../Repositories';
declare const Ordering_base: (abstract new (...args: import("../Contracts").Args) => {
    seeCallback: SeeCallback;
    authorizedToSee(request: AvonRequest): boolean;
    canSee(callback: SeeCallback): any;
}) & typeof QueryParameter;
export default abstract class Ordering extends Ordering_base implements ParameterSerializable, HasSchema {
    /**
     * Get the query parameter key for filter.
     */
    key(): string;
    /**
     * Apply the filter into the given repository.
     */
    abstract apply(request: AvonRequest, repository: Repository<Model>, direction: Direction): AnyValue;
    /**
     * Serialize parameters for schema.
     */
    serializeParameters(request: AvonRequest): OpenAPIV3.ParameterObject[];
    /**
     * Get the swagger-ui schema.
     */
    schema(request: AvonRequest): OpenApiSchema;
    canSee(callback: SeeCallback): this;
}
export {};
