/**
 * @fileoverview Classify · Dry-run / disposition PREVIEW dialog.
 *
 * Honest, client-side, in-memory preview of how a source's EXISTING extracted
 * ContentItemTags would be dispositioned under its current taxonomy mode +
 * thresholds. This is NOT a fresh LLM run and NOTHING is persisted — it samples
 * up to N existing tags, resolves each against the cached taxonomy
 * (Tags / TagSynonyms) client-side, and replays the deterministic routing via the
 * pure `previewDispositions` helper.
 *
 * It is hosted by the Sources tab (which already hosts its own dialogs): data
 * DOWN via `[SourceCard]` / `[Show]`, intent UP via `(Closed)`. On open it loads
 * the sample itself (read-only RunView, `ResultType: 'simple'`).
 *
 * NOTE: the server also has a semantic/embedding match tier not reproducible
 * client-side, so borderline rows may resolve differently in a real run. The
 * template states this explicitly.
 */
import { EventEmitter } from '@angular/core';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import { SourceCard, DryRunDispositionCount, DryRunEstimate } from '../shared/classify.types';
import { DryRunConfig, DryRunRow, Disposition } from '../shared/classify.dryrun';
import * as i0 from "@angular/core";
export declare class ClassifyDryRunPreviewDialogComponent extends BaseAngularComponent {
    private cdr;
    /** Whether the dialog is visible. */
    private _show;
    set Show(value: boolean);
    get Show(): boolean;
    /** The source being previewed; supplied by the Sources tab when opening. */
    private _sourceCard;
    set SourceCard(value: SourceCard | null);
    get SourceCard(): SourceCard | null;
    /** Emitted when the user dismisses the dialog. */
    Closed: EventEmitter<void>;
    Loading: boolean;
    Rows: DryRunRow[];
    Counts: DryRunDispositionCount;
    Estimate: DryRunEstimate;
    /** Effective config used for this preview (mirrored for the "effective values" line). */
    EffectiveMode: DryRunConfig['mode'];
    EffectiveMatchThreshold: number;
    EffectiveSuggestThreshold: number;
    /** True when the sampled source has no extracted tags yet. */
    NoTagsSampled: boolean;
    close(): void;
    /**
     * Load a sample of the source's existing extracted tags, resolve each against
     * the cached taxonomy, and produce the preview rows + summary. Read-only —
     * nothing is written.
     */
    private runPreview;
    /**
     * Sample up to SAMPLE_SIZE existing ContentItemTags for the source. We first
     * pull a handful of the source's items, then their tags — the simplest path
     * that avoids depending on a direct source-level filter on ContentItemTags.
     */
    private loadSampleTags;
    /**
     * Read the source's effective taxonomy config from its ConfigurationObject,
     * falling back to documented runtime defaults. SuggestThreshold defaults to
     * matchThreshold − 0.05 (matches the server's runtime default).
     */
    private resolveSourceConfig;
    /**
     * Build the client-side resolver closure over the cached taxonomy.
     * tier 'synonym' if the tag matches a TagSynonym (case-insensitive),
     * 'exact' if it matches a Tag Name (case-insensitive), 'fuzzy' if a
     * normalized match (lowercase, strip plurals/hyphens) hits, else 'none'.
     */
    private buildResolver;
    /** Lowercase, strip hyphens/underscores/whitespace and a trailing plural 's'. */
    private normalize;
    private tally;
    private estimate;
    /** Status-token-backed CSS class for a disposition pill. */
    DispositionClass(d: Disposition): string;
    /** Human label for a disposition pill. */
    DispositionLabel(d: Disposition): string;
    FormatScore(score: number | null): string;
    FormatTokens(tokens: number): string;
    FormatCost(cost: number): string;
    ModeLabel(mode: DryRunConfig['mode']): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<ClassifyDryRunPreviewDialogComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ClassifyDryRunPreviewDialogComponent, "classify-dry-run-preview", never, { "Show": { "alias": "Show"; "required": false; }; "SourceCard": { "alias": "SourceCard"; "required": false; }; }, { "Closed": "Closed"; }, never, never, false, never>;
}
//# sourceMappingURL=dry-run-preview.dialog.component.d.ts.map