import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
import { AbstractControl, ValidationErrors } from '@angular/forms';
import { NumericMaskDirective } from '@seniorsistemas/angular-components/numeric-mask';
import * as i0 from "@angular/core";
/**
 * @deprecated Este enum não tem mais efeito. O alinhamento do campo é sempre `'right'`.
 */
export declare enum BignumberAlignmentOption {
    RIGHT = "right",
    LEFT = "left"
}
/**
 * @deprecated Utilize a diretiva `BigNumberInput` ao invés desta.
 * @description Diretiva de máscara para campos de entrada de números de grande precisão,
 * adaptada do `CurrencyMaskDirective`. Permite configurar precisão, escala,
 * separadores decimais e de milhar de acordo com o locale da aplicação.
 *
 * @example
 * ```html
 * <input sBignumberInput [precision]="15" [scale]="2" [allowNegative]="false" />
 * ```
 *
 * @category Inputs
 */
export declare class BignumberInputDirective extends NumericMaskDirective implements OnInit, OnChanges {
    /**
     * @description Número total de dígitos significativos aceitos pelo campo (parte inteira + parte decimal).
     *
     * Durante a digitação, o campo limita fisicamente o número de caracteres via `maxLength`.
     * Ao colar um valor que ultrapasse o limite, o evento `pasteRejected` é emitido e a colagem é cancelada.
     * Após sair do campo (blur) ou ao submeter o formulário, se o valor ultrapassar `precision`,
     * o campo ficará inválido com o erro `exceedsPrecision: { precision, actual }`.
     *
     * @default 15
     */
    precision: import("@angular/core").InputSignal<number>;
    /**
     * @deprecated Use `minDecimalPlaces` e `maxDecimalPlaces` ao invés deste.
     * @description Número de casas decimais exibidas e aceitas pelo campo.
     * Quando informado, repassa o valor para `minDecimalPlaces` e `maxDecimalPlaces`.
     *
     * @default 0
     */
    scale: import("@angular/core").InputSignal<number>;
    /**
     * @description Número mínimo de casas decimais exibidas.
     *
     * @default 0
     */
    minDecimalPlaces: import("@angular/core").ModelSignal<number>;
    /**
     * @description Número máximo de casas decimais aceitas.
     *
     * @default 0
     */
    maxDecimalPlaces: import("@angular/core").ModelSignal<number>;
    /**
     * @description Separador decimal personalizado. Quando não informado,
     * utiliza o separador definido pelo locale ativo da aplicação.
     */
    decimalSeparator: import("@angular/core").ModelSignal<string>;
    /**
     * @deprecated Use `thousandSeparator` ao invés deste.
     * @description Separador de milhar personalizado. Recomenda-se migrar para `thousandSeparator`.
     */
    thousandsSeparator: import("@angular/core").InputSignal<string | undefined>;
    /**
     * @description Separador de milhar personalizado. Quando não informado,
     * utiliza o separador definido pelo locale ativo da aplicação.
     */
    thousandSeparator: import("@angular/core").ModelSignal<string>;
    /**
     * @deprecated Este input não tem mais efeito e pode ser removido.
     * O alinhamento do campo é sempre `'right'`, conforme o comportamento padrão da máscara numérica.
     */
    alignTo: import("@angular/core").InputSignal<"right" | "left">;
    /**
     * @description Permite a entrada de valores negativos.
     *
     * @default true
     */
    allowNegative: import("@angular/core").InputSignal<boolean>;
    /**
     * @description Texto de placeholder exibido quando o campo está vazio.
     */
    placeholder: import("@angular/core").ModelSignal<string | undefined>;
    maxLength?: number;
    /**
     * @description Emitido quando uma colagem (paste) é rejeitada pela validação do campo.
     * Emite a string colada que foi recusada.
     */
    pasteRejected: import("@angular/core").OutputEmitterRef<string>;
    private _decimalSeparatorExplicit;
    private _thousandSeparatorExplicit;
    constructor();
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Overrides base paste handler to add precision validation.
     * If the pasted value exceeds `precision` digits, the paste is rejected.
     */
    onPaste(event: ClipboardEvent): void;
    /**
     * Overrides locale-derived separators with explicitly set inputs, if provided.
     * If no explicit separator is set, the locale-derived value is used.
     */
    protected updateSeparators(): void;
    /**
     * Overrides base validator to add precision validation.
     * If the total number of significant digits exceeds `precision`, returns an `exceedsPrecision` error.
     */
    validate(control: AbstractControl): ValidationErrors | null;
    /**
     * Responsible to calculate the field maximum length considering the separators.
     */
    private calculateMaxLength;
    private updatePlaceholder;
    static ɵfac: i0.ɵɵFactoryDeclaration<BignumberInputDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BignumberInputDirective, "input[sBignumberInput]", never, { "precision": { "alias": "precision"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "minDecimalPlaces": { "alias": "minDecimalPlaces"; "required": false; "isSignal": true; }; "maxDecimalPlaces": { "alias": "maxDecimalPlaces"; "required": false; "isSignal": true; }; "decimalSeparator": { "alias": "decimalSeparator"; "required": false; "isSignal": true; }; "thousandsSeparator": { "alias": "thousandsSeparator"; "required": false; "isSignal": true; }; "thousandSeparator": { "alias": "thousandSeparator"; "required": false; "isSignal": true; }; "alignTo": { "alias": "alignTo"; "required": false; "isSignal": true; }; "allowNegative": { "alias": "allowNegative"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "minDecimalPlaces": "minDecimalPlacesChange"; "maxDecimalPlaces": "maxDecimalPlacesChange"; "decimalSeparator": "decimalSeparatorChange"; "thousandSeparator": "thousandSeparatorChange"; "placeholder": "placeholderChange"; "pasteRejected": "pasteRejected"; }, never, never, true, never>;
}
