// API Link: https://tfb.neocities.org/1.16.5/org/bukkit/Registry

namespace org.bukkit {
	/** @description Represents a registry of Bukkit objects that may be retrieved by NamespacedKey. !! This is missing static fields that could not be implented due to TS restrictions !! */
	export interface Registry<T extends org.bukkit.Keyed> extends java.lang.Iterable<T> {

		/** @description Get the object by its key */
		get(key: org.bukkit.NamespacedKey) : T;

	}

    export class Registry_$_SimpleRegistry<T extends org.bukkit.Keyed> implements org.bukkit.Registry<T> {

        constructor(type: java.lang.Class<T>);
        /** @description predicate is of type java.util.function.Predicate (TS Restrictions) */
        constructor(type: java.lang.Class<T>, predicate: any);
        constructor(type: any, predicate?: any) {}

        /** @description Get the object by its key */
        get(key: org.bukkit.NamespacedKey) : T {return;}

        iterator() : java.util.Iterator<T> {return;}
    }
}