import enum gamemappinsVerticalPositioning
{
	Above,
	Same,
	Below,
}

import enum gameStubMappinType : Uint8
{
	None,
	Police,
	PoliceVehicle,
	Vehicle,
}

importonly abstract class IVisualObject extends IScriptable
{
}

importonly abstract class IMappin extends IVisualObject
{
	public import function IsStatic() : Bool;
	public import function IsVisible() : Bool;
	public import function IsActive() : Bool;
	public import function IsVisited() : Bool;
	public import function IsQuestMappin() : Bool;
	public import function IsQuestNPCMappin() : Bool;
	public import function IsQuestEntityMappin() : Bool;
	public import function IsQuestAreaMappin() : Bool;
	public import function IsPlayerTracked() : Bool;
	public import function GetWorldPosition() : Vector4;
	public import function GetDisplayName() : String;
	public import function GetDistanceToPlayer() : Float;
	public import function GetVerticalRelationToPlayer() : gamemappinsVerticalPositioning;
	public import function GetNewMappinID() : NewMappinID;
	public import function GetEntityID() : EntityID;
	public import function GetPhase() : gamedataMappinPhase;
	public import function GetVariant() : gamedataMappinVariant;
	public import function GetScriptData() : weak< MappinScriptData >;
	public import const function IsQuestImportant() : Bool;
	public import function IsQuestPath() : Bool;
}

importonly abstract class IArea extends IVisualObject
{
	public import function GetEntityID() : EntityID;
	public import function GetType() : CName;
}

importonly abstract class QuestMappin extends IMappin
{
	public import function GetJournalPathHash() : Uint32;
	public import function IsInsideTrigger() : Bool;
	public import function IsUIAnimation() : Bool;
	public import function GetUIAnimationRecordID() : TweakDBID;
	public import function GetOwnerObjectMarkerVisibility() : Bool;
}

importonly class RuntimeMappin extends IMappin
{
	public import function EnableVisibilityThroughWalls( visible : Bool );
	public import function GetOwnerObjectMarkerPossibility() : Bool;
}

importonly class InteractionMappin extends RuntimeMappin
{
	public import const function GetIconRecordID() : TweakDBID;
}

importonly class GrenadeMappin extends RuntimeMappin
{
}

importonly class VehicleMappin extends RuntimeMappin
{
	public import const function GetVehicle() : weak< VehicleObject >;
	public import function SetActive( active : Bool );
	public import function CanSeePlayer() : Bool;
	public import function GetPlayerDetectionValue() : Float;
}

importonly class StealthMappin extends RuntimeMappin
{
	public import function GetGameObject() : weak< GameObject >;
	public import function GetDetectionProgress() : Float;
	public import function DetectionProgressIncreases() : Bool;
	public import function DetectionProgressDecreases() : Bool;
	public import function GetThreatAccuracy() : Float;
	public import function ThreatAccuracyIncreases() : Bool;
	public import function ThreatAccuracyDecreases() : Bool;
	public import function WasDetectionAboveZero() : Bool;
	public import function GetAttitudeTowardsPlayer() : EAIAttitude;
	public import function GetSenseCone() : gamemappinsSenseCone;
	public import function IsAlive() : Bool;
	public import function IsAggressive() : Bool;
	public import function IsScanned() : Bool;
	public import function IsTarget() : Bool;
	public import function IsTagged() : Bool;
	public import function IsPrevention() : Bool;
	public import function IsCrowdNPC() : Bool;
	public import function IsCombatNPC() : Bool;
	public import function IsUsingSenseCone() : Bool;
	public import function HasItems() : Bool;
	public import function UpdateSenseCone();
	public import function GetHighLevelState() : gamedataNPCHighLevelState;
	public import function SetVisibleOnMinimap( isVisible : Bool );
	public import function SetVisibleIn3D( isVisible : Bool );
	public import function UnregisterMappin();
	public import function UpdateCombatantState( isCombatant : Bool );
	public import function GetNumberOfShotAttempts() : Uint32;
	public import function GetIsDetectionGrowing() : Bool;
	public import function HasBeenSeen() : Bool;
	public import function SetIsPulsing( isPulsing : Bool );
	public import function CanSeePlayer() : Bool;
	public import function IsHighlighted() : Bool;
	public import function SetStealthAwarenessState( state : gameEnemyStealthAwarenessState );
	public import function GetStealthAwarenessState() : gameEnemyStealthAwarenessState;
	public import function IsSquadInCombat() : Bool;
	public import function GetNumberOfCombatants() : Uint32;
	public import function GetHighestLootQuality() : Uint32;
	public import function IsNetrunner() : Bool;
	public import function IsDevice() : Bool;
	public import function IsPlayerInHostileZone() : Bool;
	public import function WillReprimand() : Bool;
	public import function IsHiddenByQuestOnMinimap() : Bool;
	public import function IsHiddenByQuestIn3D() : Bool;
	public import function GetReprimandAnimationState() : gameReprimandMappinAnimationState;
	public import function GetNPCLevel() : Uint32;
	public import function GetArchetype() : gamedataArchetypeType;
	public import function GetRarity() : gamedataNPCRarity;
	public import function GetStatusEffectCurrentPriority() : Float;
	public import function GetStatusEffectTimeRemaining() : Float;
	public import function GetStatusEffectIconPath() : String;
	public import function UpdateObjectMarkerVisibility( canHaveObjectMarker : Bool, isVisible : Bool );
	public import function IsFriendlyFromHack() : Bool;
	public import function HasHackingStatusEffect() : Bool;
	public import function GetObjectMarkersEnabled() : Bool;
	public import function GetNameplateEnabled() : Bool;
	public import function HideUIDetection() : Bool;
	public import function UpdateObjectMarkerThreshold( threshold : Float );
	public import function UpdateCombatToAwareThreshold( threshold : Float );
	public import function UpdateSenseConeAvailable( available : Bool );
	public import function IsPlayerInterestingFromSecuritySystemPOV() : Bool;
	public import function IsPlayerWanted() : Bool;
	public import function IsInCombat() : Bool;
	public import function HasLootProcessed() : Bool;
	public import function GetSkipIntroAnim() : Bool;
}

importonly class StubMappin extends IMappin
{
	public import function GetStubMappinType() : gameStubMappinType;
}

importonly class FastTravelMappin extends RuntimeMappin
{
	public import function GetPointData() : FastTravelPointData;
}

importonly class RemotePlayerMappin extends RuntimeMappin
{
	import var hasMissionData : Bool;
	import var vitals : Int32;
}

importonly class PingSystemMappin extends RuntimeMappin
{
	public import function ResolveIconState() : String;

	import var pingType : gamedataPingType;
}

importonly class PointOfInterestMappin extends IMappin
{
	public import function GetJournalPathHash() : Uint32;
	public import function IsInsideSecurityAreaTrigger() : Bool;
	public import function GetJournalQuestPathHash() : Uint32;
	public import function GetCharacterRecordID() : TweakDBID;
	public import function GetSlotName() : CName;
}

