import { EventHub } from "../comms/events";
import { Nullable } from "../types";
export declare enum ResourceApiEvent {
    LIST_STARTED = "LIST_STARTED",
    LIST_FINISHED = "LIST_FINISHED",
    LIST_FAILED = "LIST_FAILED",
    CREATE_STARTED = "CREATE_STARTED",
    CREATE_FINISHED = "CREATE_FINISHED",
    CREATE_FAILED = "CREATE_FAILED",
    BATCH_GET_STARTED = "BATCH_GET_STARTED",
    BATCH_GET_FINISHED = "BATCH_GET_FINISHED",
    BATCH_GET_FAILED = "BATCH_GET_FAILED",
    GET_STARTED = "GET_STARTED",
    GET_FINISHED = "GET_FINISHED",
    GET_FAILED = "GET_FAILED",
    DELETE_STARTED = "DELETE_STARTED",
    DELETE_FINISHED = "DELETE_FINISHED",
    DELETE_FAILED = "DELETE_FAILED",
    UPDATE_STARTED = "UPDATE_STARTED",
    UPDATE_FINISHED = "UPDATE_FINISHED",
    UPDATE_FAILED = "UPDATE_FAILED"
}
export declare abstract class ResourceEvApi<ResType> extends EventHub {
    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 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): void;
    batchGet(...resIds: string[]): void;
    get(resId: string, params: any): void;
    list(params: any): void;
    update(resId: string, params: any): void;
    delete(resId: string, params: any): void;
}
