import type { Readable } from "@zarrita/storage"; import type { Array } from "../hierarchy.js"; import type { DataType } from "../metadata.js"; import { applyExtensions, type MaybeAsync } from "./extend.js"; type AnyArray = Array; export function extendArray(array: A): A; export function extendArray( array: A, m1: (array: A) => R1, ): MaybeAsync; export function extendArray( array: A, m1: (array: A) => R1, m2: (array: Awaited) => R2, ): MaybeAsync; export function extendArray( array: A, m1: (array: A) => R1, m2: (array: Awaited) => R2, m3: (array: Awaited) => R3, ): MaybeAsync; export function extendArray( array: A, m1: (array: A) => R1, m2: (array: Awaited) => R2, m3: (array: Awaited) => R3, m4: (array: Awaited) => R4, ): MaybeAsync; export function extendArray( array: A, m1: (array: A) => R1, m2: (array: Awaited) => R2, m3: (array: Awaited) => R3, m4: (array: Awaited) => R4, m5: (array: Awaited) => R5, ): MaybeAsync; export function extendArray( array: AnyArray, ...extensions: ((array: unknown) => unknown)[] ): unknown { return applyExtensions(array, extensions); }