/**
 * Core Type Definitions
 *
 * Contains all shared types used throughout the SDK.
 * Maintains type safety and consistency across components.
 *
 * Key type hierarchies:
 * - Metrics (GitHub)
 * - Validation (Results, Errors)
 * - Configuration (Settings, Options)
 *
 * @important
 * Update these types carefully as they affect the entire SDK
 */
import { z } from "zod";
import { Logger } from "../utils/logger";
export type MetricsSource = "github";
export type ValidationType = "data" | "security" | "config";
export interface StorageConfig {
    type: "postgres";
    config: {
        host: string;
        port: number;
        database: string;
        user: string;
        password: string;
    };
}
export interface ValidationConfig {
    github: {
        minCommits?: number;
        maxCommitsPerDay?: number;
        minAuthors?: number;
    };
    maxTimeDrift?: number;
    maxDataAge?: number;
}
export declare const SDKConfigSchema: z.ZodObject<{
    githubRepo: z.ZodString;
    githubToken: z.ZodString;
    timeframe: z.ZodOptional<z.ZodEnum<["day", "week", "month"]>>;
    logLevel: z.ZodOptional<z.ZodEnum<["debug", "info", "warn", "error"]>>;
    maxRequestsPerSecond: z.ZodOptional<z.ZodNumber>;
    validation: z.ZodOptional<z.ZodObject<{
        github: z.ZodOptional<z.ZodObject<{
            minCommits: z.ZodNumber;
            maxCommitsPerDay: z.ZodNumber;
            minAuthors: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            minCommits: number;
            maxCommitsPerDay: number;
            minAuthors: number;
        }, {
            minCommits: number;
            maxCommitsPerDay: number;
            minAuthors: number;
        }>>;
    }, "strip", z.ZodTypeAny, {
        github?: {
            minCommits: number;
            maxCommitsPerDay: number;
            minAuthors: number;
        } | undefined;
    }, {
        github?: {
            minCommits: number;
            maxCommitsPerDay: number;
            minAuthors: number;
        } | undefined;
    }>>;
    weights: z.ZodOptional<z.ZodObject<{
        commits: z.ZodNumber;
        pullRequests: z.ZodNumber;
        reviews: z.ZodNumber;
        issues: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        commits: number;
        pullRequests: number;
        reviews: number;
        issues: number;
    }, {
        commits: number;
        pullRequests: number;
        reviews: number;
        issues: number;
    }>>;
}, "strip", z.ZodTypeAny, {
    githubToken: string;
    githubRepo: string;
    timeframe?: "day" | "week" | "month" | undefined;
    maxRequestsPerSecond?: number | undefined;
    logLevel?: "debug" | "info" | "warn" | "error" | undefined;
    validation?: {
        github?: {
            minCommits: number;
            maxCommitsPerDay: number;
            minAuthors: number;
        } | undefined;
    } | undefined;
    weights?: {
        commits: number;
        pullRequests: number;
        reviews: number;
        issues: number;
    } | undefined;
}, {
    githubToken: string;
    githubRepo: string;
    timeframe?: "day" | "week" | "month" | undefined;
    maxRequestsPerSecond?: number | undefined;
    logLevel?: "debug" | "info" | "warn" | "error" | undefined;
    validation?: {
        github?: {
            minCommits: number;
            maxCommitsPerDay: number;
            minAuthors: number;
        } | undefined;
    } | undefined;
    weights?: {
        commits: number;
        pullRequests: number;
        reviews: number;
        issues: number;
    } | undefined;
}>;
export type SDKConfig = z.infer<typeof SDKConfigSchema>;
export interface BaseCollectorConfig {
    logger: Logger;
    maxRequestsPerSecond?: number;
}
export interface GitHubCollectorConfig extends BaseCollectorConfig {
    repo: string;
    token: string;
}
export { JSONValue, ErrorDetail } from "./json";
export { ValidationError, ValidationWarning, ValidationResult, ValidationMetadata, } from "./validation";
export { GitHubMetrics, ProcessedMetrics, MetricsMetadata, Score, RewardCalculation, } from "./metrics";
export { ErrorCode } from "./errors";
export { LogContext, ErrorLogContext } from "./logger";
export * from "./json";
export * from "./errors";
export * from "./logger";
export * from "./sdk";
export interface ValidationThresholds {
    github: {
        minCommits: number;
        maxCommitsPerDay: number;
        minAuthors: number;
    };
}
export interface ValidationContext {
    thresholds: ValidationThresholds;
    logger: Logger;
}
