/**
 * 에피소딕 임베딩 기반 시드·greedy 임계값 클러스터링.
 *
 * 각 클러스터에서 시드를 제외한 멤버는 **해당 시드**와의 코사인 유사도만 임계값 이상임이 보장된다.
 * 클러스터 내부 임의 두 에피소딕 쌍(pairwise)이 모두 임계값 이상은 아닐 수 있다(트랜지티브 가정 없음).
 */
import type { ConsolidationCluster } from '../../../shared/types/consolidation.types.js';
import type { EpisodicCandidateRow } from '../repositories/consolidation-repository.js';
export interface EpisodicWithEmbedding {
    row: EpisodicCandidateRow;
    embedding: number[];
}
export declare class ClusteringService {
    getSimilarityThreshold(): number;
    getMinClusterSize(): number;
    private cosineSimilarity;
    /**
     * owner_id 격리: 입력이 이미 동일 owner 그룹이라고 가정하고 클러스터링
     */
    clusterGroup(items: EpisodicWithEmbedding[]): ConsolidationCluster[];
    /**
     * 후보명 임베딩 맵을 받아 owner_id별로 그룹핑 후 클러스터링
     */
    buildClusters(candidates: EpisodicCandidateRow[], embeddings: Map<string, number[]>): ConsolidationCluster[];
}
//# sourceMappingURL=clustering-service.d.ts.map