import { ErrorClassification } from './types';
/**
 * Error types reported through the errorHandler in the client
 */
export declare enum ErrorType {
    NetworkUnexpectedHTTPCode = 0,
    NetworkServerLimited = 1,
    NetworkServerRejected = 2,
    NetworkUnknown = 3,
    JsonUnableToSerialize = 4,
    JsonUnableToDeserialize = 5,
    JsonUnknown = 6,
    PluginError = 7,
    InitializationError = 8,
    ResetError = 9,
    FlushError = 10,
    EventsDropped = 11
}
/**
 * Segment Error object for ErrorHandler option
 */
export declare class SegmentError extends Error {
    type: ErrorType;
    message: string;
    innerError?: unknown;
    metadata?: Record<string, unknown>;
    constructor(type: ErrorType, message: string, innerError?: unknown, metadata?: Record<string, unknown>);
}
/**
 * Custom Error type for Segment HTTP Error responses
 */
export declare class NetworkError extends SegmentError {
    statusCode: number;
    type: ErrorType.NetworkServerLimited | ErrorType.NetworkServerRejected | ErrorType.NetworkUnexpectedHTTPCode | ErrorType.NetworkUnknown;
    constructor(statusCode: number, message: string, innerError?: unknown);
}
/**
 * Error type for JSON Serialization errors
 */
export declare class JSONError extends SegmentError {
    constructor(type: ErrorType.JsonUnableToDeserialize | ErrorType.JsonUnableToSerialize, message: string, innerError?: unknown);
}
/**
 * Utility method for handling HTTP fetch errors
 * @param response Fetch Response
 * @returns response if status OK, throws NetworkError for everything else
 */
export declare const checkResponseForErrors: (response: Response) => Response;
/**
 * Converts a .fetch() error to a SegmentError object for reporting to the error handler
 * @param error any JS error instance
 * @returns a SegmentError object
 */
export declare const translateHTTPError: (error: unknown) => SegmentError;
/**
 * Classify an HTTP status code into rate_limit, transient, or permanent.
 *
 * Precedence:
 * 1. statusCodeOverrides — explicit per-code overrides
 * 2. 429 — rate limiting (if rateLimitEnabled !== false)
 * 3. default4xxBehavior / default5xxBehavior — range defaults
 * 4. Fallback — permanent (non-retryable)
 */
export declare const classifyError: (statusCode: number, config?: {
    default4xxBehavior?: 'drop' | 'retry';
    default5xxBehavior?: 'drop' | 'retry';
    statusCodeOverrides?: Record<string, 'drop' | 'retry'>;
    rateLimitEnabled?: boolean;
    backoffEnabled?: boolean;
}) => ErrorClassification;
/**
 * Parse Retry-After header value (seconds or HTTP-date format).
 * Returns delay in seconds clamped to maxRetryInterval, or undefined if invalid.
 */
export declare const parseRetryAfter: (retryAfterValue: string | null, maxRetryInterval?: number) => number | undefined;
//# sourceMappingURL=errors.d.ts.map