1: <?php declare(strict_types=1);
2:
3: namespace Salient\Contract\Core\Pipeline;
4:
5: /**
6: * @api
7: *
8: * @template TInput
9: * @template TOutput
10: * @template TArgument
11: *
12: * @extends BasePipelineInterface<TInput,TOutput,TArgument>
13: */
14: interface PipelineInterface extends BasePipelineInterface
15: {
16: /**
17: * Pass a payload to the pipeline
18: *
19: * Call {@see EntityPipelineInterface::run()} to run the pipeline and get
20: * the result.
21: *
22: * @template T0
23: * @template T1
24: *
25: * @param T0 $payload
26: * @param T1 $arg
27: * @return EntityPipelineInterface<TInput&T0,TOutput,TArgument&T1>
28: */
29: public function send($payload, $arg = null);
30:
31: /**
32: * Pass a list of payloads to the pipeline
33: *
34: * Call {@see StreamPipelineInterface::start()} to run the pipeline with
35: * each value in `$payload` and get the results via a generator.
36: *
37: * @template T0
38: * @template T1
39: *
40: * @param iterable<T0> $payload
41: * @param T1 $arg
42: * @return StreamPipelineInterface<TInput&T0,TOutput,TArgument&T1>
43: */
44: public function stream(iterable $payload, $arg = null);
45: }
46: