<?php
/**
 * Mirasvit
 *
 * This source file is subject to the Mirasvit Software License, which is available at https://mirasvit.com/license/.
 * Do not edit or add to this file if you wish to upgrade the to newer versions in the future.
 * If you wish to customize this module for your needs.
 * Please refer to http://www.magentocommerce.com for more information.
 *
 * @category  Mirasvit
 * @package   mirasvit/module-cache-warmer
 * @version   1.11.13
 * @copyright Copyright (C) 2026 Mirasvit (https://mirasvit.com/)
 */


declare(strict_types=1);

namespace Mirasvit\CacheWarmer\Api\Data;

interface PageInterface
{
    const TABLE_NAME = 'mst_cache_warmer_page';

    const ID                = 'page_id';
    const URI               = 'uri';
    const URI_HASH          = 'uri_hash';
    const CACHE_ID          = 'cache_id';
    const PAGE_TYPE         = 'page_type';
    const PRODUCT_ID        = 'product_id';
    const CATEGORY_ID       = 'category_id';
    const CUSTOMER_GROUP_ID = 'customer_group_id';
    const STORE_ID          = 'store_id';
    const VARY_DATA         = 'vary_data';
    const VARY_DATA_HASH    = 'vary_data_hash';
    const USER_AGENT        = 'user_agent';
    const COOKIE            = 'cookie';
    const ATTEMPTS          = 'attempts';
    const POPULARITY        = 'popularity';
    const WARM_RULE_VERSION = 'warm_rule_version';
    const WARM_RULE_IDS     = 'warm_rule_ids';
    const HEADERS           = 'headers';
    const STATUS            = 'status';
    const CREATED_AT        = 'created_at';
    const UPDATED_AT        = 'updated_at';
    const CACHED_AT         = 'cached_at';
    const FLUSHED_AT        = 'flushed_at';
    const SOURCE_ID         = 'source_id';
    const MAIN_RULE_ID      = 'main_rule_id';


    const STATUS_CACHED      = 'cached';
    const STATUS_PENDING     = 'pending';
    const STATUS_UNCACHEABLE = 'uncacheable';

    /**
     * @return int
     */
    public function getId();

    public function getUri(): string;

    public function setUri(string $value): self;

    public function getUriHash(): ?string;

    public function setUriHash(string $value): self;

    public function getCacheId(): ?string;

    public function setCacheId(string $value): self;

    public function getPageType(): string;

    public function setPageType(string $value): self;

    public function getProductId(): ?int;

    public function setProductId(int $value): self;

    public function getCategoryId(): ?int;

    public function setCategoryId(int $value): self;

    public function getCustomerGroupId(): int;

    public function setCustomerGroupId(int $value): self;

    public function getStoreId(): int;

    public function setStoreId(int $value): self;

    public function getVaryData(): array;

    /**
     * @param string|array $value
     *
     * @return $this
     */
    public function setVaryData($value): self;

    public function getVaryString(): ?string;

    public function setVaryDataHash(string $value): self;

    public function getVaryDataHash(): string;

    public function setCookie(string $value): self;

    public function getCookie(): string;

    public function setUserAgent(string $value): self;

    public function getUserAgent(): string;

    public function getAttempts(): int;

    public function setAttempts(int $value): self;

    public function getPopularity(): int;

    public function setPopularity(int $value): self;

    public function getWarmRuleVersion(): ?string;

    public function setWarmRuleVersion(string $value): self;

    public function getWarmRuleIds(): array;

    public function setWarmRuleIds(array $value): self;

    public function getHeaders(): array;

    public function setHeaders(array $value): self;

    public function getStatus(): string;

    public function setStatus(string $value): self;

    public function getCreatedAt(): string;

    public function setCreatedAt(string $value): self;

    public function getUpdatedAt(): string;

    public function setUpdatedAt(string $value): self;

    public function getCachedAt(): ?string;

    public function setCachedAt(?string $value): self;

    public function getFlushedAt(): ?string;

    public function setFlushedAt(?string $value): self;

    public function getSourceId(): ?int;

    public function setSourceId(int $value): self;
}
