      1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:
                 20:  21:  22:  23:  24:  25:
                 26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:
                 46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:
                 66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:
                 86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173:

    <?php

    /*
     * This file is part of the affilinet Product Data PHP SDK.
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */

    namespace Affilinet\ProductData\Responses\ResponseElements;

    interface ProductInterface
    {
        /**
         * @return string
         */
        public function getArticleNumber();

        /**
         * @return \DateTime
         */
        public function getLastShopUpdate();

        /**
         * @return \DateTime
         */
        public function getLastProductChange();

        /**
         * @return float
         */
        public function getScore();

        /**
         * @return integer
         */
        public function getProductId();

        /**
         * @return integer
         */
        public function getShopId();

        /**
         * @return string
         */
        public function getShopTitle();

        /**
         * @return string
         */
        public function getProductName();

        /**
         * @return string
         */
        public function getDescription();

        /**
         * @return string
         */
        public function getDescriptionShort();

        /**
         * @return integer
         */
        public function getShopCategoryId();

        /**
         * @return integer
         */
        public function getAffilinetCategoryId();

        /**
         * @return string
         */
        public function getShopCategoryPath();

        /**
         * @return string
         */
        public function getAffilinetCategoryPath();

        /**
         * @return string
         */
        public function getShopCategoryIdPath();

        /**
         * @return string
         */
        public function getAffilinetCategoryIdPath();

        /**
         * @return string
         */
        public function getDeeplink();

        /**
         * @return boolean
         */
        public function hasAlternativeDeeplink();

        /**
         * @param $useDeeplinkAsFallback
         * @return mixed
         */
        public function getAlternativeDeeplink($useDeeplinkAsFallback = false);

        /**
         * @return string
         */
        public function getBrand();

        /**
         * @return string
         */
        public function getManufacturer();

        /**
         * @return string
         */
        public function getDistributor();

        /**
         * @return string
         */
        public function getEAN();

        /**
         * @return string
         */
        public function getKeywords();

        /**
         * @return Price
         */
        public function getPriceInformation();

        /**
         * @return Image[]
         */
        public function getImages();

        /**
         * @return Image[]
         */
        public function getLogos();

        /**
         * @return array
         */
        public function getProperties();

        /**
         * @param $propertyName string
         * @return bool
         */
        public function hasProperty($propertyName);

        /**
         * @param $propertyName string
         * @return string
         */
        public function getProperty($propertyName);

        /**
         * @return integer
         */
        public function getProgramId();

    }