                                ::available?
                                ::images]))
 (s/def ::variants (s/coll-of ::variant :kind vector? :distinct true :into []))
+(s/def ::product-condition #{:used :brand-new :almost-new})
+(s/def ::stock-location #{:brazil :china :usa :sweden :switzerland :local})
 
 (s/def ::product (s/keys :req-un [::id
                                   ::market-price

                                  ::images
                                  ::category
                                  ::stock-count
                                  ::available?]
                         :opt-un [::variants]))
(s/def ::products (s/and

                               ::city
                               ::street-address]))


(s/def ::shipping-tracking string?)

(s/def ::order (s/keys :req-un [::id
                                ::basket
                                ::customer
                                ::status
                                ::payment
                                ::shipping-tracking
                                ::address
                                ::creation-time]))
(s/def ::creadit-card (s/keys :req [::card-number
                                    ::holder
                                    ::expiration-date
                                    ::security-code
                                    ::brand
                                    ::save-card]))

(s/def ::payment-type #{:creadit-card :debit-card :boleto})
(s/def ::payment (s/keys :req-un [::payment-type
                                  ::amount
                                  ::installments
                                  ::soft-descriptor]))


(s/def ::name (s/keys :req [::first-name ::last-name]))
(s/def ::customer (s/keys :req [::id
                                ::name
                                ::email
                                ::address]
                          :opt [::phone
                                ::birthdate
                                ::cpf]))

(s/def ::db (s/keys :req-un [::products ::basket]))

