import { type AbstractMixable, type MatchedQueryHandlers, type Model, TrashedStatus } from '../Contracts';
import type { Filter } from '../Filters';
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) => {
    /**
     * Search repository for incoming request.
     */
    search(request: AvonRequest, filters?: MatchedQueryHandlers<Filter>, orderings?: MatchedQueryHandlers<Ordering>, withTrashed?: TrashedStatus): Promise<Repository<Model>>;
    /**
     * Initialize the search configuration.
     */
    initializeSearch(request: AvonRequest, filters?: MatchedQueryHandlers<Filter>, orderings?: MatchedQueryHandlers<Ordering>): Promise<Repository<Model>>;
    /**
     * Get query builder.
     */
    queryBuilder(request: AvonRequest): Repository<Model>;
    /**
     * Resolve the resource repository.
     */
    resolveRepository(request: AvonRequest): Repository<Model>;
    /**
     * Apply the soft-delete into given query.
     */
    applySoftDeleteConstraint(queryBuilder: Repository<Model>, withTrashed: TrashedStatus): Repository<Model>;
    /**
     * Apply any applicable filters to the repository.
     */
    applyFilters(request: AvonRequest, queryBuilder: Repository<Model>, filters: MatchedQueryHandlers<Filter>): Promise<Repository<Model>>;
    /**
     * Apply any applicable orders to the repository.
     */
    applyOrderings(request: AvonRequest, queryBuilder: Repository<Model>, orderings?: MatchedQueryHandlers<Ordering>): Promise<Repository<Model>>;
    /**
     * Build a "relatable" query for the given resource.
     *
     * This query determines which instances of the model may be attached to other resources.
     */
    relatableQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
    /**
     * Build an "index" query for the given resource.
     */
    indexQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
    /**
     * Build a "detail" query for the given resource.
     */
    detailQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
    /**
     * Build a "review" query for the given resource.
     */
    reviewQuery(request: AvonRequest, queryBuilder: Repository<Model>): Repository<Model>;
    /**
     * Determine if this resource uses soft deletes.
     */
    softDeletes(): boolean;
    /**
     * Get the repository.
     */
    repository(): Repository<Model>;
}) & T;
export default _default;
