import type { MetaResponsePaginationByOffset, MetaResponsePaginationByPage, PaginationByOffset, PaginationByPage, StrapiLocale, StrapiRequestParamField, StrapiRequestParamPopulate, StrapiRequestParamSort, StrapiFilterRequestParam } from '.'; export interface Strapi5Error { error: { status: number; name: string; message: string; details: Record; }; } export interface Strapi5RequestParams { fields?: Array>; populate?: Strapi5RequestPopulateParam; sort?: StrapiRequestParamSort | Array>; pagination?: PaginationByOffset | PaginationByPage; filters?: StrapiFilterRequestParam; status?: 'published' | 'draft'; locale?: StrapiLocale | null; } export type Strapi5RequestPopulateParams = Pick, 'fields' | 'sort' | 'populate' | 'filters'>; export type Strapi5RequestPopulateParam = '*' | { [K in keyof T]?: T[K] extends object ? T[K] extends Array ? Strapi5RequestPopulateParam | Strapi5RequestPopulateParams : Strapi5RequestPopulateParam | Strapi5RequestPopulateParams : never; } | StrapiRequestParamPopulate | Array>; export interface StrapiSystemFields { documentId: string; locale?: string; } export type Strapi5ResponseData = T extends object ? T extends Array ? Array> : T extends Record ? { [K in keyof T]: Strapi5ResponseData; } & StrapiSystemFields : T : T; export interface StrapiResponseMetaPagination { page: number; pageSize: number; } export interface Strapi5ResponseSingle { data: Strapi5ResponseData; meta: Strapi5ResponseMeta; } export interface Strapi5ResponseMany { data: Strapi5ResponseData[]; meta: Strapi5ResponseMeta; } export interface Strapi5ResponseMeta { pagination: MetaResponsePaginationByPage | MetaResponsePaginationByOffset; [key: string]: unknown; }