C# Stats system, question about using interfaces and classes

I’m trying to get better at using interfaces and abstract classes, and I wanted to see if I could implement the following system. Im envisioning an abstract class NPC with several implementations: Friend, Enemy, StationaryEnemy.

I then want to try and layer on a Stats system that depends on interfaces. So let’s say we have a base IStats with several interfaces that inherit: IMovable, IDamageable. I want Friends to implement IMoveable, Enemies to implement IMoveable, IDamageable, and StationaryEnemies to implement IDamageable (for example). The idea is at the end of the day, I could query Friends Stats and find MovementSpeed. Or, I could query Enemies Stats and find MovementSpeed and Health.

Here is one way I can see doing this, but I’m sure it has flaws and I’m seeking feedback/corrections:

using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public abstract class TestCharacter : MonoBehaviour, IStat
{
    public List<Stat> Stats { get; set; }
    
    public void AddOrModifyStats(List<Stat> stats)
    {
        foreach (var stat in stats)
        {
            if (Stats.Any(x=>x.Name==stat.Name))
            {
                Stats.First(x=>x==stat).Value += stat.Value;
            }
            else
            {
                Stats.Add(stat);
            }
        }
    }
}

public abstract class TestNPC : TestCharacter
{
    // common properties
}

public class TestEnemy : TestNPC, IMovableTest, IDamageableTest
{
    public Stat MovementSpeed { get; set; }
    public Stat Health { get; set; }

    private void Start()
    {
        AddOrModifyStats(new List<Stat>() { MovementSpeed, Health });
    }
}

public class TestStationaryEnemy : TestNPC, IDamageableTest
{
    public Stat Health { get; set; }
    
    private void Start()
    {
        AddOrModifyStats(new List<Stat>() { Health });
    }
}

public interface IStat
{
    List<Stat> Stats { get; set; }
    public void AddOrModifyStats(List<Stat> stats);
}

public interface IMovableTest : IStat
{
    public Stat MovementSpeed { get; set; }
}

public interface IDamageableTest : IStat
{
    public Stat Health { get; set; }
}

public class Stat
{
    public string Name;
    public string Value;

    public Stat(string name, string value)
    {
        Name = name;
        Value = value;
    }
}