import { ArrayLike } from './Array'; import { Constructor } from './Constructor'; import type { Json } from './Json'; import { Get, GetProperty } from './Get'; import type { Id } from './Id'; import { Optional } from './Types'; import { AnyKey } from './AnyKey'; import { Indexed } from './Indexed'; type Pred = (value: T, index: number, obj: T[]) => unknown; export declare class List extends Array { get ids(): List; get indexed(): List>; isSubSetOf(...items: ArrayLike): boolean; isSuperSetOf(...items: ArrayLike): boolean; isIntersectingWith(...items: ArrayLike): boolean; isDisjointWith(...items: ArrayLike): boolean; areEqual(...items: ArrayLike): boolean; asc(p: GetProperty): List; desc(p: GetProperty): List; first(p?: Pred, params?: unknown): T; firstValue(f: (t: T) => V, alt?: Get): Optional; isFirst(value: T): boolean; next(p?: Pred, params?: unknown): T; prev(p?: Pred, params?: unknown): T; last(p?: Pred, params?: unknown): T; isLast(value: T): boolean; overlaps(...items: ArrayLike): boolean; diff(others: ArrayLike): List; diffByKey(others: ArrayLike, key: keyof T & keyof U): List; symmetricDiff(others: ArrayLike): List; symmetricDiffByKey(others: ArrayLike, key: keyof T): List; intersect(others: ArrayLike): List; intersectByKey(others: ArrayLike, key: keyof T & keyof U): List; intersectBy(others: ArrayLike, f: (value: T, value2: U) => boolean): List; accumulate(...keys: (keyof T)[]): List; toJSON(): Json[]; map(f: (value: T, index: number, array: T[]) => U, params?: unknown): List; flatMap(f: (this: This, value: T, index: number, array: T[]) => ReadonlyArray | U, params?: This): List; mapDefined(f: (value: T, index: number, array: T[]) => U, params?: unknown): List>; mapAsync(f: (i: T) => Promise): Promise>; mapSerial(f: (i: T) => Promise): Promise>; distinct(): List; distinctByKey(key: keyof T): List; distinctByValue(): List; filter(p: Pred, params?: unknown): List; sum(p: (t: T) => number): number; max(p: (value: T) => any): T; max(key: keyof T): T; min(key: keyof T): T; min(p: (value: T) => any): T; byId(id: Id): T; byKey(key: keyof T, value: unknown): T; add(...items: ArrayLike): this; concat(...items: ConcatArray[]): List; concat(...items: (T | ConcatArray)[]): List; reverse(): List; splice(start: number, deleteCount?: number): List; splice(start: number, deleteCount: number, ...items: T[]): List; remove(item: T): List; move(sourceId: Id, destinationId: Id): List; moveOn(key: keyof T, sourceId: Id, destinationId: Id): List; replace(key: keyof T, item: T): List; switch(item: T): List; switchOn(item: U, on: AnyKey): List; switchOn(item: T, on: Pred): List; defined(): List>; toObject(key: keyof T, options?: { deleteKey?: boolean; }): Record; toObjectList(key: keyof T): Record>; orElse(...alt: ArrayLike): Optional>; weave(insertFrom: T[], interval: number): this; slice(start?: number, end?: number): List; none(p: (t: T) => boolean): boolean; chunk(chunkSize: number): List>; update(p: Pred, val: T | ((v: U) => T)): List; updateFirst(p: Pred, val: T | ((v: U) => T)): List; updateFirstById(id: Id, val: T | ((v: U) => T)): List; updateById(id: Id, val: T | ((v: U) => T)): List; groupBy(by: Pred): List>; } export declare const toList: (...items: ArrayLike) => List; export declare const isList: (l?: unknown) => l is List; export declare const asList: (c: Constructor, items?: unknown) => List; export declare const maxValue: (l: List, key: keyof T) => T[keyof T] | undefined; export declare const minValue: (l: List, key: keyof T) => T[keyof T] | undefined; export {};