// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.component.dependency;

import com.hypixel.hytale.component.system.ISystem;
import com.hypixel.hytale.component.ComponentRegistry;
import javax.annotation.Nonnull;

public abstract class Dependency<ECS_TYPE>
{
    @Nonnull
    protected final Order order;
    protected final int priority;
    
    public Dependency(@Nonnull final Order order, final int priority) {
        this.order = order;
        this.priority = priority;
    }
    
    public Dependency(@Nonnull final Order order, @Nonnull final OrderPriority priority) {
        this.order = order;
        this.priority = priority.getValue();
    }
    
    @Nonnull
    public Order getOrder() {
        return this.order;
    }
    
    public int getPriority() {
        return this.priority;
    }
    
    public abstract void validate(@Nonnull final ComponentRegistry<ECS_TYPE> p0);
    
    public abstract void resolveGraphEdge(@Nonnull final ComponentRegistry<ECS_TYPE> p0, @Nonnull final ISystem<ECS_TYPE> p1, @Nonnull final DependencyGraph<ECS_TYPE> p2);
    
    @Nonnull
    @Override
    public String toString() {
        return "Dependency{order=" + String.valueOf(this.order) + ", priority=" + this.priority;
    }
}
