import { AuthorizationParam, BinaryContentType, ContentType, HeaderFactories, HeadersParam, HttpResponse, IModelsOriginalError, PreferReturn, RestClient, SupportedGetResponseTypes } from "../types";
import { CollectionResponse } from "./ApiResponseInterfaces";
import { ResponseInfo } from "./IModelsErrorParser";
import { EntityCollectionPage } from "./UtilityTypes";
type CommonRequestParams = AuthorizationParam & HeadersParam;
/**
 * Function that is called if the HTTP request fails and which returns an error that will be thrown by one of the
 * methods in {@link RestClient}.
 */
export type ParseErrorFunc = (response: ResponseInfo, originalError: IModelsOriginalError) => Error;
export type SendGetRequestParams = CommonRequestParams & {
    url: string;
    preferReturn?: PreferReturn;
    responseType?: SupportedGetResponseTypes;
};
export type SendPostRequestParams = CommonRequestParams & {
    url: string;
    body: object | undefined;
};
export type SendPutRequestParams = CommonRequestParams & {
    url: string;
    contentType?: BinaryContentType;
    body: Uint8Array;
};
export type SendPatchRequestParams = SendPostRequestParams;
export type SendDeleteRequestParams = CommonRequestParams & {
    url: string;
};
export interface OperationsBaseOptions {
    restClient: RestClient;
    api: {
        version: string;
    };
    headers: HeaderFactories;
    parseErrorFunc: ParseErrorFunc;
}
export declare class OperationsBase<TOptions extends OperationsBaseOptions> {
    protected _options: TOptions;
    constructor(_options: TOptions);
    protected sendGetRequest<TBody>(params: SendGetRequestParams & {
        responseType?: ContentType.Json;
    }): Promise<HttpResponse<TBody>>;
    protected sendGetRequest(params: SendGetRequestParams & {
        responseType: ContentType.Png;
    }): Promise<HttpResponse<Uint8Array>>;
    protected sendPostRequest<TBody>(params: SendPostRequestParams): Promise<HttpResponse<TBody>>;
    protected sendPutRequest<TBody>(params: SendPutRequestParams): Promise<HttpResponse<TBody>>;
    protected sendPatchRequest<TBody>(params: SendPatchRequestParams): Promise<HttpResponse<TBody>>;
    protected sendDeleteRequest<TBody>(params: SendDeleteRequestParams): Promise<HttpResponse<TBody>>;
    protected getEntityCollectionPage<TEntity, TResponse extends CollectionResponse>(params: CommonRequestParams & {
        url: string;
        preferReturn?: PreferReturn;
        entityCollectionAccessor: (response: HttpResponse<TResponse>) => TEntity[];
    }): Promise<EntityCollectionPage<TEntity>>;
    private executeRequest;
    private resolveHeaderValue;
    private addOrUpdateHeaders;
    private formHeaders;
}
export {};
//# sourceMappingURL=OperationsBase.d.ts.map