import type { SyncularErrorCategory, SyncularErrorCode, SyncularErrorRecommendedAction } from './types';
export interface SyncularErrorEnvelope {
    code: SyncularErrorCode;
    message: string;
    category: SyncularErrorCategory;
    retryable: boolean;
    recommendedAction: SyncularErrorRecommendedAction;
    details?: Record<string, unknown>;
}
export declare class SyncularClientError extends Error {
    readonly code: SyncularErrorCode;
    readonly category: SyncularErrorCategory;
    readonly retryable: boolean;
    readonly recommendedAction: SyncularErrorRecommendedAction;
    readonly details: Record<string, unknown> | undefined;
    constructor(envelope: SyncularErrorEnvelope, options?: ErrorOptions);
}
export declare function toSyncularClientError(error: unknown): Error;
export declare function syncularErrorMessage(error: unknown): string;
export declare function syncularErrorDetails(error: unknown): Record<string, unknown> | undefined;
export declare function classifySyncularError(error: unknown, message?: string, details?: Record<string, unknown> | undefined): Omit<SyncularErrorEnvelope, 'message' | 'details'> | null;
export declare function isSyncularOfflineError(error: unknown): boolean;
export declare function syncularErrorStatus(error: unknown): 401 | 403 | undefined;
//# sourceMappingURL=errors.d.ts.map