/** Which copies carry which collated reading, which lack it, and where a copy cannot say. */ import { Edition } from "../model/Edition.js"; import { HorizontalSpan } from "../model/Feature.js"; import { Millimeters } from "../model/Quantity.js"; import { TrackerBar, TrackMeaning } from "../systems/TrackerBar.js"; import { CopyCollation } from "./readings.js"; /** * What a copy says of a reading: it carries it, it lacks it, or it * cannot tell, because it is torn there, its text does not reach so * far, or its system has no word for the reading. * @category Filiation */ export type Presence = 'present' | 'absent' | 'unknown'; /** * The presence of every collated reading in every copy, and the readings * that are ineffective in a copy carrying them. * @category Filiation */ export interface PresenceMatrix { copies: string[]; /** By reading, by copy. */ presence: Record>; /** The readings that are ineffective where a copy carries them: a latched function set again, or cancelled again. */ redundant: string[]; } /** How far beyond the end of its text, or the edge of a tear, a copy cannot say what it lacks. */ export declare const defaultMargin: import("../index.js").Quantity<"mm">; /** * The readings a latched function makes no use of in the text given: a * command setting what is set already, or cancelling what is cancelled. * Commands at one place are taken cancel first, as the valves take them. * @category Filiation */ export declare const ineffectiveAmong: (bar: TrackerBar, readings: readonly { id: string; meaning: TrackMeaning; place: HorizontalSpan; }[]) => Set; /** * The presence of every reading in every copy of the collation. * * A copy lacking a reading is taken to lack it only where it could show * it: inside its text, away from its tears, and in its own system's * words. A copy re-cut for a system that holds what another latches * carries a latched pair where one of its held commands stands for it; * where it holds the same function nearby without standing for the pair, * or where the pair was ineffective anyway, it cannot say. * @category Filiation */ export declare const presenceIn: (edition: Pick, collation: CopyCollation, margin?: Millimeters) => PresenceMatrix;