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

package com.hypixel.hytale.common.map;

import java.util.function.IntFunction;
import java.util.function.Function;
import java.util.function.ObjDoubleConsumer;
import java.util.function.Consumer;
import com.hypixel.hytale.function.function.BiDoubleToDoubleFunction;
import com.hypixel.hytale.function.function.BiLongToDoubleFunction;
import com.hypixel.hytale.function.function.BiIntToDoubleFunction;
import java.util.Random;
import java.util.function.DoubleSupplier;
import javax.annotation.Nullable;

public interface IWeightedMap<T>
{
    @Nullable
    T get(final double p0);
    
    @Nullable
    T get(final DoubleSupplier p0);
    
    @Nullable
    T get(final Random p0);
    
    @Nullable
    T get(final int p0, final int p1, final BiIntToDoubleFunction p2);
    
    @Nullable
    T get(final long p0, final long p1, final BiLongToDoubleFunction p2);
    
    @Nullable
    T get(final double p0, final double p1, final BiDoubleToDoubleFunction p2);
    
    @Nullable
     <K> T get(final int p0, final int p1, final int p2, final SeedCoordinateFunction<K> p3, final K p4);
    
    int size();
    
    boolean contains(final T p0);
    
    void forEach(final Consumer<T> p0);
    
    void forEachEntry(final ObjDoubleConsumer<T> p0);
    
    T[] internalKeys();
    
    T[] toArray();
    
     <K> IWeightedMap<K> resolveKeys(final Function<T, K> p0, final IntFunction<K[]> p1);
    
    @FunctionalInterface
    public interface SeedCoordinateFunction<T>
    {
        double apply(final int p0, final int p1, final int p2, final T p3);
    }
}
