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