import { Run, ParagraphBorders, ParagraphBorder, TableBorders, TableBorderValue, CellBorders, BorderSpec } from '../../../contracts/src/index.js';
/**
 * Hash helpers are duplicated from layout-bridge to avoid a circular dependency
 * (layout-bridge imports DOM_CLASS_NAMES from painter-dom). Keep these helpers
 * in sync with layout-bridge when formatting changes need cache invalidation.
 */
export declare const hashParagraphBorder: (border: ParagraphBorder) => string;
export declare const hashParagraphBorders: (borders: ParagraphBorders) => string;
export declare const hashBorderSpec: (border: BorderSpec) => string;
export declare const hashTableBorderValue: (borderValue: TableBorderValue | undefined) => string;
export declare const hashTableBorders: (borders: TableBorders | undefined) => string;
export declare const hashCellBorders: (borders: CellBorders | undefined) => string;
/**
 * Type guard to check if a run has a string property.
 *
 * @param run - The run to check
 * @param prop - The property name to check
 * @returns True if the run has the property and it's a string
 */
export declare const hasStringProp: (run: Run, prop: string) => run is Run & Record<string, string>;
/**
 * Type guard to check if a run has a number property.
 *
 * @param run - The run to check
 * @param prop - The property name to check
 * @returns True if the run has the property and it's a number
 */
export declare const hasNumberProp: (run: Run, prop: string) => run is Run & Record<string, number>;
/**
 * Type guard to check if a run has a boolean property.
 *
 * @param run - The run to check
 * @param prop - The property name to check
 * @returns True if the run has the property and it's a boolean
 */
export declare const hasBooleanProp: (run: Run, prop: string) => run is Run & Record<string, boolean>;
/**
 * Safely gets a string property from a run, with type narrowing.
 *
 * @param run - The run to get the property from
 * @param prop - The property name
 * @returns The string value or empty string if not present
 */
export declare const getRunStringProp: (run: Run, prop: string) => string;
/**
 * Safely gets a number property from a run, with type narrowing.
 *
 * @param run - The run to get the property from
 * @param prop - The property name
 * @returns The number value or 0 if not present
 */
export declare const getRunNumberProp: (run: Run, prop: string) => number;
/**
 * Safely gets a boolean property from a run, with type narrowing.
 *
 * @param run - The run to get the property from
 * @param prop - The property name
 * @returns The boolean value or false if not present
 */
export declare const getRunBooleanProp: (run: Run, prop: string) => boolean;
/**
 * Safely gets the underline style from a run.
 * Handles the object-shaped underline property { style?, color? }.
 *
 * @param run - The run to get the underline style from
 * @returns The underline style or empty string if not present
 */
export declare const getRunUnderlineStyle: (run: Run) => string;
/**
 * Safely gets the underline color from a run.
 * Handles the object-shaped underline property { style?, color? }.
 *
 * @param run - The run to get the underline color from
 * @returns The underline color or empty string if not present
 */
export declare const getRunUnderlineColor: (run: Run) => string;
//# sourceMappingURL=paragraph-hash-utils.d.ts.map