<?php
namespace Cake\Collection;
use Iterator;
use JsonSerializable;
interface CollectionInterface extends Iterator, JsonSerializable
{
public function each(callable $c);
public function filter(callable $c = null);
public function reject(callable $c);
public function every(callable $c);
public function some(callable $c);
public function contains($value);
public function map(callable $c);
public function reduce(callable $c, $zero = null);
public function extract($matcher);
public function max($callback, $type = \SORT_NUMERIC);
public function min($callback, $type = \SORT_NUMERIC);
public function avg($matcher = null);
public function median($matcher = null);
public function sortBy($callback, $dir = SORT_DESC, $type = \SORT_NUMERIC);
public function groupBy($callback);
public function indexBy($callback);
public function countBy($callback);
public function sumOf($matcher = null);
public function shuffle();
public function sample($size = 10);
public function take($size = 1, $from = 0);
public function takeLast($howMany);
public function skip($howMany);
public function match(array $conditions);
public function firstMatch(array $conditions);
public function first();
public function last();
public function append($items);
public function combine($keyPath, $valuePath, $groupPath = null);
public function nest($idPath, $parentPath, $nestingKey = 'children');
public function insert($path, $values);
public function toArray($preserveKeys = true);
public function toList();
public function jsonSerialize();
public function compile($preserveKeys = true);
public function lazy();
public function buffered();
public function listNested($dir = 'desc', $nestingKey = 'children');
public function stopWhen($condition);
public function unfold(callable $transformer = null);
public function through(callable $handler);
public function zip($items);
public function zipWith($items, $callable);
public function chunk($chunkSize);
public function chunkWithKeys($chunkSize, $preserveKeys = true);
public function isEmpty();
public function unwrap();
public function transpose();
public function count();
public function countKeys();
}