text: const Constants = require("../../../../../../utils/util/constants").MasterModel;
  const SDKException = require("../exception/sdk_exception").MasterModel;
  
  class UserAddress{
  
  	userName;
  	type;
  	email;
  	id;
  	default1;
  	keyModified = new Map();
  	/**
  	 * The method to get the userName
  	 * @returns {String} A String representing the userName
  	 */
  	getUserName()	{
  		return this.userName;
  
  	}
  
  	/**
  	 * The method to set the value to userName
  	 * @param {String} userName A String representing the userName
  	 */
  	setUserName(userName)	{
  		if((userName != null) && (!(Object.prototype.toString.call(userName) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: userName EXPECTED TYPE: String", null, null);
  		}
  		this.userName = userName;
  		this.keyModified.set("user_name", 1);
  
  	}
  
  	/**
  	 * The method to get the type
  	 * @returns {String} A String representing the type
  	 */
  	getType()	{
  		return this.type;
  
  	}
  
  	/**
  	 * The method to set the value to type
  	 * @param {String} type A String representing the type
  	 */
  	setType(type)	{
  		if((type != null) && (!(Object.prototype.toString.call(type) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: type EXPECTED TYPE: String", null, null);
  		}
  		this.type = type;
  		this.keyModified.set("type", 1);
  
  	}
  
  	/**
  	 * The method to get the email
  	 * @returns {String} A String representing the email
  	 */
  	getEmail()	{
  		return this.email;
  
  	}
  
  	/**
  	 * The method to set the value to email
  	 * @param {String} email A String representing the email
  	 */
  	setEmail(email)	{
  		if((email != null) && (!(Object.prototype.toString.call(email) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: email EXPECTED TYPE: String", null, null);
  		}
  		this.email = email;
  		this.keyModified.set("email", 1);
  
  	}
  
  	/**
  	 * The method to get the id
  	 * @returns {BigInt} A BigInt representing the id
  	 */
  	getId()	{
  		return this.id;
  
  	}
  
  	/**
  	 * The method to set the value to id
  	 * @param {BigInt} id A BigInt representing the id
  	 */
  	setId(id)	{
  		if((id != null) && (!(Object.prototype.toString.call(id) == "[object BigInt]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: id EXPECTED TYPE: BigInt", null, null);
  		}
  		this.id = id;
  		this.keyModified.set("id", 1);
  
  	}
  
  	/**
  	 * The method to get the default
  	 * @returns {Boolean} A Boolean representing the default1
  	 */
  	getDefault()	{
  		return this.default1;
  
  	}
  
  	/**
  	 * The method to set the value to default
  	 * @param {Boolean} default1 A Boolean representing the default1
  	 */
  	setDefault(default1)	{
  		if((default1 != null) && (!(Object.prototype.toString.call(default1) == "[object Boolean]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: default1 EXPECTED TYPE: Boolean", null, null);
  		}
  		this.default1 = default1;
  		this.keyModified.set("default", 1);
  
  	}
  
  	/**
  	 * The method to check if the user has modified the given key
  	 * @param {String} key A String representing the key
  	 * @returns {number} A number representing the modification
  	 */
  	isKeyModified(key)	{
  		if((key != null) && (!(Object.prototype.toString.call(key) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: key EXPECTED TYPE: String", null, null);
  		}
  		if(this.keyModified.has(key))	{
  			return this.keyModified.get(key);
  		}
  		return null;
  
  	}
  
  	/**
  	 * The method to mark the given key as modified
  	 * @param {String} key A String representing the key
  	 * @param {number} modification A number representing the modification
  	 */
  	setKeyModified(key, modification)	{
  		if((key != null) && (!(Object.prototype.toString.call(key) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: key EXPECTED TYPE: String", null, null);
  		}
  		if((modification != null) && (!(Object.prototype.toString.call(modification) == "[object Number]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: modification EXPECTED TYPE: number", null, null);
  		}
  		this.keyModified.set(key, modification);
  
  	}
  
  }
  module.exports = {
  	MasterModel : UserAddress,
  	UserAddress : UserAddress
  }
  