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

package com.hypixel.hytale.assetstore.codec;

import java.io.IOException;
import com.hypixel.hytale.codec.util.RawJsonReader;
import javax.annotation.Nullable;
import com.hypixel.hytale.assetstore.AssetExtraInfo;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.validation.ValidatableCodec;
import com.hypixel.hytale.codec.InheritCodec;
import com.hypixel.hytale.assetstore.JsonAsset;

public interface AssetCodec<K, T extends JsonAsset<K>> extends InheritCodec<T>, ValidatableCodec<T>
{
    KeyedCodec<K> getKeyCodec();
    
    KeyedCodec<K> getParentCodec();
    
    @Nullable
    AssetExtraInfo.Data getData(final T p0);
    
    T decodeJsonAsset(final RawJsonReader p0, final AssetExtraInfo<K> p1) throws IOException;
    
    T decodeAndInheritJsonAsset(final RawJsonReader p0, final T p1, final AssetExtraInfo<K> p2) throws IOException;
}
