import function GetScreenPosition( widget : weak< inkWidget > ) : RectF;
import function RefreshSettings();

import class inkAsyncSpawnData extends IScriptable
{
	import var libraryID : CName;
	import var parentWidget : weak< inkCompoundWidget >;
	import var triggerCallbackAsync : Bool;
	import var userData : IScriptable;
	import var introAnimation : CName;

	public import function SetResourcePath( resourceRef : ResRef );
}

import class inkAsyncSpawnRequest extends IScriptable
{
	public import function Cancel();
}

import abstract class inkIGameController extends IScriptable
{
	public import function GetRootWidget() : weak< inkWidget >;
	public import function GetRootCompoundWidget() : weak< inkCompoundWidget >;
	public import function GetWidget( path : inkWidgetPath ) : weak< inkWidget >;
	public import function GetController( optional path : inkWidgetPath ) : weak< inkLogicController >;
	public import function GetControllerByType( controllerType : CName, optional path : inkWidgetPath ) : weak< inkLogicController >;
	public import function GetControllers( optional path : inkWidgetPath ) : array< weak< inkLogicController > >;
	public import function GetControllersByType( controllerType : CName, optional path : inkWidgetPath ) : array< weak< inkLogicController > >;
	public import function GetNumControllers( optional path : inkWidgetPath ) : Int32;
	public import function GetNumControllersOfType( controllerType : CName, optional path : inkWidgetPath ) : Int32;
	public import function RequestSetFocus( const widget : weak< inkWidget > );
	public import function RequestProcessFitToViewport();
	public import function IsKeyboardConnected() : Bool;
	public import function GetChildWidgetByPath( widgetNamePath : CName ) : weak< inkWidget >;
	public import function GetChildControllerByPath( widgetNamePath : CName ) : weak< inkLogicController >;

	public function GetWidget( widgetNamePath : CName ) : weak< inkWidget >
	{
		return GetChildWidgetByPath( widgetNamePath );
	}

	public function GetController( widgetNamePath : CName ) : weak< inkLogicController >
	{
		return GetChildControllerByPath( widgetNamePath );
	}

	public import function SpawnFromLocal( parentWidget : weak< inkWidget >, libraryID : CName ) : weak< inkWidget >;
	public import function SpawnFromExternal( parentWidget : weak< inkWidget >, resourcePath : ResRef, libraryID : CName ) : weak< inkWidget >;
	public import function AsyncSpawnFromLocal( spawnData : inkAsyncSpawnData, optional callbackObject : IScriptable, optional callbackFunctionName : CName ) : weak< inkAsyncSpawnRequest >;

	public function AsyncSpawnFromLocal( parentWidget : weak< inkWidget >, libraryID : CName, optional callbackObject : IScriptable, optional callbackFunctionName : CName, optional userData : IScriptable ) : weak< inkAsyncSpawnRequest >
	{
		var spawnData : inkAsyncSpawnData;
		spawnData = new inkAsyncSpawnData;
		spawnData.parentWidget = ( ( inkCompoundWidget )( parentWidget ) );
		spawnData.libraryID = libraryID;
		spawnData.userData = userData;
		return AsyncSpawnFromLocal( spawnData, callbackObject, callbackFunctionName );
	}

	public import function AsyncSpawnFromExternal( spawnData : inkAsyncSpawnData, optional callbackObject : IScriptable, optional callbackFunctionName : CName ) : weak< inkAsyncSpawnRequest >;

	public function AsyncSpawnFromExternal( parentWidget : weak< inkWidget >, resourcePath : ResRef, libraryID : CName, optional callbackObject : IScriptable, optional callbackFunctionName : CName, optional userData : IScriptable ) : weak< inkAsyncSpawnRequest >
	{
		var spawnData : inkAsyncSpawnData;
		spawnData = new inkAsyncSpawnData;
		spawnData.parentWidget = ( ( inkCompoundWidget )( parentWidget ) );
		spawnData.libraryID = libraryID;
		spawnData.userData = userData;
		spawnData.SetResourcePath( resourcePath );
		return AsyncSpawnFromExternal( spawnData, callbackObject, callbackFunctionName );
	}

	public import function HasLocalLibrary( libraryID : CName ) : Bool;
	public import function HasExternalLibrary( resourcePath : ResRef, optional libraryID : CName ) : Bool;
	public import function CallCustomCallback( eventName : CName );
	public import function RegisterToCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function UnregisterFromCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function RegisterToGlobalInputCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function UnregisterFromGlobalInputCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function PlayLibraryAnimation( animationName : CName, optional playbackOptions : inkAnimOptions ) : inkAnimProxy;
	public import function PlayLibraryAnimationOnTargets( animationName : CName, targets : inkWidgetsSet, optional playbackOptions : inkAnimOptions ) : inkAnimProxy;
	public import function PlayLibraryAnimationOnAutoSelectedTargets( animationName : CName, target : inkWidget, optional playbackOptions : inkAnimOptions ) : inkAnimProxy;
	public import function GetSystemRequestsHandler() : weak< inkISystemRequestsHandler >;
	public import function QueueEvent( evt : Event );

	private virtual function ReadUICondition( condition : gamedataUICondition ) : Bool
	{
		return false;
	}

	public function FindLibraryID( widgetRecord : WidgetDefinition_Record, optional screenTypeRecord : DeviceScreenType_Record, optional styleRecord : WidgetStyle_Record, optional id : CName, optional path : ResRef ) : CName
	{
		var libraryPath : ResRef;
		var libraryID : CName;
		var ids : array< String >;
		var i : Int32;
		if( widgetRecord == NULL )
		{
			libraryPath = path;
			if( IsNameValid( id ) )
			{
				libraryID = id;
			}
		}
		else
		{
			libraryPath = widgetRecord.LibraryPath();
			ids = SWidgetPackageBase.GetLibraryIDPackage( widgetRecord, screenTypeRecord, styleRecord );
			for( i = 0; i < ids.Size(); i += 1 )
			{
				libraryID = StringToName( ids[ i ] );
				if( HasLocalLibrary( libraryID ) )
				{
					break;
				}
				else if( HasExternalLibrary( libraryPath, libraryID ) )
				{
					break;
				}
			}
		}
		return libraryID;
	}

	public function RequestWidgetFromLibrary( parentWidget : weak< inkWidget >, widgetRecord : WidgetDefinition_Record, optional screenTypeRecord : DeviceScreenType_Record, optional styleRecord : WidgetStyle_Record, optional id : CName, optional path : ResRef, spawnData : AsyncSpawnData ) : CName
	{
		var libraryPath : ResRef;
		var libraryID : CName;
		var ids : array< String >;
		var i : Int32;
		if( widgetRecord == NULL )
		{
			libraryPath = path;
			if( IsNameValid( id ) )
			{
				libraryID = id;
				CreateWidgetAsync( parentWidget, libraryID, libraryPath, spawnData );
			}
		}
		else
		{
			libraryPath = widgetRecord.LibraryPath();
			ids = SWidgetPackageBase.GetLibraryIDPackage( widgetRecord, screenTypeRecord, styleRecord );
			for( i = 0; i < ids.Size(); i += 1 )
			{
				libraryID = StringToName( ids[ i ] );
				if( CreateWidgetAsync( parentWidget, libraryID, libraryPath, spawnData ) )
				{
					break;
				}
			}
		}
		return libraryID;
	}

	public function RequestWidgetFromLibraryById( parentWidget : weak< inkWidget >, id : CName, optional path : ResRef, spawnData : AsyncSpawnData, out asyncSpawnRequest : weak< inkAsyncSpawnRequest > ) : CName
	{
		var libraryID : CName;
		if( IsNameValid( id ) )
		{
			libraryID = id;
			asyncSpawnRequest = CreateWidgetAsync( parentWidget, libraryID, path, spawnData );
		}
		return libraryID;
	}

	public function RequestWidgetFromLibraryByRecord( parentWidget : weak< inkWidget >, widgetRecord : WidgetDefinition_Record, optional screenTypeRecord : DeviceScreenType_Record, optional styleRecord : WidgetStyle_Record, spawnData : AsyncSpawnData, out asyncSpawnRequest : weak< inkAsyncSpawnRequest > ) : CName
	{
		var libraryPath : ResRef;
		var libraryID : CName;
		var ids : array< String >;
		var i : Int32;
		if( widgetRecord == NULL )
		{
			return libraryID;
		}
		else
		{
			libraryPath = widgetRecord.LibraryPath();
			ids = SWidgetPackageBase.GetLibraryIDPackage( widgetRecord, screenTypeRecord, styleRecord );
			for( i = 0; i < ids.Size(); i += 1 )
			{
				libraryID = StringToName( ids[ i ] );
				asyncSpawnRequest = CreateWidgetAsync( parentWidget, libraryID, libraryPath, spawnData );
				if( asyncSpawnRequest )
				{
					break;
				}
			}
		}
		return libraryID;
	}

	public function FindWidgetInLibrary( parentWidget : weak< inkWidget >, widgetRecord : WidgetDefinition_Record, optional screenTypeRecord : DeviceScreenType_Record, optional styleRecord : WidgetStyle_Record, optional id : CName, optional path : ResRef ) : weak< inkWidget >
	{
		var widget : inkWidget;
		var libraryPath : ResRef;
		var libraryID : CName;
		var ids : array< String >;
		var i : Int32;
		if( widgetRecord == NULL )
		{
			libraryPath = path;
			if( IsNameValid( id ) )
			{
				libraryID = id;
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
			}
		}
		else
		{
			libraryPath = widgetRecord.LibraryPath();
			ids = SWidgetPackageBase.GetLibraryIDPackage( widgetRecord, screenTypeRecord, styleRecord );
			for( i = 0; i < ids.Size(); i += 1 )
			{
				libraryID = StringToName( ids[ i ] );
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
				if( widget != NULL )
				{
					break;
				}
			}
		}
		return widget;
	}

	public function FindWidgetDataInLibrary( parentWidget : weak< inkWidget >, widgetRecord : WidgetDefinition_Record, optional screenTypeRecord : DeviceScreenType_Record, optional styleRecord : WidgetStyle_Record, optional id : CName, optional path : ResRef ) : SWidgetPackageBase
	{
		var widget : inkWidget;
		var widgetData : SWidgetPackageBase;
		var libraryPath : ResRef;
		var libraryID : CName;
		var ids : array< String >;
		var i : Int32;
		if( widgetRecord == NULL )
		{
			libraryPath = path;
			widgetData.libraryPath = libraryPath;
			if( IsNameValid( id ) )
			{
				libraryID = id;
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
				widgetData.libraryID = libraryID;
				widgetData.widget = widget;
			}
		}
		else
		{
			libraryPath = widgetRecord.LibraryPath();
			widgetData.libraryPath = libraryPath;
			ids = SWidgetPackageBase.GetLibraryIDPackage( widgetRecord, screenTypeRecord, styleRecord );
			for( i = 0; i < ids.Size(); i += 1 )
			{
				libraryID = StringToName( ids[ i ] );
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
				if( widget != NULL )
				{
					widgetData.libraryID = libraryID;
					widgetData.widget = widget;
					break;
				}
			}
		}
		return widgetData;
	}

	protected function CreateWidget( parentWidget : weak< inkWidget >, id : CName, path : ResRef ) : weak< inkWidget >
	{
		var widget : inkWidget;
		if( parentWidget == NULL )
		{
			return widget;
		}
		if( HasLocalLibrary( id ) )
		{
			widget = SpawnFromLocal( parentWidget, id );
		}
		else if( HasExternalLibrary( path, id ) )
		{
			widget = SpawnFromExternal( parentWidget, path, id );
		}
		return widget;
	}

	protected function CreateWidgetAsync( parentWidget : weak< inkWidget >, id : CName, optional path : ResRef, spawnData : AsyncSpawnData ) : weak< inkAsyncSpawnRequest >
	{
		var returnValue : weak< inkAsyncSpawnRequest >;
		if( parentWidget == NULL )
		{
			return NULL;
		}
		if( HasLocalLibrary( id ) )
		{
			spawnData.m_libraryID = id;
			returnValue = AsyncSpawnFromLocal( parentWidget, id, spawnData.m_callbackTarget, spawnData.m_functionName, spawnData );
		}
		else if( HasExternalLibrary( path, id ) )
		{
			spawnData.m_libraryID = id;
			returnValue = AsyncSpawnFromExternal( parentWidget, path, id, spawnData.m_callbackTarget, spawnData.m_functionName, spawnData );
		}
		else
		{
			returnValue = NULL;
		}
		return returnValue;
	}

}

importonly abstract class worlduiIGameController extends inkIGameController
{
	public import function ProjectWorldToScreen( worldPosition : Vector4 ) : Vector2;
	public import function QueueBroadcastEvent( evt : Event );
	public import function ShowGameNotification( data : inkGameNotificationData ) : inkGameNotificationToken;
}

importonly class inkGameController extends worlduiIGameController
{
	public import function GetOwnerEntity() : Entity;
	public import function GetPlayerControlledObject() : GameObject;
	public import function GetBlackboardSystem() : BlackboardSystem;
	public import function PlaySound( widgetName : CName, eventName : CName, optional actionKey : CName );
	public import function PlayRumble( rStrength : RumbleStrength, rType : RumbleType, rPosition : RumblePosition );
	public import function PlayRumbleByName( eventName : CName );
	public import function PlayRumbleLoop( rStrength : RumbleStrength );
	public import function StopRumbleLoop( rStrength : RumbleStrength );
	public import function GetUIBlackboard() : IBlackboard;
	public import function GetPSMBlackboard( playerPuppet : GameObject ) : IBlackboard;
	public import function RegisterDebugCommand( debugFunctionName : CName );
	public import function SetCursorContext( context : CName, optional data : inkUserData );
	public import function SetCursorOverWidget( widget : weak< inkWidget >, optional time : Float, optional forceSnapping : Bool );
}

importonly abstract class inkILogicController extends IScriptable
{
}

import class inkLogicController extends inkILogicController
{
	public import function GetRootWidget() : weak< inkWidget >;
	public import function GetRootCompoundWidget() : weak< inkCompoundWidget >;
	public import function GetWidget( path : inkWidgetPath ) : weak< inkWidget >;
	public import function GetController( optional path : inkWidgetPath ) : weak< inkLogicController >;
	public import function GetControllerByType( controllerType : CName, optional path : inkWidgetPath ) : weak< inkLogicController >;
	public import function GetControllerByBaseType( controllerType : CName, optional path : inkWidgetPath ) : weak< inkLogicController >;
	public import function GetControllers( optional path : inkWidgetPath ) : array< weak< inkLogicController > >;
	public import function GetControllersByType( controllerType : CName, optional path : inkWidgetPath ) : array< weak< inkLogicController > >;
	public import function GetNumControllers( optional path : inkWidgetPath ) : Int32;
	public import function GetNumControllersOfType( controllerType : CName, optional path : inkWidgetPath ) : Int32;
	public import function GetChildWidgetByPath( widgetNamePath : CName ) : weak< inkWidget >;
	public import function GetChildControllerByPath( widgetNamePath : CName ) : weak< inkLogicController >;

	public function GetWidget( widgetNamePath : CName ) : weak< inkWidget >
	{
		return GetChildWidgetByPath( widgetNamePath );
	}

	public function GetController( widgetNamePath : CName ) : weak< inkLogicController >
	{
		return GetChildControllerByPath( widgetNamePath );
	}

	public import function CallCustomCallback( eventName : CName );
	public import function RegisterToCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function UnregisterFromCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function RegisterToGlobalInputCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function UnregisterFromGlobalInputCallback( eventName : CName, object : IScriptable, functionName : CName );
	public import function SpawnFromLocal( parentWidget : weak< inkWidget >, libraryID : CName ) : weak< inkWidget >;
	public import function SpawnFromExternal( parentWidget : weak< inkWidget >, resourcePath : ResRef, libraryID : CName ) : weak< inkWidget >;
	public import function AsyncSpawnFromLocal( spawnData : inkAsyncSpawnData, optional callbackObject : IScriptable, optional callbackFunctionName : CName ) : weak< inkAsyncSpawnRequest >;

	public function AsyncSpawnFromLocal( parentWidget : weak< inkWidget >, libraryID : CName, optional callbackObject : IScriptable, optional callbackFunctionName : CName, optional userData : IScriptable ) : weak< inkAsyncSpawnRequest >
	{
		var spawnData : inkAsyncSpawnData;
		spawnData = new inkAsyncSpawnData;
		spawnData.parentWidget = ( ( inkCompoundWidget )( parentWidget ) );
		spawnData.libraryID = libraryID;
		spawnData.userData = userData;
		return AsyncSpawnFromLocal( spawnData, callbackObject, callbackFunctionName );
	}

	public import function AsyncSpawnFromExternal( spawnData : inkAsyncSpawnData, optional callbackObject : IScriptable, optional callbackFunctionName : CName ) : weak< inkAsyncSpawnRequest >;

	public function AsyncSpawnFromExternal( parentWidget : weak< inkWidget >, resourcePath : ResRef, libraryID : CName, optional callbackObject : IScriptable, optional callbackFunctionName : CName, optional userData : IScriptable ) : weak< inkAsyncSpawnRequest >
	{
		var spawnData : inkAsyncSpawnData;
		spawnData = new inkAsyncSpawnData;
		spawnData.parentWidget = ( ( inkCompoundWidget )( parentWidget ) );
		spawnData.libraryID = libraryID;
		spawnData.userData = userData;
		spawnData.SetResourcePath( resourcePath );
		return AsyncSpawnFromExternal( spawnData, callbackObject, callbackFunctionName );
	}

	protected function CreateWidgetAsync( parentWidget : weak< inkWidget >, id : CName, optional path : ResRef, spawnData : AsyncSpawnData ) : Bool
	{
		var returnValue : Bool;
		if( parentWidget == NULL )
		{
			return false;
		}
		if( HasLocalLibrary( id ) )
		{
			spawnData.m_libraryID = id;
			AsyncSpawnFromLocal( parentWidget, id, spawnData.m_callbackTarget, spawnData.m_functionName, spawnData );
			returnValue = true;
		}
		else if( HasExternalLibrary( path, id ) )
		{
			spawnData.m_libraryID = id;
			AsyncSpawnFromExternal( parentWidget, path, id, spawnData.m_callbackTarget, spawnData.m_functionName, spawnData );
			returnValue = true;
		}
		else
		{
			returnValue = false;
		}
		return returnValue;
	}

	public import function HasLocalLibrary( libraryID : CName ) : Bool;
	public import function HasExternalLibrary( resourcePath : ResRef, optional libraryID : CName ) : Bool;
	public import function SetCursorContext( context : CName, optional data : inkUserData );
	public import function SetCursorOverWidget( widget : weak< inkWidget >, optional time : Float );
	public import function PlayLibraryAnimation( animationName : CName, optional playbackOptions : inkAnimOptions ) : inkAnimProxy;
	public import function PlayLibraryAnimationOnTargets( animationName : CName, targets : inkWidgetsSet, optional playbackOptions : inkAnimOptions ) : inkAnimProxy;
	public import function PlayLibraryAnimationOnAutoSelectedTargets( animationName : CName, target : inkWidget, optional playbackOptions : inkAnimOptions ) : inkAnimProxy;
	public import function PlaySound( widgetName : CName, eventName : CName, optional actionKey : CName );
	public import function PlayRumble( rStrength : RumbleStrength, rType : RumbleType, rPosition : RumblePosition );
	public import function PlayRumbleByName( eventName : CName );
	public import function PlayRumbleLoop( rStrength : RumbleStrength );
	public import function StopRumbleLoop( rStrength : RumbleStrength );
	public import function Reparent( newParent : weak< inkCompoundWidget >, optional index : Int32 );
	public import function QueueEvent( evt : Event );
	public import function QueueBroadcastEvent( evt : Event );

	protected function SetTexture( imageWidget : weak< inkImage >, textureID : TweakDBID )
	{
		if( ( imageWidget != NULL ) && TDBID.IsValid( textureID ) )
		{
			InkImageUtils.RequestSetImage( this, imageWidget, textureID );
		}
	}

	protected function SetTexture( imageRef : inkImageRef, textureID : TweakDBID )
	{
		var imageWidget : weak< inkImage >;
		imageWidget = ( ( inkImage )( inkImageRef.Get( imageRef ) ) );
		if( ( imageWidget != NULL ) && TDBID.IsValid( textureID ) )
		{
			InkImageUtils.RequestSetImage( this, imageWidget, textureID );
		}
	}

	protected function SetTexture( imageWidget : weak< inkImage >, textureRecord : weak< UIIcon_Record > )
	{
		if( ( imageWidget != NULL ) && ( textureRecord != NULL ) )
		{
			imageWidget.SetAtlasResource( textureRecord.AtlasResourcePath() );
			imageWidget.SetTexturePart( textureRecord.AtlasPartName() );
		}
	}

	protected function SetTexture( imageRef : inkImageRef, textureRecord : weak< UIIcon_Record > )
	{
		if( inkImageRef.IsValid( imageRef ) && ( textureRecord != NULL ) )
		{
			inkImageRef.SetAtlasResource( imageRef, textureRecord.AtlasResourcePath() );
			inkImageRef.SetTexturePart( imageRef, textureRecord.AtlasPartName() );
		}
	}

	public function FindWidgetInLibrary( parentWidget : weak< inkWidget >, widgetRecord : WidgetDefinition_Record, optional screenTypeRecord : DeviceScreenType_Record, optional styleRecord : WidgetStyle_Record, optional id : CName, optional path : ResRef ) : weak< inkWidget >
	{
		var widget : inkWidget;
		var libraryPath : ResRef;
		var libraryID : CName;
		var ids : array< String >;
		var i : Int32;
		if( widgetRecord == NULL )
		{
			libraryPath = path;
			if( IsNameValid( id ) )
			{
				libraryID = id;
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
			}
		}
		else
		{
			libraryPath = widgetRecord.LibraryPath();
			ids = SWidgetPackageBase.GetLibraryIDPackage( widgetRecord, screenTypeRecord, styleRecord );
			for( i = 0; i < ids.Size(); i += 1 )
			{
				libraryID = StringToName( ids[ i ] );
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
				if( widget != NULL )
				{
					break;
				}
			}
		}
		return widget;
	}

	public function FindWidgetDataInLibrary( parentWidget : weak< inkWidget >, widgetRecord : WidgetDefinition_Record, optional screenTypeRecord : DeviceScreenType_Record, optional styleRecord : WidgetStyle_Record, optional id : CName, optional path : ResRef ) : SWidgetPackageBase
	{
		var widget : inkWidget;
		var widgetData : SWidgetPackageBase;
		var libraryPath : ResRef;
		var libraryID : CName;
		var ids : array< String >;
		var i : Int32;
		if( widgetRecord == NULL )
		{
			libraryPath = path;
			widgetData.libraryPath = libraryPath;
			if( IsNameValid( id ) )
			{
				libraryID = id;
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
				widgetData.libraryID = libraryID;
				widgetData.widget = widget;
			}
		}
		else
		{
			libraryPath = widgetRecord.LibraryPath();
			widgetData.libraryPath = libraryPath;
			ids = SWidgetPackageBase.GetLibraryIDPackage( widgetRecord, screenTypeRecord, styleRecord );
			for( i = 0; i < ids.Size(); i += 1 )
			{
				libraryID = StringToName( ids[ i ] );
				widget = CreateWidget( parentWidget, libraryID, libraryPath );
				if( widget != NULL )
				{
					widgetData.libraryID = libraryID;
					widgetData.widget = widget;
					break;
				}
			}
		}
		return widgetData;
	}

	protected function CreateWidget( parentWidget : weak< inkWidget >, id : CName, path : ResRef ) : weak< inkWidget >
	{
		var widget : inkWidget;
		if( parentWidget == NULL )
		{
			return widget;
		}
		if( HasLocalLibrary( id ) )
		{
			widget = SpawnFromLocal( parentWidget, id );
		}
		else if( HasExternalLibrary( path, id ) )
		{
			widget = SpawnFromExternal( parentWidget, path, id );
		}
		return widget;
	}

	public import function ShowGameNotification( data : inkGameNotificationData ) : inkGameNotificationToken;
}

