enum FIREWORK_TYPE {
	FIREWORK__SALUTE,
	FIREWORK__CANDLE
}

#define INVALID_FIREWORK_TYPE -1

// NOTE: pPlayer can be 0
// return PLUGIN_HANDLED to block or PLUGIN_CONTINUE to allow
forward Firework_CheckRules(pPlayer);

// Player can be 0
// Will execute Firework_CheckRules() to check availability
// return firework entity index if firework was set or 0 if set was blocked
native Firework_TrySet(pPlayer, const Float:fOrigin[3], FIREWORK_TYPE:iType);

// Will return active fireworks count
native Firework_GetActiveCount();

// Will return any of FIREWORK_TYPE value or INVALID_FIREWORK_TYPE
native FIREWORK_TYPE:Firework_GetLastFireworkType();

// Will return true/false based on core decision that specified firework type can be placed on specified coordinates
native bool:Firework_IsCanBeSet(FIREWORK_TYPE:iType, const Float:fOrigin[3]);

//
// Firework: Item (firework_item.sma) ->
//

// Will return entity index (new or existing) or NULLENT if give failed
// Using this you can give ext. ammo, but don't forget about AMMO_MAXIMUM in firework_item.sma
native FireworkItem_Give(pPlayer, iAmmo = 1);

// Will return ammo count (or 0 if player does not have item)
native FireworkItem_Has(pPlayer);