/**
 * Tipos genéricos para respuestas de Strapi API
 * @see https://docs.strapi.io/cms/api/rest/filters
 */
/**
 * Estructura base de atributos de Strapi
 */
export interface StrapiAttributes {
    createdAt: string;
    updatedAt: string;
    publishedAt?: string;
}
/**
 * Estructura de un item individual de Strapi
 */
export interface StrapiItem<T extends StrapiAttributes> {
    id: number;
    attributes: T;
}
/**
 * Estructura de paginación de Strapi
 */
export interface StrapiPagination {
    page: number;
    pageSize: number;
    pageCount: number;
    total: number;
}
/**
 * Estructura de metadata de Strapi
 */
export interface StrapiMeta {
    pagination: StrapiPagination;
}
/**
 * Estructura de respuesta de lista de Strapi
 */
export interface StrapiListResponse<T extends StrapiAttributes> {
    data: StrapiItem<T>[];
    meta: StrapiMeta;
}
/**
 * Estructura de respuesta de item único de Strapi
 */
export interface StrapiSingleResponse<T extends StrapiAttributes> {
    data: StrapiItem<T>;
    meta: Record<string, unknown>;
}
/**
 * Operadores de filtro de Strapi
 * @see https://docs.strapi.io/cms/api/rest/filters
 */
export type StrapiFilterOperator = '$eq' | '$eqi' | '$ne' | '$nei' | '$lt' | '$lte' | '$gt' | '$gte' | '$in' | '$notIn' | '$contains' | '$notContains' | '$containsi' | '$notContainsi' | '$null' | '$notNull' | '$between' | '$startsWith' | '$startsWithi' | '$endsWith' | '$endsWithi' | '$or' | '$and' | '$not';
/**
 * Operadores de campo de Strapi
 */
export type StrapiFieldOperator = '$eq' | '$eqi' | '$ne' | '$nei' | '$lt' | '$lte' | '$gt' | '$gte' | '$in' | '$notIn' | '$contains' | '$notContains' | '$containsi' | '$notContainsi' | '$null' | '$notNull' | '$between' | '$startsWith' | '$startsWithi' | '$endsWith' | '$endsWithi';
/**
 * Estructura de filtro individual de Strapi
 */
export type StrapiFilter = {
    [field: string]: {
        [operator in StrapiFieldOperator]?: unknown;
    } | StrapiFilter;
} | {
    $or?: StrapiFilter[];
    $and?: StrapiFilter[];
    $not?: StrapiFilter;
};
/**
 * Parámetros de query para Strapi
 */
export interface StrapiQueryParams {
    filters?: StrapiFilter;
    sort?: string | string[];
    pagination?: {
        page?: number;
        pageSize?: number;
        start?: number;
        limit?: number;
        withCount?: boolean;
    };
    populate?: string | string[] | Record<string, unknown>;
    fields?: string[];
    publicationState?: 'live' | 'preview';
    locale?: string | string[];
}
/**
 * Configuración del cliente de Strapi
 */
export interface StrapiClientConfig {
    baseUrl: string;
    token: string;
    defaultPageSize?: number;
}
//# sourceMappingURL=strapi.types.d.ts.map