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

package com.hypixel.hytale.assetstore;

import java.util.List;
import com.hypixel.hytale.assetstore.codec.AssetCodec;
import it.unimi.dsi.fastutil.ints.IntSet;
import java.util.Map;
import java.util.Set;
import java.nio.file.Path;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public abstract class AssetMap<K, T extends JsonAsset<K>>
{
    @Nullable
    public abstract T getAsset(final K p0);
    
    @Nullable
    public abstract T getAsset(@Nonnull final String p0, final K p1);
    
    @Nullable
    public abstract Path getPath(final K p0);
    
    @Nullable
    public abstract String getAssetPack(final K p0);
    
    public abstract Set<K> getKeys(final Path p0);
    
    public abstract Set<K> getChildren(final K p0);
    
    public abstract int getAssetCount();
    
    public abstract Map<K, T> getAssetMap();
    
    public abstract Map<K, Path> getPathMap(@Nonnull final String p0);
    
    public abstract Set<K> getKeysForTag(final int p0);
    
    public abstract IntSet getTagIndexes();
    
    public abstract int getTagCount();
    
    protected abstract void clear();
    
    protected abstract void putAll(@Nonnull final String p0, final AssetCodec<K, T> p1, final Map<K, T> p2, final Map<K, Path> p3, final Map<K, Set<K>> p4);
    
    protected abstract Set<K> remove(final Set<K> p0);
    
    protected abstract Set<K> remove(@Nonnull final String p0, final Set<K> p1, final List<Map.Entry<String, Object>> p2);
    
    public boolean requireReplaceOnRemove() {
        return false;
    }
    
    public abstract Set<K> getKeysForPack(@Nonnull final String p0);
}
