import { StringMap, Nullable } from "../types";
export declare abstract class ResourceApi<ResType> {
    abstract urlForGet(resId: string, params: any): string;
    abstract urlForBatchGet(resIds: string[]): string;
    abstract urlForDelete(resId: string, params: any): string;
    abstract urlForUpdate(resId: string, params: any): string;
    abstract urlForList(params: any): string;
    abstract urlForCreate(params: any): string;
    abstract processListResponse(response: Response): ResType[];
    abstract processBatchGetResponse(response: Response): StringMap<ResType>;
    abstract processGetResponse(response: Response): Nullable<ResType>;
    abstract processDeleteResponse(response: Response): boolean;
    abstract processUpdateResponse(response: Response): ResType;
    abstract processCreateResponse(response: Response): ResType;
    abstract processUpdateParams(params: any): any;
    abstract processCreateParams(params: any): any;
    create(params: any): Promise<ResType>;
    batchGet(...resIds: string[]): Promise<StringMap<ResType>>;
    get(resId: string, params: any): Promise<Nullable<ResType>>;
    list(params: any): Promise<ResType[]>;
    update(resId: string, params: any): Promise<ResType>;
    delete(resId: string, params: any): Promise<boolean>;
}
