<?php

declare(strict_types=1);

namespace CpCreation\VitiCore\SocialPublishing;

interface SocialPublishingHub
{
    public function isAvailable(): bool;

    public function startConnection(string $provider, string $returnUrl): string;

    /** @return list<Channel> */
    public function channels(): array;

    /** @return list<Publication> */
    public function publications(): array;

    public function publish(PublicationRequest $request): Publication;

    public function disconnect(string $channelId): void;

    public function cancel(string $publicationId): Publication;
}
