. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Contracts; use Fisharebest\Webtrees\SurnameTradition\SurnameTraditionInterface; /** * Create a surname tradition. */ interface SurnameTraditionFactoryInterface { public const string PATERNAL = 'paternal'; public const string PATRILINEAL = 'patrilineal'; public const string MATRILINEAL = 'matrilineal'; public const string PORTUGUESE = 'portuguese'; public const string SPANISH = 'spanish'; public const string POLISH = 'polish'; public const string LITHUANIAN = 'lithuanian'; public const string ICELANDIC = 'icelandic'; public const string DEFAULT = ''; /** * A list of supported surname traditions and their names. * * @return array */ public function list(): array; /** * Create a named surname tradition. * * @param string $name * * @return SurnameTraditionInterface */ public function make(string $name): SurnameTraditionInterface; /** * @param string $name * @param SurnameTraditionInterface $surname_tradition * * @return void */ public function register(string $name, SurnameTraditionInterface $surname_tradition): void; }