import { Observable, OperatorFunction } from "rxjs";
import { Action } from "ts-action";
export declare type ActConfig<InputAction extends Action, OutputAction extends Action, ErrorAction extends Action, CompleteAction extends Action, UnsubscribeAction extends Action> = {
    complete?: (count: number, action: InputAction) => CompleteAction;
    error: (error: any, action: InputAction) => ErrorAction;
    operator?: <I, O>(project: (input: I, index: number) => Observable<O>) => OperatorFunction<I, O>;
    project: (action: InputAction, index: number) => Observable<OutputAction>;
    unsubscribe?: (count: number, action: InputAction) => UnsubscribeAction;
};
export declare function act<InputAction extends Action, OutputAction extends Action, ErrorAction extends Action>(project: (action: InputAction, index: number) => Observable<OutputAction>, error: (error: any, action: InputAction) => ErrorAction): (source: Observable<InputAction>) => Observable<OutputAction | ErrorAction>;
export declare function act<InputAction extends Action, OutputAction extends Action, ErrorAction extends Action, CompleteAction extends Action = never, UnsubscribeAction extends Action = never>(config: ActConfig<InputAction, OutputAction, ErrorAction, CompleteAction, UnsubscribeAction>): (source: Observable<InputAction>) => Observable<OutputAction | ErrorAction | CompleteAction | UnsubscribeAction>;
