using Glamourer.Api.Enums;
namespace Glamourer.Api.Api;
/// All functions related to items.
public interface IGlamourerApiItems
{
/// Set a single item on an actor.
/// The game object index of the actor to be manipulated.
/// The slot to apply the item to.
/// The (Custom) ID of the item to apply.
/// The IDs of the stains to apply to the item.
/// A key to unlock or lock the state if necessary.
/// The flags used for the reversion. Respects Once (see .)
/// ItemInvalid, ActorNotFound, ActorNotHuman, InvalidKey, Success.
/// The item ID can be a custom item ID in Glamourer's format for models without an associated item, or a normal game item ID.
public GlamourerApiEc SetItem(int objectIndex, ApiEquipSlot slot, ulong itemId, IReadOnlyList stains, uint key, ApplyFlag flags);
/// Set a single item on players.
/// The name of the players to be manipulated.
/// The slot to apply the item to.
/// The (Custom) ID of the item to apply.
/// The IDs of the stains to apply to the item.
/// A key to unlock or lock the state if necessary.
/// The flags used for the reversion. Respects Once (see .)
/// ItemInvalid, ActorNotFound, ActorNotHuman, InvalidKey, Success.
///
/// The item ID can be a custom item ID in Glamourer's format for models without an associated item, or a normal game item ID.
/// The player does not have to be currently available as long as he has a persisted Glamourer state.
/// Only players are checked for name equality, no NPCs.
/// If multiple players of the same name are found, all of them are modified.
/// Prefer to use the index-based function unless you need to get the state of someone currently unavailable.
///
public GlamourerApiEc SetItemName(string playerName, ApiEquipSlot slot, ulong itemId, IReadOnlyList stains, uint key,
ApplyFlag flags);
/// Set a single bonus item on an actor.
/// The game object index of the actor to be manipulated.
/// The bonus slot to apply the item to.
/// The bonus item sheet ID of the item to apply (including stain).
/// A key to unlock or lock the state if necessary.
/// The flags used for the reversion. Respects Once (see .)
/// ItemInvalid, ActorNotFound, ActorNotHuman, InvalidKey, Success.
/// The bonus item ID can currently not be a custom item ID in Glamourer's format for models without an associated item. Use 0 to remove the bonus item.
public GlamourerApiEc SetBonusItem(int objectIndex, ApiBonusSlot slot, ulong bonusItemId, uint key, ApplyFlag flags);
/// Set a single bonus item on an actor.
/// The game object index of the actor to be manipulated.
/// The bonus slot to apply the item to.
/// The bonus item sheet ID of the item to apply (including stain).
/// A key to unlock or lock the state if necessary.
/// The flags used for the reversion. Respects Once (see .)
/// ItemInvalid, ActorNotFound, ActorNotHuman, InvalidKey, Success.
///
/// The bonus item ID can currently not be a custom item ID in Glamourer's format for models without an associated item. Use 0 to remove the bonus item.
/// The player does not have to be currently available as long as he has a persisted Glamourer state.
/// Only players are checked for name equality, no NPCs.
/// If multiple players of the same name are found, all of them are modified.
/// Prefer to use the index-based function unless you need to get the state of someone currently unavailable.
///
public GlamourerApiEc SetBonusItemName(string playerName, ApiBonusSlot slot, ulong bonusItemId, uint key, ApplyFlag flags);
/// Set the defined Meta State flags to the active or inactive state on actor.
/// The game object index of the actor to be manipulated.
/// The flags defining which meta states to update to the new value. This can be multiple at once.
/// The new value to update to.
/// A key to unlock or lock the state if necessary.
/// The flags used for the reversion. Respects Once (see .)
/// ItemInvalid, ActorNotFound, ActorNotHuman, InvalidKey, Success.
public GlamourerApiEc SetMetaState(int objectIndex, MetaFlag types, bool newValue, uint key, ApplyFlag flags);
/// Set the defined Meta State flags to the active or inactive state on actor (by name)
/// The name of the players to be manipulated.
/// The flags defining which meta states to update to the new value. This can be multiple at once.
/// The new value to update to.
/// A key to unlock or lock the state if necessary.
/// The flags used for the reversion. Respects Once (see .)
/// ItemInvalid, ActorNotFound, ActorNotHuman, InvalidKey, Success.
public GlamourerApiEc SetMetaStateName(string playerName, MetaFlag types, bool newValue, uint key, ApplyFlag flags);
}