import type { Chart } from "./chart.js"; export declare const ELEMENTS: readonly ["fire", "earth", "air", "water"]; export declare const MODALITIES: readonly ["cardinal", "fixed", "mutable"]; export interface ChartSignature { /** Bodies per element (fire/earth/air/water). */ elements: Record; /** Bodies per modality (cardinal/fixed/mutable). */ modalities: Record; /** Bodies per angularity (angular/succedent/cadent), house-based. */ angularity: Record; /** Bodies per quadrant ("1"-"4"), house-based. */ quadrants: Record; /** Bodies above/below the horizon and east/west, house-based. */ hemispheres: Record; /** Argmax of the distributions; `sign` is the most-occupied sign (>=2) or null. */ dominant: { element: string; modality: string; sign: string | null; }; /** Classical ruler of the Ascendant's sign, or null when no Ascendant given. */ ruler: string | null; /** The bodies counted, sorted. */ bodies: string[]; } /** A body's longitude (and house) for {@link chartSignatureOf}. */ export interface SignatureBody { lon: number; house?: number | null; } export interface SignatureOptions { /** Ascendant sign index 0-11; yields the classical chart ruler. */ ascSign?: number | null; /** Body ids to count; defaults to the aspectable bodies present. */ bodies?: string[]; } /** * Structural counts for a body map. Lower-level form of {@link chartSignature}: * `bodies` maps a body id to `{ lon, house? }`. */ export declare function chartSignatureOf(bodies: Record, opts?: SignatureOptions): ChartSignature; /** * The structural signature of a {@link Chart}: element / modality / angularity / * quadrant / hemisphere distributions over its bodies, the dominant element, * modality, and most-occupied sign, and the classical chart ruler. Counts only, * no interpretation. Bodies absent from the chart (outside their fitted range) * are skipped. * * @param chart A {@link Chart} from {@link Engine.chart} / {@link Engine.chartAt}. * @param opts An explicit body set, or an Ascendant-sign override. * @returns A {@link ChartSignature}. * @example * ```ts * const chart = engine.chart(1990, 6, 10, 14, 30, 0, 27.95, -82.46, "placidus"); * chartSignature(chart).dominant; // { element: "earth", modality: "cardinal", sign: "Capricorn" } * ``` */ export declare function chartSignature(chart: Chart, opts?: SignatureOptions): ChartSignature;