<?php

use Tarsana\Functional as F;

return F\map(F\apply(F\_f('_stream_operation')), [
	['then', 'Function -> Any -> Any', F\_f('_stream_then')],
	['and', 'Boolean -> Boolean -> Boolean', F\and_()],
	['or', 'Boolean -> Boolean -> Boolean', F\or_()],
	['not', 'Boolean -> Boolean', F\not()],
	['eq', 'Any -> Any -> Boolean', F\eq()],
	['notEq', 'Any -> Any -> Boolean', F\notEq()],
	['eqq', 'Any -> Any -> Boolean', F\eqq()],
	['notEqq', 'Any -> Any -> Boolean', F\notEqq()],
	['equals', 'Any -> Any -> Boolean', F\equals()],
	['equalBy', 'Function -> Any -> Any -> Boolean', F\equalBy()],
	['lt', 'Any -> Any -> Boolean', F\lt()],
	['lte', 'Any -> Any -> Boolean', F\lte()],
	['gt', 'Any -> Any -> Boolean', F\gt()],
	['gte', 'Any -> Any -> Boolean', F\gte()],
	['is', 'String -> Any -> Boolean', F\is()],
	['toString', 'Any -> String', F\toString()],
	['attributes', 'Object|Array -> Object|Array', F\attributes()],
	['keys', 'List -> List', F\keys()],
	['keys', 'Object|Array -> List', F\keys()],
	['values', 'List -> List', F\values()],
	['values', 'Object|Array -> List', F\values()],
	['has', 'Any -> Object|Array -> Boolean', F\has()],
	['get', 'Any -> Object|Array -> Any', F\get()],
	['getPath', 'List -> Object|Array -> Any', F\getPath()],
	['set', 'Any -> Any -> Object|Array -> Object|Array', F\set()],
	['update', 'Any -> Function -> Object|Array -> Object|Array', F\update()],
	['satisfies', 'Function -> Any -> Object|Array -> Boolean', F\satisfies()],
	['satisfiesAll', 'Object|Array -> Object|Array -> Boolean', F\satisfiesAll()],
	['satisfiesAny', 'Object|Array -> Object|Array -> Boolean', F\satisfiesAny()],
	['toPairs', 'Object|Array -> List', F\toPairs()],
	['toPairs', 'List -> List', F\toPairs()],
	['split', 'String -> String -> List', F\split()],
	['join', 'String -> List -> String', F\join()],
	['replace', 'String|List -> String|List -> String -> String', F\replace()],
	['regReplace', 'String -> String -> String -> String', F\regReplace()],
	['upperCase', 'String -> String', F\upperCase()],
	['lowerCase', 'String -> String', F\lowerCase()],
	['camelCase', 'String -> String', F\camelCase()],
	['snakeCase', 'String -> String -> String', F\snakeCase()],
	['startsWith', 'String -> String -> Boolean', F\startsWith()],
	['endsWith', 'String -> String -> Boolean', F\endsWith()],
	['test', 'String -> String -> Boolean', F\test()],
	['match', 'String -> String -> List', F\match()],
	['occurences', 'String -> String -> Number', F\occurences()],
	['chunks', 'String -> String -> String -> List', F\chunks()],
	['map', 'Function -> List -> List', F\map()],
	['map', 'Function -> Object|Array -> Object|Array', F\map()],
	['chain', 'Function -> List -> List', F\chain()],
	['filter', 'Function -> List -> List', F\filter()],
	['reduce', 'Function -> Any -> List -> Any', F\reduce()],
	['each', 'Function -> List -> List', F\each()],
	['head', 'List -> Any', F\head()],
	['head', 'String -> String', F\head()],
	['last', 'List -> Any', F\last()],
	['last', 'String -> String', F\last()],
	['init', 'List -> Any', F\init()],
	['init', 'String -> String', F\init()],
	['tail', 'List -> Any', F\tail()],
	['tail', 'String -> String', F\tail()],
	['reverse', 'List -> List', F\reverse()],
	['reverse', 'String -> String', F\reverse()],
	['length', 'List -> Number', F\length()],
	['length', 'String -> Number', F\length()],
	['allSatisfies', 'Function -> List -> Boolean', F\allSatisfies()],
	['anySatisfies', 'Function -> List -> Boolean', F\anySatisfies()],
	['concat', 'List -> List -> List', F\concat()],
	['concat', 'String -> String -> String', F\concat()],
	['concatAll', 'List -> List', F\concatAll()],
	['insert', 'Number -> Any -> List -> List', F\insert()],
	['insert', 'Number -> String -> String -> String', F\insert()],
	['insertAll', 'Number -> List -> List -> List', F\insertAll()],
	['insertAll', 'Number -> String -> String -> String', F\insertAll()],
	['append', 'Any -> List -> List', F\append()],
	['append', 'String -> String -> String', F\append()],
	['prepend', 'Any -> List -> List', F\prepend()],
	['prepend', 'String -> String -> String', F\prepend()],
	['take', 'Number -> List -> List', F\take()],
	['take', 'Number -> String -> String', F\take()],
	['takeWhile', 'Function -> List -> List', F\takeWhile()],
	['takeLastWhile', 'Function -> List -> List', F\takeLastWhile()],
	['takeUntil', 'Function -> List -> List', F\takeUntil()],
	['takeLastUntil', 'Function -> List -> List', F\takeLastUntil()],
	['remove', 'Number -> List -> List', F\remove()],
	['remove', 'Number -> String -> String', F\remove()],
	['removeWhile', 'Function -> List -> List', F\removeWhile()],
	['removeLastWhile', 'Function -> List -> List', F\removeLastWhile()],
	['removeUntil', 'Function -> List -> List', F\removeUntil()],
	['removeLastUntil', 'Function -> List -> List', F\removeLastUntil()],
	['fromPairs', 'List -> Object|Array', F\fromPairs()],
	['slices', 'Number -> List -> List', F\slices()],
	['slices', 'Number -> String -> List', F\slices()],
	['contains', 'Any -> List -> Boolean', F\contains()],
	['contains', 'String -> String -> Boolean', F\contains()],
	['findIndex', 'Function -> List -> Number|Null', F\findIndex()],
	['findIndex', 'Function -> Object|Array -> Any', F\findIndex()],
	['findLastIndex', 'Function -> List -> Number|Null', F\findLastIndex()],
	['findLastIndex', 'Function -> Object|Array -> Any', F\findLastIndex()],
	['find', 'Function -> List -> Any', F\find()],
	['findLast', 'Function -> List -> Any', F\findLast()],
	['indexOf', 'Any -> List -> Number', F\indexOf()],
	['indexOf', 'Any -> Object|Array -> Any', F\indexOf()],
	['indexOf', 'String -> String -> Number', F\indexOf()],
	['lastIndexOf', 'Any -> List -> Number', F\lastIndexOf()],
	['lastIndexOf', 'Any -> Object|Array -> Any', F\lastIndexOf()],
	['lastIndexOf', 'String -> String -> Number', F\lastIndexOf()],
	['uniqueBy', 'Function -> List -> List', F\uniqueBy()],
	['unique', 'List -> List', F\unique()],
	['groupBy', 'Function -> List -> Object|Array', F\groupBy()],
	['pairsFrom', 'List -> List -> List', F\pairsFrom()],
	['sort', 'Function -> List -> List', F\sort()],
	['plus', 'Number -> Number -> Number', F\plus()],
	['minus', 'Number -> Number -> Number', F\minus()],
	['negate', 'Number -> Number', F\negate()],
	['multiply', 'Number -> Number -> Number', F\multiply()],
	['divide', 'Number -> Number -> Number', F\divide()],
	['modulo', 'Number -> Number -> Number', F\modulo()],
	['sum', 'List -> Number', F\sum()],
	['product', 'List -> Number', F\product()],
	['min', 'Number -> Number -> Number', F\min()],
	['minBy', 'Function -> Any -> Any -> Any', F\minBy()],
	['max', 'Number -> Number -> Number', F\max()],
	['maxBy', 'Function -> Any -> Any -> Any', F\maxBy()],

]);
