/**
 * 벡터 호환성 유틸리티
 * - 차원이 다른 임베딩 벡터를 안전하게 변환
 * - 패딩/축소 전략과 정규화를 일관되게 적용
 */
import type { EmbeddingProvider, ProjectionType, VectorCompatibilityAssessment, VectorExpansionStrategy, VectorProjectionOptions, VectorProjectionResult, VectorReductionStrategy } from '../../../shared/types/embedding.types.js';
interface ProjectionInternalResult {
    vector: number[];
    projectionType: ProjectionType;
    expansionStrategy?: VectorExpansionStrategy;
    reductionStrategy?: VectorReductionStrategy;
}
export declare class VectorCompatibilityService {
    private readonly defaultExpansion;
    private readonly defaultReduction;
    private readonly epsilon;
    private readonly defaultDimensions;
    private providerDimensionMap;
    /**
     * 목표 차원에 맞게 벡터를 변환
     */
    project(vector: number[], options: VectorProjectionOptions): VectorProjectionResult;
    /**
     * 벡터 호환성을 분석하고 필요한 투영 정보를 제공
     */
    assessCompatibility(vector: number[], options: VectorProjectionOptions): VectorCompatibilityAssessment;
    /**
     * 호환성 검증 (필요 시 예외 발생)
     */
    validateCompatibility(vector: number[], options: VectorProjectionOptions, allowProjection?: boolean): VectorCompatibilityAssessment;
    /**
     * 제공자별 기본 차원을 적용한 호환성 분석
     */
    assessProviderCompatibility(vector: number[], provider: EmbeddingProvider, overrides?: Partial<VectorProjectionOptions>): VectorCompatibilityAssessment;
    /**
     * 제공자별 차원 검증
     */
    validateProviderCompatibility(vector: number[], provider: EmbeddingProvider, overrides?: Partial<VectorProjectionOptions>, allowProjection?: boolean): VectorCompatibilityAssessment;
    /**
     * 제공자의 기본 차원을 조회
     */
    getNativeDimensions(provider: EmbeddingProvider): number;
    /**
     * 제공자의 기본 차원을 갱신
     */
    setNativeDimensions(provider: EmbeddingProvider, dimensions: number): void;
    private performProjection;
    /**
     * 지정한 전략으로 벡터 차원을 확장
     */
    expandVector(vector: number[], targetDim: number, strategy: VectorExpansionStrategy): ProjectionInternalResult;
    /**
     * 지정한 전략으로 벡터 차원을 축소
     */
    reduceVector(vector: number[], targetDim: number, strategy: VectorReductionStrategy): ProjectionInternalResult;
    private zeroPad;
    private repeatUpsample;
    private interpolate;
    private averagePool;
    private applyNormalization;
    private l2Normalize;
    private minMaxNormalize;
    private sanitizeVector;
    private assertValidOptions;
}
export declare const vectorCompatibilityService: VectorCompatibilityService;
export {};
//# sourceMappingURL=vector-compatibility-service.d.ts.map