declare type EventType = "success" | "warning" | "failure"; export interface IResultEvent { type: EventType; value: string; } export interface IResult { readonly reason?: R; readonly value: T; readonly events: IResultEvent[]; addSuccessEvent: (msg: string) => void; addWarningEvent: (msg: string) => void; addFailureEvent: (msg: string) => void; } export declare class Success implements IResult { readonly reason?: R; readonly value: T; readonly events: IResultEvent[]; constructor(value: T, reason?: R); addSuccessEvent(event: string): void; addWarningEvent(event: string): void; addFailureEvent(event: string): void; } export declare class Failure implements IResult { readonly reason: R; readonly value: T; readonly events: IResultEvent[]; constructor(value: T, reason: R); addSuccessEvent(event: string): void; addWarningEvent(event: string): void; addFailureEvent(event: string): void; } export {};