import { type Spec, type World } from "../spec/index.ts"; type Pending = World["pending"][number]; export declare function pendingText(p: Pending): string; /** * An instance's line: `id=state`; with its own model variables (RFD0012), `id@=[state,variables]`, * which is still JSON after the `=`, as renaming needs, and never the line of a plain state. */ export declare function instanceLine(i: World["instances"][number]): string; /** A world's identity for deduplication: instances and what is pending, without ids. */ export declare function canonical(world: World): string; /** Instances of one actor that can stand in for each other, by id; their labels go with them. */ export interface Symmetry { classes: { ids: string[]; labels: string[]; }[]; /** Every renaming that permutes instances within their classes, worked out once. */ renamings: Map[]; } /** * Classes of interchangeable instances in a world: several instances of one actor declared * `symmetric`, whose initial states are the same once their ids and labels are swapped. The * declaration is a claim about the handlers, which no look at the data can confirm (a spec * that elects the highest id has symmetric initial states); the search tests it as it goes. */ export declare function symmetryOf(spec: Spec, world: World): Symmetry; /** * The key of a world up to symmetry: the least key among the renamings of every class. Two * worlds that are renamings of each other get the same key. */ export declare function symmetricKey(world: World, symmetry: Symmetry): string; export declare function renamedLine(line: string, renaming: Map): string; /** A name, or text holding names, as the renaming has it. */ export declare function renamed(text: string, renaming: Map): string; export declare const NO_SYMMETRY: Symmetry; /** A 52-bit hash of a short name (a fair step's identity), exact as a number. */ export declare function nameHash(text: string): number; export {};