/**
 * Core types and interfaces for TestDino CLI
 */
import { z } from 'zod';
export declare const CLIOptionsSchema: z.ZodObject<{
    reportDirectory: z.ZodString;
    token: z.ZodString;
    uploadImages: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    uploadVideos: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    uploadHtml: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    uploadTraces: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    uploadFiles: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    uploadFullJson: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    jsonReport: z.ZodOptional<z.ZodString>;
    htmlReport: z.ZodOptional<z.ZodString>;
    traceDir: z.ZodOptional<z.ZodString>;
    verbose: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    environment: z.ZodDefault<z.ZodOptional<z.ZodString>>;
}, z.core.$strip>;
export type CLIOptions = z.infer<typeof CLIOptionsSchema>;
export declare const ConfigSchema: z.ZodObject<{
    apiUrl: z.ZodString;
    token: z.ZodString;
    uploadImages: z.ZodDefault<z.ZodBoolean>;
    uploadVideos: z.ZodDefault<z.ZodBoolean>;
    uploadHtml: z.ZodDefault<z.ZodBoolean>;
    uploadTraces: z.ZodDefault<z.ZodBoolean>;
    uploadFiles: z.ZodDefault<z.ZodBoolean>;
    uploadFullJson: z.ZodDefault<z.ZodBoolean>;
    verbose: z.ZodDefault<z.ZodBoolean>;
    environment: z.ZodDefault<z.ZodString>;
    batchSize: z.ZodDefault<z.ZodNumber>;
    maxConcurrentUploads: z.ZodDefault<z.ZodNumber>;
    uploadTimeout: z.ZodDefault<z.ZodNumber>;
    retryAttempts: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>;
export type Config = z.infer<typeof ConfigSchema>;
export declare class BaseError extends Error {
    readonly code: string;
    readonly cause?: Error;
    constructor(message: string, code: string, cause?: Error);
}
export declare class ConfigurationError extends BaseError {
    constructor(message: string, cause?: Error);
}
export declare class ValidationError extends BaseError {
    constructor(message: string, cause?: Error);
}
export declare class NetworkError extends BaseError {
    constructor(message: string, cause?: Error);
}
export declare class FileSystemError extends BaseError {
    constructor(message: string, cause?: Error);
}
export declare class AuthenticationError extends BaseError {
    constructor(message: string, cause?: Error);
}
/**
 * Usage limit error data from server response
 */
export interface UsageLimitData {
    tier: string;
    limit: number;
    used: number;
    remaining: number;
    resetDate: string;
    organizationId?: string;
}
/**
 * Error thrown when monthly test case limit is exceeded
 */
export declare class UsageLimitError extends BaseError {
    readonly data: UsageLimitData;
    constructor(message: string, data: UsageLimitData, cause?: Error);
}
export declare enum ExitCode {
    SUCCESS = 0,
    GENERAL_ERROR = 1,
    AUTHENTICATION_ERROR = 2,
    FILE_NOT_FOUND_ERROR = 3,
    NETWORK_ERROR = 4,
    USAGE_LIMIT_ERROR = 5
}
export interface Command {
    readonly name: string;
    readonly description: string;
    execute(options: CLIOptions): Promise<void>;
}
export interface ProgressTracker {
    start(message: string): void;
    update(message: string): void;
    succeed(message: string): void;
    fail(message: string): void;
    warn(message: string): void;
}
export declare const stringToBoolean: (value: string | undefined) => boolean;
//# sourceMappingURL=index.d.ts.map