summaryrefslogtreecommitdiff
path: root/vendor/open-telemetry/sdk/Common/Future/FutureInterface.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/open-telemetry/sdk/Common/Future/FutureInterface.php')
-rw-r--r--vendor/open-telemetry/sdk/Common/Future/FutureInterface.php34
1 files changed, 34 insertions, 0 deletions
diff --git a/vendor/open-telemetry/sdk/Common/Future/FutureInterface.php b/vendor/open-telemetry/sdk/Common/Future/FutureInterface.php
new file mode 100644
index 000000000..850699bf6
--- /dev/null
+++ b/vendor/open-telemetry/sdk/Common/Future/FutureInterface.php
@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTelemetry\SDK\Common\Future;
+
+use Closure;
+
+/**
+ * @template-covariant T
+ */
+interface FutureInterface
+{
+ /**
+ * @psalm-return T
+ */
+ public function await();
+
+ /**
+ * @psalm-template U
+ * @psalm-param Closure(T): U $closure
+ * @psalm-return FutureInterface<U>
+ *
+ * @psalm-suppress InvalidTemplateParam
+ */
+ public function map(Closure $closure): FutureInterface;
+
+ /**
+ * @psalm-template U
+ * @psalm-param Closure(\Throwable): U $closure
+ * @psalm-return FutureInterface<T|U>
+ */
+ public function catch(Closure $closure): FutureInterface;
+}