import { LitElement, nothing, html } from 'lit';
import type { Constructor } from './index.types';
export interface CharacterLimitHost {
    value: string;
    helpText?: string;
}
interface Events {
    onLimitExceededEvent: CustomEvent;
}
export type { Events };
export declare class CharacterLimitMixinInterface {
    maxCharacterLimit?: number;
    characterLimitAnnouncement?: string;
    protected characterLimitAriaLiveAnnouncer?: string;
    protected handleCharacterOverflowStateChange(): void;
    protected announceCharacterLimitWarning(): void;
    protected renderCharacterCounter(): typeof nothing | ReturnType<typeof html>;
}
/**
 * Mixin that provides character limit / counter functionality.
 *
 * This mixin is shared between `mdc-input` and `mdc-textarea` components.
 * It provides:
 * - `maxCharacterLimit` and `characterLimitAnnouncement` properties
 * - Character overflow state tracking and `limitexceeded` event dispatching
 * - Screen reader announcement logic for character limit warnings
 * - `renderCharacterCounter()` method for rendering the counter UI
 *
 * The consuming component must:
 * - Have a `value` property (string)
 * - Have a `helpText` property (string)
 * - Call `handleCharacterOverflowStateChange()` when `value` changes
 * - Call `announceCharacterLimitWarning()` when `helpText` changes or value is updated
 *
 * @param superClass - The base class to extend.
 */
export declare const CharacterLimitMixin: <T extends Constructor<LitElement & CharacterLimitHost>>(superClass: T) => Constructor<CharacterLimitMixinInterface> & T;
