<?php

namespace Ecomnova;

use Facebook\WebDriver\Remote\RemoteWebElement;

interface ProductPageInterface
{
    /**
     * Selects a size option by label
     * @param string $label
     * @return RemoteWebElement
     */
    public function selectSizeOptionByLabel(string $label);

    /**
     * Selects a gift option by label
     * @param string $label
     * @return RemoteWebElement
     */
    public function selectGiftOptionByLabel(string $label);

    /**
     * Select a gift card by label
     * @param string $name
     * @return RemoteWebElement
     */
    public function selectGiftCardByLabel(string $label);

    /**
     * Enters the recipient name
     * @param string $name
     * @return RemoteWebElement
     */
    public function enterRecipientName(string $name);

    /**
     * Gets the total bottom price
     * @return string
     */
    public function getTotalPrice();

    /**
     * Enters the personal message
     * @param string $message
     * @return RemoteWebElement
     */
    public function enterPersonalMessage(string $message);

    /**
     * Enters the recipient address
     * @param string $postcode
     * @param int $addressLineNumber
     * @return array
     */
    public function selectRecipientAddress(string $postcode, $addressLineNumber = 1);

    /**
     * Enter the recipient address manually
     * @param string $url
     */
    public function enterRecipientAddress(AddressFields $addressFields);
    public function getAddressFields();
    public function selectDeliveryDate(int $dateString = 0);
    public function selectPrivilegeOption();

    public function selectDeliveryMethodByName($method = null);
    public function unselectPrivilegeOption();
    public function selectOccasionOptionByName(string $occasion);
    public function selectSpecialInstructionByName(string $instruction);

    public function addToCart(string $label);
    public function getBasePrice();
}