import { TransactionType } from './types.d';

export class TransactionRequestEventDto {
  /**
   * @param accessToken JWT access_token granted to the user when they were authenticated to use the device
   * @param idToken JWT id_token for the user logged on the device - note that the id_token carries the customerUuid, hubspotId, merchantId (CAID)
   * @param userIdentityId Federated identity of the login end-user making the request.
   * @param transactionId Client generated uuid for referencing requested transaction.
   * @param stan STAN of the transaction.
   * @param catid <add description>
   * @param caid <add description>
   * @param mcc Merchant Category Code (aligned with Cucal/AS 2805 codes - for now)
   * @param iso8583 Base64 encoded of the DUKPT encrypted IS8583 financial message
   * @param iso8583Length Length of the unencrpyted ISO 8583 before possible padding for encryption
   * @param deviceUuid The UUID for the device
   * @param siteUuid siteUuid
   * @param entityUuid The UUID for the entity (Merchant)
   * @param timestamp Transaction date/time in device local time (UTC format - with time zone designator)
   * @param timestampEpoch Transaction date/time in device local time (Epoch seconds)
   * @param timestampUtc Transaction date/time in UTC time (UTC format - UTC/Zulu time)
   * @param ksn The KSN for the transaction
   * @param type  PUR, REF, ADJ, etc.
   * @param isoMessageType  MTI code - transaction type
   * @param isoProcessingCode
   * @param isoPosEntryMode
   * @param isoPosConditionCode
   * @param isoCardAcceptorNameLocation
   * @param amount  Total transaction amount
   * @param tipAmount
   * @param taxAmounts Array of tax amounts applied
   * @param cashAmount Cashout amount if Purchase and Cash
   * @param adjustAmount  Amount of adjustment for credit/debit adjustments
   * @param surchargeAmount Amount of surcharge added to base amount
   * @param lineItems Array or line item amounts
   * @param scheme String containing the scheme name (from RID or BIN)
   * @param bin Card BIN or IIN (6-8 digits)
   * @param panMasked Last 4 digits
   * @param panToken  Tokenised PAN value if card does not have a PAR value encoded
   * @param par PAR value is encoded on card
   * @param cardMedia MSR, ICC, PICC/NFC
   * @param cardFallback  ICC to MSR, PICC/NFC to ICC
   * @param cardholderName  Name of cardholder
   * @param emvTerminalType
   * @param emvTerminalCapabilities
   * @param emvAdditionalTerminalCapabilities
   * @param emvTvrRequest
   * @param emvTsrRequest
   * @param emvAid
   * @param emvCid
   * @param emvCvmResult
   * @param emvAuthResponseCode
   * @param emvTranCurrencyCode
   * @param emvTerminalCountryCode
   * @param emvAppCurrencyCode
   * @param emvIssuerCurrencyCode
   * @param commsFallback
   * @param offlineApproved
   * @param location
   * @param locationTimestamp
   * @param locationAccuracy
   * @param altitude
   * @param bearing
   * @param speed
   * @param speedAccuracy
   * @param temperatureDevice
   * @param temperatureAmbient
   * @param humidity
   * @param pressure
   * @param light
   */
  constructor(
    public readonly accessToken: string,
    public readonly idToken: string,
    public readonly userIdentityId: string,
    public readonly transactionId: string,
    public readonly stan: string,
    public readonly catid: string,
    public readonly caid: string,
    public readonly mcc: string,
    public readonly iso8583: string,
    public readonly iso8583Length: string,
    public readonly deviceUuid: string,
    public readonly siteUuid: string,
    public readonly entityUuid: string,
    public readonly timestamp: string,
    public readonly timestampEpoch: string,
    public readonly timestampUtc: string,
    public readonly ksn: string,
    public readonly type: TransactionType,
    public readonly isoMessageType: string,
    public readonly isoProcessingCode: string,
    public readonly isoPosEntryMode: string,
    public readonly isoPosConditionCode: string,
    public readonly isoCardAcceptorNameLocation: string,
    public readonly amount: string,
    public readonly tipAmount: string,
    public readonly taxAmounts: string,
    public readonly cashAmount: string,
    public readonly adjustAmount: string,
    public readonly surchargeAmount: string,
    public readonly lineItems: string,
    public readonly scheme: string,
    public readonly bin: string,
    public readonly panMasked: string,
    public readonly panToken: string,
    public readonly par: string,
    public readonly cardMedia: string,
    public readonly cardFallback: string,
    public readonly cardholderName: string,
    public readonly emvTerminalType: string,
    public readonly emvTerminalCapabilities: string,
    public readonly emvAdditionalTerminalCapabilities: string,
    public readonly emvTvrRequest: string,
    public readonly emvTsrRequest: string,
    public readonly emvAid: string,
    public readonly emvCid: string,
    public readonly emvCvmResult: string,
    public readonly emvAuthResponseCode: string,
    public readonly emvTranCurrencyCode: string,
    public readonly emvTerminalCountryCode: string,
    public readonly emvAppCurrencyCode: string,
    public readonly emvIssuerCurrencyCode: string,
    public readonly commsFallback: string,
    public readonly offlineApproved: string,
    public readonly location: string,
    public readonly locationTimestamp: string,
    public readonly locationAccuracy: string,
    public readonly altitude: string,
    public readonly bearing: string,
    public readonly speed: string,
    public readonly speedAccuracy: string,
    public readonly temperatureDevice: string,
    public readonly temperatureAmbient: string,
    public readonly humidity: string,
    public readonly pressure: string,
    public readonly light: string,
  ) {}
}
