declare namespace FdtWebUi 
{
	/**
	* Structure for transporting requests
	**/
	export interface FdtFitsRequest {
		id: string, // id of the request
		systemTag: string,
		functionInvokeId: string,
		serviceData?: Array<DtmUiMessage>
	}

	/**
	* Structure for DTM UI messages
	**/
	export interface DtmUiMessage{
		messageIndex: number,
		messageType: string,  // the .Net datatype corresponding to the messageData
		messageData: any
	}


	/**
	* Structure for transport of responses
	**/
	export interface FdtFitsResponse{
		id: string, // corresponds to FdtFitsRequest.id
		error: FdtFitsError,
		responseData?: Array<DtmUiMessage>
	}

	/**
	* Structure for error information
	**/
	export interface FdtFitsError{
		responseCode: FdtResponseCode,
		message?: string,
	}

	/** 
	* Enumeration for expressing error types. 
	* @enum {string} FdtResponseCode
	*/
	const enum FdtResponseCode {
		/* The operation was executed successfully. */
		FdtOperationSuccess = 0, 
		/* The operation failed. */
		FdtOperationFailedError, 
		/* CancelSendMessages(IAsyncResult)() was called. */
		FdtOperationCancelledError,
		/* The reference asyncResult is invalid. */
		FdtInvalidReferenceError,
		/* DTM is not in appropriate state. */
		FdtInvalidStateError
	}


	/**
	* information about modified data subset (used in TransactionCommitted event). 
	**/
	export interface DataSubSetInfo {
		dictionary : SubsetDictionary,
		key : string,
		modificationAction : DataSubsetModificationAction
	}

	/** 
	* Enumeration for expressing type of data subset. 
	* @enum {string} SubsetDictionary
	*/
	const enum SubsetDictionary {
		/* Instance related DataSubset. */
		InstanceData = 1, 
		/* Bulk data related DataSubset. */
		BulkData
	}

	/** 
	* Enumeration for idenfying the modifying action that was performed at the dataSubSet. 
	* @enum {string} DataSubsetModificationAction
	*/
	const enum DataSubsetModificationAction {
		/* The data subset was changed. */
		Changed = 1, 
		/* The data subset was added. */
		Added,
		/* The data subset was deleted. */
		Deleted
	}
}
