"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.deserializeIntoParticipantEndpoint = exports.deserializeIntoParticipantCollectionResponse = exports.deserializeIntoParticipantBase = exports.deserializeIntoParticipant = exports.deserializeIntoOrganizer = exports.deserializeIntoNetworkInfo = exports.deserializeIntoMediaStream = exports.deserializeIntoMedia = exports.deserializeIntoFeedbackTokenSet = exports.deserializeIntoFailureInfo = exports.deserializeIntoEndpoint = exports.deserializeIntoDirectRoutingLogRow = exports.deserializeIntoDeviceInfo = exports.deserializeIntoClientUserAgent = exports.deserializeIntoCallRecordCollectionResponse = exports.deserializeIntoCallRecord = exports.deserializeIntoCallLogRow = exports.deserializeIntoAdministrativeUnitInfo = exports.createUserIdentityFromDiscriminatorValue = exports.createUserFeedbackFromDiscriminatorValue = exports.createUserAgentFromDiscriminatorValue = exports.createTraceRouteHopFromDiscriminatorValue = exports.createSmsLogRowFromDiscriminatorValue = exports.createSessionFromDiscriminatorValue = exports.createSessionCollectionResponseFromDiscriminatorValue = exports.createServiceUserAgentFromDiscriminatorValue = exports.createServiceEndpointFromDiscriminatorValue = exports.createSegmentFromDiscriminatorValue = exports.createSegmentCollectionResponseFromDiscriminatorValue = exports.createPstnOnlineMeetingDialoutReportFromDiscriminatorValue = exports.createPstnCallLogRowFromDiscriminatorValue = exports.createPstnBlockedUsersLogRowFromDiscriminatorValue = exports.createParticipantFromDiscriminatorValue = exports.createParticipantEndpointFromDiscriminatorValue = exports.createParticipantCollectionResponseFromDiscriminatorValue = exports.createParticipantBaseFromDiscriminatorValue = exports.createOrganizerFromDiscriminatorValue = exports.createNetworkInfoFromDiscriminatorValue = exports.createMediaStreamFromDiscriminatorValue = exports.createMediaFromDiscriminatorValue = exports.createFeedbackTokenSetFromDiscriminatorValue = exports.createFailureInfoFromDiscriminatorValue = exports.createEndpointFromDiscriminatorValue = exports.createDirectRoutingLogRowFromDiscriminatorValue = exports.createDeviceInfoFromDiscriminatorValue = exports.createClientUserAgentFromDiscriminatorValue = exports.createCallRecordFromDiscriminatorValue = exports.createCallRecordCollectionResponseFromDiscriminatorValue = exports.createCallLogRowFromDiscriminatorValue = exports.createAdministrativeUnitInfoFromDiscriminatorValue = void 0;
exports.FailureStageObject = exports.ClientPlatformObject = exports.CallTypeObject = exports.AudioCodecObject = exports.serializeUserIdentity = exports.serializeUserFeedback = exports.serializeUserAgent = exports.serializeTraceRouteHop = exports.serializeSmsLogRow = exports.serializeSessionCollectionResponse = exports.serializeSession = exports.serializeServiceUserAgent = exports.serializeServiceEndpoint = exports.serializeSegmentCollectionResponse = exports.serializeSegment = exports.serializePstnOnlineMeetingDialoutReport = exports.serializePstnCallLogRow = exports.serializePstnBlockedUsersLogRow = exports.serializeParticipantEndpoint = exports.serializeParticipantCollectionResponse = exports.serializeParticipantBase = exports.serializeParticipant = exports.serializeOrganizer = exports.serializeNetworkInfo = exports.serializeMediaStream = exports.serializeMedia = exports.serializeFeedbackTokenSet = exports.serializeFailureInfo = exports.serializeEndpoint = exports.serializeDirectRoutingLogRow = exports.serializeDeviceInfo = exports.serializeClientUserAgent = exports.serializeCallRecordCollectionResponse = exports.serializeCallRecord = exports.serializeCallLogRow = exports.serializeAdministrativeUnitInfo = exports.deserializeIntoUserIdentity = exports.deserializeIntoUserFeedback = exports.deserializeIntoUserAgent = exports.deserializeIntoTraceRouteHop = exports.deserializeIntoSmsLogRow = exports.deserializeIntoSessionCollectionResponse = exports.deserializeIntoSession = exports.deserializeIntoServiceUserAgent = exports.deserializeIntoServiceEndpoint = exports.deserializeIntoSegmentCollectionResponse = exports.deserializeIntoSegment = exports.deserializeIntoPstnOnlineMeetingDialoutReport = exports.deserializeIntoPstnCallLogRow = exports.deserializeIntoPstnBlockedUsersLogRow = void 0;
exports.WifiRadioTypeObject = exports.WifiBandObject = exports.VideoCodecObject = exports.UserFeedbackRatingObject = exports.ServiceRoleObject = exports.PstnUserBlockModeObject = exports.PstnCallDurationSourceObject = exports.ProductFamilyObject = exports.NetworkTransportProtocolObject = exports.NetworkConnectionTypeObject = exports.ModalityObject = exports.MediaStreamDirectionObject = void 0;
/* tslint:disable */
/* eslint-disable */
// Generated by Microsoft Kiota
// @ts-ignore
const __1 = require("../");
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {AdministrativeUnitInfo}
 */
function createAdministrativeUnitInfoFromDiscriminatorValue(parseNode) {
    return deserializeIntoAdministrativeUnitInfo;
}
exports.createAdministrativeUnitInfoFromDiscriminatorValue = createAdministrativeUnitInfoFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {CallLogRow}
 */
function createCallLogRowFromDiscriminatorValue(parseNode) {
    if (!parseNode)
        throw new Error("parseNode cannot be undefined");
    const mappingValueNode = parseNode.getChildNode("@odata.type");
    if (mappingValueNode) {
        const mappingValue = mappingValueNode.getStringValue();
        if (mappingValue) {
            switch (mappingValue) {
                case "#microsoft.graph.callRecords.directRoutingLogRow":
                    return deserializeIntoDirectRoutingLogRow;
                case "#microsoft.graph.callRecords.pstnCallLogRow":
                    return deserializeIntoPstnCallLogRow;
                case "#microsoft.graph.callRecords.smsLogRow":
                    return deserializeIntoSmsLogRow;
            }
        }
    }
    return deserializeIntoCallLogRow;
}
exports.createCallLogRowFromDiscriminatorValue = createCallLogRowFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {CallRecordCollectionResponse}
 */
function createCallRecordCollectionResponseFromDiscriminatorValue(parseNode) {
    return deserializeIntoCallRecordCollectionResponse;
}
exports.createCallRecordCollectionResponseFromDiscriminatorValue = createCallRecordCollectionResponseFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {CallRecord}
 */
function createCallRecordFromDiscriminatorValue(parseNode) {
    return deserializeIntoCallRecord;
}
exports.createCallRecordFromDiscriminatorValue = createCallRecordFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {ClientUserAgent}
 */
function createClientUserAgentFromDiscriminatorValue(parseNode) {
    return deserializeIntoClientUserAgent;
}
exports.createClientUserAgentFromDiscriminatorValue = createClientUserAgentFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {DeviceInfo}
 */
function createDeviceInfoFromDiscriminatorValue(parseNode) {
    return deserializeIntoDeviceInfo;
}
exports.createDeviceInfoFromDiscriminatorValue = createDeviceInfoFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {DirectRoutingLogRow}
 */
function createDirectRoutingLogRowFromDiscriminatorValue(parseNode) {
    return deserializeIntoDirectRoutingLogRow;
}
exports.createDirectRoutingLogRowFromDiscriminatorValue = createDirectRoutingLogRowFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Endpoint}
 */
function createEndpointFromDiscriminatorValue(parseNode) {
    if (!parseNode)
        throw new Error("parseNode cannot be undefined");
    const mappingValueNode = parseNode.getChildNode("@odata.type");
    if (mappingValueNode) {
        const mappingValue = mappingValueNode.getStringValue();
        if (mappingValue) {
            switch (mappingValue) {
                case "#microsoft.graph.callRecords.participantEndpoint":
                    return deserializeIntoParticipantEndpoint;
                case "#microsoft.graph.callRecords.serviceEndpoint":
                    return deserializeIntoServiceEndpoint;
            }
        }
    }
    return deserializeIntoEndpoint;
}
exports.createEndpointFromDiscriminatorValue = createEndpointFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {FailureInfo}
 */
function createFailureInfoFromDiscriminatorValue(parseNode) {
    return deserializeIntoFailureInfo;
}
exports.createFailureInfoFromDiscriminatorValue = createFailureInfoFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {FeedbackTokenSet}
 */
function createFeedbackTokenSetFromDiscriminatorValue(parseNode) {
    return deserializeIntoFeedbackTokenSet;
}
exports.createFeedbackTokenSetFromDiscriminatorValue = createFeedbackTokenSetFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Media}
 */
function createMediaFromDiscriminatorValue(parseNode) {
    return deserializeIntoMedia;
}
exports.createMediaFromDiscriminatorValue = createMediaFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {MediaStream}
 */
function createMediaStreamFromDiscriminatorValue(parseNode) {
    return deserializeIntoMediaStream;
}
exports.createMediaStreamFromDiscriminatorValue = createMediaStreamFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {NetworkInfo}
 */
function createNetworkInfoFromDiscriminatorValue(parseNode) {
    return deserializeIntoNetworkInfo;
}
exports.createNetworkInfoFromDiscriminatorValue = createNetworkInfoFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Organizer}
 */
function createOrganizerFromDiscriminatorValue(parseNode) {
    return deserializeIntoOrganizer;
}
exports.createOrganizerFromDiscriminatorValue = createOrganizerFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {ParticipantBase}
 */
function createParticipantBaseFromDiscriminatorValue(parseNode) {
    if (!parseNode)
        throw new Error("parseNode cannot be undefined");
    const mappingValueNode = parseNode.getChildNode("@odata.type");
    if (mappingValueNode) {
        const mappingValue = mappingValueNode.getStringValue();
        if (mappingValue) {
            switch (mappingValue) {
                case "#microsoft.graph.callRecords.organizer":
                    return deserializeIntoOrganizer;
                case "#microsoft.graph.callRecords.participant":
                    return deserializeIntoParticipant;
            }
        }
    }
    return deserializeIntoParticipantBase;
}
exports.createParticipantBaseFromDiscriminatorValue = createParticipantBaseFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {ParticipantCollectionResponse}
 */
function createParticipantCollectionResponseFromDiscriminatorValue(parseNode) {
    return deserializeIntoParticipantCollectionResponse;
}
exports.createParticipantCollectionResponseFromDiscriminatorValue = createParticipantCollectionResponseFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {ParticipantEndpoint}
 */
function createParticipantEndpointFromDiscriminatorValue(parseNode) {
    return deserializeIntoParticipantEndpoint;
}
exports.createParticipantEndpointFromDiscriminatorValue = createParticipantEndpointFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Participant}
 */
function createParticipantFromDiscriminatorValue(parseNode) {
    return deserializeIntoParticipant;
}
exports.createParticipantFromDiscriminatorValue = createParticipantFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {PstnBlockedUsersLogRow}
 */
function createPstnBlockedUsersLogRowFromDiscriminatorValue(parseNode) {
    return deserializeIntoPstnBlockedUsersLogRow;
}
exports.createPstnBlockedUsersLogRowFromDiscriminatorValue = createPstnBlockedUsersLogRowFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {PstnCallLogRow}
 */
function createPstnCallLogRowFromDiscriminatorValue(parseNode) {
    return deserializeIntoPstnCallLogRow;
}
exports.createPstnCallLogRowFromDiscriminatorValue = createPstnCallLogRowFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {PstnOnlineMeetingDialoutReport}
 */
function createPstnOnlineMeetingDialoutReportFromDiscriminatorValue(parseNode) {
    return deserializeIntoPstnOnlineMeetingDialoutReport;
}
exports.createPstnOnlineMeetingDialoutReportFromDiscriminatorValue = createPstnOnlineMeetingDialoutReportFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {SegmentCollectionResponse}
 */
function createSegmentCollectionResponseFromDiscriminatorValue(parseNode) {
    return deserializeIntoSegmentCollectionResponse;
}
exports.createSegmentCollectionResponseFromDiscriminatorValue = createSegmentCollectionResponseFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Segment}
 */
function createSegmentFromDiscriminatorValue(parseNode) {
    return deserializeIntoSegment;
}
exports.createSegmentFromDiscriminatorValue = createSegmentFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {ServiceEndpoint}
 */
function createServiceEndpointFromDiscriminatorValue(parseNode) {
    return deserializeIntoServiceEndpoint;
}
exports.createServiceEndpointFromDiscriminatorValue = createServiceEndpointFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {ServiceUserAgent}
 */
function createServiceUserAgentFromDiscriminatorValue(parseNode) {
    return deserializeIntoServiceUserAgent;
}
exports.createServiceUserAgentFromDiscriminatorValue = createServiceUserAgentFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {SessionCollectionResponse}
 */
function createSessionCollectionResponseFromDiscriminatorValue(parseNode) {
    return deserializeIntoSessionCollectionResponse;
}
exports.createSessionCollectionResponseFromDiscriminatorValue = createSessionCollectionResponseFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Session}
 */
function createSessionFromDiscriminatorValue(parseNode) {
    return deserializeIntoSession;
}
exports.createSessionFromDiscriminatorValue = createSessionFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {SmsLogRow}
 */
function createSmsLogRowFromDiscriminatorValue(parseNode) {
    return deserializeIntoSmsLogRow;
}
exports.createSmsLogRowFromDiscriminatorValue = createSmsLogRowFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {TraceRouteHop}
 */
function createTraceRouteHopFromDiscriminatorValue(parseNode) {
    return deserializeIntoTraceRouteHop;
}
exports.createTraceRouteHopFromDiscriminatorValue = createTraceRouteHopFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {UserAgent}
 */
function createUserAgentFromDiscriminatorValue(parseNode) {
    if (!parseNode)
        throw new Error("parseNode cannot be undefined");
    const mappingValueNode = parseNode.getChildNode("@odata.type");
    if (mappingValueNode) {
        const mappingValue = mappingValueNode.getStringValue();
        if (mappingValue) {
            switch (mappingValue) {
                case "#microsoft.graph.callRecords.clientUserAgent":
                    return deserializeIntoClientUserAgent;
                case "#microsoft.graph.callRecords.serviceUserAgent":
                    return deserializeIntoServiceUserAgent;
            }
        }
    }
    return deserializeIntoUserAgent;
}
exports.createUserAgentFromDiscriminatorValue = createUserAgentFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {UserFeedback}
 */
function createUserFeedbackFromDiscriminatorValue(parseNode) {
    return deserializeIntoUserFeedback;
}
exports.createUserFeedbackFromDiscriminatorValue = createUserFeedbackFromDiscriminatorValue;
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {UserIdentity}
 */
function createUserIdentityFromDiscriminatorValue(parseNode) {
    return deserializeIntoUserIdentity;
}
exports.createUserIdentityFromDiscriminatorValue = createUserIdentityFromDiscriminatorValue;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoAdministrativeUnitInfo(administrativeUnitInfo = {}) {
    return {
        "backingStoreEnabled": n => { administrativeUnitInfo.backingStoreEnabled = true; },
        "id": n => { administrativeUnitInfo.id = n.getStringValue(); },
        "@odata.type": n => { administrativeUnitInfo.odataType = n.getStringValue(); },
    };
}
exports.deserializeIntoAdministrativeUnitInfo = deserializeIntoAdministrativeUnitInfo;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoCallLogRow(callLogRow = {}) {
    return {
        "administrativeUnitInfos": n => { callLogRow.administrativeUnitInfos = n.getCollectionOfObjectValues(createAdministrativeUnitInfoFromDiscriminatorValue); },
        "backingStoreEnabled": n => { callLogRow.backingStoreEnabled = true; },
        "id": n => { callLogRow.id = n.getStringValue(); },
        "@odata.type": n => { callLogRow.odataType = n.getStringValue(); },
        "otherPartyCountryCode": n => { callLogRow.otherPartyCountryCode = n.getStringValue(); },
        "userDisplayName": n => { callLogRow.userDisplayName = n.getStringValue(); },
        "userId": n => { callLogRow.userId = n.getStringValue(); },
        "userPrincipalName": n => { callLogRow.userPrincipalName = n.getStringValue(); },
    };
}
exports.deserializeIntoCallLogRow = deserializeIntoCallLogRow;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoCallRecord(callRecord = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoEntity)(callRecord)), { "endDateTime": n => { callRecord.endDateTime = n.getDateValue(); }, "joinWebUrl": n => { callRecord.joinWebUrl = n.getStringValue(); }, "lastModifiedDateTime": n => { callRecord.lastModifiedDateTime = n.getDateValue(); }, "modalities": n => { callRecord.modalities = n.getCollectionOfEnumValues(exports.ModalityObject); }, "organizer": n => { callRecord.organizer = n.getObjectValue(__1.createIdentitySetFromDiscriminatorValue); }, "organizer_v2": n => { callRecord.organizer_v2 = n.getObjectValue(createOrganizerFromDiscriminatorValue); }, "participants": n => { callRecord.participants = n.getCollectionOfObjectValues(__1.createIdentitySetFromDiscriminatorValue); }, "participants_v2": n => { callRecord.participants_v2 = n.getCollectionOfObjectValues(createParticipantFromDiscriminatorValue); }, "sessions": n => { callRecord.sessions = n.getCollectionOfObjectValues(createSessionFromDiscriminatorValue); }, "startDateTime": n => { callRecord.startDateTime = n.getDateValue(); }, "type": n => { callRecord.type = n.getEnumValue(exports.CallTypeObject); }, "version": n => { callRecord.version = n.getNumberValue(); } });
}
exports.deserializeIntoCallRecord = deserializeIntoCallRecord;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoCallRecordCollectionResponse(callRecordCollectionResponse = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoBaseCollectionPaginationCountResponse)(callRecordCollectionResponse)), { "value": n => { callRecordCollectionResponse.value = n.getCollectionOfObjectValues(createCallRecordFromDiscriminatorValue); } });
}
exports.deserializeIntoCallRecordCollectionResponse = deserializeIntoCallRecordCollectionResponse;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoClientUserAgent(clientUserAgent = {}) {
    return Object.assign(Object.assign({}, deserializeIntoUserAgent(clientUserAgent)), { "azureADAppId": n => { clientUserAgent.azureADAppId = n.getStringValue(); }, "communicationServiceId": n => { clientUserAgent.communicationServiceId = n.getStringValue(); }, "platform": n => { clientUserAgent.platform = n.getEnumValue(exports.ClientPlatformObject); }, "productFamily": n => { clientUserAgent.productFamily = n.getEnumValue(exports.ProductFamilyObject); } });
}
exports.deserializeIntoClientUserAgent = deserializeIntoClientUserAgent;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoDeviceInfo(deviceInfo = {}) {
    return {
        "backingStoreEnabled": n => { deviceInfo.backingStoreEnabled = true; },
        "captureDeviceDriver": n => { deviceInfo.captureDeviceDriver = n.getStringValue(); },
        "captureDeviceName": n => { deviceInfo.captureDeviceName = n.getStringValue(); },
        "captureNotFunctioningEventRatio": n => { deviceInfo.captureNotFunctioningEventRatio = n.getNumberValue(); },
        "cpuInsufficentEventRatio": n => { deviceInfo.cpuInsufficentEventRatio = n.getNumberValue(); },
        "deviceClippingEventRatio": n => { deviceInfo.deviceClippingEventRatio = n.getNumberValue(); },
        "deviceGlitchEventRatio": n => { deviceInfo.deviceGlitchEventRatio = n.getNumberValue(); },
        "howlingEventCount": n => { deviceInfo.howlingEventCount = n.getNumberValue(); },
        "initialSignalLevelRootMeanSquare": n => { deviceInfo.initialSignalLevelRootMeanSquare = n.getNumberValue(); },
        "lowSpeechLevelEventRatio": n => { deviceInfo.lowSpeechLevelEventRatio = n.getNumberValue(); },
        "lowSpeechToNoiseEventRatio": n => { deviceInfo.lowSpeechToNoiseEventRatio = n.getNumberValue(); },
        "micGlitchRate": n => { deviceInfo.micGlitchRate = n.getNumberValue(); },
        "@odata.type": n => { deviceInfo.odataType = n.getStringValue(); },
        "receivedNoiseLevel": n => { deviceInfo.receivedNoiseLevel = n.getNumberValue(); },
        "receivedSignalLevel": n => { deviceInfo.receivedSignalLevel = n.getNumberValue(); },
        "renderDeviceDriver": n => { deviceInfo.renderDeviceDriver = n.getStringValue(); },
        "renderDeviceName": n => { deviceInfo.renderDeviceName = n.getStringValue(); },
        "renderMuteEventRatio": n => { deviceInfo.renderMuteEventRatio = n.getNumberValue(); },
        "renderNotFunctioningEventRatio": n => { deviceInfo.renderNotFunctioningEventRatio = n.getNumberValue(); },
        "renderZeroVolumeEventRatio": n => { deviceInfo.renderZeroVolumeEventRatio = n.getNumberValue(); },
        "sentNoiseLevel": n => { deviceInfo.sentNoiseLevel = n.getNumberValue(); },
        "sentSignalLevel": n => { deviceInfo.sentSignalLevel = n.getNumberValue(); },
        "speakerGlitchRate": n => { deviceInfo.speakerGlitchRate = n.getNumberValue(); },
    };
}
exports.deserializeIntoDeviceInfo = deserializeIntoDeviceInfo;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoDirectRoutingLogRow(directRoutingLogRow = {}) {
    return Object.assign(Object.assign({}, deserializeIntoCallLogRow(directRoutingLogRow)), { "calleeNumber": n => { directRoutingLogRow.calleeNumber = n.getStringValue(); }, "callEndSubReason": n => { directRoutingLogRow.callEndSubReason = n.getNumberValue(); }, "callerNumber": n => { directRoutingLogRow.callerNumber = n.getStringValue(); }, "callType": n => { directRoutingLogRow.callType = n.getStringValue(); }, "correlationId": n => { directRoutingLogRow.correlationId = n.getStringValue(); }, "duration": n => { directRoutingLogRow.duration = n.getNumberValue(); }, "endDateTime": n => { directRoutingLogRow.endDateTime = n.getDateValue(); }, "failureDateTime": n => { directRoutingLogRow.failureDateTime = n.getDateValue(); }, "finalSipCode": n => { directRoutingLogRow.finalSipCode = n.getNumberValue(); }, "finalSipCodePhrase": n => { directRoutingLogRow.finalSipCodePhrase = n.getStringValue(); }, "inviteDateTime": n => { directRoutingLogRow.inviteDateTime = n.getDateValue(); }, "mediaBypassEnabled": n => { directRoutingLogRow.mediaBypassEnabled = n.getBooleanValue(); }, "mediaPathLocation": n => { directRoutingLogRow.mediaPathLocation = n.getStringValue(); }, "signalingLocation": n => { directRoutingLogRow.signalingLocation = n.getStringValue(); }, "startDateTime": n => { directRoutingLogRow.startDateTime = n.getDateValue(); }, "successfulCall": n => { directRoutingLogRow.successfulCall = n.getBooleanValue(); }, "transferorCorrelationId": n => { directRoutingLogRow.transferorCorrelationId = n.getStringValue(); }, "trunkFullyQualifiedDomainName": n => { directRoutingLogRow.trunkFullyQualifiedDomainName = n.getStringValue(); }, "userCountryCode": n => { directRoutingLogRow.userCountryCode = n.getStringValue(); } });
}
exports.deserializeIntoDirectRoutingLogRow = deserializeIntoDirectRoutingLogRow;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoEndpoint(endpoint = {}) {
    return {
        "backingStoreEnabled": n => { endpoint.backingStoreEnabled = true; },
        "@odata.type": n => { endpoint.odataType = n.getStringValue(); },
        "userAgent": n => { endpoint.userAgent = n.getObjectValue(createUserAgentFromDiscriminatorValue); },
    };
}
exports.deserializeIntoEndpoint = deserializeIntoEndpoint;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoFailureInfo(failureInfo = {}) {
    return {
        "backingStoreEnabled": n => { failureInfo.backingStoreEnabled = true; },
        "@odata.type": n => { failureInfo.odataType = n.getStringValue(); },
        "reason": n => { failureInfo.reason = n.getStringValue(); },
        "stage": n => { failureInfo.stage = n.getEnumValue(exports.FailureStageObject); },
    };
}
exports.deserializeIntoFailureInfo = deserializeIntoFailureInfo;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoFeedbackTokenSet(feedbackTokenSet = {}) {
    return {
        "backingStoreEnabled": n => { feedbackTokenSet.backingStoreEnabled = true; },
        "@odata.type": n => { feedbackTokenSet.odataType = n.getStringValue(); },
    };
}
exports.deserializeIntoFeedbackTokenSet = deserializeIntoFeedbackTokenSet;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoMedia(media = {}) {
    return {
        "backingStoreEnabled": n => { media.backingStoreEnabled = true; },
        "calleeDevice": n => { media.calleeDevice = n.getObjectValue(createDeviceInfoFromDiscriminatorValue); },
        "calleeNetwork": n => { media.calleeNetwork = n.getObjectValue(createNetworkInfoFromDiscriminatorValue); },
        "callerDevice": n => { media.callerDevice = n.getObjectValue(createDeviceInfoFromDiscriminatorValue); },
        "callerNetwork": n => { media.callerNetwork = n.getObjectValue(createNetworkInfoFromDiscriminatorValue); },
        "label": n => { media.label = n.getStringValue(); },
        "@odata.type": n => { media.odataType = n.getStringValue(); },
        "streams": n => { media.streams = n.getCollectionOfObjectValues(createMediaStreamFromDiscriminatorValue); },
    };
}
exports.deserializeIntoMedia = deserializeIntoMedia;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoMediaStream(mediaStream = {}) {
    return {
        "audioCodec": n => { mediaStream.audioCodec = n.getEnumValue(exports.AudioCodecObject); },
        "averageAudioDegradation": n => { mediaStream.averageAudioDegradation = n.getNumberValue(); },
        "averageAudioNetworkJitter": n => { mediaStream.averageAudioNetworkJitter = n.getDurationValue(); },
        "averageBandwidthEstimate": n => { mediaStream.averageBandwidthEstimate = n.getNumberValue(); },
        "averageFreezeDuration": n => { mediaStream.averageFreezeDuration = n.getDurationValue(); },
        "averageJitter": n => { mediaStream.averageJitter = n.getDurationValue(); },
        "averagePacketLossRate": n => { mediaStream.averagePacketLossRate = n.getNumberValue(); },
        "averageRatioOfConcealedSamples": n => { mediaStream.averageRatioOfConcealedSamples = n.getNumberValue(); },
        "averageReceivedFrameRate": n => { mediaStream.averageReceivedFrameRate = n.getNumberValue(); },
        "averageRoundTripTime": n => { mediaStream.averageRoundTripTime = n.getDurationValue(); },
        "averageVideoFrameLossPercentage": n => { mediaStream.averageVideoFrameLossPercentage = n.getNumberValue(); },
        "averageVideoFrameRate": n => { mediaStream.averageVideoFrameRate = n.getNumberValue(); },
        "averageVideoPacketLossRate": n => { mediaStream.averageVideoPacketLossRate = n.getNumberValue(); },
        "backingStoreEnabled": n => { mediaStream.backingStoreEnabled = true; },
        "endDateTime": n => { mediaStream.endDateTime = n.getDateValue(); },
        "isAudioForwardErrorCorrectionUsed": n => { mediaStream.isAudioForwardErrorCorrectionUsed = n.getBooleanValue(); },
        "lowFrameRateRatio": n => { mediaStream.lowFrameRateRatio = n.getNumberValue(); },
        "lowVideoProcessingCapabilityRatio": n => { mediaStream.lowVideoProcessingCapabilityRatio = n.getNumberValue(); },
        "maxAudioNetworkJitter": n => { mediaStream.maxAudioNetworkJitter = n.getDurationValue(); },
        "maxJitter": n => { mediaStream.maxJitter = n.getDurationValue(); },
        "maxPacketLossRate": n => { mediaStream.maxPacketLossRate = n.getNumberValue(); },
        "maxRatioOfConcealedSamples": n => { mediaStream.maxRatioOfConcealedSamples = n.getNumberValue(); },
        "maxRoundTripTime": n => { mediaStream.maxRoundTripTime = n.getDurationValue(); },
        "@odata.type": n => { mediaStream.odataType = n.getStringValue(); },
        "packetUtilization": n => { mediaStream.packetUtilization = n.getNumberValue(); },
        "postForwardErrorCorrectionPacketLossRate": n => { mediaStream.postForwardErrorCorrectionPacketLossRate = n.getNumberValue(); },
        "rmsFreezeDuration": n => { mediaStream.rmsFreezeDuration = n.getDurationValue(); },
        "startDateTime": n => { mediaStream.startDateTime = n.getDateValue(); },
        "streamDirection": n => { mediaStream.streamDirection = n.getEnumValue(exports.MediaStreamDirectionObject); },
        "streamId": n => { mediaStream.streamId = n.getStringValue(); },
        "videoCodec": n => { mediaStream.videoCodec = n.getEnumValue(exports.VideoCodecObject); },
        "wasMediaBypassed": n => { mediaStream.wasMediaBypassed = n.getBooleanValue(); },
    };
}
exports.deserializeIntoMediaStream = deserializeIntoMediaStream;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoNetworkInfo(networkInfo = {}) {
    return {
        "backingStoreEnabled": n => { networkInfo.backingStoreEnabled = true; },
        "bandwidthLowEventRatio": n => { networkInfo.bandwidthLowEventRatio = n.getNumberValue(); },
        "basicServiceSetIdentifier": n => { networkInfo.basicServiceSetIdentifier = n.getStringValue(); },
        "connectionType": n => { networkInfo.connectionType = n.getEnumValue(exports.NetworkConnectionTypeObject); },
        "delayEventRatio": n => { networkInfo.delayEventRatio = n.getNumberValue(); },
        "dnsSuffix": n => { networkInfo.dnsSuffix = n.getStringValue(); },
        "ipAddress": n => { networkInfo.ipAddress = n.getStringValue(); },
        "linkSpeed": n => { networkInfo.linkSpeed = n.getNumberValue(); },
        "macAddress": n => { networkInfo.macAddress = n.getStringValue(); },
        "networkTransportProtocol": n => { networkInfo.networkTransportProtocol = n.getEnumValue(exports.NetworkTransportProtocolObject); },
        "@odata.type": n => { networkInfo.odataType = n.getStringValue(); },
        "port": n => { networkInfo.port = n.getNumberValue(); },
        "receivedQualityEventRatio": n => { networkInfo.receivedQualityEventRatio = n.getNumberValue(); },
        "reflexiveIPAddress": n => { networkInfo.reflexiveIPAddress = n.getStringValue(); },
        "relayIPAddress": n => { networkInfo.relayIPAddress = n.getStringValue(); },
        "relayPort": n => { networkInfo.relayPort = n.getNumberValue(); },
        "sentQualityEventRatio": n => { networkInfo.sentQualityEventRatio = n.getNumberValue(); },
        "subnet": n => { networkInfo.subnet = n.getStringValue(); },
        "traceRouteHops": n => { networkInfo.traceRouteHops = n.getCollectionOfObjectValues(createTraceRouteHopFromDiscriminatorValue); },
        "wifiBand": n => { networkInfo.wifiBand = n.getEnumValue(exports.WifiBandObject); },
        "wifiBatteryCharge": n => { networkInfo.wifiBatteryCharge = n.getNumberValue(); },
        "wifiChannel": n => { networkInfo.wifiChannel = n.getNumberValue(); },
        "wifiMicrosoftDriver": n => { networkInfo.wifiMicrosoftDriver = n.getStringValue(); },
        "wifiMicrosoftDriverVersion": n => { networkInfo.wifiMicrosoftDriverVersion = n.getStringValue(); },
        "wifiRadioType": n => { networkInfo.wifiRadioType = n.getEnumValue(exports.WifiRadioTypeObject); },
        "wifiSignalStrength": n => { networkInfo.wifiSignalStrength = n.getNumberValue(); },
        "wifiVendorDriver": n => { networkInfo.wifiVendorDriver = n.getStringValue(); },
        "wifiVendorDriverVersion": n => { networkInfo.wifiVendorDriverVersion = n.getStringValue(); },
    };
}
exports.deserializeIntoNetworkInfo = deserializeIntoNetworkInfo;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoOrganizer(organizer = {}) {
    return Object.assign({}, deserializeIntoParticipantBase(organizer));
}
exports.deserializeIntoOrganizer = deserializeIntoOrganizer;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoParticipant(participant = {}) {
    return Object.assign({}, deserializeIntoParticipantBase(participant));
}
exports.deserializeIntoParticipant = deserializeIntoParticipant;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoParticipantBase(participantBase = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoEntity)(participantBase)), { "administrativeUnitInfos": n => { participantBase.administrativeUnitInfos = n.getCollectionOfObjectValues(createAdministrativeUnitInfoFromDiscriminatorValue); }, "identity": n => { participantBase.identity = n.getObjectValue(__1.createCommunicationsIdentitySetFromDiscriminatorValue); } });
}
exports.deserializeIntoParticipantBase = deserializeIntoParticipantBase;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoParticipantCollectionResponse(participantCollectionResponse = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoBaseCollectionPaginationCountResponse)(participantCollectionResponse)), { "value": n => { participantCollectionResponse.value = n.getCollectionOfObjectValues(createParticipantFromDiscriminatorValue); } });
}
exports.deserializeIntoParticipantCollectionResponse = deserializeIntoParticipantCollectionResponse;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoParticipantEndpoint(participantEndpoint = {}) {
    return Object.assign(Object.assign({}, deserializeIntoEndpoint(participantEndpoint)), { "associatedIdentity": n => { participantEndpoint.associatedIdentity = n.getObjectValue(__1.createIdentityFromDiscriminatorValue); }, "cpuCoresCount": n => { participantEndpoint.cpuCoresCount = n.getNumberValue(); }, "cpuName": n => { participantEndpoint.cpuName = n.getStringValue(); }, "cpuProcessorSpeedInMhz": n => { participantEndpoint.cpuProcessorSpeedInMhz = n.getNumberValue(); }, "feedback": n => { participantEndpoint.feedback = n.getObjectValue(createUserFeedbackFromDiscriminatorValue); }, "identity": n => { participantEndpoint.identity = n.getObjectValue(__1.createIdentitySetFromDiscriminatorValue); }, "name": n => { participantEndpoint.name = n.getStringValue(); } });
}
exports.deserializeIntoParticipantEndpoint = deserializeIntoParticipantEndpoint;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoPstnBlockedUsersLogRow(pstnBlockedUsersLogRow = {}) {
    return {
        "backingStoreEnabled": n => { pstnBlockedUsersLogRow.backingStoreEnabled = true; },
        "blockDateTime": n => { pstnBlockedUsersLogRow.blockDateTime = n.getDateValue(); },
        "blockReason": n => { pstnBlockedUsersLogRow.blockReason = n.getStringValue(); },
        "@odata.type": n => { pstnBlockedUsersLogRow.odataType = n.getStringValue(); },
        "remediationId": n => { pstnBlockedUsersLogRow.remediationId = n.getStringValue(); },
        "userBlockMode": n => { pstnBlockedUsersLogRow.userBlockMode = n.getEnumValue(exports.PstnUserBlockModeObject); },
        "userDisplayName": n => { pstnBlockedUsersLogRow.userDisplayName = n.getStringValue(); },
        "userId": n => { pstnBlockedUsersLogRow.userId = n.getStringValue(); },
        "userPrincipalName": n => { pstnBlockedUsersLogRow.userPrincipalName = n.getStringValue(); },
        "userTelephoneNumber": n => { pstnBlockedUsersLogRow.userTelephoneNumber = n.getStringValue(); },
    };
}
exports.deserializeIntoPstnBlockedUsersLogRow = deserializeIntoPstnBlockedUsersLogRow;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoPstnCallLogRow(pstnCallLogRow = {}) {
    return Object.assign(Object.assign({}, deserializeIntoCallLogRow(pstnCallLogRow)), { "callDurationSource": n => { pstnCallLogRow.callDurationSource = n.getEnumValue(exports.PstnCallDurationSourceObject); }, "calleeNumber": n => { pstnCallLogRow.calleeNumber = n.getStringValue(); }, "callerNumber": n => { pstnCallLogRow.callerNumber = n.getStringValue(); }, "callId": n => { pstnCallLogRow.callId = n.getStringValue(); }, "callType": n => { pstnCallLogRow.callType = n.getStringValue(); }, "charge": n => { pstnCallLogRow.charge = n.getNumberValue(); }, "clientLocalIpV4Address": n => { pstnCallLogRow.clientLocalIpV4Address = n.getStringValue(); }, "clientLocalIpV6Address": n => { pstnCallLogRow.clientLocalIpV6Address = n.getStringValue(); }, "clientPublicIpV4Address": n => { pstnCallLogRow.clientPublicIpV4Address = n.getStringValue(); }, "clientPublicIpV6Address": n => { pstnCallLogRow.clientPublicIpV6Address = n.getStringValue(); }, "conferenceId": n => { pstnCallLogRow.conferenceId = n.getStringValue(); }, "connectionCharge": n => { pstnCallLogRow.connectionCharge = n.getNumberValue(); }, "currency": n => { pstnCallLogRow.currency = n.getStringValue(); }, "destinationContext": n => { pstnCallLogRow.destinationContext = n.getStringValue(); }, "destinationName": n => { pstnCallLogRow.destinationName = n.getStringValue(); }, "duration": n => { pstnCallLogRow.duration = n.getNumberValue(); }, "endDateTime": n => { pstnCallLogRow.endDateTime = n.getDateValue(); }, "inventoryType": n => { pstnCallLogRow.inventoryType = n.getStringValue(); }, "licenseCapability": n => { pstnCallLogRow.licenseCapability = n.getStringValue(); }, "operator": n => { pstnCallLogRow.operator = n.getStringValue(); }, "startDateTime": n => { pstnCallLogRow.startDateTime = n.getDateValue(); }, "tenantCountryCode": n => { pstnCallLogRow.tenantCountryCode = n.getStringValue(); }, "usageCountryCode": n => { pstnCallLogRow.usageCountryCode = n.getStringValue(); } });
}
exports.deserializeIntoPstnCallLogRow = deserializeIntoPstnCallLogRow;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoPstnOnlineMeetingDialoutReport(pstnOnlineMeetingDialoutReport = {}) {
    return {
        "backingStoreEnabled": n => { pstnOnlineMeetingDialoutReport.backingStoreEnabled = true; },
        "currency": n => { pstnOnlineMeetingDialoutReport.currency = n.getStringValue(); },
        "destinationContext": n => { pstnOnlineMeetingDialoutReport.destinationContext = n.getStringValue(); },
        "@odata.type": n => { pstnOnlineMeetingDialoutReport.odataType = n.getStringValue(); },
        "totalCallCharge": n => { pstnOnlineMeetingDialoutReport.totalCallCharge = n.getNumberValue(); },
        "totalCalls": n => { pstnOnlineMeetingDialoutReport.totalCalls = n.getNumberValue(); },
        "totalCallSeconds": n => { pstnOnlineMeetingDialoutReport.totalCallSeconds = n.getNumberValue(); },
        "usageLocation": n => { pstnOnlineMeetingDialoutReport.usageLocation = n.getStringValue(); },
        "userDisplayName": n => { pstnOnlineMeetingDialoutReport.userDisplayName = n.getStringValue(); },
        "userId": n => { pstnOnlineMeetingDialoutReport.userId = n.getStringValue(); },
        "userPrincipalName": n => { pstnOnlineMeetingDialoutReport.userPrincipalName = n.getStringValue(); },
    };
}
exports.deserializeIntoPstnOnlineMeetingDialoutReport = deserializeIntoPstnOnlineMeetingDialoutReport;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoSegment(segment = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoEntity)(segment)), { "callee": n => { segment.callee = n.getObjectValue(createEndpointFromDiscriminatorValue); }, "caller": n => { segment.caller = n.getObjectValue(createEndpointFromDiscriminatorValue); }, "endDateTime": n => { segment.endDateTime = n.getDateValue(); }, "failureInfo": n => { segment.failureInfo = n.getObjectValue(createFailureInfoFromDiscriminatorValue); }, "media": n => { segment.media = n.getCollectionOfObjectValues(createMediaFromDiscriminatorValue); }, "startDateTime": n => { segment.startDateTime = n.getDateValue(); } });
}
exports.deserializeIntoSegment = deserializeIntoSegment;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoSegmentCollectionResponse(segmentCollectionResponse = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoBaseCollectionPaginationCountResponse)(segmentCollectionResponse)), { "value": n => { segmentCollectionResponse.value = n.getCollectionOfObjectValues(createSegmentFromDiscriminatorValue); } });
}
exports.deserializeIntoSegmentCollectionResponse = deserializeIntoSegmentCollectionResponse;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoServiceEndpoint(serviceEndpoint = {}) {
    return Object.assign({}, deserializeIntoEndpoint(serviceEndpoint));
}
exports.deserializeIntoServiceEndpoint = deserializeIntoServiceEndpoint;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoServiceUserAgent(serviceUserAgent = {}) {
    return Object.assign(Object.assign({}, deserializeIntoUserAgent(serviceUserAgent)), { "role": n => { serviceUserAgent.role = n.getEnumValue(exports.ServiceRoleObject); } });
}
exports.deserializeIntoServiceUserAgent = deserializeIntoServiceUserAgent;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoSession(session = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoEntity)(session)), { "callee": n => { session.callee = n.getObjectValue(createEndpointFromDiscriminatorValue); }, "caller": n => { session.caller = n.getObjectValue(createEndpointFromDiscriminatorValue); }, "endDateTime": n => { session.endDateTime = n.getDateValue(); }, "failureInfo": n => { session.failureInfo = n.getObjectValue(createFailureInfoFromDiscriminatorValue); }, "isTest": n => { session.isTest = n.getBooleanValue(); }, "modalities": n => { session.modalities = n.getCollectionOfEnumValues(exports.ModalityObject); }, "segments": n => { session.segments = n.getCollectionOfObjectValues(createSegmentFromDiscriminatorValue); }, "startDateTime": n => { session.startDateTime = n.getDateValue(); } });
}
exports.deserializeIntoSession = deserializeIntoSession;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoSessionCollectionResponse(sessionCollectionResponse = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoBaseCollectionPaginationCountResponse)(sessionCollectionResponse)), { "value": n => { sessionCollectionResponse.value = n.getCollectionOfObjectValues(createSessionFromDiscriminatorValue); } });
}
exports.deserializeIntoSessionCollectionResponse = deserializeIntoSessionCollectionResponse;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoSmsLogRow(smsLogRow = {}) {
    return Object.assign(Object.assign({}, deserializeIntoCallLogRow(smsLogRow)), { "callCharge": n => { smsLogRow.callCharge = n.getNumberValue(); }, "currency": n => { smsLogRow.currency = n.getStringValue(); }, "destinationContext": n => { smsLogRow.destinationContext = n.getStringValue(); }, "destinationName": n => { smsLogRow.destinationName = n.getStringValue(); }, "destinationNumber": n => { smsLogRow.destinationNumber = n.getStringValue(); }, "licenseCapability": n => { smsLogRow.licenseCapability = n.getStringValue(); }, "sentDateTime": n => { smsLogRow.sentDateTime = n.getDateValue(); }, "smsId": n => { smsLogRow.smsId = n.getStringValue(); }, "smsType": n => { smsLogRow.smsType = n.getStringValue(); }, "smsUnits": n => { smsLogRow.smsUnits = n.getNumberValue(); }, "sourceNumber": n => { smsLogRow.sourceNumber = n.getStringValue(); }, "tenantCountryCode": n => { smsLogRow.tenantCountryCode = n.getStringValue(); }, "userCountryCode": n => { smsLogRow.userCountryCode = n.getStringValue(); } });
}
exports.deserializeIntoSmsLogRow = deserializeIntoSmsLogRow;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoTraceRouteHop(traceRouteHop = {}) {
    return {
        "backingStoreEnabled": n => { traceRouteHop.backingStoreEnabled = true; },
        "hopCount": n => { traceRouteHop.hopCount = n.getNumberValue(); },
        "ipAddress": n => { traceRouteHop.ipAddress = n.getStringValue(); },
        "@odata.type": n => { traceRouteHop.odataType = n.getStringValue(); },
        "roundTripTime": n => { traceRouteHop.roundTripTime = n.getDurationValue(); },
    };
}
exports.deserializeIntoTraceRouteHop = deserializeIntoTraceRouteHop;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoUserAgent(userAgent = {}) {
    return {
        "applicationVersion": n => { userAgent.applicationVersion = n.getStringValue(); },
        "backingStoreEnabled": n => { userAgent.backingStoreEnabled = true; },
        "headerValue": n => { userAgent.headerValue = n.getStringValue(); },
        "@odata.type": n => { userAgent.odataType = n.getStringValue(); },
    };
}
exports.deserializeIntoUserAgent = deserializeIntoUserAgent;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoUserFeedback(userFeedback = {}) {
    return {
        "backingStoreEnabled": n => { userFeedback.backingStoreEnabled = true; },
        "@odata.type": n => { userFeedback.odataType = n.getStringValue(); },
        "rating": n => { userFeedback.rating = n.getEnumValue(exports.UserFeedbackRatingObject); },
        "text": n => { userFeedback.text = n.getStringValue(); },
        "tokens": n => { userFeedback.tokens = n.getObjectValue(createFeedbackTokenSetFromDiscriminatorValue); },
    };
}
exports.deserializeIntoUserFeedback = deserializeIntoUserFeedback;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
function deserializeIntoUserIdentity(userIdentity = {}) {
    return Object.assign(Object.assign({}, (0, __1.deserializeIntoIdentity)(userIdentity)), { "userPrincipalName": n => { userIdentity.userPrincipalName = n.getStringValue(); } });
}
exports.deserializeIntoUserIdentity = deserializeIntoUserIdentity;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeAdministrativeUnitInfo(writer, administrativeUnitInfo = {}) {
    writer.writeStringValue("id", administrativeUnitInfo.id);
    writer.writeStringValue("@odata.type", administrativeUnitInfo.odataType);
    writer.writeAdditionalData(administrativeUnitInfo.additionalData);
}
exports.serializeAdministrativeUnitInfo = serializeAdministrativeUnitInfo;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeCallLogRow(writer, callLogRow = {}) {
    writer.writeCollectionOfObjectValues("administrativeUnitInfos", callLogRow.administrativeUnitInfos, serializeAdministrativeUnitInfo);
    writer.writeStringValue("id", callLogRow.id);
    writer.writeStringValue("@odata.type", callLogRow.odataType);
    writer.writeStringValue("otherPartyCountryCode", callLogRow.otherPartyCountryCode);
    writer.writeStringValue("userDisplayName", callLogRow.userDisplayName);
    writer.writeStringValue("userId", callLogRow.userId);
    writer.writeStringValue("userPrincipalName", callLogRow.userPrincipalName);
    writer.writeAdditionalData(callLogRow.additionalData);
}
exports.serializeCallLogRow = serializeCallLogRow;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeCallRecord(writer, callRecord = {}) {
    (0, __1.serializeEntity)(writer, callRecord);
    writer.writeDateValue("endDateTime", callRecord.endDateTime);
    writer.writeStringValue("joinWebUrl", callRecord.joinWebUrl);
    writer.writeDateValue("lastModifiedDateTime", callRecord.lastModifiedDateTime);
    if (callRecord.modalities)
        writer.writeEnumValue("modalities", ...callRecord.modalities);
    writer.writeObjectValue("organizer", callRecord.organizer, __1.serializeIdentitySet);
    writer.writeObjectValue("organizer_v2", callRecord.organizer_v2, serializeOrganizer);
    writer.writeCollectionOfObjectValues("participants", callRecord.participants, __1.serializeIdentitySet);
    writer.writeCollectionOfObjectValues("participants_v2", callRecord.participants_v2, serializeParticipant);
    writer.writeCollectionOfObjectValues("sessions", callRecord.sessions, serializeSession);
    writer.writeDateValue("startDateTime", callRecord.startDateTime);
    writer.writeEnumValue("type", callRecord.type);
    writer.writeNumberValue("version", callRecord.version);
}
exports.serializeCallRecord = serializeCallRecord;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeCallRecordCollectionResponse(writer, callRecordCollectionResponse = {}) {
    (0, __1.serializeBaseCollectionPaginationCountResponse)(writer, callRecordCollectionResponse);
    writer.writeCollectionOfObjectValues("value", callRecordCollectionResponse.value, serializeCallRecord);
}
exports.serializeCallRecordCollectionResponse = serializeCallRecordCollectionResponse;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeClientUserAgent(writer, clientUserAgent = {}) {
    serializeUserAgent(writer, clientUserAgent);
    writer.writeStringValue("azureADAppId", clientUserAgent.azureADAppId);
    writer.writeStringValue("communicationServiceId", clientUserAgent.communicationServiceId);
    writer.writeEnumValue("platform", clientUserAgent.platform);
    writer.writeEnumValue("productFamily", clientUserAgent.productFamily);
}
exports.serializeClientUserAgent = serializeClientUserAgent;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeDeviceInfo(writer, deviceInfo = {}) {
    writer.writeStringValue("captureDeviceDriver", deviceInfo.captureDeviceDriver);
    writer.writeStringValue("captureDeviceName", deviceInfo.captureDeviceName);
    writer.writeNumberValue("captureNotFunctioningEventRatio", deviceInfo.captureNotFunctioningEventRatio);
    writer.writeNumberValue("cpuInsufficentEventRatio", deviceInfo.cpuInsufficentEventRatio);
    writer.writeNumberValue("deviceClippingEventRatio", deviceInfo.deviceClippingEventRatio);
    writer.writeNumberValue("deviceGlitchEventRatio", deviceInfo.deviceGlitchEventRatio);
    writer.writeNumberValue("howlingEventCount", deviceInfo.howlingEventCount);
    writer.writeNumberValue("initialSignalLevelRootMeanSquare", deviceInfo.initialSignalLevelRootMeanSquare);
    writer.writeNumberValue("lowSpeechLevelEventRatio", deviceInfo.lowSpeechLevelEventRatio);
    writer.writeNumberValue("lowSpeechToNoiseEventRatio", deviceInfo.lowSpeechToNoiseEventRatio);
    writer.writeNumberValue("micGlitchRate", deviceInfo.micGlitchRate);
    writer.writeStringValue("@odata.type", deviceInfo.odataType);
    writer.writeNumberValue("receivedNoiseLevel", deviceInfo.receivedNoiseLevel);
    writer.writeNumberValue("receivedSignalLevel", deviceInfo.receivedSignalLevel);
    writer.writeStringValue("renderDeviceDriver", deviceInfo.renderDeviceDriver);
    writer.writeStringValue("renderDeviceName", deviceInfo.renderDeviceName);
    writer.writeNumberValue("renderMuteEventRatio", deviceInfo.renderMuteEventRatio);
    writer.writeNumberValue("renderNotFunctioningEventRatio", deviceInfo.renderNotFunctioningEventRatio);
    writer.writeNumberValue("renderZeroVolumeEventRatio", deviceInfo.renderZeroVolumeEventRatio);
    writer.writeNumberValue("sentNoiseLevel", deviceInfo.sentNoiseLevel);
    writer.writeNumberValue("sentSignalLevel", deviceInfo.sentSignalLevel);
    writer.writeNumberValue("speakerGlitchRate", deviceInfo.speakerGlitchRate);
    writer.writeAdditionalData(deviceInfo.additionalData);
}
exports.serializeDeviceInfo = serializeDeviceInfo;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeDirectRoutingLogRow(writer, directRoutingLogRow = {}) {
    serializeCallLogRow(writer, directRoutingLogRow);
    writer.writeStringValue("calleeNumber", directRoutingLogRow.calleeNumber);
    writer.writeNumberValue("callEndSubReason", directRoutingLogRow.callEndSubReason);
    writer.writeStringValue("callerNumber", directRoutingLogRow.callerNumber);
    writer.writeStringValue("callType", directRoutingLogRow.callType);
    writer.writeStringValue("correlationId", directRoutingLogRow.correlationId);
    writer.writeNumberValue("duration", directRoutingLogRow.duration);
    writer.writeDateValue("endDateTime", directRoutingLogRow.endDateTime);
    writer.writeDateValue("failureDateTime", directRoutingLogRow.failureDateTime);
    writer.writeNumberValue("finalSipCode", directRoutingLogRow.finalSipCode);
    writer.writeStringValue("finalSipCodePhrase", directRoutingLogRow.finalSipCodePhrase);
    writer.writeDateValue("inviteDateTime", directRoutingLogRow.inviteDateTime);
    writer.writeBooleanValue("mediaBypassEnabled", directRoutingLogRow.mediaBypassEnabled);
    writer.writeStringValue("mediaPathLocation", directRoutingLogRow.mediaPathLocation);
    writer.writeStringValue("signalingLocation", directRoutingLogRow.signalingLocation);
    writer.writeDateValue("startDateTime", directRoutingLogRow.startDateTime);
    writer.writeBooleanValue("successfulCall", directRoutingLogRow.successfulCall);
    writer.writeStringValue("transferorCorrelationId", directRoutingLogRow.transferorCorrelationId);
    writer.writeStringValue("trunkFullyQualifiedDomainName", directRoutingLogRow.trunkFullyQualifiedDomainName);
    writer.writeStringValue("userCountryCode", directRoutingLogRow.userCountryCode);
}
exports.serializeDirectRoutingLogRow = serializeDirectRoutingLogRow;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeEndpoint(writer, endpoint = {}) {
    writer.writeStringValue("@odata.type", endpoint.odataType);
    writer.writeObjectValue("userAgent", endpoint.userAgent, serializeUserAgent);
    writer.writeAdditionalData(endpoint.additionalData);
}
exports.serializeEndpoint = serializeEndpoint;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeFailureInfo(writer, failureInfo = {}) {
    writer.writeStringValue("@odata.type", failureInfo.odataType);
    writer.writeStringValue("reason", failureInfo.reason);
    writer.writeEnumValue("stage", failureInfo.stage);
    writer.writeAdditionalData(failureInfo.additionalData);
}
exports.serializeFailureInfo = serializeFailureInfo;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeFeedbackTokenSet(writer, feedbackTokenSet = {}) {
    writer.writeStringValue("@odata.type", feedbackTokenSet.odataType);
    writer.writeAdditionalData(feedbackTokenSet.additionalData);
}
exports.serializeFeedbackTokenSet = serializeFeedbackTokenSet;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeMedia(writer, media = {}) {
    writer.writeObjectValue("calleeDevice", media.calleeDevice, serializeDeviceInfo);
    writer.writeObjectValue("calleeNetwork", media.calleeNetwork, serializeNetworkInfo);
    writer.writeObjectValue("callerDevice", media.callerDevice, serializeDeviceInfo);
    writer.writeObjectValue("callerNetwork", media.callerNetwork, serializeNetworkInfo);
    writer.writeStringValue("label", media.label);
    writer.writeStringValue("@odata.type", media.odataType);
    writer.writeCollectionOfObjectValues("streams", media.streams, serializeMediaStream);
    writer.writeAdditionalData(media.additionalData);
}
exports.serializeMedia = serializeMedia;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeMediaStream(writer, mediaStream = {}) {
    writer.writeEnumValue("audioCodec", mediaStream.audioCodec);
    writer.writeNumberValue("averageAudioDegradation", mediaStream.averageAudioDegradation);
    writer.writeDurationValue("averageAudioNetworkJitter", mediaStream.averageAudioNetworkJitter);
    writer.writeNumberValue("averageBandwidthEstimate", mediaStream.averageBandwidthEstimate);
    writer.writeDurationValue("averageFreezeDuration", mediaStream.averageFreezeDuration);
    writer.writeDurationValue("averageJitter", mediaStream.averageJitter);
    writer.writeNumberValue("averagePacketLossRate", mediaStream.averagePacketLossRate);
    writer.writeNumberValue("averageRatioOfConcealedSamples", mediaStream.averageRatioOfConcealedSamples);
    writer.writeNumberValue("averageReceivedFrameRate", mediaStream.averageReceivedFrameRate);
    writer.writeDurationValue("averageRoundTripTime", mediaStream.averageRoundTripTime);
    writer.writeNumberValue("averageVideoFrameLossPercentage", mediaStream.averageVideoFrameLossPercentage);
    writer.writeNumberValue("averageVideoFrameRate", mediaStream.averageVideoFrameRate);
    writer.writeNumberValue("averageVideoPacketLossRate", mediaStream.averageVideoPacketLossRate);
    writer.writeDateValue("endDateTime", mediaStream.endDateTime);
    writer.writeBooleanValue("isAudioForwardErrorCorrectionUsed", mediaStream.isAudioForwardErrorCorrectionUsed);
    writer.writeNumberValue("lowFrameRateRatio", mediaStream.lowFrameRateRatio);
    writer.writeNumberValue("lowVideoProcessingCapabilityRatio", mediaStream.lowVideoProcessingCapabilityRatio);
    writer.writeDurationValue("maxAudioNetworkJitter", mediaStream.maxAudioNetworkJitter);
    writer.writeDurationValue("maxJitter", mediaStream.maxJitter);
    writer.writeNumberValue("maxPacketLossRate", mediaStream.maxPacketLossRate);
    writer.writeNumberValue("maxRatioOfConcealedSamples", mediaStream.maxRatioOfConcealedSamples);
    writer.writeDurationValue("maxRoundTripTime", mediaStream.maxRoundTripTime);
    writer.writeStringValue("@odata.type", mediaStream.odataType);
    writer.writeNumberValue("packetUtilization", mediaStream.packetUtilization);
    writer.writeNumberValue("postForwardErrorCorrectionPacketLossRate", mediaStream.postForwardErrorCorrectionPacketLossRate);
    writer.writeDurationValue("rmsFreezeDuration", mediaStream.rmsFreezeDuration);
    writer.writeDateValue("startDateTime", mediaStream.startDateTime);
    writer.writeEnumValue("streamDirection", mediaStream.streamDirection);
    writer.writeStringValue("streamId", mediaStream.streamId);
    writer.writeEnumValue("videoCodec", mediaStream.videoCodec);
    writer.writeBooleanValue("wasMediaBypassed", mediaStream.wasMediaBypassed);
    writer.writeAdditionalData(mediaStream.additionalData);
}
exports.serializeMediaStream = serializeMediaStream;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeNetworkInfo(writer, networkInfo = {}) {
    writer.writeNumberValue("bandwidthLowEventRatio", networkInfo.bandwidthLowEventRatio);
    writer.writeStringValue("basicServiceSetIdentifier", networkInfo.basicServiceSetIdentifier);
    writer.writeEnumValue("connectionType", networkInfo.connectionType);
    writer.writeNumberValue("delayEventRatio", networkInfo.delayEventRatio);
    writer.writeStringValue("dnsSuffix", networkInfo.dnsSuffix);
    writer.writeStringValue("ipAddress", networkInfo.ipAddress);
    writer.writeNumberValue("linkSpeed", networkInfo.linkSpeed);
    writer.writeStringValue("macAddress", networkInfo.macAddress);
    writer.writeEnumValue("networkTransportProtocol", networkInfo.networkTransportProtocol);
    writer.writeStringValue("@odata.type", networkInfo.odataType);
    writer.writeNumberValue("port", networkInfo.port);
    writer.writeNumberValue("receivedQualityEventRatio", networkInfo.receivedQualityEventRatio);
    writer.writeStringValue("reflexiveIPAddress", networkInfo.reflexiveIPAddress);
    writer.writeStringValue("relayIPAddress", networkInfo.relayIPAddress);
    writer.writeNumberValue("relayPort", networkInfo.relayPort);
    writer.writeNumberValue("sentQualityEventRatio", networkInfo.sentQualityEventRatio);
    writer.writeStringValue("subnet", networkInfo.subnet);
    writer.writeCollectionOfObjectValues("traceRouteHops", networkInfo.traceRouteHops, serializeTraceRouteHop);
    writer.writeEnumValue("wifiBand", networkInfo.wifiBand);
    writer.writeNumberValue("wifiBatteryCharge", networkInfo.wifiBatteryCharge);
    writer.writeNumberValue("wifiChannel", networkInfo.wifiChannel);
    writer.writeStringValue("wifiMicrosoftDriver", networkInfo.wifiMicrosoftDriver);
    writer.writeStringValue("wifiMicrosoftDriverVersion", networkInfo.wifiMicrosoftDriverVersion);
    writer.writeEnumValue("wifiRadioType", networkInfo.wifiRadioType);
    writer.writeNumberValue("wifiSignalStrength", networkInfo.wifiSignalStrength);
    writer.writeStringValue("wifiVendorDriver", networkInfo.wifiVendorDriver);
    writer.writeStringValue("wifiVendorDriverVersion", networkInfo.wifiVendorDriverVersion);
    writer.writeAdditionalData(networkInfo.additionalData);
}
exports.serializeNetworkInfo = serializeNetworkInfo;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeOrganizer(writer, organizer = {}) {
    serializeParticipantBase(writer, organizer);
}
exports.serializeOrganizer = serializeOrganizer;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeParticipant(writer, participant = {}) {
    serializeParticipantBase(writer, participant);
}
exports.serializeParticipant = serializeParticipant;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeParticipantBase(writer, participantBase = {}) {
    (0, __1.serializeEntity)(writer, participantBase);
    writer.writeCollectionOfObjectValues("administrativeUnitInfos", participantBase.administrativeUnitInfos, serializeAdministrativeUnitInfo);
    writer.writeObjectValue("identity", participantBase.identity, __1.serializeCommunicationsIdentitySet);
}
exports.serializeParticipantBase = serializeParticipantBase;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeParticipantCollectionResponse(writer, participantCollectionResponse = {}) {
    (0, __1.serializeBaseCollectionPaginationCountResponse)(writer, participantCollectionResponse);
    writer.writeCollectionOfObjectValues("value", participantCollectionResponse.value, serializeParticipant);
}
exports.serializeParticipantCollectionResponse = serializeParticipantCollectionResponse;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeParticipantEndpoint(writer, participantEndpoint = {}) {
    serializeEndpoint(writer, participantEndpoint);
    writer.writeObjectValue("associatedIdentity", participantEndpoint.associatedIdentity, __1.serializeIdentity);
    writer.writeNumberValue("cpuCoresCount", participantEndpoint.cpuCoresCount);
    writer.writeStringValue("cpuName", participantEndpoint.cpuName);
    writer.writeNumberValue("cpuProcessorSpeedInMhz", participantEndpoint.cpuProcessorSpeedInMhz);
    writer.writeObjectValue("feedback", participantEndpoint.feedback, serializeUserFeedback);
    writer.writeObjectValue("identity", participantEndpoint.identity, __1.serializeIdentitySet);
    writer.writeStringValue("name", participantEndpoint.name);
}
exports.serializeParticipantEndpoint = serializeParticipantEndpoint;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializePstnBlockedUsersLogRow(writer, pstnBlockedUsersLogRow = {}) {
    writer.writeDateValue("blockDateTime", pstnBlockedUsersLogRow.blockDateTime);
    writer.writeStringValue("blockReason", pstnBlockedUsersLogRow.blockReason);
    writer.writeStringValue("@odata.type", pstnBlockedUsersLogRow.odataType);
    writer.writeStringValue("remediationId", pstnBlockedUsersLogRow.remediationId);
    writer.writeEnumValue("userBlockMode", pstnBlockedUsersLogRow.userBlockMode);
    writer.writeStringValue("userDisplayName", pstnBlockedUsersLogRow.userDisplayName);
    writer.writeStringValue("userId", pstnBlockedUsersLogRow.userId);
    writer.writeStringValue("userPrincipalName", pstnBlockedUsersLogRow.userPrincipalName);
    writer.writeStringValue("userTelephoneNumber", pstnBlockedUsersLogRow.userTelephoneNumber);
    writer.writeAdditionalData(pstnBlockedUsersLogRow.additionalData);
}
exports.serializePstnBlockedUsersLogRow = serializePstnBlockedUsersLogRow;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializePstnCallLogRow(writer, pstnCallLogRow = {}) {
    serializeCallLogRow(writer, pstnCallLogRow);
    writer.writeEnumValue("callDurationSource", pstnCallLogRow.callDurationSource);
    writer.writeStringValue("calleeNumber", pstnCallLogRow.calleeNumber);
    writer.writeStringValue("callerNumber", pstnCallLogRow.callerNumber);
    writer.writeStringValue("callId", pstnCallLogRow.callId);
    writer.writeStringValue("callType", pstnCallLogRow.callType);
    writer.writeNumberValue("charge", pstnCallLogRow.charge);
    writer.writeStringValue("clientLocalIpV4Address", pstnCallLogRow.clientLocalIpV4Address);
    writer.writeStringValue("clientLocalIpV6Address", pstnCallLogRow.clientLocalIpV6Address);
    writer.writeStringValue("clientPublicIpV4Address", pstnCallLogRow.clientPublicIpV4Address);
    writer.writeStringValue("clientPublicIpV6Address", pstnCallLogRow.clientPublicIpV6Address);
    writer.writeStringValue("conferenceId", pstnCallLogRow.conferenceId);
    writer.writeNumberValue("connectionCharge", pstnCallLogRow.connectionCharge);
    writer.writeStringValue("currency", pstnCallLogRow.currency);
    writer.writeStringValue("destinationContext", pstnCallLogRow.destinationContext);
    writer.writeStringValue("destinationName", pstnCallLogRow.destinationName);
    writer.writeNumberValue("duration", pstnCallLogRow.duration);
    writer.writeDateValue("endDateTime", pstnCallLogRow.endDateTime);
    writer.writeStringValue("inventoryType", pstnCallLogRow.inventoryType);
    writer.writeStringValue("licenseCapability", pstnCallLogRow.licenseCapability);
    writer.writeStringValue("operator", pstnCallLogRow.operator);
    writer.writeDateValue("startDateTime", pstnCallLogRow.startDateTime);
    writer.writeStringValue("tenantCountryCode", pstnCallLogRow.tenantCountryCode);
    writer.writeStringValue("usageCountryCode", pstnCallLogRow.usageCountryCode);
}
exports.serializePstnCallLogRow = serializePstnCallLogRow;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializePstnOnlineMeetingDialoutReport(writer, pstnOnlineMeetingDialoutReport = {}) {
    writer.writeStringValue("currency", pstnOnlineMeetingDialoutReport.currency);
    writer.writeStringValue("destinationContext", pstnOnlineMeetingDialoutReport.destinationContext);
    writer.writeStringValue("@odata.type", pstnOnlineMeetingDialoutReport.odataType);
    writer.writeNumberValue("totalCallCharge", pstnOnlineMeetingDialoutReport.totalCallCharge);
    writer.writeNumberValue("totalCalls", pstnOnlineMeetingDialoutReport.totalCalls);
    writer.writeNumberValue("totalCallSeconds", pstnOnlineMeetingDialoutReport.totalCallSeconds);
    writer.writeStringValue("usageLocation", pstnOnlineMeetingDialoutReport.usageLocation);
    writer.writeStringValue("userDisplayName", pstnOnlineMeetingDialoutReport.userDisplayName);
    writer.writeStringValue("userId", pstnOnlineMeetingDialoutReport.userId);
    writer.writeStringValue("userPrincipalName", pstnOnlineMeetingDialoutReport.userPrincipalName);
    writer.writeAdditionalData(pstnOnlineMeetingDialoutReport.additionalData);
}
exports.serializePstnOnlineMeetingDialoutReport = serializePstnOnlineMeetingDialoutReport;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeSegment(writer, segment = {}) {
    (0, __1.serializeEntity)(writer, segment);
    writer.writeObjectValue("callee", segment.callee, serializeEndpoint);
    writer.writeObjectValue("caller", segment.caller, serializeEndpoint);
    writer.writeDateValue("endDateTime", segment.endDateTime);
    writer.writeObjectValue("failureInfo", segment.failureInfo, serializeFailureInfo);
    writer.writeCollectionOfObjectValues("media", segment.media, serializeMedia);
    writer.writeDateValue("startDateTime", segment.startDateTime);
}
exports.serializeSegment = serializeSegment;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeSegmentCollectionResponse(writer, segmentCollectionResponse = {}) {
    (0, __1.serializeBaseCollectionPaginationCountResponse)(writer, segmentCollectionResponse);
    writer.writeCollectionOfObjectValues("value", segmentCollectionResponse.value, serializeSegment);
}
exports.serializeSegmentCollectionResponse = serializeSegmentCollectionResponse;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeServiceEndpoint(writer, serviceEndpoint = {}) {
    serializeEndpoint(writer, serviceEndpoint);
}
exports.serializeServiceEndpoint = serializeServiceEndpoint;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeServiceUserAgent(writer, serviceUserAgent = {}) {
    serializeUserAgent(writer, serviceUserAgent);
    writer.writeEnumValue("role", serviceUserAgent.role);
}
exports.serializeServiceUserAgent = serializeServiceUserAgent;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeSession(writer, session = {}) {
    (0, __1.serializeEntity)(writer, session);
    writer.writeObjectValue("callee", session.callee, serializeEndpoint);
    writer.writeObjectValue("caller", session.caller, serializeEndpoint);
    writer.writeDateValue("endDateTime", session.endDateTime);
    writer.writeObjectValue("failureInfo", session.failureInfo, serializeFailureInfo);
    writer.writeBooleanValue("isTest", session.isTest);
    if (session.modalities)
        writer.writeEnumValue("modalities", ...session.modalities);
    writer.writeCollectionOfObjectValues("segments", session.segments, serializeSegment);
    writer.writeDateValue("startDateTime", session.startDateTime);
}
exports.serializeSession = serializeSession;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeSessionCollectionResponse(writer, sessionCollectionResponse = {}) {
    (0, __1.serializeBaseCollectionPaginationCountResponse)(writer, sessionCollectionResponse);
    writer.writeCollectionOfObjectValues("value", sessionCollectionResponse.value, serializeSession);
}
exports.serializeSessionCollectionResponse = serializeSessionCollectionResponse;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeSmsLogRow(writer, smsLogRow = {}) {
    serializeCallLogRow(writer, smsLogRow);
    writer.writeNumberValue("callCharge", smsLogRow.callCharge);
    writer.writeStringValue("currency", smsLogRow.currency);
    writer.writeStringValue("destinationContext", smsLogRow.destinationContext);
    writer.writeStringValue("destinationName", smsLogRow.destinationName);
    writer.writeStringValue("destinationNumber", smsLogRow.destinationNumber);
    writer.writeStringValue("licenseCapability", smsLogRow.licenseCapability);
    writer.writeDateValue("sentDateTime", smsLogRow.sentDateTime);
    writer.writeStringValue("smsId", smsLogRow.smsId);
    writer.writeStringValue("smsType", smsLogRow.smsType);
    writer.writeNumberValue("smsUnits", smsLogRow.smsUnits);
    writer.writeStringValue("sourceNumber", smsLogRow.sourceNumber);
    writer.writeStringValue("tenantCountryCode", smsLogRow.tenantCountryCode);
    writer.writeStringValue("userCountryCode", smsLogRow.userCountryCode);
}
exports.serializeSmsLogRow = serializeSmsLogRow;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeTraceRouteHop(writer, traceRouteHop = {}) {
    writer.writeNumberValue("hopCount", traceRouteHop.hopCount);
    writer.writeStringValue("ipAddress", traceRouteHop.ipAddress);
    writer.writeStringValue("@odata.type", traceRouteHop.odataType);
    writer.writeDurationValue("roundTripTime", traceRouteHop.roundTripTime);
    writer.writeAdditionalData(traceRouteHop.additionalData);
}
exports.serializeTraceRouteHop = serializeTraceRouteHop;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeUserAgent(writer, userAgent = {}) {
    writer.writeStringValue("applicationVersion", userAgent.applicationVersion);
    writer.writeStringValue("headerValue", userAgent.headerValue);
    writer.writeStringValue("@odata.type", userAgent.odataType);
    writer.writeAdditionalData(userAgent.additionalData);
}
exports.serializeUserAgent = serializeUserAgent;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeUserFeedback(writer, userFeedback = {}) {
    writer.writeStringValue("@odata.type", userFeedback.odataType);
    writer.writeEnumValue("rating", userFeedback.rating);
    writer.writeStringValue("text", userFeedback.text);
    writer.writeObjectValue("tokens", userFeedback.tokens, serializeFeedbackTokenSet);
    writer.writeAdditionalData(userFeedback.additionalData);
}
exports.serializeUserFeedback = serializeUserFeedback;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
function serializeUserIdentity(writer, userIdentity = {}) {
    (0, __1.serializeIdentity)(writer, userIdentity);
    writer.writeStringValue("userPrincipalName", userIdentity.userPrincipalName);
}
exports.serializeUserIdentity = serializeUserIdentity;
exports.AudioCodecObject = {
    Unknown: "unknown",
    Invalid: "invalid",
    Cn: "cn",
    Pcma: "pcma",
    Pcmu: "pcmu",
    AmrWide: "amrWide",
    G722: "g722",
    G7221: "g7221",
    G7221c: "g7221c",
    G729: "g729",
    MultiChannelAudio: "multiChannelAudio",
    Muchv2: "muchv2",
    Opus: "opus",
    Satin: "satin",
    SatinFullband: "satinFullband",
    RtAudio8: "rtAudio8",
    RtAudio16: "rtAudio16",
    Silk: "silk",
    SilkNarrow: "silkNarrow",
    SilkWide: "silkWide",
    Siren: "siren",
    XmsRta: "xmsRta",
    UnknownFutureValue: "unknownFutureValue",
};
exports.CallTypeObject = {
    Unknown: "unknown",
    GroupCall: "groupCall",
    PeerToPeer: "peerToPeer",
    UnknownFutureValue: "unknownFutureValue",
};
exports.ClientPlatformObject = {
    Unknown: "unknown",
    Windows: "windows",
    MacOS: "macOS",
    IOS: "iOS",
    Android: "android",
    Web: "web",
    IpPhone: "ipPhone",
    RoomSystem: "roomSystem",
    SurfaceHub: "surfaceHub",
    HoloLens: "holoLens",
    UnknownFutureValue: "unknownFutureValue",
};
exports.FailureStageObject = {
    Unknown: "unknown",
    CallSetup: "callSetup",
    Midcall: "midcall",
    UnknownFutureValue: "unknownFutureValue",
};
exports.MediaStreamDirectionObject = {
    CallerToCallee: "callerToCallee",
    CalleeToCaller: "calleeToCaller",
};
exports.ModalityObject = {
    Audio: "audio",
    Video: "video",
    VideoBasedScreenSharing: "videoBasedScreenSharing",
    Data: "data",
    ScreenSharing: "screenSharing",
    UnknownFutureValue: "unknownFutureValue",
};
exports.NetworkConnectionTypeObject = {
    Unknown: "unknown",
    Wired: "wired",
    Wifi: "wifi",
    Mobile: "mobile",
    Tunnel: "tunnel",
    UnknownFutureValue: "unknownFutureValue",
};
exports.NetworkTransportProtocolObject = {
    Unknown: "unknown",
    Udp: "udp",
    Tcp: "tcp",
    UnknownFutureValue: "unknownFutureValue",
};
exports.ProductFamilyObject = {
    Unknown: "unknown",
    Teams: "teams",
    SkypeForBusiness: "skypeForBusiness",
    Lync: "lync",
    UnknownFutureValue: "unknownFutureValue",
    AzureCommunicationServices: "azureCommunicationServices",
};
exports.PstnCallDurationSourceObject = {
    Microsoft: "microsoft",
    Operator: "operator",
};
exports.PstnUserBlockModeObject = {
    Blocked: "blocked",
    Unblocked: "unblocked",
    UnknownFutureValue: "unknownFutureValue",
};
exports.ServiceRoleObject = {
    Unknown: "unknown",
    CustomBot: "customBot",
    SkypeForBusinessMicrosoftTeamsGateway: "skypeForBusinessMicrosoftTeamsGateway",
    SkypeForBusinessAudioVideoMcu: "skypeForBusinessAudioVideoMcu",
    SkypeForBusinessApplicationSharingMcu: "skypeForBusinessApplicationSharingMcu",
    SkypeForBusinessCallQueues: "skypeForBusinessCallQueues",
    SkypeForBusinessAutoAttendant: "skypeForBusinessAutoAttendant",
    MediationServer: "mediationServer",
    MediationServerCloudConnectorEdition: "mediationServerCloudConnectorEdition",
    ExchangeUnifiedMessagingService: "exchangeUnifiedMessagingService",
    MediaController: "mediaController",
    ConferencingAnnouncementService: "conferencingAnnouncementService",
    ConferencingAttendant: "conferencingAttendant",
    AudioTeleconferencerController: "audioTeleconferencerController",
    SkypeForBusinessUnifiedCommunicationApplicationPlatform: "skypeForBusinessUnifiedCommunicationApplicationPlatform",
    ResponseGroupServiceAnnouncementService: "responseGroupServiceAnnouncementService",
    Gateway: "gateway",
    SkypeTranslator: "skypeTranslator",
    SkypeForBusinessAttendant: "skypeForBusinessAttendant",
    ResponseGroupService: "responseGroupService",
    Voicemail: "voicemail",
    UnknownFutureValue: "unknownFutureValue",
};
exports.UserFeedbackRatingObject = {
    NotRated: "notRated",
    Bad: "bad",
    Poor: "poor",
    Fair: "fair",
    Good: "good",
    Excellent: "excellent",
    UnknownFutureValue: "unknownFutureValue",
};
exports.VideoCodecObject = {
    Unknown: "unknown",
    Invalid: "invalid",
    Av1: "av1",
    H263: "h263",
    H264: "h264",
    H264s: "h264s",
    H264uc: "h264uc",
    H265: "h265",
    Rtvc1: "rtvc1",
    RtVideo: "rtVideo",
    Xrtvc1: "xrtvc1",
    UnknownFutureValue: "unknownFutureValue",
};
exports.WifiBandObject = {
    Unknown: "unknown",
    Frequency24GHz: "frequency24GHz",
    Frequency50GHz: "frequency50GHz",
    Frequency60GHz: "frequency60GHz",
    UnknownFutureValue: "unknownFutureValue",
};
exports.WifiRadioTypeObject = {
    Unknown: "unknown",
    Wifi80211a: "wifi80211a",
    Wifi80211b: "wifi80211b",
    Wifi80211g: "wifi80211g",
    Wifi80211n: "wifi80211n",
    Wifi80211ac: "wifi80211ac",
    Wifi80211ax: "wifi80211ax",
    UnknownFutureValue: "unknownFutureValue",
};
/* tslint:enable */
/* eslint-enable */
