export declare function multiKeySet(m: Map>, a: A, b: B, v: V): void; /** replace strings in a text according to a relacement map * replaced strings must be 'tokens', surrounded by spaces or punctuation */ export declare function replaceWords(text: string, replace: Record): string; /** return an array partitioned into possibly overlapping groups */ export declare function grouped(a: T[], size: number, stride?: number): T[][]; /** group an array into subarrays by a key function */ export declare function groupBy(a: T[], key: (t: T) => K): Map; /** partition an array into two parts by a discriminator function */ export declare function partition(a: T[], partFn: (t: T) => boolean): [T[], T[]]; /** run an carrying function over every element in an array, * i.e. an inclusive prefix scan */ export declare function scan(array: T[], fn: (a: T, b: U) => U, zero: U): U[]; /** return a new record by replacing values in 'a' with 'b' as a map. * values in 'a' that are not in 'b' are unchanged. * e.g. {a: "b", x: 9}, {b: 1} yields {a: 1, x: 9} */ export declare function mapForward(a: Record, b: Record): Record; /** return the last element of an array or undefined */ export declare function last(a: T[]): T | undefined; /** * Overlap two arrays, returning the tail of b if a is a prefix of b. * Otherwise, return undefined. */ export declare function overlapTail(a: T[], b: T[]): T[] | undefined;