using System.Text.Json.Serialization;
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Enums;

namespace SPTarkov.Server.Core.Models;

[Injectable]
public record Prapor : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Prapor";
    public MongoId Id { get; } = Traders.PRAPOR;
}

[Injectable]
public record Therapist : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Therapist";
    public MongoId Id { get; } = Traders.THERAPIST;
}

[Injectable]
public record Fence : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Fence";
    public MongoId Id { get; } = Traders.FENCE;
}

[Injectable]
public record Skier : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Skier";
    public MongoId Id { get; } = Traders.SKIER;
}

[Injectable]
public record Peacekeeper : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Peacekeeper";
    public MongoId Id { get; } = Traders.PEACEKEEPER;
}

[Injectable]
public record Mechanic : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Mechanic";
    public MongoId Id { get; } = Traders.MECHANIC;
}

[Injectable]
public record Ragman : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Ragman";
    public MongoId Id { get; } = Traders.RAGMAN;
}

[Injectable]
public record Jaeger : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Jaeger";
    public MongoId Id { get; } = Traders.JAEGER;
}

[Injectable]
public record LighthouseKeeper : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "LighthouseKeeper";
    public MongoId Id { get; } = Traders.LIGHTHOUSEKEEPER;
}

[Injectable]
public record Btr : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Btr";
    public MongoId Id { get; } = Traders.BTR;
}

[Injectable]
public record Ref : ITrader
{
    [JsonExtensionData]
    public Dictionary<string, object>? ExtensionData { get; set; }

    public string Name { get; } = "Ref";
    public MongoId Id { get; } = Traders.REF;
}
