1: <?php declare(strict_types=1);
2:
3: namespace Salient\Contract\Collection;
4:
5: /**
6: * @api
7: *
8: * @template TKey of array-key
9: * @template TValue
10: * @template TArrayValue = TValue
11: *
12: * @extends DictionaryInterface<TKey,TValue,TArrayValue>
13: */
14: interface CollectionInterface extends DictionaryInterface
15: {
16: /**
17: * Add an item
18: *
19: * @param TValue $value
20: * @return static<TKey|int,TValue,TArrayValue>
21: */
22: public function add($value);
23:
24: /**
25: * Push items onto the end of the collection
26: *
27: * @param TValue ...$items
28: * @return static<TKey|int,TValue,TArrayValue>
29: */
30: public function push(...$items);
31:
32: /**
33: * Add items to the beginning of the collection
34: *
35: * Items are added in one operation and stay in the given order.
36: *
37: * @param TValue ...$items
38: * @return static<TKey|int,TValue,TArrayValue>
39: */
40: public function unshift(...$items);
41: }
42: