/**
 * Custom error types for CCS CLI
 *
 * All custom errors extend CCSError which provides:
 * - Standardized exit codes
 * - Recoverable flag for retry logic
 * - Consistent error formatting
 */
import { ExitCode } from './exit-codes';
/**
 * Base error class for all CCS errors
 * Extends standard Error with exit code and recovery information
 */
export declare class CCSError extends Error {
    readonly code: ExitCode;
    readonly recoverable: boolean;
    constructor(message: string, code?: ExitCode, recoverable?: boolean);
}
/**
 * Configuration-related errors
 * Examples: missing config file, invalid JSON, corrupt settings
 */
export declare class ConfigError extends CCSError {
    readonly configPath?: string | undefined;
    constructor(message: string, configPath?: string | undefined);
}
/**
 * Network-related errors
 * Examples: connection refused, timeout, DNS resolution failure
 */
export declare class NetworkError extends CCSError {
    readonly url?: string | undefined;
    readonly statusCode?: number | undefined;
    constructor(message: string, url?: string | undefined, statusCode?: number | undefined);
}
/**
 * Authentication/authorization errors
 * Examples: invalid API key, expired token, insufficient permissions
 */
export declare class AuthError extends CCSError {
    readonly provider?: string | undefined;
    constructor(message: string, provider?: string | undefined);
}
/**
 * Binary/executable errors
 * Examples: Claude CLI not found, corrupted binary, permission denied
 */
export declare class BinaryError extends CCSError {
    readonly binaryPath?: string | undefined;
    constructor(message: string, binaryPath?: string | undefined);
}
/**
 * Provider-specific errors
 * Examples: API rate limit, service unavailable, invalid model
 */
export declare class ProviderError extends CCSError {
    readonly provider: string;
    readonly details?: unknown;
    constructor(message: string, provider: string, details?: unknown);
}
/**
 * Profile-related errors
 * Examples: profile not found, invalid profile name, duplicate profile
 */
export declare class ProfileError extends CCSError {
    readonly profileName?: string | undefined;
    readonly availableProfiles?: string[] | undefined;
    constructor(message: string, profileName?: string | undefined, availableProfiles?: string[] | undefined);
}
/**
 * Proxy-related errors
 * Examples: proxy startup failure, port conflict, proxy timeout
 */
export declare class ProxyError extends CCSError {
    readonly port?: number | undefined;
    constructor(message: string, port?: number | undefined);
}
/**
 * Migration-related errors
 * Examples: failed to migrate config, backup creation failed
 */
export declare class MigrationError extends CCSError {
    readonly fromVersion?: string | undefined;
    readonly toVersion?: string | undefined;
    constructor(message: string, fromVersion?: string | undefined, toVersion?: string | undefined);
}
/**
 * User abort error (Ctrl+C, SIGINT)
 * Used when user explicitly cancels an operation
 */
export declare class UserAbortError extends CCSError {
    constructor(message?: string);
}
/**
 * Input validation errors (model denylist, invalid format, length limits)
 * Distinguishes user-input validation failures from system errors
 */
export declare class ValidationError extends CCSError {
    readonly field?: string | undefined;
    constructor(message: string, field?: string | undefined);
}
/**
 * Retryable/transient error
 * Signals that the operation may succeed on retry (e.g. rate limits, timeouts)
 */
export declare class RetryableError extends CCSError {
    readonly originalError?: Error | undefined;
    readonly retryAfter?: number | undefined;
    constructor(message: string, originalError?: Error | undefined, retryAfter?: number | undefined);
}
/**
 * Type guard to check if an error is a CCSError
 */
export declare function isCCSError(error: unknown): error is CCSError;
/**
 * Type guard to check if an error is recoverable
 */
export declare function isRecoverableError(error: unknown): boolean;
//# sourceMappingURL=error-types.d.ts.map