import type { AsyncReadable } from "@zarrita/storage"; import { applyExtensions, type MaybeAsync } from "./extend.js"; export function extendStore(store: S): S; export function extendStore( store: S, m1: (store: S) => R1, ): MaybeAsync; export function extendStore( store: S, m1: (store: S) => R1, m2: (store: Awaited) => R2, ): MaybeAsync; export function extendStore( store: S, m1: (store: S) => R1, m2: (store: Awaited) => R2, m3: (store: Awaited) => R3, ): MaybeAsync; export function extendStore( store: S, m1: (store: S) => R1, m2: (store: Awaited) => R2, m3: (store: Awaited) => R3, m4: (store: Awaited) => R4, ): MaybeAsync; export function extendStore( store: S, m1: (store: S) => R1, m2: (store: Awaited) => R2, m3: (store: Awaited) => R3, m4: (store: Awaited) => R4, m5: (store: Awaited) => R5, ): MaybeAsync; export function extendStore( store: AsyncReadable, ...extensions: ((store: unknown) => unknown)[] ): unknown { return applyExtensions(store, extensions); }