/**
 * @fileoverview QualityMetrics mapper
 *
 * Maps between DeepSource API models and domain QualityMetrics aggregates.
 */
import { QualityMetrics } from '../../domain/aggregates/quality-metrics/quality-metrics.aggregate.js';
import { RepositoryMetric, RepositoryMetricItem } from '../../models/metrics.js';
import { MetricConfiguration, MetricHistoryEntry, ThresholdStatus } from '../../domain/aggregates/quality-metrics/quality-metrics.types.js';
import { MetricValue } from '../../domain/value-objects/metric-value.js';
/**
 * Maps a single metric item to a domain QualityMetrics aggregate
 *
 * @param apiMetric - The API metric model
 * @param item - The specific metric item
 * @param projectKey - The project key
 * @param repositoryId - The repository GraphQL ID
 * @returns The domain QualityMetrics aggregate
 */
export declare function mapQualityMetricToDomain(apiMetric: RepositoryMetric, item: RepositoryMetricItem, projectKey: string, repositoryId: string): QualityMetrics;
/**
 * Maps a DeepSource API metric to domain QualityMetrics aggregates
 *
 * Since one API metric can have multiple items (e.g., per language),
 * this returns an array of QualityMetrics aggregates.
 *
 * @param apiMetric - The API metric model
 * @param projectKey - The project key
 * @param repositoryId - The repository GraphQL ID
 * @returns Array of domain QualityMetrics aggregates
 */
export declare function mapQualityMetricsToDomainList(apiMetric: RepositoryMetric, projectKey: string, repositoryId: string): QualityMetrics[];
/**
 * Maps API threshold status to domain threshold status
 *
 * @param apiStatus - The API threshold status
 * @returns The domain threshold status
 */
export declare function mapThresholdStatus(apiStatus: string): ThresholdStatus;
/**
 * Maps a domain QualityMetrics aggregate to persistence format
 *
 * @param metrics - The domain QualityMetrics aggregate
 * @returns The persistence model
 */
export declare function mapQualityMetricsToPersistence(metrics: QualityMetrics): {
    id: string;
    projectKey: string;
    repositoryId: string;
    configuration: MetricConfiguration;
    currentValue: MetricValue | null;
    history: MetricHistoryEntry[];
    lastUpdated: Date;
};
/**
 * Creates a metric history entry from API data
 *
 * @param value - The metric value
 * @param threshold - The threshold at the time (optional)
 * @param commitOid - The commit SHA
 * @param recordedAt - When the metric was recorded
 * @param unit - The metric unit
 * @returns A metric history entry
 */
export declare function createMetricHistoryEntry(value: number, threshold: number | null, commitOid: string, recordedAt: Date, unit: string, minAllowed?: number, maxAllowed?: number): MetricHistoryEntry;
/**
 * Maps multiple API metrics to domain aggregates
 *
 * @param apiMetrics - Array of API metric models
 * @param projectKey - The project key
 * @param repositoryId - The repository GraphQL ID
 * @returns Array of domain QualityMetrics aggregates
 */
export declare function mapQualityMetricsFromList(apiMetrics: RepositoryMetric[], projectKey: string, repositoryId: string): QualityMetrics[];
export declare const QualityMetricsMapper: {
    toDomain: typeof mapQualityMetricToDomain;
    toDomainList: typeof mapQualityMetricsToDomainList;
    mapThresholdStatus: typeof mapThresholdStatus;
    toPersistence: typeof mapQualityMetricsToPersistence;
    createHistoryEntry: typeof createMetricHistoryEntry;
    toDomainFromList: typeof mapQualityMetricsFromList;
};
