/**
 * HTTP Methods supported by the client
 */
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
/**
 * Response types supported by the client
 */
export type ResponseType = 'json' | 'text' | 'binary' | 'stream';
/**
 * Form field data for multipart/form-data requests
 */
export interface FormField {
    name: string;
    value: string | Buffer;
    filename?: string;
    contentType?: string;
}
/**
 * URL encoded form field
 */
export interface UrlEncodedField {
    key: string;
    value: string;
}
/**
 * Retry configuration
 */
export interface RetryConfig {
    attempts: number;
    initialDelay?: number;
    maxDelay?: number;
    factor?: number;
    statusCodes?: number[];
    shouldRetry?: (error: Error, attemptCount: number) => boolean;
}
/**
 * Timeout configuration
 */
export interface TimeoutConfig {
    request?: number;
    connection?: number;
    socket?: number;
    response?: number;
}
/**
 * Rate limit configuration for handling 429 responses
 */
export interface RateLimitConfig {
    maxRetries?: number;
    respectRetryAfter?: boolean;
    maxWaitTime?: number;
    fallbackDelay?: number;
    backoffFactor?: number;
    onRateLimit?: (attempt: number, waitTime: number) => void;
}
