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

package com.hypixel.hytale.server.core.meta;

import javax.annotation.Nullable;

public interface IMetaStore<K>
{
    IMetaStoreImpl<K> getMetaStore();
    
    default <T> T getMetaObject(final MetaKey<T> key) {
        return (T)this.getMetaStore().getMetaObject((MetaKey<Object>)key);
    }
    
    @Nullable
    default <T> T getIfPresentMetaObject(final MetaKey<T> key) {
        return (T)this.getMetaStore().getIfPresentMetaObject((MetaKey<Object>)key);
    }
    
    @Nullable
    default <T> T putMetaObject(final MetaKey<T> key, final T obj) {
        return (T)this.getMetaStore().putMetaObject((MetaKey<Object>)key, obj);
    }
    
    @Nullable
    default <T> T removeMetaObject(final MetaKey<T> key) {
        return (T)this.getMetaStore().removeMetaObject((MetaKey<Object>)key);
    }
    
    @Nullable
    default <T> T removeSerializedMetaObject(final MetaKey<T> key) {
        return (T)this.getMetaStore().removeSerializedMetaObject((MetaKey<Object>)key);
    }
    
    default boolean hasMetaObject(final MetaKey<?> key) {
        return this.getMetaStore().hasMetaObject(key);
    }
    
    default void forEachMetaObject(final MetaEntryConsumer consumer) {
        this.getMetaStore().forEachMetaObject(consumer);
    }
    
    default void markMetaStoreDirty() {
        this.getMetaStore().markMetaStoreDirty();
    }
    
    default boolean consumeMetaStoreDirty() {
        return this.getMetaStore().consumeMetaStoreDirty();
    }
    
    @FunctionalInterface
    public interface MetaEntryConsumer
    {
         <T> void accept(final int p0, final T p1);
    }
}
