import { CollationTolerance, Locate } from "./Collation.js"; import { AnySymbol, Expression } from "../model/Symbol.js"; import { Millimeters, Track } from "../model/Quantity.js"; import { Operation, TrackerBar } from "../systems/TrackerBar.js"; export type { Operation, Spelling } from "../systems/TrackerBar.js"; /** * What an expression type operates, as the bar that reads it says, or * nothing for a word no bar here knows or one without a counterpart in * another scale. The bars share their words where they share a scale, * as the Licensee does the T-100's, so the first that reads it answers. * @category Systems and emulation */ export declare const operationOf: (expressionType: string) => Operation | undefined; /** * A latched function of the older version and the held command of the * newer one that stands for it. * @category Collation and alignment */ export interface Substitution { /** The command that turned the function on, and the one that cancelled it. */ replaced: readonly [Expression, Expression]; /** * The commands that say the same thing in the other scale's words. * Usually one, but a held command is punched as a chain of round * holes with paper bridges rather than as a slot, and a scan whose * analysis reports those singly gives one symbol per punch. */ by: readonly Expression[]; } /** * How wide a paper bridge may be for two held perforations to be one * command. The T-98 punches a hold as a chain of round holes on a * 2.66 mm grid with bridges of about a millimetre, so a scan read hole * by hole shows a run where the paper shows one command. * @category Collation and alignment */ export declare const defaultChainGap: import("../index.js").Quantity<"mm">; /** * The position a bar reads its own command for the same function on, * where it has no word for this one. * * A version keeps the commands it does away with in its deletions, and * those may be a scale the version is not coded for: a green version * deletes the red `SlowCrescendoOn` it inherits. That has no position on * the green bar, so drawing it as a perforation is out of the question, * but an edit still has to be shown somewhere, and the lane the green * scale gives the same function is where it belongs. * @internal */ export declare const positionOfSameFunction: (bar: TrackerBar, symbol: Expression) => Track | undefined; /** * Where a held command of the newer version stands for a latched * function of the older one: the same function, on the same side where * the side counts, spanning the same stretch of the roll. * * Only unambiguous correspondences are reported. Where two held commands * answer one latched interval, or one answers two, none of them is * reported and the editor is left to say what happened. Nothing is * invented either: both sides are perforations somebody punched, and all * this asserts is which stands for which. * @category Collation and alignment */ export declare const substitutionsBetween: (own: readonly AnySymbol[], inherited: readonly AnySymbol[], locate: Locate, tolerance?: CollationTolerance, chainGap?: Millimeters) => Substitution[];