/**
 * Shared confidence contract for actionability-ladder emitters (D0049).
 *
 * Every confidence-emitting site in the actionability-ladder design set
 * (per-document attribution ensemble, structured grader judgments,
 * diagnosis cards, regression detection) emits the same abstract triple
 * so consumers can reason about confidence uniformly across emitters.
 *
 * Bucket thresholds and the formula behind `level` are emitter-specific;
 * the externally comparable behavior is the `level` enum. Consumers that
 * need the underlying mechanic read `derivation` and can branch.
 */
/**
 * Conventional `derivation` identifiers for the seed set of emitters
 * named in D0049. Re-exported as a typed tuple so consumers and tests can
 * reference one source of truth instead of redeclaring the literals.
 *
 * Adding a new emitter does not require editing this list — `derivation`
 * is an open tag (see `ConfidenceDerivation`). The list is the
 * recommended starting set, not the universe.
 */
export declare const CONVENTIONAL_DERIVATIONS: readonly ["ensemble-stdev", "ceiling-cross-check", "regression-gate", "card-type-specific", "synthesized-pre-cross-check"];
/**
 * Tag identifying the formula used to derive `Confidence.level`.
 *
 * Members of `CONVENTIONAL_DERIVATIONS` are surfaced as literal variants
 * so IDEs autocomplete the recommended set, while the trailing
 * `(string & {})` keeps the type open — emitters that need a new
 * identifier (per-card-type tags, future mechanics) can mint their own
 * without editing `@sanity/ailf-core`. D0049 picked the open shape so
 * feature work isn't coupled to core's release cycle.
 */
export type ConfidenceDerivation = (typeof CONVENTIONAL_DERIVATIONS)[number] | (string & {});
/**
 * The shared confidence triple. Every emitter populates all three fields.
 *
 * - `level` is bucketed (not numeric) — chosen over a 0..1 score so every
 *   consumer doesn't have to pick its own UI buckets. Emitters may keep a
 *   numeric internal representation and bucket at the edge.
 * - `signalsPresent` lets consumers distinguish "1 of 1 signal said high"
 *   from "5 of 6 signals said high" without re-deriving the underlying
 *   mechanic.
 * - `derivation` is a short identifier for the formula used to derive
 *   `level`, so consumers can interpret the mechanic without
 *   re-implementing it. Conventional values: `"ensemble-stdev"`,
 *   `"ceiling-cross-check"`, `"regression-gate"`, `"card-type-specific"`.
 *   Emitters may emit any non-empty string; new conventional identifiers
 *   land as new emitters arrive.
 */
export type Confidence = {
    /** Bucketed level. Comparable across emitters at this granularity. */
    level: "high" | "medium" | "low";
    /** Number of signals contributing to the score. Lets consumers
     *  distinguish "1 of 1 signal said high" from "5 of 6 signals said high." */
    signalsPresent: number;
    /** Short identifier for the formula used to derive `level`. Lets
     *  consumers interpret the mechanic without re-implementing it.
     *  Conventional values: "ensemble-stdev", "ceiling-cross-check",
     *  "regression-gate", "card-type-specific". */
    derivation: ConfidenceDerivation;
};
/**
 * Structural type guard for `Confidence`. Verifies the runtime shape
 * matches the contract — useful at trust boundaries that can't depend on
 * a Zod schema (the schema lives at the consuming site since each emitter
 * picks its own `level` thresholds, but the shape is shared).
 */
export declare function isConfidence(value: unknown): value is Confidence;
