/// <reference types="angular" />
declare namespace hurbis.ui.mascara {
    class Modulo {
        static DEFINICAO: comum.IModuloDefinicao;
        static inicializar(): void;
    }
}
declare namespace hurbis.ui.mascara {
    interface ITokenConfiguracao {
        pattern?: RegExp;
        opcional?: boolean;
        recursivo?: boolean;
        escape?: boolean;
        transformar?: (caracter: string) => string;
        _default?: string;
    }
    interface IOpcaoMascara {
        reverso?: boolean;
        utilizarPadrao?: boolean;
    }
    interface IMascaraResultado {
        resultado: string;
        valido: boolean;
    }
    /**
     * Adaptações do componente StringMask
     * Copyright (c) 2014 Daniel Campos (The Darc - darc.tec@gmail.com)
     */
    class Formatador {
        private mascara;
        private opcoes;
        constructor(mascara: string, opcoes?: IOpcaoMascara);
        private tokens;
        private escape(mascara, posicao);
        private calcularQuantidadeNumeroOpcional(mascara, texto);
        private concatenarCaracter(texto, caracter, options, token);
        existeTokenDefinido(token: string): boolean;
        private existeToken(mascara, posicao, incremento);
        private existeTokenRecursivo(mascara, posicao, incremento);
        private inserirCaracter(texto, caracter, posicao);
        processar(texto: string): IMascaraResultado;
        aplicar(texto: string): string;
        validar(texto: string): boolean;
        static processar(texto: string, mascara: string, opcoes: IOpcaoMascara): IMascaraResultado;
        static aplicar(texto: string, mascara: string, opcoes: IOpcaoMascara): string;
        static validar(texto: string, mascara: string, opcoes: IOpcaoMascara): boolean;
    }
}
declare namespace hurbis.ui.mascara {
    class Generica implements IMascara {
        private mascara;
        private formatadorMascara;
        constructor(mascara: string);
        converterParaModel(texto: string, manterMascara?: boolean): string;
        limparTexto(texto: string): string;
        formatar(texto: string): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    interface IMascaraDataConfiguracao {
        formato?: string;
    }
    class Data implements IMascara {
        private mascara;
        private formatadorMascara;
        constructor(configuracao?: IMascaraDataConfiguracao);
        converterParaModel(texto: string, manterMascara?: boolean): Date;
        limparTexto(texto: string): string;
        formatar(valor: any): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    class Hora implements IMascara {
        private mascara;
        private formatadorMascara;
        constructor(reduzida?: boolean);
        converterParaModel(texto: string, manterMascara?: boolean): string;
        limparTexto(texto: string): string;
        formatar(texto: string): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    interface IMascaraNumeroConfiguracao {
        quantidadeCasaDecimal?: number;
        separadorMilhar?: string;
        separadorDecimal?: string;
        simbolo?: string;
        exibeSimboloAposNumero?: boolean;
        permiteNegativo?: boolean;
        exibeSimbolo?: boolean;
        exibeSeparadorMilhar?: boolean;
    }
    class Numero implements IMascara {
        private configuracao;
        private mascara;
        private formatadorMascara;
        private configuracaoLocal;
        private separadorSimbolo;
        private backspacePressed;
        constructor($locale: angular.ILocaleService, configuracao?: IMascaraNumeroConfiguracao);
        private configurarMascara(model?);
        limparTexto(texto: string): string;
        private formatadorModel;
        private formatarValorNegativo(texto, model);
        converterParaModel(texto: string, manterMascara?: boolean): number;
        formatar(valor: any): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    class CPFCNPJ implements IMascara {
        private tipo;
        private mascaraCPF;
        private mascaraCNPJ;
        private formatadorMascaraCPF;
        private formatadorMascaraCNPJ;
        constructor(tipo?: string);
        limparTexto(texto: string): string;
        formatar(valor: string): string;
        converterParaModel(texto: string, manterMascara?: boolean): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    class CartaoCredito implements IMascara {
        private mascara;
        private mascaraAmex;
        private formatadorMascara;
        private formatadorMascaraAmex;
        constructor();
        limparTexto(texto: string): string;
        formatar(valor: string): string;
        converterParaModel(texto: string, manterMascara?: boolean): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    class CEP implements IMascara {
        private mascara;
        private formatadorMascara;
        constructor();
        converterParaModel(texto: string, manterMascara?: boolean): string;
        limparTexto(texto: string): string;
        formatar(texto: string): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    class Telefone implements IMascara {
        private mascara8Digitos;
        private mascara9Digitos;
        private mascara0800;
        constructor();
        limparTexto(texto: string): string;
        formatar(valor: string): string;
        converterParaModel(texto: string, manterMascara?: boolean): string;
        configurarValidador(scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController): void;
    }
}
declare namespace hurbis.ui.mascara {
    interface IMascara {
        formatar: (valor: any) => string;
        converterParaModel: (texto: string, manterMascara: boolean) => any;
        limparTexto: (texto: string) => string;
        configurarValidador: (scope: ng.IScope, attributes: angular.IAttributes, controller: angular.INgModelController) => void;
    }
    interface IMascaraOpcao {
        tipo: string;
        manterMascara?: boolean;
        numero?: IMascaraNumeroConfiguracao;
        data?: IMascaraDataConfiguracao;
    }
    class Mascara implements angular.IDirective {
        private $locale;
        constructor($locale: angular.ILocaleService);
        restrict: string;
        require: string;
        priority: number;
        link: (scope: angular.IScope, element: angular.IAugmentedJQuery, attributes: angular.IAttributes, controller: angular.INgModelController) => void;
        private instanciarMascara(opcao);
        static inicializar(): void;
    }
}
