<?php

namespace App\Services\Cpanel;

/**
 * cPanel/WHM işlemleri soyutlaması.
 *
 * Sürücüler: WhmApiGateway (gerçek sunucu) | LogGateway (local geliştirme).
 * Tüm metodlar başarısızlıkta CpanelException fırlatır.
 */
interface CpanelGateway
{
    /** Domaini uygulamanın vhost'una alias (parked domain) olarak ekler. */
    public function parkDomain(string $domain): void;

    /** Alias domaini kaldırır. */
    public function unparkDomain(string $domain): void;

    /** Hesap için AutoSSL taramasını tetikler. */
    public function triggerAutoSsl(): void;

    /** Domainin SSL sertifikası kurulu mu? */
    public function hasSslCertificate(string $domain): bool;

    /** E-posta kutusu oluşturur (quota MB cinsinden, 0 = sınırsız). */
    public function createMailbox(string $localPart, string $domain, string $password, int $quotaMb = 1024): void;

    /** E-posta kutusunu siler. */
    public function deleteMailbox(string $localPart, string $domain): void;

    /** E-posta kutusu parolasını değiştirir. */
    public function changeMailboxPassword(string $localPart, string $domain, string $password): void;

    /** Domaindeki kutuları listeler. @return array<int, array{email: string, disk_used?: ?string, disk_limit?: ?string}> */
    public function listMailboxes(string $domain): array;
}
