/**
 * Merges two attribute objects, with special handling for style properties.
 * Style objects are deeply merged rather than overwritten.
 *
 * @template T - The type of the first attributes object.
 * @template U - The type of the second attributes object.
 * @param a - The first attributes object.
 * @param b - The second attributes object (takes precedence for non-style properties).
 * @returns A merged attributes object with combined styles.
 * @example
 * ```typescript
 * mergeAttributes(
 *   { class: 'foo', style: { color: 'red' } },
 *   { class: 'bar', style: { fontSize: '14px' } }
 * )
 * // Returns { class: 'bar', style: { color: 'red', fontSize: '14px' } }
 * ```
 */
export declare const mergeAttributes: <T extends Record<string, unknown>, U extends Record<string, unknown>>(a: T, b: U) => T & U;
/**
 * Converts an attributes object's style property from an object to a CSS string.
 * This prepares attributes for use in DOM elements.
 *
 * @template T - The type of the attributes object.
 * @param attrs - The attributes object with a potential style object.
 * @returns A new attributes object with the style converted to a string.
 * @example
 * ```typescript
 * finalizeAttributes({ class: 'foo', style: { color: 'red' } })
 * // Returns { class: 'foo', style: 'color:red' }
 * ```
 */
export declare const finalizeAttributes: <T extends Record<string, unknown>>(attrs: T) => Record<string, unknown>;
