import Data from "./Generic/Data"; import Resource from "./Resource"; import ResourceIdentifier from "./ResourceIdentifier"; import { Reducer, PredicateFn, UrlTemplates, Mapper, AsyncMapper, Links } from "./index"; export declare type MaybeDataWithLinksArgs = { data: T | T[] | null | undefined | Data; links?: UrlTemplates; }; export declare type DataSyncMethods = "flatMap" | "map" | "filter"; export declare type DataAsyncMethods = "flatMapAsync" | "mapAsync"; export default class MaybeDataWithLinks { protected _data: Data | undefined; links: UrlTemplates; protected constructor({data, links}: MaybeDataWithLinksArgs); readonly values: T[]; readonly isSingular: boolean | undefined; map(fn: Mapper): this; flatMap(fn: (it: T) => Data): this; filter(fn: PredicateFn): this; mapAsync(fn: AsyncMapper): Promise; flatMapAsync(fn: (it: T) => Data | Promise>): Promise; unwrapWith(fn: (it: T) => U, linkTemplateData: any): { links: Links; data: U | U[] | null | undefined; }; unwrapDataWith(fn: (it: T) => U): U | U[] | null | undefined; every(fn: PredicateFn): boolean; some(fn: PredicateFn): boolean; reduce(fn: Reducer): T | undefined; reduce(fn: Reducer, initialValue: U): U; forEach(fn: (it: T) => void): this; protected clone(): this; protected delegateTransformToData(methodName: DataSyncMethods, args: any): this; protected delegateTransformToDataAsync(methodName: DataAsyncMethods, args: any): Promise; protected withNewData(newData: any): this; }