/** * Extracts all `data-*` attributes from an object. * * @param obj - The object to extract data attributes from * @returns A new object containing only the data attributes * * @example * ```ts * const props = { 'data-testid': 'button', 'aria-label': 'Close', className: 'btn' }; * const dataAttrs = extractDataAttributes(props); * // Result: { 'data-testid': 'button' } * ``` */ export declare function extractDataAttributes>(obj: T): Record; /** * Extracts all `aria-*` attributes from an object. * * @param obj - The object to extract aria attributes from * @returns A new object containing only the aria attributes * * @example * ```ts * const props = { 'data-testid': 'button', 'aria-label': 'Close', className: 'btn' }; * const ariaAttrs = extractAriaAttributes(props); * // Result: { 'aria-label': 'Close' } * ``` */ export declare function extractAriaAttributes>(obj: T): Record; /** * Extracts both `data-*` and `aria-*` attributes from an object in a single pass. * This is more performant than calling the individual functions separately. * * @param obj - The object to extract data and aria attributes from * @returns A new object containing only the data and aria attributes * * @example * ```ts * const props = { 'data-testid': 'button', 'aria-label': 'Close', className: 'btn', onClick: fn }; * const attrs = extractDataAriaAttributes(props); * // Result: { 'data-testid': 'button', 'aria-label': 'Close' } * ``` */ export declare function extractDataAriaAttributes>(obj: T): Record; /** * Filters out `data-*` and `aria-*` attributes from an object, returning the remaining props. * This is useful when you want to separate accessibility attributes from other component props. * * @param obj - The object to filter * @returns A tuple containing [remainingProps, dataAriaAttributes] * * @example * ```ts * const props = { 'data-testid': 'button', 'aria-label': 'Close', className: 'btn', onClick: fn }; * const [otherProps, attrs] = separateDataAriaAttributes(props); * // otherProps: { className: 'btn', onClick: fn } * // attrs: { 'data-testid': 'button', 'aria-label': 'Close' } * ``` */ export declare function separateDataAriaAttributes>(obj: T): [Record, Record];