/** * API Payload Optimization * * Reduces payload size through field selection, pagination, and data transformation */ interface PaginationOptions { page?: number; limit?: number; cursor?: string; defaultLimit?: number; maxLimit?: number; } interface PaginatedResponse { data: T[]; pagination: { page?: number; limit: number; total?: number; hasMore: boolean; nextCursor?: string | null; prevCursor?: string | null; }; } interface FieldSelectionOptions { include?: string[]; exclude?: string[]; defaultFields?: string[]; } /** * Paginate array of items */ export declare function paginateArray(items: T[], options?: PaginationOptions): PaginatedResponse; /** * Create cursor for cursor-based pagination */ export declare function createCursor(item: Record, field?: string): string; /** * Parse cursor */ export declare function parseCursor(cursor: string): { field: string; value: unknown; } | null; /** * Select fields from object */ export declare function selectFields>(obj: T, options: FieldSelectionOptions): Partial; /** * Select fields from array of objects */ export declare function selectFieldsFromArray>(items: T[], options: FieldSelectionOptions): Partial[]; /** * Remove null and undefined values */ export declare function removeEmpty>(obj: T): Partial; /** * Flatten nested object */ export declare function flattenObject(obj: Record, prefix?: string): Record; /** * Minimize JSON response size */ export declare function minimizeJSON(data: unknown): string; /** * Format JSON response (for development) */ export declare function formatJSON(data: unknown): string; /** * Remove sensitive fields */ export declare function sanitizeResponse>(obj: T, sensitiveFields?: string[]): Partial; /** * Transform timestamps to ISO strings */ export declare function transformDates>(obj: T): T; /** * Calculate payload size in bytes */ export declare function getPayloadSize(data: unknown): number; /** * Get payload size in human-readable format */ export declare function formatPayloadSize(bytes: number): string; /** * Optimize payload by removing unnecessary data */ export interface OptimizationResult { data: T; originalSize: number; optimizedSize: number; savings: number; savingsPercent: number; } export declare function optimizePayload(data: T, options?: FieldSelectionOptions & { removeEmpty?: boolean; transformDates?: boolean; sanitize?: boolean; }): OptimizationResult; /** * Create API response with optimized payload */ export declare function createOptimizedResponse(data: T, options?: { pagination?: PaginationOptions; fields?: FieldSelectionOptions; optimize?: boolean; compress?: boolean; }): { data: unknown; meta?: { pagination?: PaginatedResponse['pagination']; size?: { original: string; optimized: string; savings: string; }; }; }; /** * Parse field selection from query params */ export declare function parseFieldsFromQuery(query: string): FieldSelectionOptions; /** * Parse pagination from query params */ export declare function parsePaginationFromQuery(query: string): PaginationOptions; /** * Batch responses to reduce round trips */ export declare function batchResponses(responses: Array<{ key: string; data: T; }>): Record; /** * Create partial response (for large objects) */ export declare function createPartialResponse>(obj: T, maxDepth?: number, currentDepth?: number): Partial | string; export {}; //# sourceMappingURL=payload-optimization.d.ts.map