/**
 * 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>>;
    jsonReport: z.ZodOptional<z.ZodString>;
    htmlReport: z.ZodOptional<z.ZodString>;
    traceDir: z.ZodOptional<z.ZodString>;
    verbose: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
    reportDirectory: string;
    token: string;
    uploadImages: boolean;
    uploadVideos: boolean;
    uploadHtml: boolean;
    uploadTraces: boolean;
    verbose: boolean;
    dryRun: boolean;
    jsonReport?: string | undefined;
    htmlReport?: string | undefined;
    traceDir?: string | undefined;
}, {
    reportDirectory: string;
    token: string;
    uploadImages?: boolean | undefined;
    uploadVideos?: boolean | undefined;
    uploadHtml?: boolean | undefined;
    uploadTraces?: boolean | undefined;
    jsonReport?: string | undefined;
    htmlReport?: string | undefined;
    traceDir?: string | undefined;
    verbose?: boolean | undefined;
    dryRun?: boolean | undefined;
}>;
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>;
    verbose: z.ZodDefault<z.ZodBoolean>;
    dryRun: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    token: string;
    uploadImages: boolean;
    uploadVideos: boolean;
    uploadHtml: boolean;
    uploadTraces: boolean;
    verbose: boolean;
    dryRun: boolean;
    apiUrl: string;
}, {
    token: string;
    apiUrl: string;
    uploadImages?: boolean | undefined;
    uploadVideos?: boolean | undefined;
    uploadHtml?: boolean | undefined;
    uploadTraces?: boolean | undefined;
    verbose?: boolean | undefined;
    dryRun?: boolean | undefined;
}>;
export type Config = z.infer<typeof ConfigSchema>;
export declare const ApiTokenSchema: z.ZodString;
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);
}
export declare enum ExitCode {
    SUCCESS = 0,
    GENERAL_ERROR = 1,
    AUTHENTICATION_ERROR = 2,
    FILE_NOT_FOUND_ERROR = 3,
    NETWORK_ERROR = 4
}
export interface Command {
    readonly name: string;
    readonly description: string;
    execute(options: CLIOptions): Promise<void>;
}
export interface Logger {
    error(message: string, data?: unknown): void;
    warn(message: string, data?: unknown): void;
    info(message: string, data?: unknown): void;
    debug(message: string, data?: unknown): 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;
export declare const maskToken: (token: string) => string;
//# sourceMappingURL=index.d.ts.map