import Foundation enum GiftDirection: String, Decodable { case sent = "SENT" case received = "RECEIVED" } enum GiftStatus: String, Decodable, CaseIterable { case received = "RECEIVED" case trackingRegistered = "TRACKING_REGISTERED" case arrivedAtMailbox = "ARRIVED_AT_MAILBOX" case inspectionCompleted = "INSPECTION_COMPLETED" case delivered = "DELIVERED" case undeliverable = "UNDELIVERABLE" case canceled = "CANCELED" } enum GiftProgressStep: String, CaseIterable { case received = "RECEIVED" case trackingRegistered = "TRACKING_REGISTERED" case arrivedAtMailbox = "ARRIVED_AT_MAILBOX" case inspectionCompleted = "INSPECTION_COMPLETED" case delivered = "DELIVERED" var title: String { switch self { case .received: return "신청 접수" case .trackingRegistered: return "발송 확인" case .arrivedAtMailbox: return "사서함 도착" case .inspectionCompleted: return "검수 완료" case .delivered: return "전달 완료" } } } enum GiftSize: String, Decodable { case small = "SMALL" case medium = "MEDIUM" case large = "LARGE" } struct GiftListStatusDisplayModel { let title: String let subtitle: String? } struct GiftListCardDisplayModel { let applicationNo: String let direction: GiftDirection let status: GiftStatus let counterpartNickname: String let counterpartProfileImageUrl: String? let categoryName: String let sizeName: String let createdDateText: String? let statusDisplay: GiftListStatusDisplayModel } struct GiftProgressDisplayModel { let step: GiftProgressStep let occurredDateText: String? } struct GiftAddressDisplayModel { let name: String let phoneNumber: String let address: String } struct SentGiftDetailDisplayModel { let status: GiftStatus let statusName: String let undeliverableReason: String? let recipientCreatorNickname: String? let sizeName: String let categoryName: String let applicationNo: String let paidCan: Int? let tracking: String? let shippingRequestedDateText: String? let applicationDateText: String? let canceledDateText: String? let senderInfo: GiftAddressDisplayModel? let mailbox: GiftAddressDisplayModel? let trackingRequired: Bool let progress: [GiftProgressDisplayModel] } struct ReceivedGiftDetailDisplayModel { let status: GiftStatus let statusName: String let undeliverableReason: String? let senderNickname: String? let sizeName: String let categoryName: String let shippingRequestedDateText: String? let recipientAddressRequired: Bool let recipientAddress: GiftAddressDisplayModel? let progress: [GiftProgressDisplayModel] }