. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Contracts; use Closure; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\Tree; /** * Make a GedcomRecord object. */ interface GedcomRecordFactoryInterface { /** * Create a GedcomRecord object. * * @param string $xref * @param Tree $tree * @param string|null $gedcom * * @return GedcomRecord|null */ public function make(string $xref, Tree $tree, string $gedcom = null): ?GedcomRecord; /** * Create a GedcomRecord object from raw GEDCOM data. * * @param string $xref * @param string $gedcom an empty string for new/pending records * @param string|null $pending null for a record with no pending edits, * empty string for records with pending deletions * @param Tree $tree * * @return GedcomRecord */ public function new(string $xref, string $gedcom, ?string $pending, Tree $tree): GedcomRecord; /** * Create a GedcomRecord object from a row in the database. * * @param Tree $tree * * @return Closure(object):GedcomRecord */ public function mapper(Tree $tree): Closure; }