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

package com.hypixel.hytale.component.query;

import com.hypixel.hytale.component.ComponentRegistry;
import com.hypixel.hytale.component.ComponentType;
import javax.annotation.Nonnull;
import com.hypixel.hytale.component.Archetype;

public interface ReadWriteArchetypeQuery<ECS_TYPE> extends Query<ECS_TYPE>
{
    Archetype<ECS_TYPE> getReadArchetype();
    
    Archetype<ECS_TYPE> getWriteArchetype();
    
    default boolean test(@Nonnull final Archetype<ECS_TYPE> archetype) {
        return archetype.contains(this.getReadArchetype()) && archetype.contains(this.getWriteArchetype());
    }
    
    default boolean requiresComponentType(@Nonnull final ComponentType<ECS_TYPE, ?> componentType) {
        return this.getReadArchetype().contains(componentType) || this.getWriteArchetype().contains(componentType);
    }
    
    default void validateRegistry(@Nonnull final ComponentRegistry<ECS_TYPE> registry) {
        this.getReadArchetype().validateRegistry(registry);
        this.getWriteArchetype().validateRegistry(registry);
    }
    
    default void validate() {
        this.getReadArchetype().validate();
        this.getWriteArchetype().validate();
    }
}
