import { ODataQueryProvider } from "./ODataQueryProvider";
import type { Expression } from "./Expression";
import type { ODataResponse } from "./ODataResponse";
import type { ODataV4QuerySegments } from "./ODataV4ExpressionVisitor";
import type { ExcludeProperties } from "./ExcludeProperties";
export interface ODataV4Options {
    requestInit: () => RequestInit | Promise<RequestInit>;
}
/**
 * A class used to generate queries that will ultimately be translated into ODataV4 queries.
 * Consumed by ODataContext classes; can also be used directly in lieu of creating an ODataContext class.
 */
export declare class ODataV4QueryProvider extends ODataQueryProvider {
    private readonly path;
    private readonly options?;
    constructor(path: string, options?: Partial<ODataV4Options> | undefined);
    static createQuery<T>(path: string, options?: Partial<ODataV4Options>): import("./ODataQuery").ODataQuery<T, ExcludeProperties<T, []>>;
    private sendRequest;
    executeQueryAsync<T extends ODataResponse>(expression?: Expression): Promise<T>;
    executeQueryAsync<T extends ODataResponse>(odataUrl: string): Promise<T>;
    executeRequestAsync(expression?: Expression): Promise<Response>;
    buildQuery(expression?: Expression): string;
    build(expression?: Expression): ODataV4QuerySegments;
    private prepareExpression;
    private generateUrl;
    private buildQueryString;
}
