import type { EmbeddingGenerator } from "../../shared/interfaces/embedder.interface.js"; import type { PoolDiscriminatorMiner } from "./discriminator.miner.js"; import type { PoolCandidate, DiscriminatorShadowResult } from "./discriminator.types.js"; /** Input for one shadow mining+scoring pass. */ export interface DiscriminatorShadowInput { /** Intent payload (+ summary) or search query that produced the pool. */ intentText: string; /** The pool (already filtered/capped by the caller). */ candidates: PoolCandidate[]; /** * Novelty references: the intent owner's active premise texts and intent * sentences. An axis semantically equal to any reference scores ~0. */ referenceTexts: string[]; /** Legacy/model-mismatched resolved axes re-embedded with an independent budget. */ priorReferenceTexts?: string[]; /** Fresh resolved-axis vectors generated by the current embedding model. */ priorReferenceEmbeddings?: number[][]; /** Model used for current axis embeddings and persisted metadata. */ embeddingModel?: string; /** Retain generated axis vectors on results for durable question snapshots. */ retainEmbeddings?: boolean; miner: Pick; embedder: EmbeddingGenerator; signal?: AbortSignal; } /** * Runs miner → embeddings → scorer. Throws only when *mining* fails (callers * are fire-and-forget); embedding failures degrade to novelty = 1 for all * discriminators rather than dropping the pass. */ export declare function runPoolDiscriminatorShadow(input: DiscriminatorShadowInput): Promise;