import { NumberLocaleOptions } from '@seniorsistemas/angular-components/locale';
import { AddonConfig } from '../../addon-config';
import { FieldConfig } from './field';
type stringFn = () => string;
/**
 * Configuração para campos numéricos de grande precisão.
 *
 * Use `type: 'number'` para números inteiros ou decimais genéricos.
 * Use `type: 'double'` para números com casas decimais explícitas.
 *
 * Suporta controle de precisão, escala, máscaras, addons laterais e formatação regional.
 * Preferível em relação ao `NumberFieldConfig` (deprecated).
 */
export interface BignumberFieldConfig extends FieldConfig {
    /**
     * `'number'` — campo numérico genérico (inteiro ou decimal).
     * `'double'` — campo numérico com casas decimais.
     */
    type: 'number' | 'double';
    /**
     * Permite a entrada de valores negativos.
     * @default false
     */
    allowNegative?: boolean;
    /**
     * Opções de localização para formatação do número (separador decimal, separador de milhar).
     * Se omitido, usa o locale padrão da aplicação.
     */
    numberLocaleOptions?: NumberLocaleOptions;
    /**
     * Controla o autocomplete nativo do browser.
     */
    browserAutocomplete?: boolean;
    /**
     * Número total de dígitos (inteiros + decimais). Pode ser uma função para controle dinâmico.
     */
    precision?: Function | number;
    /**
     * Número de casas decimais permitidas. Pode ser uma função para controle dinâmico.
     */
    scale?: Function | number;
    /**
     * Máscara de entrada. Pode ser uma string fixa ou função que retorna a máscara.
     */
    mask?: stringFn | string;
    /**
     * Addon exibido à esquerda do campo (ex: símbolo de moeda, unidade de medida).
     */
    leftAddon?: AddonConfig;
    /**
     * Addon exibido à direita do campo (ex: unidade de medida, botão).
     */
    rightAddon?: AddonConfig;
    /**
     * Callback chamado quando o campo perde o foco.
     */
    onBlur?: (event: Event) => void;
    /**
     * Callback chamado quando o campo recebe foco.
     */
    onFocus?: (event: FocusEvent) => void;
    /**
     * Callback chamado quando a máscara é completamente preenchida.
     */
    onComplete?: (event: FocusEvent) => void;
    /**
     * Callback chamado a cada alteração no valor do input.
     */
    onInput?: (event: FocusEvent) => void;
    /**
     * Quando `true`, limpa o valor do campo automaticamente ao perder o foco se o valor for inválido.
     */
    autoClear?: boolean;
    /**
     * Alinhamento do texto dentro do campo.
     * `'left'` — alinhado à esquerda (padrão).
     * `'right'` — alinhado à direita (comum em campos monetários).
     */
    alignTo?: 'left' | 'right';
}
declare module './field' {
    interface FieldTypeMap {
        number: BignumberFieldConfig;
        double: BignumberFieldConfig;
    }
}
export {};
