export declare enum PromiseState { None = 0, Resolved = 1, Rejected = 2 } export interface IDeferred { readonly promise: Promise; resolve(result: T): IDeferred; reject(error: string): IDeferred; } export declare class PromiseResult { protected privIsCompleted: boolean; protected privIsError: boolean; protected privError: string; protected privResult: T; constructor(promiseResultEventSource: PromiseResultEventSource); get isCompleted(): boolean; get isError(): boolean; get error(): string; get result(): T; throwIfError: () => void; } export declare class PromiseResultEventSource { private privOnSetResult; private privOnSetError; setResult: (result: T) => void; setError: (error: string) => void; on: (onSetResult: (result: T) => void, onSetError: (error: string) => void) => void; } export declare class Deferred implements IDeferred { private privPromise; private privResolve; private privReject; constructor(); get promise(): Promise; resolve: (result: T | Promise) => Deferred; reject: (error: string) => Deferred; } export declare class Sink { private privState; private privPromiseResult; private privPromiseResultEvents; private privSuccessHandlers; private privErrorHandlers; constructor(); get state(): PromiseState; get result(): PromiseResult; resolve(result: T): void; reject(error: string): void; on(successCallback: (result: T) => void, errorCallback: (error: string) => void): void; private executeSuccessCallback; private executeErrorCallback; private detachHandlers; } export declare function marshalPromiseToCallbacks(promise: Promise, cb?: (value: T) => void, err?: (error: string) => void): void;