import { ActionResult } from "./ActionResult";
export declare type TOp<T> = (p: T) => Promise<T>;
export declare type TAction<T> = (t: T) => Promise<ActionResult<T>>;
export declare type Chainable<T> = TAction<T> | TOp<T>;
/**
 * Chain the actions, in the given order
 * @param {ProjectEditor} steps
 * @return {ProjectEditor}
 */
export declare function actionChain<T>(...steps: Array<Chainable<T>>): TAction<T>;
export declare function actionChainWithCombiner<T, R extends ActionResult<T> = ActionResult<T>>(combiner: (a: R, b: R) => R, ...steps: Array<Chainable<T>>): TAction<T>;
/**
 * Useful starting point for chaining
 */
export declare const NoAction: TAction<any>;
//# sourceMappingURL=actionOps.d.ts.map