import { Constructable, Entity } from '../entity';
import { Selectable } from '../selectable/selectable';
import { Orderable } from '../order/orderable';
import { ODataGetAllRequestConfig } from '../request/odata-get-all-request-config';
import { DestinationOptions, Destination, DestinationNameAndJwt } from '../../connectivity/scp-cf';
import { CountRequestBuilder } from '../request-builder/count-request-builder';
import { EntityDeserializer } from '../entity-deserializer';
import { ResponseDataAccessor } from '../response-data-accessor';
import { GetRequestBuilder } from './get-request-builder-base';
/**
 * Base class for the get all request builders [[GetAllRequestBuilderV2]] and [[GetAllRequestBuilderV4]]
 * @typeparam EntityT - Type of the entity to be requested
 */
export declare abstract class GetAllRequestBuilder<EntityT extends Entity> extends GetRequestBuilder<EntityT, ODataGetAllRequestConfig<EntityT>> {
    readonly entityDeserializer: EntityDeserializer;
    readonly dataAccessor: ResponseDataAccessor;
    /**
     * Creates an instance of GetAllRequestBuilder.
     * @param entityConstructor - Constructor of the entity to create the request for
     * @param getAllRequestConfig - Request config of the get all request.
     */
    constructor(entityConstructor: Constructable<EntityT>, getAllRequestConfig: ODataGetAllRequestConfig<EntityT>, entityDeserializer: EntityDeserializer, dataAccessor: ResponseDataAccessor);
    /**
     * Restrict the response to the given selection of properties in the request.
     * @param selects - Fields to select in the request
     * @returns The request builder itself, to facilitate method chaining
     */
    select(...selects: Selectable<EntityT>[]): this;
    select(selects: Selectable<EntityT>[]): 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<EntityT>[]): this;
    orderBy(...orderBy: Orderable<EntityT>[]): this;
    /**
     * Limit 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;
    /**
     * Count the number of entities.
     * @returns A count request builder for execution
     */
    count(): CountRequestBuilder<EntityT>;
    /**
     * Execute request.
     * @param destination - Destination to execute the request against
     * @param options - Options to employ when fetching destinations
     * @returns A promise resolving to the requested entities
     */
    execute(destination: Destination | DestinationNameAndJwt, options?: DestinationOptions): Promise<EntityT[]>;
}
export { GetAllRequestBuilder as GetAllRequestBuilderBase };
//# sourceMappingURL=get-all-request-builder-base.d.ts.map