import { FilterLink } from '../filter/filter-link';
import { Link } from './link';
import type { EntityBase } from '../entity-base';
import type { Orderable } from '../order';
import type { Filterable } from '../filter';
import type { DeSerializers } from '../de-serializers';
import type { EntityApi, EntityType } from '../entity-api';
/**
 * @param filters - filters
 * @returns filtered list
 * @internal
 */
export declare function toFilterableList<EntityT extends EntityBase, DeSerializersT extends DeSerializers, LinkedEntityApiT extends EntityApi<EntityBase, DeSerializersT>>(filters: Filterable<EntityT, DeSerializersT, LinkedEntityApiT>[]): Filterable<EntityT, DeSerializersT, LinkedEntityApiT>[];
/**
 * Represents a one to many relation for OData v4 entities.
 * For OData v2 entities the {@link Link} is used to represent one to many relation.
 * See {@link Link} for more information.
 */
export declare class OneToManyLink<EntityT extends EntityBase, DeSerializersT extends DeSerializers, LinkedEntityApiT extends EntityApi<EntityBase, DeSerializersT>> extends Link<EntityT, DeSerializersT, LinkedEntityApiT> {
    _filters: FilterLink<EntityT, DeSerializersT, LinkedEntityApiT>;
    _orderBy: Orderable<EntityType<LinkedEntityApiT>>[];
    _top: number;
    _skip: number;
    clone(): this;
    /**
     * Create filter statements to be applied to the OData request based on the linked entity values.
     * @param expressions - Filters based on the linked entity.
     * @returns Newly created `FilterLink`.
     */
    filter(...expressions: (Filterable<EntityType<LinkedEntityApiT>, DeSerializersT> | OneToManyLink<EntityType<LinkedEntityApiT>, DeSerializersT, EntityApi<EntityBase, DeSerializersT>>)[]): this;
    /**
     * Add order-by statements to the request.
     * @param orderBy - OrderBy statements to order the response by.
     * @returns The request builder itself, to facilitate method chaining.
     */
    orderBy(...orderBy: Orderable<EntityType<LinkedEntityApiT>>[]): this;
    /**
     * Number of returned entities.
     * @param top - Maximum number of entities to return in the response. Can be less, if less entities match the request.
     * @returns The request builder itself, to facilitate method chaining.
     */
    top(top: number): this;
    /**
     * Skip number of entities.
     * @param skip - Number of matching entities to skip. Useful for paging.
     * @returns The request builder itself, to facilitate method chaining.
     */
    skip(skip: number): this;
}
