/**
 * Configuration thresholds for different merge request sizes
 */
export interface SizeThresholds {
    files: number;
    lines: number;
    directories: number;
}
/**
 * Configuration for PR/MR commenting feature
 */
export interface CommentConfig {
    enabled: boolean;
    template?: string;
    updateExisting?: boolean;
}
/**
 * Configuration for PR/MR labeling feature
 */
export interface LabelConfig {
    enabled: boolean;
    prefix?: string;
}
/**
 * Configuration for logging verbosity
 */
export interface LoggingConfig {
    verbose: boolean;
}
/**
 * Configuration for the sizewise analyzer
 */
export interface SizewiseConfig {
    thresholds: Record<string, SizeThresholds>;
    excludePatterns: string[];
    comment?: CommentConfig;
    label?: LabelConfig;
    logging?: LoggingConfig;
}
/**
 * CLI command options
 */
export interface CliOptions {
    prId?: string;
    mrId?: string;
    projectId?: string;
    token?: string;
    host?: string;
    platform?: 'gitlab' | 'github';
    gitlabToken?: string;
    gitlabHost?: string;
    config?: string;
    verbose?: boolean;
    json?: boolean;
    exitCode?: boolean;
}
/**
 * CLI Environment variables interface
 */
export interface CliEnvironment {
    GITLAB_TOKEN?: string;
    GITLAB_HOST?: string;
    CI_PROJECT_ID?: string;
    CI_MERGE_REQUEST_IID?: string;
    CI_JOB_TOKEN?: string;
    CI_SERVER_URL?: string;
    GITHUB_TOKEN?: string;
    GITHUB_SERVER_URL?: string;
    GITHUB_REPOSITORY?: string;
    GITHUB_EVENT_NUMBER?: string;
    GITHUB_ACTIONS?: string;
    GH_TOKEN?: string;
    PR_NUMBER?: string;
}
/**
 * Validation result for CLI inputs
 */
export interface ValidationResult {
    isValid: boolean;
    errors: string[];
    warnings: string[];
}
/**
 * Metrics collected from analyzing a pull/merge request
 */
export interface PullRequestMetrics {
    filesChanged: number;
    linesAdded: number;
    linesRemoved: number;
    totalLines: number;
    directoriesAffected: number;
    renamedFiles: number;
    newFiles: number;
    deletedFiles: number;
}
export interface MergeRequestMetrics extends PullRequestMetrics {
}
/**
 * Analysis result interface
 */
export interface AnalysisResult {
    size: string;
    details: string[];
    metrics: {
        filesChanged: number;
        linesAdded: number;
        linesRemoved: number;
        totalLines: number;
        directoriesAffected: number;
        newFiles: number;
        deletedFiles: number;
        renamedFiles: number;
    };
    thresholds: Record<string, {
        files: number;
        lines: number;
        directories: number;
    }>;
}
/**
 * CLI output format for JSON mode
 */
export interface CliJsonOutput {
    success: boolean;
    data?: AnalysisResult;
    error?: string;
    timestamp: string;
    version: string;
}
//# sourceMappingURL=types.d.ts.map