import { Observable } from 'rxjs';
import { ServiceHttpErrorCodes } from '../../../../common';
import { BaseActionWithPayload } from '../../../ngrx';
import { ComponentService } from '../../services';
import { ComponentModel, ComponentState } from '../../model';
/**
 * ** RXJS Operator that fetch Component Model from Store using provided ComponentService.
 *
 *      - Returns Observable<ComponentModel>
 */
export declare const getModel: (componentService: ComponentService) => (source$: Observable<BaseActionWithPayload<ComponentState>>) => Observable<ComponentModel>;
/**
 * ** RXJS Operator that fetch Component Model from Store using provided ComponentService and consume task from Action.
 *
 *      - Returns Observable<[ComponentModel, string]>
 */
export declare const getModelAndTask: (componentService: ComponentService) => (source$: Observable<BaseActionWithPayload<ComponentState>>) => Observable<[ComponentModel, string]>;
export declare type TaskID = string;
export declare type ObjectUUID = string;
/**
 * ** Handle Error from some Action, ideal to use for API response.
 *
 *      - catch error if happened
 *      - auto-process from provided error, serviceHttpErrorCodes and objectUUID
 *      - append it to Model
 *      - append task to model
 *      - set status to FAILED
 *      - create instance of {@link ComponentFailed} and return stream in success state using {@link of} rjxs operator
 *
 *      - Factory callbacks should return tuple of [Component Model, Task Id, Object UUID, Error records codes from API service]
 */
export declare const handleActionError: (paramFactory: () => [ComponentModel, TaskID, ObjectUUID, Record<keyof ServiceHttpErrorCodes, string>]) => (source$: Observable<BaseActionWithPayload<ComponentState>>) => Observable<BaseActionWithPayload<ComponentState>>;
