import { ApiResponse } from './types'; export { normalizeError, isApiError, type ErrorNormalizationConfig } from './error-normalizer'; export { extractCacheHints, buildCacheInfo, generateCacheControl, type CacheHints, } from './cache-hints'; export { streamResponse } from './stream-handler'; export { extractPagination, createPaginatedResponse, mergePaginatedResponses, type PaginationConfig, } from './pagination-helpers'; /** * Response parser configuration */ export interface ResponseParserConfig { /** Schema validator (e.g., Zod schema) */ schema?: { parse: (data: unknown) => T; }; /** Transform function applied after parsing */ transform?: (data: T) => T; /** Default value if response is empty */ defaultValue?: T; /** Whether to throw on validation errors */ throwOnValidationError?: boolean; /** Custom error message for validation failures */ validationErrorMessage?: string; } /** * Parse and optionally validate an API response * * @typeParam T - Expected response data type * @param response - Raw API response * @param config - Parser configuration * @returns Parsed and validated data * * @example * ```typescript * import { z } from 'zod'; * * const userSchema = z.object({ * id: z.string(), * name: z.string(), * email: z.string().email(), * }); * * const user = parseResponse(response, { * schema: userSchema, * transform: (u) => ({ ...u, displayName: u.name.toUpperCase() }), * }); * ``` */ export declare function parseResponse(response: ApiResponse, config?: ResponseParserConfig): T; /** * Create a response parser for a specific type * * @example * ```typescript * const parseUser = createResponseParser({ * schema: userSchema, * }); * * const user = parseUser(response); * ``` */ export declare function createResponseParser(config: ResponseParserConfig): (response: ApiResponse) => T; /** * Response transformer function type */ export type ResponseTransformer = (data: TInput) => TOutput; /** * Create a transformation pipeline for responses * * @example * ```typescript * const pipeline = createTransformPipeline( * (data: ApiUser[]) => data.map(normalizeUser), * (users) => users.filter(u => u.active), * (users) => users.sort((a, b) => a.name.localeCompare(b.name)), * ); * * const users = pipeline(response.data); * ``` */ export declare function createTransformPipeline(fn?: ResponseTransformer): { pipe: (nextFn: ResponseTransformer) => { pipe: (nextFn: ResponseTransformer) => ReturnType>; execute: (data: T) => V; }; execute: (data: T) => U; }; /** * Common transformers */ export declare const transformers: { /** * Normalize dates in response (ISO string to Date) */ normalizeDates: >(fields: string[]) => ResponseTransformer; /** * Rename fields in response */ renameFields: >(mapping: Record) => ResponseTransformer; /** * Pick specific fields from response */ pickFields: , K extends keyof T>(fields: K[]) => ResponseTransformer>; /** * Omit specific fields from response */ omitFields: , K extends keyof T>(fields: K[]) => ResponseTransformer>; /** * Apply default values to missing fields */ withDefaults: >(defaults: Partial) => ResponseTransformer; };