using EonaCat.LogStack.Core;

namespace EonaCat.LogStack.Boosters;

// This file is part of the EonaCat project(s) which is released under the Apache License.
// See the LICENSE file or go to https://EonaCat.com/License for full license details.

/// <summary>
/// Boosters enrich log events with additional context or transform them before they reach flows.
/// Boosters are designed for zero-allocation where possible.
/// </summary>
public interface IBooster
{
    /// <summary>
    /// Gets the name of this booster for identification
    /// </summary>
    string Name { get; }

    /// <summary>
    /// Boost a log event with additional data or transforms it.
    /// Return false to filter out the event entirely.
    /// </summary>
    /// <param name="builder">Builder to modify the log event</param>
    /// <returns>True to continue processing, false to filter out the event</returns>
    bool Boost(ref LogEventBuilder builder);
}
