/**
 * Utilities for merging and resolving conflicts between research tracks
 */
import { TrackResult } from '../steps/track.js';
import { ResearchState } from '../types/pipeline.js';
/**
 * Options for conflict resolution
 */
export interface ConflictResolutionOptions {
    /** Strategy to use when resolving conflicts */
    strategy: 'first' | 'last' | 'mostConfident' | 'majority' | 'weighted' | 'custom';
    /** Weights to apply to different tracks (for weighted strategy) */
    weights?: Record<string, number>;
    /** Custom resolution function (for custom strategy) */
    customResolver?: (values: any[], metadata: any[]) => any;
    /** Function to extract confidence scores (for mostConfident strategy) */
    confidenceExtractor?: (trackResult: TrackResult) => number;
}
/**
 * Result merger utility to combine results from multiple research tracks
 */
export declare class ResultMerger {
    /**
     * Merges research data from multiple tracks
     *
     * @param tracks Track results to merge
     * @param options Conflict resolution options
     * @returns Merged data object
     */
    static mergeTrackData(tracks: Record<string, TrackResult>, options?: ConflictResolutionOptions): Record<string, any>;
    /**
     * Merges results from multiple tracks into a cohesive output
     *
     * @param tracks Track results to merge
     * @param state Current research state
     * @param options Conflict resolution options
     * @returns Merged results object
     */
    static mergeTrackResults(tracks: Record<string, TrackResult>, state: ResearchState, options?: ConflictResolutionOptions): any;
    /**
     * Resolves conflicts between multiple values using the specified strategy
     *
     * @param values Array of values to resolve
     * @param metadata Metadata for each value
     * @param options Conflict resolution options
     * @returns Resolved value
     */
    private static resolveConflict;
    /**
     * Creates a merge function for use with parallel research
     *
     * @param options Conflict resolution options
     * @returns A merge function that can be used with the parallel step
     */
    static createMergeFunction(options?: ConflictResolutionOptions): (tracks: Record<string, TrackResult>, state: ResearchState) => {
        data: Record<string, any>;
        results: any;
        metadata: {
            mergeStrategy: "custom" | "first" | "last" | "mostConfident" | "majority" | "weighted";
            tracksCount: number;
            mergedAt: string;
        };
    };
}
