/**
 * Create id for messaging
 */
export declare const messageId: (id: string, messageType: string) => string;
/**
 * Assign aria-description id to relate messages with form element
 */
export declare const assignDescription: (id: string, invalid: boolean, helperMessage: string) => string;
/**
 * Updates the `invalid` prop of a form element based on it's values validity
 */
export declare const isRequired: (target: any, component: any) => void;
/**
 * Exposes a readonly type property on a custom form element to match native form element behavior.
 * This makes the type property enumerable and accessible via element.type, matching native HTML elements.
 * The property is non-configurable, preventing it from being redefined or deleted at runtime.
 *
 * @param element - The custom element to add the type property to
 * @param type - The type value (string literal) or a getter function that returns the type
 */
export declare function exposeTypeProperty(element: Element, type: string | (() => string)): void;
/**
 * Determines if code is running in Stencil's spec test environment.
 * Stencil's mock-doc logs console.error on any ElementInternals
 * property access during spec tests. Use this guard to skip
 * ElementInternals calls in the mock environment.
 *
 * Uses __STENCIL_SPEC_TESTS__ (the same env var Stencil's mock-doc checks)
 * to avoid false positives in downstream consumer test suites.
 */
export declare const isSpecTest: () => boolean;
