import { Observable } from 'rxjs';
import { SmzBuilderUtilities } from '../common/smz-builder-utilities';
import { SmzGaugeState, SmzGaugeThreshold } from '../../modules/smz-gauge/smz-gauge.types';
/**
 * Classe para construir o estado de um Gauge (medidor) com configurações dinâmicas e personalizadas.
 * Utiliza o padrão de projeto Builder para facilitar a criação de configurações complexas.
 *
 * @example
 * ```typescript
 * // Exemplo de uso do SmzGaugeBuilder
 * import { SmzGaugeBuilder } from './path/to/SmzGaugeBuilder';
 * import { createRangeObservable } from './path/to/observable-helper';
 *
 * const gauge = new SmzGaugeBuilder()
 *   .withSize(250)
 *   .withTitle('Plano de Pintura')
 *   .withTitleStyle('font-bold text-4xl')
 *   .withValue(createRangeObservable(0, 100, 10000))
 *   .withValueThrottleTime(300)
 *   .withDecimalPlaces(2, false)
 *   .withRange(0, 100)
 *   .withUnit('%')
 *   .withBackgroundColor('#e6e6e6')
 *   .withFont('bold', '#000000')
 *   .withMinMaxFont('bold', '#000000')
 *   .addThreshold()
 *     .withValue(0)
 *     .withColor('#264653')
 *     .gauge
 *   .addThreshold()
 *     .withValue(25)
 *     .withColor('#2a9d8f')
 *     .gauge
 *   .addThreshold()
 *     .withValue(50)
 *     .withColor('#e9c46a')
 *     .gauge
 *   .addThreshold()
 *     .withValue(75)
 *     .withColor('#f4a261')
 *     .gauge
 *   .addThreshold()
 *     .withValue(100)
 *     .withColor('#e76f51')
 *     .gauge
 *   .build();
 * ```
 */
export declare class SmzGaugeBuilder extends SmzBuilderUtilities<SmzGaugeBuilder> {
    protected that: this;
    private _state;
    /**
     * Inicializa uma nova instância do SmzGaugeBuilder.
     */
    constructor();
    /**
     * Define o modo de depuração do medidor.
     * @param debugMode - Indica se o modo de depuração está ativado.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withDebugMode(debugMode: boolean): SmzGaugeBuilder;
    /**
     * Define o tamanho do medidor em pixels.
     * @param size - O tamanho desejado em pixels. Deve ser maior ou igual a 100.
     * @throws Erro se o tamanho for menor que 100.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withSize(size: number): SmzGaugeBuilder;
    /**
     * Define o título do medidor e ativa sua exibição.
     * @param title - O título a ser exibido.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withTitle(title: string): SmzGaugeBuilder;
    /**
     * Define o estilo CSS do título do medidor.
     * @param titleStyle - O estilo CSS a ser aplicado ao título.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withTitleStyle(titleStyle: string): SmzGaugeBuilder;
    /**
     * Define o valor do medidor como um Observable.
     * @param value$ - O Observable que fornece os valores do medidor.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withValue(value$: Observable<number>): SmzGaugeBuilder;
    /**
     * Define o tempo de throttle para o valor do medidor.
     * @param valueThrottleTime - O tempo de throttle em milissegundos.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withValueThrottleTime(valueThrottleTime: number): SmzGaugeBuilder;
    /**
     * Define o número de casas decimais para o valor do medidor e, opcionalmente, para os valores mínimo e máximo.
     * @param decimalPlaces - O número de casas decimais (deve ser entre 0 e 3).
     * @param includeMinMax - Se verdadeiro, aplica o formato também aos valores mínimo e máximo.
     * @throws Erro se o número de casas decimais for negativo ou maior que 3.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withDecimalPlaces(decimalPlaces: number, includeMinMax?: boolean): SmzGaugeBuilder;
    /**
     * Define os valores mínimo e máximo do medidor.
     * @param min - O valor mínimo.
     * @param max - O valor máximo.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withRange(min: number, max: number): SmzGaugeBuilder;
    /**
     * Oculta os valores mínimo e máximo do medidor.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    hideMinMax(): SmzGaugeBuilder;
    /**
     * Define a unidade de medida do medidor e ativa sua exibição.
     * @param unit - A unidade de medida.
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withUnit(unit: string): SmzGaugeBuilder;
    /**
     * Define o peso e a cor da fonte do valor do medidor.
     * @param fontWeight - O peso da fonte (ex.: "bold").
     * @param fontColor - A cor da fonte (ex.: "#000000").
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withFont(fontWeight: string, fontColor: string): SmzGaugeBuilder;
    /**
     * Define o peso e a cor da fonte para os valores mínimo e máximo do medidor.
     * @param fontWeight - O peso da fonte (ex.: "bold").
     * @param fontColor - A cor da fonte (ex.: "#000000").
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withMinMaxFont(fontWeight: string, fontColor: string): SmzGaugeBuilder;
    /**
     * Define a cor de fundo do medidor.
     * @param backgroundColor - A cor de fundo (ex.: "#e6e6e6").
     * @returns A instância atual do SmzGaugeBuilder para encadeamento de métodos.
     */
    withBackgroundColor(backgroundColor: string): SmzGaugeBuilder;
    /**
     * Adiciona um novo limite (threshold) ao medidor.
     * @returns Uma instância do SmzGaugeThresholdBuilder para definir o limite.
     */
    addThreshold(): SmzGaugeThresholdBuilder;
    /**
     * Constrói e retorna o estado final do medidor, organizando os limites em ordem crescente de valor.
     * @returns O estado completo do SmzGauge.
     */
    build(): SmzGaugeState;
}
/**
 * Builder para definir os limites (thresholds) de um SmzGauge.
 * Permite a configuração de valores específicos e cores associadas.
 */
export declare class SmzGaugeThresholdBuilder extends SmzBuilderUtilities<SmzGaugeThresholdBuilder> {
    private _parent;
    private _threshold;
    private _min;
    private _max;
    protected that: this;
    /**
     * Inicializa uma nova instância do SmzGaugeThresholdBuilder.
     * @param _parent - O builder pai (SmzGaugeBuilder) ao qual este threshold pertence.
     * @param _threshold - O limite (threshold) sendo configurado.
     */
    constructor(_parent: SmzGaugeBuilder, _threshold: SmzGaugeThreshold, _min: number, _max: number);
    /**
     * Define o valor do limite.
     * @param value - O valor numérico do limite.
     * @returns A instância atual do SmzGaugeThresholdBuilder para encadeamento de métodos.
     */
    withValue(value: number): SmzGaugeThresholdBuilder;
    /**
     * Define a cor associada ao limite.
     * @param color - A cor hexadecimal a ser associada ao limite (ex.: "#FF0000").
     * @returns A instância atual do SmzGaugeThresholdBuilder para encadeamento de métodos.
     */
    withColor(hexaColor: string): SmzGaugeThresholdBuilder;
    /**
     * Retorna ao builder do SmzGauge associado a este threshold.
     * @returns A instância do SmzGaugeBuilder.
     */
    get gauge(): SmzGaugeBuilder;
    /**
     * Constrói e retorna o limite configurado.
     * @returns O limite (SmzGaugeThreshold) completo.
     */
    build(): SmzGaugeThreshold;
}
