using System;
using Dalamud.Plugin.Services;

namespace HellionChat.Util;

internal sealed class DalamudPluginLogProxy : IPluginLogProxy
{
    private readonly IPluginLog _log;

    public DalamudPluginLogProxy(IPluginLog log) => _log = log;

    public void Verbose(string message) => _log.Verbose(message);

    public void Verbose(Exception exception, string message) => _log.Verbose(exception, message);

    public void Verbose(string messageTemplate, params object[] values) =>
        _log.Verbose(messageTemplate, values);

    public void Debug(string message) => _log.Debug(message);

    public void Debug(Exception exception, string message) => _log.Debug(exception, message);

    public void Debug(string messageTemplate, params object[] values) =>
        _log.Debug(messageTemplate, values);

    public void Information(string message) => _log.Information(message);

    public void Information(Exception exception, string message) =>
        _log.Information(exception, message);

    public void Information(string messageTemplate, params object[] values) =>
        _log.Information(messageTemplate, values);

    public void Info(string message) => _log.Info(message);

    public void Info(Exception exception, string message) => _log.Info(exception, message);

    public void Info(string messageTemplate, params object[] values) =>
        _log.Info(messageTemplate, values);

    public void Warning(string message) => _log.Warning(message);

    public void Warning(Exception exception, string message) => _log.Warning(exception, message);

    public void Warning(string messageTemplate, params object[] values) =>
        _log.Warning(messageTemplate, values);

    public void Error(string message) => _log.Error(message);

    public void Error(Exception exception, string message) => _log.Error(exception, message);

    public void Error(string messageTemplate, params object[] values) =>
        _log.Error(messageTemplate, values);

    public void Fatal(string message) => _log.Fatal(message);

    public void Fatal(Exception exception, string message) => _log.Fatal(exception, message);

    public void Fatal(string messageTemplate, params object[] values) =>
        _log.Fatal(messageTemplate, values);
}
