<?php

namespace App\Browser\Jobs\InstagramRepost;

use DateTimeImmutable;

/**
 * Interface for Instagram video handling.
 * Holds the data of a video from Instagram.
 */
interface IInstagramVideo
{
    /**
     * Get the URL of the video.
     *
     * @return string The URL of the video.
     */
    public function getUrl(): string;

    /**
     * Get the title of the video.
     *
     * @return string The title of the video.
     */
    public function getTitle(): string;

    /**
     * Get the caption of the video.
     *
     * @return string The caption of the video.
     */
    public function getDescription(): string;

    /**
     * Get the date when the video was posted.
     *
     * @return ?DateTimeImmutable The date of the post.
     */
    public function getPostDate(): ?DateTimeImmutable;

    /**
     * Get the filename of the video.
     *
     * @return string The filename of the video.
     */
    public function getFilename(): string;

    /**
     * Set the filename of the video.
     *
     * @param string $filename The filename to set.
     */
    public function setFilename(string $filename): void;
}
