import type { AccessTokenCallback, AuthorizationParam, PreferReturn } from "./interfaces/CommonInterfaces";
import type { EntityCollectionPage } from "./interfaces/UtilityTypes";
import type { RestClient } from "./rest/RestClient";
declare type SendGetRequestParams = AuthorizationParam & {
    url: string;
    preferReturn?: PreferReturn;
    userMetadata?: boolean;
};
declare type SendPostRequestParams = AuthorizationParam & {
    url: string;
    body: unknown;
};
declare type SendPutRequestParams = AuthorizationParam & {
    url: string;
    body: unknown;
};
declare type SendDeleteRequestParams = AuthorizationParam & {
    url: string;
};
export interface OperationsBaseOptions {
    accessTokenCallback?: AccessTokenCallback;
    restClient: RestClient;
    api: {
        version: string;
    };
}
export declare class OperationsBase<TOptions extends OperationsBaseOptions> {
    protected _options: TOptions;
    constructor(_options: TOptions);
    protected sendGetRequest<TResponse>(params: SendGetRequestParams): Promise<TResponse>;
    protected sendPostRequest<TResponse>(params: SendPostRequestParams): Promise<TResponse>;
    protected sendPutRequest<TResponse>(params: SendPutRequestParams): Promise<TResponse>;
    protected sendDeleteRequest<TResponse>(params: SendDeleteRequestParams): Promise<TResponse>;
    protected getEntityCollectionPage<TEntity>(params: AuthorizationParam & {
        url: string;
        preferReturn?: PreferReturn;
        entityCollectionAccessor: (response: unknown) => TEntity[];
        userMetadata: boolean;
    }): Promise<EntityCollectionPage<TEntity>>;
    private formHeaders;
}
export {};
//# sourceMappingURL=OperationsBase.d.ts.map