export interface IElement { name: string; radius: number; } export type TPeriodicTable = Record; /** * Layout and visual grouping for the periodic-table s, p, d, and f blocks. * Here `f` covers the complete detached lanthanide and actinide series. */ export type ElementBlock = "s" | "p" | "d" | "f"; /** * @description Chemical-element data plus conventional periodic-table * placement. `period` and `group` describe the chemistry; `row` and `column` * are one-based UI grid coordinates. The detached lanthanide and actinide * series use rows 8 and 9, columns 3–17, with `group: null`. * * @example * ```ts * const carbon = PeriodicTableElements.find(({ symbol }) => symbol === "C"); * // carbon?.period === 2; carbon?.group === 14 * // carbon?.row === 2; carbon?.column === 14 * ``` */ export interface PeriodicTableElement extends IElement { /** Standard chemical symbol, for example `"C"` or `"Fe"`. */ readonly symbol: string; /** Atomic number, from 1 for hydrogen through 118 for oganesson. */ readonly atomicNumber: number; /** Horizontal period in the chemical periodic table, from 1 through 7. */ readonly period: number; /** * International Union of Pure and Applied Chemistry (IUPAC) group from * 1 through 18, or `null` for the detached f-block. */ readonly group: number | null; /** Periodic-table block classification used for layout and visual grouping. */ readonly block: ElementBlock; /** One-based visual row; rows 8 and 9 hold the detached f-block. */ readonly row: number; /** One-based visual column in the conventional 18-column layout. */ readonly column: number; } /** * Neutral-atom van der Waals radii in Å. The values are the surface radii * published by Charry & Tkatchenko (JCTC 2024, DOI 10.1021/acs.jctc.4c00784), * converted from bohr. Keeping these separate from the covalent radii below is * important: Spacefill is a physical size model, not a scaled bond model. */ export declare const VanDerWaalsRadii: Readonly>; /** Normalize aromatic/lowercase element symbols to standard notation. */ export declare function normalizeElement(element: string): string; export declare function getVanDerWaalsRadius(element: string): number; export declare function isMetalElement(element: string): boolean; export declare const PeriodicTable: TPeriodicTable; /** * @description Complete element catalog in atomic-number order. Each frozen * entry carries one-based coordinates for the conventional 18-column layout. * The f-block—the lanthanide and actinide series commonly drawn below the main * table—occupies rows 8 and 9. The array and every entry are frozen at runtime. * * @example * ```ts * const iron = PeriodicTableElements.find(({ symbol }) => symbol === "Fe"); * console.log(iron?.atomicNumber, iron?.row, iron?.column); // 26, 4, 8 * ``` */ export declare const PeriodicTableElements: readonly PeriodicTableElement[];