# Source: types/store.js

    /* * *  *  * *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
    /* Copyright (c) 2018 Mobify Research & Development Inc. All rights reserved. */
    /* * *  *  * *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */

    import PropTypes from 'prop-types'
    import {Image} from './image'
    import {PhoneNumber} from './phone-number'
    import {Email} from './email'
    import {PostalCode} from './postal-code'

    /**
     * @memberOf module:types
     * @typedef {Object} Store
     * @property {String} addressLine1 The store address.
     * @property {String} addressLine2 A secondary store address.
     * @property {String} city The city where the store is located.
     * @property {String} country The country where the store is located.
     * @property {String} description The store description.
     * @property {String} features The various features of a store.
     * @property {String} email The store email.
     * @property {String} id The store unique identifier.
     * @property {String} name The store name.
     * @property {String} phone The store phone number.
     * @property {String} postalCode The store postal code.
     * @property {String} hours The store hours.
     * @property {String} images The store logo.
     */
    export const Store = {
        addressLine1: PropTypes.string.isRequired,
        addressLine2: PropTypes.string,
        city: PropTypes.string.isRequired,
        country: PropTypes.string.isRequired,
        description: PropTypes.string,
        features: PropTypes.array,
        email: Email,
        id: PropTypes.string.isRequired,
        name: PropTypes.string.isRequired,
        phone: PhoneNumber,
        postalCode: PostalCode,
        hours: PropTypes.oneOfType([
            PropTypes.string,
            PropTypes.objectOf(
                PropTypes.shape({
                    openingTime: PropTypes.string,
                    closingTime: PropTypes.string
                })
            )
        ]),
        images: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape(Image)), PropTypes.shape(Image)])
    }