import { FailureReason, IFailureEvent, ISuccessEvent } from '../Policy'; export declare type FailureOrSuccess = FailureReason | { success: R; }; export declare const returnOrThrow: (failure: FailureOrSuccess) => R; export declare class ExecuteWrapper { private readonly errorFilter; private readonly resultFilter; private readonly successEmitter; private readonly failureEmitter; readonly onSuccess: import("./Event").Event; readonly onFailure: import("./Event").Event; constructor(errorFilter?: (error: Error) => boolean, resultFilter?: (result: unknown) => boolean); derive(): ExecuteWrapper; invoke(fn: (...args: T) => PromiseLike | R, ...args: T): Promise>; }