export type Address = { readonly first_name: string readonly last_name: string readonly line1: string readonly line2?: string readonly zip: string readonly city: string readonly state: string readonly country_code: string } export type CreditCard = { readonly number: string readonly expiration_month: number readonly expiration_year: number readonly security_code: string readonly brand: CreditCardBrand readonly holder_name: string } export type Item = { readonly upc: string readonly quantity: number } export type Order = { readonly id: string readonly user: User readonly status: OrderStatus readonly items: readonly Item[] readonly billing_address: Address readonly shipping_address: Address readonly credit_card: CreditCard readonly summary: OrderSummary } export type OrderSummary = { readonly items_total: number readonly shipping_charge: number readonly taxes: number readonly total: number } export type User = { readonly id: string readonly email: string } export type CreditCardBrand = 'visa' | 'mastercard' | 'amex' export type OrderStatus = | 'open' | 'submitted' | 'processed' | 'shipped' | 'cancelled' | 'returned' export type JSONValue = | string | number | boolean | { readonly [x: string]: JSONValue } | readonly JSONValue[]