import { EventEmitter } from '../../../stencil-public-runtime';
import { PnLanguages } from "../../../globals/types";
/**
 * The `pn-counter` is an input with a button on each side that can be used to increase and decrease the input value.
 *
 * @nativeInput Use the `input` event to listen to content being modified by the user. It is emitted everytime a user writes or removes content in the input.
 * @nativeChange The `change` event is emitted when the input loses focus, the user clicks `Enter` or makes a selection (such as auto complete or suggestions).
 */
export declare class PnCounter {
    private readonly id;
    private idLabel;
    private idText;
    private idAmount;
    hostElement: HTMLElement;
    private clearAriaTimer;
    private displaySrValue;
    private showMinMaxMessage;
    /** Prevent double events when reaching min/max values. */
    private lastDispatchedValue;
    private interactType;
    /** Label for the counter */
    label: string;
    /** Set a helpertext for the counter. */
    helpertext?: string;
    /** Set a predefined value */
    value: number;
    /** Set a unique HTML ID for the counter */
    counterid: string;
    /** Use the compact label variant. @since v7.21.0 */
    compact?: boolean;
    /** Set the language manually for the built in translations. */
    language?: PnLanguages;
    /** Text for the decrease button. Default is "Decrease". @category Translation */
    labelDecrease?: string;
    /** Text for the increase button. Default is "Increase". @category Translation */
    labelIncrease?: string;
    /** Set a message that shows below input when user wants to set a value that is below `min`. Default is "Minimum value is x" @category Translation */
    minMessage?: string;
    /** Set a message that shows below input when user wants to set a value that is above `max`. Default is "Maximum value is x"  @category Translation */
    maxMessage?: string;
    /** HTML input name. @category HTML input */
    name?: string;
    /** Minimum value. @category HTML input */
    min: number;
    /** Maximum value. @category HTML input */
    max: number;
    /** Increase/decrease the value in steps, default is 1. @category HTML input */
    step: number;
    /** Suggest values for the counter input. @category HTML input */
    list?: string;
    /** Set the counter as required. @category State */
    required: boolean;
    /** Set the counter as readonly. @category State */
    readonly: boolean;
    /** Set the counter as disabled. @category State */
    disabled: boolean;
    /**
     * Instead of listening to multiple input, change and/or click events, we bundled them into one.
     * - `value` is the current counter value.
     * - `input` is true if the user changed the value with the HTML input.
     * - `decrease` is true if the user clicked on the decrease button.
     * - `increase` is true if the user clicked on the increase button.
     */
    counterInput: EventEmitter<{
        value: number;
        input?: boolean;
        decrease?: boolean;
        increase?: boolean;
    }>;
    watchValue(): void;
    handleId(): void;
    componentWillLoad(): Promise<void>;
    private setVal;
    private setMin;
    private setMax;
    private hasMin;
    private hasMax;
    private decreaseAmount;
    private increaseAmount;
    private keyBoardInput;
    private showSrContent;
    private toggleMinMaxMessage;
    private getTextMessage;
    private describedbyIds;
    private translate;
    private noButtons;
    private renderLabel;
    private renderButton;
    render(): any;
}
