# Source: types/order-address.js

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

    import PropTypes from 'prop-types'
    import {PhoneNumber} from './phone-number'
    import {PostalCode} from './postal-code'
    import {CountryCode} from './country-code'

    /**
     * @memberOf module:types
     * @typedef {Object} OrderAddress
     * @property {String} id The id of the order address.
     * @property {String} titleCode The title code of the customer. (For example, 'Mr.' or 'Mrs.'.)
     * @property {String} firstName The customer's first name.
     * @property {String} lastName The customer's last name.
     * @property {module:types.PhoneNumber} phone The customer's phone number.
     * @property {String} addressLine1 The customer's street name, street number, and suite/unit.
     * @property {String} addressLine2 Any additional addressing information. (For example, a company name, or "Attn:".)
     * @property {module:types.CountryCode} countryCode The country code.
     * @property {String} stateCode The state code.
     * @property {String} city The city name.
     * @property {module:types.PostalCode} postalCode The postal code.
     */
    export const OrderAddress = {
        id: PropTypes.string,
        titleCode: PropTypes.string,
        firstName: PropTypes.string.isRequired,
        lastName: PropTypes.string.isRequired,
        phone: PhoneNumber,
        addressLine1: PropTypes.string.isRequired,
        addressLine2: PropTypes.string,
        countryCode: CountryCode.isRequired,
        stateCode: PropTypes.string.isRequired,
        city: PropTypes.string.isRequired,
        postalCode: PostalCode.isRequired
    }