namespace seekat\API;
-use AsyncInterop\Promise;
-
-interface Future
-{
+interface Future {
/**
* @param callable $onCancel
- * @return mixed Promisor providing a promise() method
+ * @return object Promisor providing a promise() method
+ */
+ function createContext(callable $onCancel = null) : object;
+
+ /**
+ * @return object promise
*/
- function createContext(callable $onCancel = null);
+ function getPromise(object $context) : object;
+
+ function isPromise(object $promise) : bool;
+
+ function cancelPromise(object $promise) : void;
/**
- * @param object $context Promisor
- * @return Promise
+ * @return object promise
*/
- function getPromise($context) : Promise;
+ function handlePromise(object $promise, callable $onResult = null, callable $onError = null) : object;
/**
- * @param Promise $promise
- * @return bool
+ * Create an immediately resolved promise
*/
- function cancelPromise(Promise $promise) : bool;
+ function resolve(mixed $value) : object;
/**
* @param object $context Promisor returned by createContext
- * @param mixed $value
- * @return void
*/
- function onSuccess($context, $value);
+ function resolver(object $context) : \Closure;
/**
- * @param object $context Proisor returned by createContext
- * @param mixed $reason
- * @return void
+ * Create an immediately rejected promise
*/
- function onFailure($context, $reason);
+ function reject(mixed $reason) : object;
/**
* @param object $context Promisor returned by createContext
+ */
+ function rejecter(object $context) : \Closure;
+
+ /**
* @param array $promises
- * @return Promise
+ * @return object promise
+ */
+ function all(array $promises) : object;
+
+ /**
+ *
*/
- function onMultiple($context, array $promises) : Promise;
+ function reducer() : \Closure;
}