From f202bc369305cf91d24694ae6a5374879caf5a4e Mon Sep 17 00:00:00 2001 From: Zac Demi Date: Thu, 9 Oct 2025 09:18:59 -0400 Subject: [PATCH 1/2] feat: Add ReaderStatus Info and paymentAttemptID - updated all enums to use string values for consistency to match strings coming from native side. --- ios/Mappers.swift | 73 ++++++- ios/MobilePaymentsSdkReactNative.swift | 2 +- src/models/enums.ts | 266 +++++++++++++------------ src/models/objects.ts | 17 +- 4 files changed, 213 insertions(+), 145 deletions(-) diff --git a/ios/Mappers.swift b/ios/Mappers.swift index 0be38eb..34d7e8e 100644 --- a/ios/Mappers.swift +++ b/ios/Mappers.swift @@ -37,11 +37,11 @@ class Mappers { return .failure(.missingProcessingMode) } - guard let idempotencyKey = paymentParameters["idempotencyKey"] as? String else { - return .failure(.missingIdempotencyKey) + guard let paymentAttemptId = paymentParameters["paymentAttemptId"] as? String else { + return .failure(.missingPaymentAttemptId) } - let paymentParams = PaymentParameters(idempotencyKey: idempotencyKey, amountMoney: amountMoney, processingMode: processingMode) + let paymentParams = PaymentParameters(paymentAttemptID: paymentAttemptId, amountMoney: amountMoney, processingMode: processingMode) // Optional parameters if let partialAuth = paymentParameters["acceptPartialAuthorization"] as? Bool { @@ -106,6 +106,14 @@ class Mappers { "currencyCode": money.currency.currencyCode ] } + + class func mapToDictionary(readerStatusInfo: ReaderStatusInfo) -> NSDictionary { + return [ + "reason": readerStatusInfo.reason.mapToString(), + "status": readerStatusInfo.status.mapToString(), + "title": readerStatusInfo.title, + ] + } class func mapToDictionary(payment: Payment) -> NSDictionary { return [ @@ -127,7 +135,6 @@ class Mappers { return [ "batteryStatus" : reader.batteryStatus?.toMap() ?? NSNull(), "cardInsertionStatus": reader.cardInsertionStatus.toName(), - "connectionInfo": reader.connectionInfo.toMap(), "firmwareInfo" : reader.firmwareInfo?.toMap() ?? NSNull(), "id": String(reader.id), "isBlinkable" : reader.isBlinkable, @@ -136,7 +143,7 @@ class Mappers { "model": reader.model.toName(), "name" : reader.name, "serialNumber" : reader.serialNumber ?? NSNull(), - "state" : reader.state.toName(), + "statusInfo": Mappers.mapToDictionary(readerStatusInfo: reader.statusInfo), "supportedCardEntryMethods" : reader.supportedInputMethods.toList() ] } @@ -180,9 +187,63 @@ extension SquareMobilePaymentsSDK.SourceType { } } +extension SquareMobilePaymentsSDK.ReaderStatus { + func mapToString() -> String { + switch self { + case .ready: + return "READY" + case .connectingToDevice: + return "CONNECTING_TO_DEVICE" + case .connectingToSquare: + return "CONNECTING_TO_SQUARE" + case .faulty: + return "FAULTY" + case .readerUnavailable: + return "READER_UNAVAILABLE" + @unknown default: + return "UNKNOWN" + } + } +} + +extension SquareMobilePaymentsSDK.ReaderUnavailableReason { + func mapToString() -> String { + switch self { + case .blockingFirmwareUpdate: + return "BLOCKING_FIRMWARE_UPDATE" + case .bluetoothDisabled: + return "BLUETOOTH_DISABLED" + case .bluetoothFailure: + return "BLUETOOTH_FAILURE" + case .internalError: + return "INTERNAL_ERROR" + case .maxReadersConnected: + return "MAX_READERS_CONNECTED" + case .none: + return "NONE" + case .notConnectedToInternet: + return "NOT_CONNECTED_TO_INTERNET" + case .readerTimeout: + return "READER_TIMEOUT" + case .revokedByDevice: + return "REVOKED_BY_DEVICE" + case .secureConnectionNetworkFailure: + return "SECURE_CONNECTION_NETWORK_FAILURE" + case .secureConnectionToSquareFailure: + return "SECURE_CONNECTION_TO_SQUARE_FAILURE" + case .tapToPayError: + return "TAP_TO_PAY_ERROR" + case .tapToPayIsNotLinked: + return "TAP_TO_PAY_IS_NOT_LINKED" + @unknown default: + return "UNKNOWN" + } + } +} + enum PaymentParametersError: Error { case missingAmount - case missingIdempotencyKey + case missingPaymentAttemptId case missingProcessingMode } diff --git a/ios/MobilePaymentsSdkReactNative.swift b/ios/MobilePaymentsSdkReactNative.swift index f3d0e39..3374fac 100644 --- a/ios/MobilePaymentsSdkReactNative.swift +++ b/ios/MobilePaymentsSdkReactNative.swift @@ -512,7 +512,7 @@ class MobilePaymentsReaderObserver: ReaderObserver { let body = [ "change": change.toName(), "reader": readerMap, - "readerState" : readerMap["state"], + "readerStatus" : readerMap["statusInfo"], "readerSerialNumber" : readerMap["serialNumber"] ?? NSNull() ] emitter.sendEvent(withName: "ReaderChanged", body: body) diff --git a/src/models/enums.ts b/src/models/enums.ts index 54d493a..a1b01c5 100644 --- a/src/models/enums.ts +++ b/src/models/enums.ts @@ -1,7 +1,7 @@ export enum AccountType { - SAVINGS, - CHECKING, - CREDIT, + SAVINGS = 'SAVINGS', + CHECKING = 'CHECKING', + CREDIT = 'CREDIT', } export enum AdditionalPaymentMethodType { @@ -12,50 +12,50 @@ export enum AdditionalPaymentMethodType { export enum AuthorizationState { AUTHORIZED = 'AUTHORIZED', AUTHORIZING = 'AUTHORIZING', - NOT_AUTHORIZED = 'NOT_AUTHORIZING', + NOT_AUTHORIZED = 'NOT_AUTHORIZED', } export enum CardBrand { - ALIPAY, - AMERICAN_EXPRESS, - CASH_APP, - CHINA_UNION_PAY, - DISCOVER, - DISCOVER_DINERS, - EBT, - EFTPOS, - FELICA, - ID, - INTERAC, - JCB, - MASTERCARD, - OTHER_BRAND, - SQUARE_CAPITAL_CARD, - SQUARE_GIFT_CARD, - SUICA, - UNKNOWN, - VISA, + ALIPAY = 'ALIPAY', + AMERICAN_EXPRESS = 'AMERICAN_EXPRESS', + CASH_APP = 'CASH_APP', + CHINA_UNION_PAY = 'CHINA_UNION_PAY', + DISCOVER = 'DISCOVER', + DISCOVER_DINERS = 'DISCOVER_DINERS', + EBT = 'EBT', + EFTPOS = 'EFTPOS', + FELICA = 'FELICA', + ID = 'ID', + INTERAC = 'INTERAC', + JCB = 'JCB', + MASTERCARD = 'MASTERCARD', + OTHER_BRAND = 'OTHER_BRAND', + SQUARE_CAPITAL_CARD = 'SQUARE_CAPITAL_CARD', + SQUARE_GIFT_CARD = 'SQUARE_GIFT_CARD', + SUICA = 'SUICA', + UNKNOWN = 'UNKNOWN', + VISA = 'VISA', } export enum CardCoBrand { - AFTERPAY, - CLEARPAY, - NONE, - UNKNOWN, + AFTERPAY = 'AFTERPAY', + CLEARPAY = 'CLEARPAY', + NONE = 'NONE', + UNKNOWN = 'UNKNOWN', } export enum CardPaymentStatus { - AUTHORIZED, - CAPTURED, - VOIDED, - FAILED, - UNKNOWN, + AUTHORIZED = 'AUTHORIZED', + CAPTURED = 'CAPTURED', + VOIDED = 'VOIDED', + FAILED = 'FAILED', + UNKNOWN = 'UNKNOWN', } export enum CardInsertionStatus { - INSERTED, - NOT_INSERTED, - UNKNOWN, + INSERTED = 'INSERTED', + NOT_INSERTED = 'NOT_INSERTED', + UNKNOWN = 'UNKNOWN', } export enum CurrencyCode { @@ -73,12 +73,12 @@ export enum DelayAction { } export enum EntryMethod { - KEYED, - SWIPED, - EMV, - CONTACTLESS, - ON_FILE, - UNKNOWN, + KEYED = 'KEYED', + SWIPED = 'SWIPED', + EMV = 'EMV', + CONTACTLESS = 'CONTACTLESS', + ON_FILE = 'ON_FILE', + UNKNOWN = 'UNKNOWN', } export enum Environment { @@ -87,11 +87,11 @@ export enum Environment { } export enum PaymentStatus { - APPROVED, - COMPLETE, - CANCELED, - FAILED, - UNKNOWN, + APPROVED = 'APPROVED', + COMPLETE = 'COMPLETE', + CANCELED = 'CANCELED', + FAILED = 'FAILED', + UNKNOWN = 'UNKNOWN', } export enum PromptMode { @@ -99,97 +99,88 @@ export enum PromptMode { } export enum SourceType { - BANK_ACCOUNT, - CARD, - CASH, - EXTERNAL, - SQUARE_ACCOUNT, - UNKNOWN, - WALLET, + BANK_ACCOUNT = 'BANK_ACCOUNT', + CARD = 'CARD', + CASH = 'CASH', + EXTERNAL = 'EXTERNAL', + SQUARE_ACCOUNT = 'SQUARE_ACCOUNT', + UNKNOWN = 'UNKNOWN', + WALLET = 'WALLET', } // Reader Enums export enum ReaderBatteryLevel { - CRITICALLY_LOW, - FULL, - HIGH, - LOW, - MID, + CRITICALLY_LOW = 'CRITICALLY_LOW', + FULL = 'FULL', + HIGH = 'HIGH', + LOW = 'LOW', + MID = 'MID', } export enum ReaderChange { - BATTERY_DID_BEGIN_CHARGING, - BATTERY_DID_END_CHARGING, - BATTERY_LEVEL_DID_CHANGE, - CARD_INSERTED, - CARD_REMOVED, - CONNECTION_DID_FAIL, - CONNECTION_STATE_DID_CHANGE, - FIRMWARE_UPDATE_DID_FAIL, - FIRMWARE_UPDATE_PERCENT_DID_CHANGE, - STATE_DID_CHANGE, + BATTERY_DID_BEGIN_CHARGING = 'BATTERY_DID_BEGIN_CHARGING', + BATTERY_DID_END_CHARGING = 'BATTERY_DID_END_CHARGING', + BATTERY_LEVEL_DID_CHANGE = 'BATTERY_LEVEL_DID_CHANGE', + CARD_INSERTED = 'CARD_INSERTED', + CARD_REMOVED = 'CARD_REMOVED', + CONNECTION_DID_FAIL = 'CONNECTION_DID_FAIL', + CONNECTION_STATE_DID_CHANGE = 'CONNECTION_STATE_DID_CHANGE', + FIRMWARE_UPDATE_DID_FAIL = 'FIRMWARE_UPDATE_DID_FAIL', + FIRMWARE_UPDATE_PERCENT_DID_CHANGE = 'FIRMWARE_UPDATE_PERCENT_DID_CHANGE', + STATE_DID_CHANGE = 'STATE_DID_CHANGE', //--android - ADDED, - CHANGED_STATE, - BATTERY_THRESHOLD, - BATTERY_CHARGING, - FIRMWARE_PROGRESS, - REMOVED, + ADDED = 'ADDED', + CHANGED_STATE = 'CHANGED_STATE', + BATTERY_THRESHOLD = 'BATTERY_THRESHOLD', + BATTERY_CHARGING = 'BATTERY_CHARGING', + FIRMWARE_PROGRESS = 'FIRMWARE_PROGRESS', + REMOVED = 'REMOVED', } export enum ReaderConnectionFailureRecoverySuggestion { - ACTIVATE_ACCOUNT, - CONTACT_SUPPORT, - NO_SUGGESTION, - RETRY, - REVIEW_TAP_TO_PAY_GUIDELINES, - ENABLE_PASSCODE_TO_USE_TAP_TO_PAY, + ACTIVATE_ACCOUNT = 'ACTIVATE_ACCOUNT', + CONTACT_SUPPORT = 'CONTACT_SUPPORT', + NO_SUGGESTION = 'NO_SUGGESTION', + RETRY = 'RETRY', + REVIEW_TAP_TO_PAY_GUIDELINES = 'REVIEW_TAP_TO_PAY_GUIDELINES', + ENABLE_PASSCODE_TO_USE_TAP_TO_PAY = 'ENABLE_PASSCODE_TO_USE_TAP_TO_PAY', } export enum ReaderConnectionState { - CONNECTED, - CONNECTING, - FAILED_TO_CONNECT, - NOT_CONNECTED, + CONNECTED = 'CONNECTED', + CONNECTING = 'CONNECTING', + FAILED_TO_CONNECT = 'FAILED_TO_CONNECT', + NOT_CONNECTED = 'NOT_CONNECTED', } export enum ReaderFirmwareUpdateError { - CONNECTION_TIMEOUT, - FIRMWARE_FAILURE, - SERVER_CALL_FAILURE, - UNKNOWN_ERROR, + CONNECTION_TIMEOUT = 'CONNECTION_TIMEOUT', + FIRMWARE_FAILURE = 'FIRMWARE_FAILURE', + SERVER_CALL_FAILURE = 'SERVER_CALL_FAILURE', + UNKNOWN_ERROR = 'UNKNOWN_ERROR', } export enum ReaderModel { - CONTACTLESS_AND_CHIP, - EMBEDDED, - MAGSTRIPE, - STAND, - TAP_TO_PAY, - UNKNOWN, + CONTACTLESS_AND_CHIP = 'CONTACTLESS_AND_CHIP', + EMBEDDED = 'EMBEDDED', + MAGSTRIPE = 'MAGSTRIPE', + STAND = 'STAND', + TAP_TO_PAY = 'TAP_TO_PAY', + UNKNOWN = 'UNKNOWN', } export enum ReaderConnectionFailureReason { - DENIED_BY_SERVER, - GENERIC_ERROR, - MAX_READERS_CONNECTED, - NETWORK_TIMEOUT, - NETWORK_TRANSPORT_ERROR, - NOT_CONNECTED_TO_INTERNET, - READER_TIMEOUT, - REVOKED_BY_DEVICE, - SERVER_ERROR, - TAP_TO_PAY_ERROR, - UNKNOWN, -} - -export enum ReaderState { - CONNECTING, - DISABLED, - DISCONNECTED, - FAILED_TO_CONNECT, - READY, - UPDATING_FIRMWARE, + DENIED_BY_SERVER = 'DENIED_BY_SERVER', + GENERIC_ERROR = 'GENERIC_ERROR', + MAX_READERS_CONNECTED = 'MAX_READERS_CONNECTED', + NETWORK_TIMEOUT = 'NETWORK_TIMEOUT', + NETWORK_TRANSPORT_ERROR = 'NETWORK_TRANSPORT_ERROR', + NOT_CONNECTED_TO_INTERNET = 'NOT_CONNECTED_TO_INTERNET', + READER_TIMEOUT = 'READER_TIMEOUT', + REVOKED_BY_DEVICE = 'REVOKED_BY_DEVICE', + SERVER_ERROR = 'SERVER_ERROR', + TAP_TO_PAY_ERROR = 'TAP_TO_PAY_ERROR', + UNKNOWN = 'UNKNOWN', } export enum ReaderInternalStatus { @@ -200,12 +191,29 @@ export enum ReaderInternalStatus { READY = 'READY', } +export enum ReaderStatus { + READY = 'READY', + CONNECTING_TO_DEVICE = 'CONNECTING_TO_DEVICE', + CONNECTING_TO_SQUARE = 'CONNECTING_TO_SQUARE', + FAULTY = 'FAULTY', + READER_UNAVAILABLE = 'READER_UNAVAILABLE', +} + export enum ReaderUnavailableReason { - INTERNAL_ERROR = 'INTERNAL_ERROR', + BLOCKING_FIRMWARE_UPDATE = 'BLOCKING_FIRMWARE_UPDATE', BLUETOOTH_DISABLED = 'BLUETOOTH_DISABLED', BLUETOOTH_FAILURE = 'BLUETOOTH_FAILURE', - SECURE_CONNECTION_TO_SQUARE_FAILURE = 'SECURE_CONNECTION_TO_SQUARE_FAILURE', + INTERNAL_ERROR = 'INTERNAL_ERROR', + MAX_READERS_CONNECTED = 'MAX_READERS_CONNECTED', + NONE = 'NONE', + NOT_CONNECTED_TO_INTERNET = 'NOT_CONNECTED_TO_INTERNET', + READER_TIMEOUT = 'READER_TIMEOUT', + REVOKED_BY_DEVICE = 'REVOKED_BY_DEVICE', SECURE_CONNECTION_NETWORK_FAILURE = 'SECURE_CONNECTION_NETWORK_FAILURE', + SECURE_CONNECTION_TO_SQUARE_FAILURE = 'SECURE_CONNECTION_TO_SQUARE_FAILURE', + TAP_TO_PAY_ERROR = 'TAP_TO_PAY_ERROR', + TAP_TO_PAY_IS_NOT_LINKED = 'TAP_TO_PAY_IS_NOT_LINKED', + // Android-specific reasons OFFLINE_SESSION_EXPIRED = 'OFFLINE_SESSION_EXPIRED', READER_UNAVAILABLE_OFFLINE = 'READER_UNAVAILABLE_OFFLINE', OFFLINE_MODE_DISABLED = 'OFFLINE_MODE_DISABLED', @@ -223,26 +231,26 @@ export enum ReaderUnavailableReason { } export enum CardEntryMethod { - CHIP, - EMV, - CONTACTLESS, - SWIPED, + CHIP = 'CHIP', + EMV = 'EMV', + CONTACTLESS = 'CONTACTLESS', + SWIPED = 'SWIPED', } // Offline Mode Enums export enum OfflinePaymentQueueError { - NOT_AUTHORIZED, - UNEXPECTED, - UNSUPPORTED_SANDBOX_ENVIRONMENT, + NOT_AUTHORIZED = 'NOT_AUTHORIZED', + UNEXPECTED = 'UNEXPECTED', + UNSUPPORTED_SANDBOX_ENVIRONMENT = 'UNSUPPORTED_SANDBOX_ENVIRONMENT', } export enum OfflinePaymentStatus { - QUEUED, - UPLOADED, - FAILED_TO_UPLOAD, - FAILED_TO_PROCESS, - PROCESSED, - UNKNOWN, + QUEUED = 'QUEUED', + UPLOADED = 'UPLOADED', + FAILED_TO_UPLOAD = 'FAILED_TO_UPLOAD', + FAILED_TO_PROCESS = 'FAILED_TO_PROCESS', + PROCESSED = 'PROCESSED', + UNKNOWN = 'UNKNOWN', } export enum ProcessingMode { diff --git a/src/models/objects.ts b/src/models/objects.ts index 0aaa51c..67727c7 100644 --- a/src/models/objects.ts +++ b/src/models/objects.ts @@ -16,9 +16,8 @@ import type { ReaderConnectionFailureReason, ReaderConnectionFailureRecoverySuggestion, ReaderConnectionState, - ReaderInternalStatus, ReaderModel, - ReaderState, + ReaderStatus, ReaderUnavailableReason, SourceType, } from './enums'; @@ -91,7 +90,6 @@ export type PaymentParameters = { teamMemberId?: String; tipMoney?: Money; totalMoney?: Money; - idempotencyKey?: String; paymentAttemptId?: String; }; @@ -170,16 +168,17 @@ export type ReaderFirmwareInfo = { version: String; }; -export type ReaderStatus = { - status: ReaderInternalStatus; - readerUnavailableReason?: ReaderUnavailableReason; +export type ReaderStatusInfo = { + status: ReaderStatus; + reason: ReaderUnavailableReason; + title: string; }; export type ReaderInfo = { id: String; model: ReaderModel; - state: ReaderState; - status: ReaderStatus; + status?: String; //Android-specific direct status + statusInfo?: ReaderStatusInfo; //iOS-specific status info serialNumber?: String; name: String; batteryStatus?: ReaderBatteryStatus; @@ -198,6 +197,6 @@ export type ReaderInfo = { export type ReaderChangedEvent = { change: ReaderChange; reader: ReaderInfo; - readerState: ReaderState; + readerStatusInfo: ReaderStatusInfo; readerSerialNumber?: String; }; From 6cc0c87b121cafd55253ff533d459756ab52172e Mon Sep 17 00:00:00 2001 From: Zac Demi Date: Tue, 30 Sep 2025 12:02:20 -0400 Subject: [PATCH 2/2] refactor: Use Primitive Types All types now use the proper TypeScript primitive types (string, boolean, number) instead of the capitalized JavaScript constructor types (String, Boolean, Number). This follows TypeScript best practices and will provide better type checking and IDE support. --- src/models/objects.ts | 124 +++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/src/models/objects.ts b/src/models/objects.ts index 67727c7..01e227d 100644 --- a/src/models/objects.ts +++ b/src/models/objects.ts @@ -23,14 +23,14 @@ import type { } from './enums'; export type Location = { - id: String; - currencyCode: String; - name: String; - mcc: String; + id: string; + currencyCode: string; + name: string; + mcc: string; }; export type Money = { - amount?: Number; + amount?: number; currencyCode: CurrencyCode; }; @@ -39,12 +39,12 @@ export type OnlinePayment = { appFeeMoney: Money; cardDetails: CardPaymentDetails; createdAt: Date; - customerId: String; - id: String; - locationId: String; - note: String; - orderId: String; - referenceId: String; + customerId: string; + id: string; + locationId: string; + note: string; + orderId: string; + referenceId: string; status: PaymentStatus; tipMoney: Money; totalMoney: Money; @@ -56,11 +56,11 @@ export type OffLinePayment = { appFeeMoney: Money; cardDetails: OfflineCardPaymentDetails; createdAt: Date; - id: String; - localId: String; - locationId: String; - orderId: String; - referenceId: String; + id: string; + localId: string; + locationId: string; + orderId: string; + referenceId: string; status: OfflinePaymentStatus; sourceType: SourceType; tipMoney: Money; @@ -72,57 +72,57 @@ export type OffLinePayment = { export type PaymentParameters = { // Required amountMoney: Money; - processingMode: Number; + processingMode: number; // Optional. For defaults, check: // Android: https://square.github.io/mobile-payments-sdk-android/-mobile%20-payments%20-s-d-k%20-android%20-technical%20-reference/com.squareup.sdk.mobilepayments.payment/-payment-parameters/index.html // iOS: https://square.github.io/mobile-payments-sdk-ios/docs/documentation/mobilepaymentssdkapi/paymentparameters/ - acceptPartialAuthorization?: Boolean; + acceptPartialAuthorization?: boolean; appFeeMoney?: Money; - autocomplete?: Boolean; - customerId?: String; + autocomplete?: boolean; + customerId?: string; delayAction?: DelayAction; - delayDuration?: Number; - locationId?: String; - note?: String; - orderId?: String; - referenceId?: String; - statementDescriptionIdentifer?: String; - teamMemberId?: String; + delayDuration?: number; + locationId?: string; + note?: string; + orderId?: string; + referenceId?: string; + statementDescriptionIdentifer?: string; + teamMemberId?: string; tipMoney?: Money; totalMoney?: Money; - paymentAttemptId?: String; + paymentAttemptId?: string; }; export type Card = { brand: CardBrand; - cardholderName: String; + cardholderName: string; coBrand: CardCoBrand; - expirationMonth?: Number; - expirationYear?: Number; - id: String; - lastFourDigits: String; + expirationMonth?: number; + expirationYear?: number; + id: string; + lastFourDigits: string; }; export type CardPaymentDetails = { - applicationIdentifier: String; - applicationName: String; - authorizationCode: String; + applicationIdentifier: string; + applicationName: string; + authorizationCode: string; card: Card; entryMethod: EntryMethod; status: CardPaymentStatus; }; export type OfflineCardPaymentDetails = { - applicationIdentifier: String; - applicationName: String; + applicationIdentifier: string; + applicationName: string; card: Card; entryMethod: EntryMethod; }; export type CardInputMethods = { - chip: Boolean; - contactless: Boolean; - swipe: Boolean; + chip: boolean; + contactless: boolean; + swipe: boolean; }; export type PromptParameters = { @@ -134,10 +134,10 @@ export type Payment = { amountMoney: Money; appFeeMoney: Money; createdAt: Date; - id: String; - locationId: String; - orderId: String; - referenceId: String; + id: string; + locationId: string; + orderId: string; + referenceId: string; sourceType: SourceType; tipMoney: Money; totalMoney: Money; @@ -145,15 +145,15 @@ export type Payment = { }; export type ReaderBatteryStatus = { - isCharging: Boolean; + isCharging: boolean; level?: ReaderBatteryLevel; - percent: Number; + percent: number; }; export type ReaderConnectionFailureInfo = { failureReason: ReaderConnectionFailureReason; - localizedDescription: String; - localizedTitle: String; + localizedDescription: string; + localizedTitle: string; recoverySuggestion: ReaderConnectionFailureRecoverySuggestion; }; @@ -163,9 +163,9 @@ export type ReaderConnectionInfo = { }; export type ReaderFirmwareInfo = { - failureReason?: String; - updatePercentage: Number; - version: String; + failureReason?: string; + updatePercentage: number; + version: string; }; export type ReaderStatusInfo = { @@ -175,28 +175,28 @@ export type ReaderStatusInfo = { }; export type ReaderInfo = { - id: String; + id: string; model: ReaderModel; - status?: String; //Android-specific direct status + status?: string; //Android-specific direct status statusInfo?: ReaderStatusInfo; //iOS-specific status info - serialNumber?: String; - name: String; + serialNumber?: string; + name: string; batteryStatus?: ReaderBatteryStatus; - firmwareVersion?: String; - firmwarePercent?: Number; + firmwareVersion?: string; + firmwarePercent?: number; supportedCardEntryMethods: CardEntryMethod[]; - isForgettable: Boolean; - isBlinkable: Boolean; + isForgettable: boolean; + isBlinkable: boolean; cardInsertionStatus?: CardInsertionStatus; connectionInfo?: ReaderConnectionInfo; firmwareInfo?: ReaderFirmwareInfo; - isConnectionRetryable?: Boolean; + isConnectionRetryable?: boolean; }; export type ReaderChangedEvent = { change: ReaderChange; reader: ReaderInfo; readerStatusInfo: ReaderStatusInfo; - readerSerialNumber?: String; + readerSerialNumber?: string; };