declare function serializeDate(value: Date | string): string; declare function whenLoaded(model: { loaded: (name: string) => unknown; }, relation: string, transform?: (value: unknown) => T): T | undefined | null; declare class JsonResource { protected readonly resource: T; static wrap: string | null; protected extra: Record; constructor(resource: T); static make(resource: TResource): JsonResource; static collection(items: readonly TResource[]): ResourceCollection; additional(data: Record): this; when(condition: boolean, value: TValue): TValue | undefined; whenLoaded(relation: string, transform?: (value: unknown) => TValue): TValue | undefined | null; toArray(): Record; toResponse(): Record; } declare class ResourceCollection extends JsonResource { toArray(): Record; toResponse(): Record; } declare function toResourceCollection(items: readonly TInput[], transformer: (item: TInput) => TOutput): TOutput[]; declare function toPaginatedResourceCollection(items: readonly TInput[], meta: TMeta, transformer: (item: TInput) => TOutput): { data: TOutput[]; meta: TMeta; }; export { JsonResource, ResourceCollection, serializeDate, toPaginatedResourceCollection, toResourceCollection, whenLoaded, };