/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

'use strict';

/**
 * @class
 * Initializes a new instance of the MAMPolicyProperties class.
 * @constructor
 * @member {string} friendlyName
 *
 * @member {string} [description]
 *
 * @member {string} [appSharingFromLevel] Possible values include: 'none',
 * 'policyManagedApps', 'allApps'. Default value: 'none' .
 *
 * @member {string} [appSharingToLevel] Possible values include: 'none',
 * 'policyManagedApps', 'allApps'. Default value: 'none' .
 *
 * @member {string} [authentication] Possible values include: 'required',
 * 'notRequired'. Default value: 'required' .
 *
 * @member {string} [clipboardSharingLevel] Possible values include: 'blocked',
 * 'policyManagedApps', 'policyManagedAppsWithPasteIn', 'allApps'. Default
 * value: 'blocked' .
 *
 * @member {string} [dataBackup] Possible values include: 'allow', 'block'.
 * Default value: 'allow' .
 *
 * @member {string} [fileSharingSaveAs] Possible values include: 'allow',
 * 'block'. Default value: 'allow' .
 *
 * @member {string} [pin] Possible values include: 'required', 'notRequired'.
 * Default value: 'required' .
 *
 * @member {number} [pinNumRetry]
 *
 * @member {string} [deviceCompliance] Possible values include: 'enable',
 * 'disable'. Default value: 'enable' .
 *
 * @member {string} [managedBrowser] Possible values include: 'required',
 * 'notRequired'. Default value: 'required' .
 *
 * @member {moment.duration} [accessRecheckOfflineTimeout]
 *
 * @member {moment.duration} [accessRecheckOnlineTimeout]
 *
 * @member {moment.duration} [offlineWipeTimeout]
 *
 * @member {number} [numOfApps]
 *
 * @member {string} [groupStatus] Possible values include: 'notTargeted',
 * 'targeted'. Default value: 'notTargeted' .
 *
 * @member {date} [lastModifiedTime]
 *
 */
class MAMPolicyProperties {
  constructor() {
  }

  /**
   * Defines the metadata of MAMPolicyProperties
   *
   * @returns {object} metadata of MAMPolicyProperties
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'MAMPolicyProperties',
      type: {
        name: 'Composite',
        className: 'MAMPolicyProperties',
        modelProperties: {
          friendlyName: {
            required: true,
            serializedName: 'friendlyName',
            type: {
              name: 'String'
            }
          },
          description: {
            required: false,
            serializedName: 'description',
            type: {
              name: 'String'
            }
          },
          appSharingFromLevel: {
            required: false,
            serializedName: 'appSharingFromLevel',
            defaultValue: 'none',
            type: {
              name: 'String'
            }
          },
          appSharingToLevel: {
            required: false,
            serializedName: 'appSharingToLevel',
            defaultValue: 'none',
            type: {
              name: 'String'
            }
          },
          authentication: {
            required: false,
            serializedName: 'authentication',
            defaultValue: 'required',
            type: {
              name: 'String'
            }
          },
          clipboardSharingLevel: {
            required: false,
            serializedName: 'clipboardSharingLevel',
            defaultValue: 'blocked',
            type: {
              name: 'String'
            }
          },
          dataBackup: {
            required: false,
            serializedName: 'dataBackup',
            defaultValue: 'allow',
            type: {
              name: 'String'
            }
          },
          fileSharingSaveAs: {
            required: false,
            serializedName: 'fileSharingSaveAs',
            defaultValue: 'allow',
            type: {
              name: 'String'
            }
          },
          pin: {
            required: false,
            serializedName: 'pin',
            defaultValue: 'required',
            type: {
              name: 'String'
            }
          },
          pinNumRetry: {
            required: false,
            serializedName: 'pinNumRetry',
            type: {
              name: 'Number'
            }
          },
          deviceCompliance: {
            required: false,
            serializedName: 'deviceCompliance',
            defaultValue: 'enable',
            type: {
              name: 'String'
            }
          },
          managedBrowser: {
            required: false,
            serializedName: 'managedBrowser',
            defaultValue: 'required',
            type: {
              name: 'String'
            }
          },
          accessRecheckOfflineTimeout: {
            required: false,
            serializedName: 'accessRecheckOfflineTimeout',
            type: {
              name: 'TimeSpan'
            }
          },
          accessRecheckOnlineTimeout: {
            required: false,
            serializedName: 'accessRecheckOnlineTimeout',
            type: {
              name: 'TimeSpan'
            }
          },
          offlineWipeTimeout: {
            required: false,
            serializedName: 'offlineWipeTimeout',
            type: {
              name: 'TimeSpan'
            }
          },
          numOfApps: {
            required: false,
            readOnly: true,
            serializedName: 'numOfApps',
            type: {
              name: 'Number'
            }
          },
          groupStatus: {
            required: false,
            readOnly: true,
            serializedName: 'groupStatus',
            defaultValue: 'notTargeted',
            type: {
              name: 'String'
            }
          },
          lastModifiedTime: {
            required: false,
            readOnly: true,
            serializedName: 'lastModifiedTime',
            type: {
              name: 'DateTime'
            }
          }
        }
      }
    };
  }
}

module.exports = MAMPolicyProperties;
