<?php
/**
 * @author  Magediary
 * @package Magediary_ProductQuestion
 */

namespace Magediary\ProductQuestion\Api\Data;

use Magento\Framework\Api\ExtensibleDataInterface;

interface AnswerInterface extends ExtensibleDataInterface
{
    public const ANSWER_ID = 'answer_id';
    public const QUESTION_ID = 'question_id';
    public const PRODUCT_ID = 'product_id';
    public const CUSTOMER_ID = 'customer_id';
    public const TYPE = 'type';
    public const NICKNAME = 'nickname';
    public const EMAIL = 'email';
    public const STATUS = 'status';
    public const DETAIL = 'detail';
    public const IS_CERTIFIED = 'is_certified';
    public const IS_ANONYMOUS = 'is_anonymous';
    public const LIKES = 'likes';
    public const DISLIKES = 'dislikes';
    public const ABUSES = 'abuses';
    public const CREATED_AT = 'created_at';
    public const UPDATED_AT = 'updated_at';

    /**
     * Get answer_id
     *
     * @return int|null
     */
    public function getAnswerId();

    /**
     * Set answer_id
     *
     * @param int $answerId
     * @return AnswerInterface
     */
    public function setAnswerId($answerId);

    /**
     * Get answer id
     *
     * @return int|null
     */
    public function getId();

    /**
     * Get question_id
     *
     * @return string|null
     */
    public function getQuestionId();

    /**
     * Set question_id
     *
     * @param int $questionId
     * @return AnswerInterface
     */
    public function setQuestionId($questionId);

    /**
     * Get product_id
     *
     * @return int|null
     */
    public function getProductId();

    /**
     * Set product_id
     *
     * @param int $productId
     * @return AnswerInterface
     */
    public function setProductId($productId);

    /**
     * Get customer_id
     *
     * @return int|null
     */
    public function getCustomerId();

    /**
     * Set customer_id
     *
     * @param int $customerId
     * @return AnswerInterface
     */
    public function setCustomerId($customerId);

    /**
     * Get type
     *
     * @return int|null
     */
    public function getType();

    /**
     * Set type
     *
     * @param int $type
     * @return AnswerInterface
     */
    public function setType($type);

    /**
     * Get nickname
     *
     * @return string|null
     */
    public function getNickname();

    /**
     * Set nickname
     *
     * @param string $nickname
     * @return AnswerInterface
     */
    public function setNickname($nickname);

    /**
     * Get email
     *
     * @return string|null
     */
    public function getEmail();

    /**
     * Set email
     *
     * @param string $email
     * @return AnswerInterface
     */
    public function setEmail($email);

    /**
     * Get status
     *
     * @return int|null
     */
    public function getStatus();

    /**
     * Set status
     *
     * @param int $status
     * @return AnswerInterface
     */
    public function setStatus($status);

    /**
     * Get is_certified
     *
     * @return int|null
     */
    public function getIsCertified();

    /**
     * Set is_certified
     *
     * @param int $isCertified
     * @return AnswerInterface
     */
    public function setIsCertified($isCertified);

    /**
     * Get is_anonymous
     *
     * @return int|null
     */
    public function getIsAnonymous();

    /**
     * Set is_anonymous
     *
     * @param int $isAnonymous
     * @return AnswerInterface
     */
    public function setIsAnonymous($isAnonymous);

    /**
     * Get likes
     *
     * @return int|null
     */
    public function getLikes();

    /**
     * Set likes
     *
     * @param int $likes
     * @return AnswerInterface
     */
    public function setLikes($likes);

    /**
     * Get dislikes
     *
     * @return int|null
     */
    public function getDislikes();

    /**
     * Set dislikes
     *
     * @param int $dislikes
     * @return AnswerInterface
     */
    public function setDislikes($dislikes);

    /**
     * Get abuses
     *
     * @return int|null
     */
    public function getAbuses();

    /**
     * Set abuses
     *
     * @param int $abuses
     * @return AnswerInterface
     */
    public function setAbuses($abuses);

    /**
     * Get detail
     *
     * @return string|null
     */
    public function getDetail();

    /**
     * Set detail
     *
     * @param string $detail
     * @return AnswerInterface
     */
    public function setDetail($detail);

    /**
     * Get created_at
     *
     * @return string
     */
    public function getCreatedAt();

    /**
     * Set created_at
     *
     * @param string $createdAt
     * @return AnswerInterface
     */
    public function setCreatedAt($createdAt);

    /**
     * Get updated_at
     *
     * @return string
     */
    public function getUpdatedAt();

    /**
     * Set updated_at
     *
     * @param string $updatedAt
     * @return AnswerInterface
     */
    public function setUpdatedAt($updatedAt);

    /**
     * Retrieve existing extension attributes object or create a new one.
     *
     * @return \Magediary\ProductQuestion\Api\Data\AnswerExtensionInterface|null
     */
    public function getExtensionAttributes();

    /**
     * Set an extension attributes object.
     *
     * @param \Magediary\ProductQuestion\Api\Data\AnswerExtensionInterface $extensionAttributes
     * @return $this
     */
    public function setExtensionAttributes(
        \Magediary\ProductQuestion\Api\Data\AnswerExtensionInterface $extensionAttributes
    );
}
