import { type AggregationPipeline } from '../../../common/aggregation-pipeline.js';
import { type Sam } from '@tmlmobilidade/types';
/**
 * Optional per-analysis filters after `$unwind` (e.g. export file `start_time` / `end_time`).
 */
export interface SamsAnalysisExportAnalysisFilter {
    /** If set, keep rows where `analysis.end_time` is less than or equal to this timestamp. */
    end_time?: number;
    /** If set, keep rows where `analysis.start_time` is greater than or equal to this timestamp. */
    start_time?: number;
}
/**
 * Builds a pipeline that returns one document per analysis record (no SAM pagination),
 * for CSV / file export. SAM documents are restricted by optional {@link samIds} and/or
 * {@link matchAnd} (ANDed together). Callers must pass at least one non-empty constraint;
 * otherwise the pipeline would not filter SAMs before unwind.
 * Then `analysis` is unwound and optionally narrowed by {@link SamsAnalysisExportAnalysisFilter}.
 *
 * @param samIds - Optional SAM `_id` values to include. When omitted or empty, no `_id` filter is applied.
 * @param matchAnd - Optional list conditions ANDed with each other (and with `samIds` when set).
 * @param analysisFilter - Optional filters on the unwound `analysis` subdocument.
 * @returns Aggregation pipeline for MongoDB.
 */
export declare function samsAnalysisExportAggregationPipeline({ analysisFilter, matchAnd, samIds }: {
    analysisFilter?: SamsAnalysisExportAnalysisFilter;
    matchAnd?: Record<string, unknown>[];
    samIds?: number[];
}): AggregationPipeline<Sam>;
