import { BaseODataFilter } from "./filters/base-odata-filter";
import { ODataOrderBy } from "./odataorderby";
/**
 * Configuration object for api requests.
 */
export interface ODataConfig {
    /**
     * Number of records to return
     */
    top?: number;
    /**
     * Number of records to skip
     */
    skip?: number;
    count?: boolean;
    /**
     * {@link ODataOrderBy} Properties that data can be ordered by
     */
    orderBys?: ODataOrderBy[];
    /**
     * {@link BaseODataFilter} data filters
     */
    filters?: BaseODataFilter[];
    /**
     * Add expanded properties to include related resources in the response
     *
     * Supports both direct (first-level) relationships and nested relationships.
     *
     * @example
     * expands: ["person", "job", "comments", "report/reportChartSeriesList"]
     */
    expands?: string[];
    /**
     * Limit selected properties to return only specific fields
     *
     * Can specify properties of the root object or properties of related resources
     * using the format "relationName/propertyName".
     * Only supports properties directly available on the root object or its
     * first-level relationships.
     *
     * @example
     * select: ["id", "name", "person/id", "person/name"]
     */
    selects?: string[];
}
export declare function createODataConfig(filters?: BaseODataFilter[], orderBys?: ODataOrderBy[], selects?: string[]): ODataConfig;
/** @monorepo-internal */
export declare function addPaging(oDataConfig: ODataConfig, top: number, skip?: number): {
    /**
     * Number of records to return
     */
    top?: number;
    /**
     * Number of records to skip
     */
    skip?: number;
    count?: boolean;
    /**
     * {@link ODataOrderBy} Properties that data can be ordered by
     */
    orderBys?: ODataOrderBy[];
    /**
     * {@link BaseODataFilter} data filters
     */
    filters?: BaseODataFilter[];
    /**
     * Add expanded properties to include related resources in the response
     *
     * Supports both direct (first-level) relationships and nested relationships.
     *
     * @example
     * expands: ["person", "job", "comments", "report/reportChartSeriesList"]
     */
    expands?: string[];
    /**
     * Limit selected properties to return only specific fields
     *
     * Can specify properties of the root object or properties of related resources
     * using the format "relationName/propertyName".
     * Only supports properties directly available on the root object or its
     * first-level relationships.
     *
     * @example
     * select: ["id", "name", "person/id", "person/name"]
     */
    selects?: string[];
};
