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

package com.hypixel.hytale.component.system;

import javax.annotation.Nullable;
import com.hypixel.hytale.component.CommandBuffer;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.component.Ref;
import javax.annotation.Nonnull;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.component.Component;

public abstract class RefChangeSystem<ECS_TYPE, T extends Component<ECS_TYPE>> extends System<ECS_TYPE> implements QuerySystem<ECS_TYPE>
{
    @Nonnull
    public abstract ComponentType<ECS_TYPE, T> componentType();
    
    public abstract void onComponentAdded(@Nonnull final Ref<ECS_TYPE> p0, @Nonnull final T p1, @Nonnull final Store<ECS_TYPE> p2, @Nonnull final CommandBuffer<ECS_TYPE> p3);
    
    public abstract void onComponentSet(@Nonnull final Ref<ECS_TYPE> p0, @Nullable final T p1, @Nonnull final T p2, @Nonnull final Store<ECS_TYPE> p3, @Nonnull final CommandBuffer<ECS_TYPE> p4);
    
    public abstract void onComponentRemoved(@Nonnull final Ref<ECS_TYPE> p0, @Nonnull final T p1, @Nonnull final Store<ECS_TYPE> p2, @Nonnull final CommandBuffer<ECS_TYPE> p3);
}
