namespace PkmnLib.Dynamic;

/// <summary>
/// A static helper class that contains functions that are used in multiple places.
/// </summary>
public static class StaticHelpers
{
    /// <summary>
    /// A delegate that provides the current date and time.
    /// </summary>
    public delegate DateTimeOffset DateTimeProviderDelegate();

    /// <summary>
    /// A function to get the current date and time. This can be replaced in cases where the date and time
    /// may not be the same as the system time.
    /// </summary>
    [PublicAPI]
    public static DateTimeProviderDelegate DateTimeProvider { get; set; } = () => DateTimeOffset.Now;

    /// <summary>
    /// Get the current date and time.
    /// </summary>
    public static DateTimeOffset GetCurrentDateTime() => DateTimeProvider();
}