using System.Diagnostics.CodeAnalysis;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace Dalamud.Plugin.Services;
#pragma warning disable SA1400 // Access modifier should be declared: Interface members are public by default
///
/// Interface for determining unlock state of various content in the game.
///
[Experimental("Dalamud001")]
public interface IUnlockState : IDalamudService
{
///
/// A delegate type used for the event.
///
/// A RowRef of the unlocked thing.
delegate void UnlockDelegate(RowRef rowRef);
///
/// Event triggered when something was unlocked.
///
event UnlockDelegate? Unlock;
///
/// Determines whether the specified Action is unlocked.
///
/// The Action row to check.
/// if unlocked; otherwise, .
bool IsActionUnlocked(Lumina.Excel.Sheets.Action row);
///
/// Determines whether the specified AetherCurrentCompFlgSet is unlocked.
///
/// The AetherCurrentCompFlgSet row to check.
/// if unlocked; otherwise, .
bool IsAetherCurrentCompFlgSetUnlocked(AetherCurrentCompFlgSet row);
///
/// Determines whether the specified AetherCurrent is unlocked.
///
/// The AetherCurrent row to check.
/// if unlocked; otherwise, .
bool IsAetherCurrentUnlocked(AetherCurrent row);
///
/// Determines whether the specified AozAction (Blue Mage Action) is unlocked.
///
/// The AozAction row to check.
/// if unlocked; otherwise, .
bool IsAozActionUnlocked(AozAction row);
///
/// Determines whether the specified BannerBg (Portrait Backgrounds) is unlocked.
///
/// The BannerBg row to check.
/// if unlocked; otherwise, .
bool IsBannerBgUnlocked(BannerBg row);
///
/// Determines whether the specified BannerCondition is unlocked.
///
/// The BannerCondition row to check.
/// if unlocked; otherwise, .
bool IsBannerConditionUnlocked(BannerCondition row);
///
/// Determines whether the specified BannerDecoration (Portrait Accents) is unlocked.
///
/// The BannerDecoration row to check.
/// if unlocked; otherwise, .
bool IsBannerDecorationUnlocked(BannerDecoration row);
///
/// Determines whether the specified BannerFacial (Portrait Expressions) is unlocked.
///
/// The BannerFacial row to check.
/// if unlocked; otherwise, .
bool IsBannerFacialUnlocked(BannerFacial row);
///
/// Determines whether the specified BannerFrame (Portrait Frames) is unlocked.
///
/// The BannerFrame row to check.
/// if unlocked; otherwise, .
bool IsBannerFrameUnlocked(BannerFrame row);
///
/// Determines whether the specified BannerTimeline (Portrait Poses) is unlocked.
///
/// The BannerTimeline row to check.
/// if unlocked; otherwise, .
bool IsBannerTimelineUnlocked(BannerTimeline row);
///
/// Determines whether the specified BuddyAction (Action of the players Chocobo Companion) is unlocked.
///
/// The BuddyAction row to check.
/// if unlocked; otherwise, .
bool IsBuddyActionUnlocked(BuddyAction row);
///
/// Determines whether the specified BuddyEquip (Equipment of the players Chocobo Companion) is unlocked.
///
/// The BuddyEquip row to check.
/// if unlocked; otherwise, .
bool IsBuddyEquipUnlocked(BuddyEquip row);
///
/// Determines whether the specified CharaMakeCustomize (Hairstyles and Face Paint patterns) is unlocked.
///
/// The CharaMakeCustomize row to check.
/// if unlocked; otherwise, .
bool IsCharaMakeCustomizeUnlocked(CharaMakeCustomize row);
///
/// Determines whether the specified ChocoboTaxiStand (Chocobokeeps of the Chocobo Porter service) is unlocked.
///
/// The ChocoboTaxiStand row to check.
/// if unlocked; otherwise, .
bool IsChocoboTaxiStandUnlocked(ChocoboTaxiStand row);
///
/// Determines whether the specified Companion (Minions) is unlocked.
///
/// The Companion row to check.
/// if unlocked; otherwise, .
bool IsCompanionUnlocked(Companion row);
///
/// Determines whether the specified CraftAction is unlocked.
///
/// The CraftAction row to check.
/// if unlocked; otherwise, .
bool IsCraftActionUnlocked(CraftAction row);
///
/// Determines whether the specified CSBonusContentType is unlocked.
///
/// The CSBonusContentType row to check.
/// if unlocked; otherwise, .
bool IsCSBonusContentTypeUnlocked(CSBonusContentType row);
///
/// Determines whether the specified Emote is unlocked.
///
/// The Emote row to check.
/// if unlocked; otherwise, .
bool IsEmoteUnlocked(Emote row);
///
/// Determines whether the specified EmjVoiceNpc (Doman Mahjong Characters) is unlocked.
///
/// The EmjVoiceNpc row to check.
/// if unlocked; otherwise, .
bool IsEmjVoiceNpcUnlocked(EmjVoiceNpc row);
///
/// Determines whether the specified EmjCostume (Doman Mahjong Character Costume) is unlocked.
///
/// The EmjCostume row to check.
/// if unlocked; otherwise, .
bool IsEmjCostumeUnlocked(EmjCostume row);
///
/// Determines whether the specified GeneralAction is unlocked.
///
/// The GeneralAction row to check.
/// if unlocked; otherwise, .
bool IsGeneralActionUnlocked(GeneralAction row);
///
/// Determines whether the specified Glasses is unlocked.
///
/// The Glasses row to check.
/// if unlocked; otherwise, .
bool IsGlassesUnlocked(Glasses row);
///
/// Determines whether the specified HowTo is unlocked.
///
/// The HowTo row to check.
/// if unlocked; otherwise, .
bool IsHowToUnlocked(HowTo row);
///
/// Determines whether the specified InstanceContent is unlocked.
///
/// The InstanceContent row to check.
/// if unlocked; otherwise, .
bool IsInstanceContentUnlocked(InstanceContent row);
///
/// Determines whether the specified Item is considered unlockable.
///
/// The Item row to check.
/// if unlockable; otherwise, .
bool IsItemUnlockable(Item row);
///
/// Determines whether the specified Item is unlocked.
///
/// The Item row to check.
/// if unlocked; otherwise, .
bool IsItemUnlocked(Item row);
///
/// Determines whether the specified McGuffin is unlocked.
///
/// The McGuffin row to check.
/// if unlocked; otherwise, .
bool IsMcGuffinUnlocked(McGuffin row);
///
/// Determines whether the specified MJILandmark (Island Sanctuary landmark) is unlocked.
///
/// The MJILandmark row to check.
/// if unlocked; otherwise, .
bool IsMJILandmarkUnlocked(MJILandmark row);
///
/// Determines whether the specified MKDLore (Occult Record) is unlocked.
///
/// The MKDLore row to check.
/// if unlocked; otherwise, .
bool IsMKDLoreUnlocked(MKDLore row);
///
/// Determines whether the specified Mount is unlocked.
///
/// The Mount row to check.
/// if unlocked; otherwise, .
bool IsMountUnlocked(Mount row);
///
/// Determines whether the specified NotebookDivision (Categories in Crafting/Gathering Log) is unlocked.
///
/// The NotebookDivision row to check.
/// if unlocked; otherwise, .
bool IsNotebookDivisionUnlocked(NotebookDivision row);
///
/// Determines whether the specified Orchestrion roll is unlocked.
///
/// The Orchestrion row to check.
/// if unlocked; otherwise, .
bool IsOrchestrionUnlocked(Orchestrion row);
///
/// Determines whether the specified Ornament (Fashion Accessories) is unlocked.
///
/// The Ornament row to check.
/// if unlocked; otherwise, .
bool IsOrnamentUnlocked(Ornament row);
///
/// Determines whether the specified Perform (Performance Instruments) is unlocked.
///
/// The Perform row to check.
/// if unlocked; otherwise, .
bool IsPerformUnlocked(Perform row);
///
/// Determines whether the specified PublicContent is unlocked.
///
/// The PublicContent row to check.
/// if unlocked; otherwise, .
bool IsPublicContentUnlocked(PublicContent row);
///
/// Determines whether the specified Recipe is unlocked.
///
/// The Recipe row to check.
/// if unlocked; otherwise, .
bool IsRecipeUnlocked(Recipe row);
///
/// Determines whether the underlying RowRef type is unlocked.
///
/// The RowRef to check.
/// if unlocked; otherwise, .
bool IsRowRefUnlocked(RowRef rowRef);
///
/// Determines whether the underlying RowRef type is unlocked.
///
/// The type of the Excel row.
/// The RowRef to check.
/// if unlocked; otherwise, .
bool IsRowRefUnlocked(RowRef rowRef) where T : struct, IExcelRow;
///
/// Determines whether the specified SecretRecipeBook (Master Recipe Books) is unlocked.
///
/// The SecretRecipeBook row to check.
/// if unlocked; otherwise, .
bool IsSecretRecipeBookUnlocked(SecretRecipeBook row);
///
/// Determines whether the specified Trait is unlocked.
///
/// The Trait row to check.
/// if unlocked; otherwise, .
bool IsTraitUnlocked(Trait row);
///
/// Determines whether the specified TripleTriadCard is unlocked.
///
/// The TripleTriadCard row to check.
/// if unlocked; otherwise, .
bool IsTripleTriadCardUnlocked(TripleTriadCard row);
///
/// Determines whether the specified unlock link is unlocked or quest is completed.
///
/// The unlock link id or quest id (quest ids in this case are over 65536).
/// if unlocked; otherwise, .
bool IsUnlockLinkUnlocked(uint unlockLink);
///
/// Determines whether the specified unlock link is unlocked.
///
/// The unlock link id.
/// if unlocked; otherwise, .
bool IsUnlockLinkUnlocked(ushort unlockLink);
}