<?php

declare(strict_types=1);

namespace Acms\Services\Markdown\Contracts;

/**
 * Markdown 文字列を HTML へ変換するコンバーターの契約。
 *
 * 'markdown' サービスの実体はこの契約を実装する。丸ごと差し替える拡張は
 * Container::override('markdown', ...) で本契約の実装クラスを差し替え、
 * 前後処理だけ差し込みたい拡張は Container::extend('markdown', ...) で
 * 本契約を実装したデコレーターを積み重ねる
 * （docs/steering/20260830-service-override-mechanism/design.md）。
 */
interface Converter
{
    /**
     * @param string $markdown
     * @return string 変換後の HTML
     */
    public function convert(string $markdown): string;
}
