export declare enum PromiseState { None = 0, Resolved = 1, Rejected = 2 } export interface IPromise { result(): PromiseResult; continueWith(continuationCallback: (promiseResult: PromiseResult) => TContinuationResult): IPromise; continueWithPromise(continuationCallback: (promiseResult: PromiseResult) => IPromise): IPromise; onSuccessContinueWith(continuationCallback: (result: T) => TContinuationResult): IPromise; onSuccessContinueWithPromise(continuationCallback: (result: T) => IPromise): IPromise; on(successCallback: (result: T) => void, errorCallback: (error: string) => void): IPromise; finally(callback: () => void): IPromise; } export interface IDeferred { state(): PromiseState; promise(): IPromise; 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); readonly isCompleted: boolean; readonly isError: boolean; readonly error: string; readonly 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 PromiseHelper { static whenAll: (promises: Promise[]) => Promise; static fromResult: (result: TResult) => Promise; static fromError: (error: string) => Promise; } export declare class Promise implements IPromise { private privSink; constructor(sink: Sink); result: () => PromiseResult; continueWith: (continuationCallback: (promiseResult: PromiseResult) => TContinuationResult) => Promise; onSuccessContinueWith: (continuationCallback: (result: T) => TContinuationResult) => Promise; continueWithPromise: (continuationCallback: (promiseResult: PromiseResult) => Promise) => Promise; onSuccessContinueWithPromise: (continuationCallback: (result: T) => Promise) => Promise; on: (successCallback: (result: T) => void, errorCallback: (error: string) => void) => Promise; finally: (callback: () => void) => Promise; } export declare class Deferred implements IDeferred { private privPromise; private privSink; constructor(); state: () => PromiseState; promise: () => Promise; resolve: (result: T) => Deferred; reject: (error: string) => Deferred; } export declare class Sink { private privState; private privPromiseResult; private privPromiseResultEvents; private privSuccessHandlers; private privErrorHandlers; constructor(); readonly state: PromiseState; readonly 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; }