// Type definitions for mpromise 0.5.4
// Project: https://github.com/aheckmann/mpromise
// Definitions by: Seulgi Kim
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module "mpromise" {
interface IFulfillFunction {
(...args: F[]): void;
(arg: F): void;
}
interface IRejectFunction {
(err: R): void;
}
interface IResolveFunction {
(err: R, ...args: F[]): void;
(err: R, arg: F): void;
}
class Promise {
constructor(fn?: IResolveFunction);
static FAILURE: string;
static SUCCESS: string;
fulfill(...args: F[]): Promise;
fulfill(arg: F): Promise;
reject(reason: R): Promise;
resolve(reason: R, ...args: F[]): Promise;
resolve(reason: R, arg: F): Promise;
onFulfill(callback: IFulfillFunction): Promise;
onReject(callback: IRejectFunction): Promise;
onResolve(callback: IResolveFunction): Promise;
then(onFulfilled: IFulfillFunction, onRejected?: IRejectFunction): Promise;
end(): void;
chain(promise: Promise): Promise;
}
export = Promise;
}