// Copyright © 2022 Olo Inc. All rights reserved.
// This software is made available under the Olo Pay SDK License (See LICENSE.md file)
//
//  DataKeys.swift
//  Plugin
//
//  Created by Justin Anderson on 7/26/22.
//

import Foundation

public class DataKeys {
    // SDK Initialization Keys
    public static let ProductionEnvironmentKey = "productionEnvironment"
    public static let DigitalWalletConfig = "digitalWalletConfig"
    public static let IsInitializedKey = "isInitialized"
    public static let HybridSdkVersionKey = "version"
    public static let HybridBuildTypeKey = "buildType"
    public static let HybridBuildTypePublicValue = "Public"
    public static let HybridBuildTypeInternalValue = "Internal"
    
    
    // Digital Wallet Payment Method Request Keys
    public static let ApplePayConfigParameterKey = "applePayConfig"
    public static let ApplePayAmountKey = "amount"
    public static let ApplePayCountryCodeKey = "countryCode"
    public static let ApplePayCurrencyCodeKey = "currencyCode"
    public static let ApplePayMerchantIdParameterKey = "merchantId"
    public static let ApplePayCompanyLabelParameterKey = "companyLabel"
    public static let DigitalWalletConfigParameterKey = "digitalWalletConfig"
    public static let DigitalWalletFullBillingAddressRequiredParameterKey = "fullBillingAddressRequired"
    public static let DigitalWalletPhoneNumberRequiredParameterKey = "phoneNumberRequired"
    public static let DigitalWalletFullNameRequiredParameterKey = "fullNameRequired"
    public static let DigitalWalletFullPhoneticNameRequiredParameterKey = "fullPhoneticNameRequired"
    public static let DigitalWalletEmailRequiredParameterKey = "emailRequired"
    public static let InitializeApplePayKey = "initializeApplePay"
    
    // Payment Method Keys
    public static let PaymentMethodKey = "paymentMethod"
    public static let IDKey = "id"
    public static let Last4Key = "last4"
    public static let CardTypeKey = "cardType"
    public static let ExpirationMonthKey = "expMonth"
    public static let ExpirationYearKey = "expYear"
    public static let PostalCodeKey = "postalCode"
    public static let CountryCodeKey = "countryCode"
    public static let EmailKey = "email"
    public static let DigitalWalletCardDescriptionKey = "digitalWalletCardDescription"
    public static let BillingAddressKey = "billingAddress"
    public static let FullNameKey = "fullName"
    public static let FullPhoneticNameKey = "fullPhoneticName"
    public static let PhoneNumberKey = "phoneNumber"
    public static let IsDigitalWalletKey = "isDigitalWallet"
    
    // Address Keys
    public static let Address1Key = "address1"
    public static let Address2Key = "address2"
    public static let Address3Key = "address3"
    public static let LocalityKey = "locality"
    public static let AdministrativeAreaKey = "administrativeArea"
    public static let SortingCodeKey = "sortingCode"
    
    // Payment Method Error Keys
    public static let ErrorMessageKey = "errorMessage"
    public static let ErrorCodeKey = "errorCode"
    
    // Events
    public static let DigitalWalletReadyEvent = "digitalWalletReadyEvent"
    public static let DigitalWalletIsReadyKey = "isReady"
    
    // Line Items Keys
    public static let LineItemsKey = "lineItems"
    public static let ValidateLineItemsKey = "validateLineItems"
    public static let LineItemLabelKey = "label"
    public static let LineItemAmountKey = "amount"
    public static let LineItemTypeKey = "type"
    public static let LineItemStatusKey = "status"
    public static let LineItemFinalStatusKey = "Final"
    public static let LineItemPendingStatusKey = "Pending"

    //Line Item Type Keys
    public static let LineItemTypeKeys = ["Tax", "Subtotal", "LineItem"]
}
