/*
 * 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';

/**
 * The Edifact agreement content.
 *
 */
class EdifactAgreementContent {
  /**
   * Create a EdifactAgreementContent.
   * @property {object} receiveAgreement The EDIFACT one-way receive agreement.
   * @property {object} [receiveAgreement.senderBusinessIdentity] The sender
   * business identity
   * @property {string} [receiveAgreement.senderBusinessIdentity.qualifier] The
   * business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [receiveAgreement.senderBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [receiveAgreement.receiverBusinessIdentity] The
   * receiver business identity
   * @property {string} [receiveAgreement.receiverBusinessIdentity.qualifier]
   * The business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [receiveAgreement.receiverBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [receiveAgreement.protocolSettings] The EDIFACT
   * protocol settings.
   * @property {object} [receiveAgreement.protocolSettings.validationSettings]
   * The EDIFACT validation settings.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.validateCharacterSet]
   * The value indicating whether to validate character set in the message.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.checkDuplicateInterchangeControlNumber]
   * The value indicating whether to check for duplicate interchange control
   * number.
   * @property {number}
   * [receiveAgreement.protocolSettings.validationSettings.interchangeControlNumberValidityDays]
   * The validity period of interchange control number.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.checkDuplicateGroupControlNumber]
   * The value indicating whether to check for duplicate group control number.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.checkDuplicateTransactionSetControlNumber]
   * The value indicating whether to check for duplicate transaction set
   * control number.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.validateEDITypes]
   * The value indicating whether to Whether to validate EDI types.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.validateXSDTypes]
   * The value indicating whether to Whether to validate XSD types.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.allowLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to allow leading and trailing spaces and
   * zeroes.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.validationSettings.trimLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to trim leading and trailing spaces and
   * zeroes.
   * @property {string}
   * [receiveAgreement.protocolSettings.validationSettings.trailingSeparatorPolicy]
   * The trailing separator policy. Possible values include: 'NotSpecified',
   * 'NotAllowed', 'Optional', 'Mandatory'
   * @property {object} [receiveAgreement.protocolSettings.framingSettings] The
   * EDIFACT framing settings.
   * @property {string}
   * [receiveAgreement.protocolSettings.framingSettings.serviceCodeListDirectoryVersion]
   * The service code list directory version.
   * @property {string}
   * [receiveAgreement.protocolSettings.framingSettings.characterEncoding] The
   * character encoding.
   * @property {number}
   * [receiveAgreement.protocolSettings.framingSettings.protocolVersion] The
   * protocol version.
   * @property {number}
   * [receiveAgreement.protocolSettings.framingSettings.dataElementSeparator]
   * The data element separator.
   * @property {number}
   * [receiveAgreement.protocolSettings.framingSettings.componentSeparator] The
   * component separator.
   * @property {number}
   * [receiveAgreement.protocolSettings.framingSettings.segmentTerminator] The
   * segment terminator.
   * @property {number}
   * [receiveAgreement.protocolSettings.framingSettings.releaseIndicator] The
   * release indicator.
   * @property {number}
   * [receiveAgreement.protocolSettings.framingSettings.repetitionSeparator]
   * The repetition separator.
   * @property {string}
   * [receiveAgreement.protocolSettings.framingSettings.characterSet] The
   * EDIFACT frame setting characterSet. Possible values include:
   * 'NotSpecified', 'UNOB', 'UNOA', 'UNOC', 'UNOD', 'UNOE', 'UNOF', 'UNOG',
   * 'UNOH', 'UNOI', 'UNOJ', 'UNOK', 'UNOX', 'UNOY', 'KECA'
   * @property {string}
   * [receiveAgreement.protocolSettings.framingSettings.decimalPointIndicator]
   * The EDIFACT frame setting decimal indicator. Possible values include:
   * 'NotSpecified', 'Comma', 'Decimal'
   * @property {string}
   * [receiveAgreement.protocolSettings.framingSettings.segmentTerminatorSuffix]
   * The EDIFACT frame setting segment terminator suffix. Possible values
   * include: 'NotSpecified', 'None', 'CR', 'LF', 'CRLF'
   * @property {object} [receiveAgreement.protocolSettings.envelopeSettings]
   * The EDIFACT envelope settings.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupAssociationAssignedCode]
   * The group association assigned code.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.communicationAgreementId]
   * The communication agreement id.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.applyDelimiterStringAdvice]
   * The value indicating whether to apply delimiter string advice.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.createGroupingSegments]
   * The value indicating whether to create grouping segments.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.enableDefaultGroupHeaders]
   * The value indicating whether to enable default group headers.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordValue]
   * The recipient reference password value.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordQualifier]
   * The recipient reference password qualifier.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.applicationReferenceId]
   * The application reference id.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.processingPriorityCode]
   * The processing priority code.
   * @property {number}
   * [receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberLowerBound]
   * The interchange control number lower bound.
   * @property {number}
   * [receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberUpperBound]
   * The interchange control number upper bound.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.rolloverInterchangeControlNumber]
   * The value indicating whether to rollover interchange control number.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberPrefix]
   * The interchange control number prefix.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberSuffix]
   * The interchange control number suffix.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.senderReverseRoutingAddress]
   * The sender reverse routing address.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.receiverReverseRoutingAddress]
   * The receiver reverse routing address.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.functionalGroupId] The
   * functional group id.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupControllingAgencyCode]
   * The group controlling agency code.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupMessageVersion]
   * The group message version.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupMessageRelease]
   * The group message release.
   * @property {number}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberLowerBound]
   * The group control number lower bound.
   * @property {number}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberUpperBound]
   * The group control number upper bound.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.rolloverGroupControlNumber]
   * The value indicating whether to rollover group control number.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberPrefix]
   * The group control number prefix.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberSuffix]
   * The group control number suffix.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverQualifier]
   * The group application receiver qualifier.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverId]
   * The group application receiver id.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupApplicationSenderQualifier]
   * The group application sender qualifier.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupApplicationSenderId]
   * The group application sender id.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.groupApplicationPassword]
   * The group application password.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.overwriteExistingTransactionSetControlNumber]
   * The value indicating whether to overwrite existing transaction set control
   * number.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberPrefix]
   * The transaction set control number prefix.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberSuffix]
   * The transaction set control number suffix.
   * @property {number}
   * [receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberLowerBound]
   * The transaction set control number lower bound.
   * @property {number}
   * [receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberUpperBound]
   * The transaction set control number upper bound.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.rolloverTransactionSetControlNumber]
   * The value indicating whether to rollover transaction set control number.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.envelopeSettings.isTestInterchange] The
   * value indicating whether the message is a test interchange.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.senderInternalIdentification]
   * The sender internal identification.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.senderInternalSubIdentification]
   * The sender internal sub identification.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.receiverInternalIdentification]
   * The receiver internal identification.
   * @property {string}
   * [receiveAgreement.protocolSettings.envelopeSettings.receiverInternalSubIdentification]
   * The receiver internal sub identification.
   * @property {object}
   * [receiveAgreement.protocolSettings.acknowledgementSettings] The EDIFACT
   * acknowledgement settings.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.needTechnicalAcknowledgement]
   * The value indicating whether technical acknowledgement is needed.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.batchTechnicalAcknowledgements]
   * The value indicating whether to batch the technical acknowledgements.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.needFunctionalAcknowledgement]
   * The value indicating whether functional acknowledgement is needed.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.batchFunctionalAcknowledgements]
   * The value indicating whether to batch functional acknowledgements.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.needLoopForValidMessages]
   * The value indicating whether a loop is needed for valid messages.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.sendSynchronousAcknowledgement]
   * The value indicating whether to send synchronous acknowledgement.
   * @property {string}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberPrefix]
   * The acknowledgement control number prefix.
   * @property {string}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberSuffix]
   * The acknowledgement control number suffix.
   * @property {number}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberLowerBound]
   * The acknowledgement control number lower bound.
   * @property {number}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberUpperBound]
   * The acknowledgement control number upper bound.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.acknowledgementSettings.rolloverAcknowledgementControlNumber]
   * The value indicating whether to rollover acknowledgement control number.
   * @property {object} [receiveAgreement.protocolSettings.messageFilter] The
   * EDIFACT message filter.
   * @property {string}
   * [receiveAgreement.protocolSettings.messageFilter.messageFilterType] The
   * message filter type. Possible values include: 'NotSpecified', 'Include',
   * 'Exclude'
   * @property {object} [receiveAgreement.protocolSettings.processingSettings]
   * The EDIFACT processing Settings.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.processingSettings.maskSecurityInfo]
   * The value indicating whether to mask security information.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.processingSettings.preserveInterchange]
   * The value indicating whether to preserve interchange.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.processingSettings.suspendInterchangeOnError]
   * The value indicating whether to suspend interchange on error.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.processingSettings.createEmptyXmlTagsForTrailingSeparators]
   * The value indicating whether to create empty xml tags for trailing
   * separators.
   * @property {boolean}
   * [receiveAgreement.protocolSettings.processingSettings.useDotAsDecimalSeparator]
   * The value indicating whether to use dot as decimal separator.
   * @property {array} [receiveAgreement.protocolSettings.envelopeOverrides]
   * The EDIFACT envelope override settings.
   * @property {array} [receiveAgreement.protocolSettings.messageFilterList]
   * The EDIFACT message filter list.
   * @property {array} [receiveAgreement.protocolSettings.schemaReferences] The
   * EDIFACT schema references.
   * @property {array} [receiveAgreement.protocolSettings.validationOverrides]
   * The EDIFACT validation override settings.
   * @property {array}
   * [receiveAgreement.protocolSettings.edifactDelimiterOverrides] The EDIFACT
   * delimiter override settings.
   * @property {object} sendAgreement The EDIFACT one-way send agreement.
   * @property {object} [sendAgreement.senderBusinessIdentity] The sender
   * business identity
   * @property {string} [sendAgreement.senderBusinessIdentity.qualifier] The
   * business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [sendAgreement.senderBusinessIdentity.value] The user
   * defined business identity value.
   * @property {object} [sendAgreement.receiverBusinessIdentity] The receiver
   * business identity
   * @property {string} [sendAgreement.receiverBusinessIdentity.qualifier] The
   * business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [sendAgreement.receiverBusinessIdentity.value] The user
   * defined business identity value.
   * @property {object} [sendAgreement.protocolSettings] The EDIFACT protocol
   * settings.
   * @property {object} [sendAgreement.protocolSettings.validationSettings] The
   * EDIFACT validation settings.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.validateCharacterSet]
   * The value indicating whether to validate character set in the message.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.checkDuplicateInterchangeControlNumber]
   * The value indicating whether to check for duplicate interchange control
   * number.
   * @property {number}
   * [sendAgreement.protocolSettings.validationSettings.interchangeControlNumberValidityDays]
   * The validity period of interchange control number.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.checkDuplicateGroupControlNumber]
   * The value indicating whether to check for duplicate group control number.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.checkDuplicateTransactionSetControlNumber]
   * The value indicating whether to check for duplicate transaction set
   * control number.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.validateEDITypes] The
   * value indicating whether to Whether to validate EDI types.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.validateXSDTypes] The
   * value indicating whether to Whether to validate XSD types.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.allowLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to allow leading and trailing spaces and
   * zeroes.
   * @property {boolean}
   * [sendAgreement.protocolSettings.validationSettings.trimLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to trim leading and trailing spaces and
   * zeroes.
   * @property {string}
   * [sendAgreement.protocolSettings.validationSettings.trailingSeparatorPolicy]
   * The trailing separator policy. Possible values include: 'NotSpecified',
   * 'NotAllowed', 'Optional', 'Mandatory'
   * @property {object} [sendAgreement.protocolSettings.framingSettings] The
   * EDIFACT framing settings.
   * @property {string}
   * [sendAgreement.protocolSettings.framingSettings.serviceCodeListDirectoryVersion]
   * The service code list directory version.
   * @property {string}
   * [sendAgreement.protocolSettings.framingSettings.characterEncoding] The
   * character encoding.
   * @property {number}
   * [sendAgreement.protocolSettings.framingSettings.protocolVersion] The
   * protocol version.
   * @property {number}
   * [sendAgreement.protocolSettings.framingSettings.dataElementSeparator] The
   * data element separator.
   * @property {number}
   * [sendAgreement.protocolSettings.framingSettings.componentSeparator] The
   * component separator.
   * @property {number}
   * [sendAgreement.protocolSettings.framingSettings.segmentTerminator] The
   * segment terminator.
   * @property {number}
   * [sendAgreement.protocolSettings.framingSettings.releaseIndicator] The
   * release indicator.
   * @property {number}
   * [sendAgreement.protocolSettings.framingSettings.repetitionSeparator] The
   * repetition separator.
   * @property {string}
   * [sendAgreement.protocolSettings.framingSettings.characterSet] The EDIFACT
   * frame setting characterSet. Possible values include: 'NotSpecified',
   * 'UNOB', 'UNOA', 'UNOC', 'UNOD', 'UNOE', 'UNOF', 'UNOG', 'UNOH', 'UNOI',
   * 'UNOJ', 'UNOK', 'UNOX', 'UNOY', 'KECA'
   * @property {string}
   * [sendAgreement.protocolSettings.framingSettings.decimalPointIndicator] The
   * EDIFACT frame setting decimal indicator. Possible values include:
   * 'NotSpecified', 'Comma', 'Decimal'
   * @property {string}
   * [sendAgreement.protocolSettings.framingSettings.segmentTerminatorSuffix]
   * The EDIFACT frame setting segment terminator suffix. Possible values
   * include: 'NotSpecified', 'None', 'CR', 'LF', 'CRLF'
   * @property {object} [sendAgreement.protocolSettings.envelopeSettings] The
   * EDIFACT envelope settings.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupAssociationAssignedCode]
   * The group association assigned code.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.communicationAgreementId]
   * The communication agreement id.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.applyDelimiterStringAdvice]
   * The value indicating whether to apply delimiter string advice.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.createGroupingSegments]
   * The value indicating whether to create grouping segments.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.enableDefaultGroupHeaders]
   * The value indicating whether to enable default group headers.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordValue]
   * The recipient reference password value.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordQualifier]
   * The recipient reference password qualifier.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.applicationReferenceId]
   * The application reference id.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.processingPriorityCode]
   * The processing priority code.
   * @property {number}
   * [sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberLowerBound]
   * The interchange control number lower bound.
   * @property {number}
   * [sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberUpperBound]
   * The interchange control number upper bound.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.rolloverInterchangeControlNumber]
   * The value indicating whether to rollover interchange control number.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberPrefix]
   * The interchange control number prefix.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberSuffix]
   * The interchange control number suffix.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.senderReverseRoutingAddress]
   * The sender reverse routing address.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.receiverReverseRoutingAddress]
   * The receiver reverse routing address.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.functionalGroupId] The
   * functional group id.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupControllingAgencyCode]
   * The group controlling agency code.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupMessageVersion] The
   * group message version.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupMessageRelease] The
   * group message release.
   * @property {number}
   * [sendAgreement.protocolSettings.envelopeSettings.groupControlNumberLowerBound]
   * The group control number lower bound.
   * @property {number}
   * [sendAgreement.protocolSettings.envelopeSettings.groupControlNumberUpperBound]
   * The group control number upper bound.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.rolloverGroupControlNumber]
   * The value indicating whether to rollover group control number.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupControlNumberPrefix]
   * The group control number prefix.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupControlNumberSuffix]
   * The group control number suffix.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverQualifier]
   * The group application receiver qualifier.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverId]
   * The group application receiver id.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupApplicationSenderQualifier]
   * The group application sender qualifier.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupApplicationSenderId]
   * The group application sender id.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.groupApplicationPassword]
   * The group application password.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.overwriteExistingTransactionSetControlNumber]
   * The value indicating whether to overwrite existing transaction set control
   * number.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberPrefix]
   * The transaction set control number prefix.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberSuffix]
   * The transaction set control number suffix.
   * @property {number}
   * [sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberLowerBound]
   * The transaction set control number lower bound.
   * @property {number}
   * [sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberUpperBound]
   * The transaction set control number upper bound.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.rolloverTransactionSetControlNumber]
   * The value indicating whether to rollover transaction set control number.
   * @property {boolean}
   * [sendAgreement.protocolSettings.envelopeSettings.isTestInterchange] The
   * value indicating whether the message is a test interchange.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.senderInternalIdentification]
   * The sender internal identification.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.senderInternalSubIdentification]
   * The sender internal sub identification.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.receiverInternalIdentification]
   * The receiver internal identification.
   * @property {string}
   * [sendAgreement.protocolSettings.envelopeSettings.receiverInternalSubIdentification]
   * The receiver internal sub identification.
   * @property {object}
   * [sendAgreement.protocolSettings.acknowledgementSettings] The EDIFACT
   * acknowledgement settings.
   * @property {boolean}
   * [sendAgreement.protocolSettings.acknowledgementSettings.needTechnicalAcknowledgement]
   * The value indicating whether technical acknowledgement is needed.
   * @property {boolean}
   * [sendAgreement.protocolSettings.acknowledgementSettings.batchTechnicalAcknowledgements]
   * The value indicating whether to batch the technical acknowledgements.
   * @property {boolean}
   * [sendAgreement.protocolSettings.acknowledgementSettings.needFunctionalAcknowledgement]
   * The value indicating whether functional acknowledgement is needed.
   * @property {boolean}
   * [sendAgreement.protocolSettings.acknowledgementSettings.batchFunctionalAcknowledgements]
   * The value indicating whether to batch functional acknowledgements.
   * @property {boolean}
   * [sendAgreement.protocolSettings.acknowledgementSettings.needLoopForValidMessages]
   * The value indicating whether a loop is needed for valid messages.
   * @property {boolean}
   * [sendAgreement.protocolSettings.acknowledgementSettings.sendSynchronousAcknowledgement]
   * The value indicating whether to send synchronous acknowledgement.
   * @property {string}
   * [sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberPrefix]
   * The acknowledgement control number prefix.
   * @property {string}
   * [sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberSuffix]
   * The acknowledgement control number suffix.
   * @property {number}
   * [sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberLowerBound]
   * The acknowledgement control number lower bound.
   * @property {number}
   * [sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberUpperBound]
   * The acknowledgement control number upper bound.
   * @property {boolean}
   * [sendAgreement.protocolSettings.acknowledgementSettings.rolloverAcknowledgementControlNumber]
   * The value indicating whether to rollover acknowledgement control number.
   * @property {object} [sendAgreement.protocolSettings.messageFilter] The
   * EDIFACT message filter.
   * @property {string}
   * [sendAgreement.protocolSettings.messageFilter.messageFilterType] The
   * message filter type. Possible values include: 'NotSpecified', 'Include',
   * 'Exclude'
   * @property {object} [sendAgreement.protocolSettings.processingSettings] The
   * EDIFACT processing Settings.
   * @property {boolean}
   * [sendAgreement.protocolSettings.processingSettings.maskSecurityInfo] The
   * value indicating whether to mask security information.
   * @property {boolean}
   * [sendAgreement.protocolSettings.processingSettings.preserveInterchange]
   * The value indicating whether to preserve interchange.
   * @property {boolean}
   * [sendAgreement.protocolSettings.processingSettings.suspendInterchangeOnError]
   * The value indicating whether to suspend interchange on error.
   * @property {boolean}
   * [sendAgreement.protocolSettings.processingSettings.createEmptyXmlTagsForTrailingSeparators]
   * The value indicating whether to create empty xml tags for trailing
   * separators.
   * @property {boolean}
   * [sendAgreement.protocolSettings.processingSettings.useDotAsDecimalSeparator]
   * The value indicating whether to use dot as decimal separator.
   * @property {array} [sendAgreement.protocolSettings.envelopeOverrides] The
   * EDIFACT envelope override settings.
   * @property {array} [sendAgreement.protocolSettings.messageFilterList] The
   * EDIFACT message filter list.
   * @property {array} [sendAgreement.protocolSettings.schemaReferences] The
   * EDIFACT schema references.
   * @property {array} [sendAgreement.protocolSettings.validationOverrides] The
   * EDIFACT validation override settings.
   * @property {array}
   * [sendAgreement.protocolSettings.edifactDelimiterOverrides] The EDIFACT
   * delimiter override settings.
   */
  constructor() {
  }

  /**
   * Defines the metadata of EdifactAgreementContent
   *
   * @returns {object} metadata of EdifactAgreementContent
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'EdifactAgreementContent',
      type: {
        name: 'Composite',
        className: 'EdifactAgreementContent',
        modelProperties: {
          receiveAgreement: {
            required: true,
            serializedName: 'receiveAgreement',
            type: {
              name: 'Composite',
              className: 'EdifactOneWayAgreement'
            }
          },
          sendAgreement: {
            required: true,
            serializedName: 'sendAgreement',
            type: {
              name: 'Composite',
              className: 'EdifactOneWayAgreement'
            }
          }
        }
      }
    };
  }
}

module.exports = EdifactAgreementContent;
