*/ public function recordClass(): string; /** * Get the Model class this mapper handles. * * @return class-string */ public function modelClass(): string; /** * Get the lexicon NSID this mapper handles. */ public function lexicon(): string; /** * Convert a Record DTO to an Eloquent Model. * * @param TRecord $record * @param array{uri?: string, cid?: string, did?: string, rkey?: string} $meta AT Protocol metadata * @return TModel */ public function toModel(Data $record, array $meta = []): Model; /** * Convert an Eloquent Model to a Record DTO. * * @param TModel $model * @return TRecord */ public function toRecord(Model $model): Data; /** * Update an existing model with data from a record. * * @param TModel $model * @param TRecord $record * @param array{uri?: string, cid?: string, did?: string, rkey?: string} $meta * @return TModel */ public function updateModel(Model $model, Data $record, array $meta = []): Model; /** * Find or create model from record. * * @param TRecord $record * @param array{uri?: string, cid?: string, did?: string, rkey?: string} $meta * @return TModel */ public function upsert(Data $record, array $meta = []): Model; /** * Find model by AT Protocol URI. * * @return TModel|null */ public function findByUri(string $uri): ?Model; /** * Delete model by AT Protocol URI. */ public function deleteByUri(string $uri): bool; }