import { WaitingChange } from "@sankhyalabs/core";
import { EventEmitter } from "../../stencil-public-runtime";
import { TFocusOptions } from "../ez-text-input/ez-text-input";
export declare class EzNumberInput {
  private _textInput;
  private _focused;
  private _changePending;
  private _valuePromiseCallbacks;
  private i18n;
  private _elem;
  private _value;
  /**
   * Emitido quando acontece a alteração de valor do campo.
   */
  ezChange: EventEmitter<number>;
  /**
   * Emitido ao iniciar a alteração (digitação incompleta).
   */
  ezStartChange: EventEmitter<WaitingChange>;
  /**
   * Emitido quando não foi possível completar a alteração entre o evento ezStartChange e ezChange.
   */
  ezCancelWaitingChange: EventEmitter<void>;
  /**
  * Texto a ser apresentado como título do campo.
  */
  label: string;
  /**
   * Define o valor do campo.
   */
  value: number;
  /**
   * Se false, o usuário não pode interagir com o campo.
   */
  enabled: boolean;
  /**
   * Se false deixa de exibir a mensagem de erro dentro do campo.
   */
  canShowError: boolean;
  /**
   * Define uma mensagem de orientação ao usuário, colocando o campo em modo inválido.
   */
  errorMessage: string;
  /**
   * Se false, o input não aceitará números negativos.
   */
  allowNegative: boolean;
  /**
   * Define quantas casas decimais serão exibidas. Caso haja mais casas haverá arredondamento.
   */
  precision: number;
  /**
   * Define qual é o mínimo de casas depois da vírgula.
   * Exemplo: 1,1 será exibido como 1,1000 quando `prettyPrecision = 4`.
   */
  prettyPrecision: number;
  /**
   * Define o tamanho do campo.
   */
  mode: "slim" | "regular";
  /**
  * Se true o campo de texto receberá o foco ao ser renderizado.
  */
  autoFocus: boolean;
  /**
   * Texto alternativo a ser apresentado como título do campo.
   */
  alternativePlaceholder: string;
  /**
   * Aplica o foco no campo.
   */
  setFocus(options?: TFocusOptions): Promise<void>;
  /**
   * Remove o foco do campo.
   */
  setBlur(): Promise<void>;
  /**
   * Retorna se o conteúdo é inválido.
   */
  isInvalid(): Promise<boolean>;
  getValueAsync(): Promise<number>;
  observeLabel(): void;
  observeErrorMessage(): void;
  observeValue(newValue: number, oldValue: number): void;
  observePrecision(): void;
  private handleNewValue;
  private validateValue;
  private getTextValue;
  private changeValue;
  private setError;
  private handleBlur;
  private handleInput;
  private getParsedNumber;
  private setInputValue;
  componentWillLoad(): Promise<void>;
  componentDidLoad(): void;
  render(): any;
}
