import { ApiClientBase } from "./api-client-base";
import { httpRestVerb, IRepoOptions, IBetterLogger } from "@codiac.io/codiac-common";
import { Result } from "@codiac.io/codiac-common/contracts";
export type CrudEndpointInfo = {
    route: string;
    verb: httpRestVerb;
    entityTypeName: string;
    op: string;
    isMany: boolean;
};
export declare abstract class ApiCrudClientBase extends ApiClientBase {
    authToken?: string | undefined;
    constructor(logger: IBetterLogger, apiRootUrl?: string, authToken?: string | undefined);
    /** TODO: Move this to ApiClientBase */
    headersFrom(options: IRepoOptions | undefined, existingHeaders?: {
        [key: string]: string;
    } | undefined): {
        [key: string]: string;
    } | undefined;
    tryMakeRestCall<TReq extends Object, TRes extends Result>(ep: CrudEndpointInfo, request: TReq, options?: IRepoOptions): Promise<TRes>;
    makeAnyRestCall<TReq extends Object, TRes>(ep: CrudEndpointInfo, request: TReq, options?: IRepoOptions): Promise<TRes>;
}
