/**
 * Interface que define as caches utilizadas nas utilidades do builder.
 * @template T - O tipo do builder associado.
 */
interface BuilderUtilitiesCaches<T> {
    /**
     * Cache utilizada para armazenar o estado durante uma condição condicional.
     */
    if: Cache<T>;
}
/**
 * Interface que define a estrutura de uma cache.
 * @template T - O tipo de dados armazenados na cache.
 */
interface Cache<T> {
    /**
     * Indica se a cache está ativa.
     */
    isActive: boolean;
    /**
     * Dados armazenados na cache.
     */
    data: T | null;
}
/**
 * Classe base que fornece utilidades para builders, permitindo a execução de operações
 * condicionais e a aplicação de callbacks em listas.
 * @template T - O tipo do builder que estende esta classe.
 */
export declare class SmzBuilderUtilities<T> {
    /**
     * Instância do builder que estende esta classe.
     * @protected
     */
    protected that: T | null;
    /**
     * Estrutura de cache utilizada para armazenar estados durante operações condicionais.
     * @protected
     */
    protected cache: BuilderUtilitiesCaches<T>;
    /**
     * Inicializa uma nova instância do SmzBuilderUtilities.
     */
    constructor();
    /**
     * Executa um bloco condicional dentro do builder, permitindo reverter as alterações
     * feitas se a condição não for atendida.
     * @param condition - A condição a ser avaliada. Se falsa, as alterações serão revertidas.
     * @returns A instância atual do builder para encadeamento de métodos.
     * @throws Erro se outro método condicional já estiver ativo.
     */
    if(condition: boolean): T;
    /**
     * Executa um bloco condicional dentro do builder, aplicável apenas em ambiente de desenvolvimento.
     * @returns A instância atual do builder para encadeamento de métodos.
     * @throws Erro se outro método condicional já estiver ativo.
     */
    ifDevelopment(): T;
    /**
     * Executa um bloco condicional dentro do builder, aplicável apenas em ambiente de produção.
     * @returns A instância atual do builder para encadeamento de métodos.
     * @throws Erro se outro método condicional já estiver ativo.
     */
    ifProduction(): T;
    /**
     * Termina um bloco condicional e restaura o estado anterior se a condição não foi atendida.
     * @returns O estado final do builder, após avaliar e aplicar a condição.
     * @throws Erro se `endIf` for chamado sem um método condicional correspondente.
     */
    get endIf(): T;
    /**
     * Executa um callback para cada item em uma lista, permitindo modificar o builder em cada iteração.
     * @param items - A lista de itens a serem processados.
     * @param callback - A função de callback a ser executada em cada item.
     * @returns O estado final do builder após a aplicação do callback em todos os itens.
     */
    for(items: any[], callback: (builder: T, item: any, index: number) => T): T;
}
export {};
