import Foundation struct SavedCard: Decodable, Identifiable, Hashable { let id: String let nickname: String? let holderName: String let last4: String let brand: String? let expiryMonth: String let expiryYear: String let isDefault: Bool var displayLabel: String { if let nickname, nickname.isEmpty == false { return nickname } let brandLabel = (brand ?? "Cartão").capitalized return "\(brandLabel) •••• \(last4)" } var expiryLabel: String { "\(expiryMonth)/\(expiryYear)" } } struct SaveCardCreditCardPayload: Encodable { let holderName: String let number: String let expiryMonth: String let expiryYear: String let ccv: String } struct SaveCardHolderInfoPayload: Encodable { let name: String let email: String let cpfCnpj: String let postalCode: String let addressNumber: String let phone: String } struct SaveCardPayload: Encodable { let creditCard: SaveCardCreditCardPayload let creditCardHolderInfo: SaveCardHolderInfoPayload let nickname: String? let isDefault: Bool } struct UpdateCardPayload: Encodable { let nickname: String? let isDefault: Bool? } struct SavedCardResult: Decodable { let id: String let holderName: String let last4: String let brand: String? let expiryMonth: String let expiryYear: String let isDefault: Bool } struct CreditCardOrderPayload: Encodable { let holderName: String let number: String let expiryMonth: String let expiryYear: String let ccv: String } struct ChangePaymentMethodPayload: Encodable { let paymentMethod: String let clientCpfCnpj: String? let creditCard: CreditCardOrderPayload? let creditCardHolderInfo: SaveCardHolderInfoPayload? let savedCardId: String? } struct ChangePaymentMethodResult: Decodable { let paymentMethod: String? let paymentLocation: String? let paymentId: String? let paymentPayload: CreateOrderPaymentPayload? let payment: CreateOrderPaymentInfo? }