* * @since 0.1.0 */ public function find_by_cart_id( int $cart_id ): array; /** * Persist the entity. * * @param CartItem $item Entity. * * @since 0.1.0 */ public function save( CartItem $item ): void; /** * Replace every item in a cart with the given set (delete + insert). * * @param int $cart_id Cart id. * @param list $items New items (ids ignored / reassigned). * @return list Persisted items with ids. * * @since 0.1.0 */ public function replace_for_cart( int $cart_id, array $items ): array; /** * Delete all items for a cart. * * @param int $cart_id Cart id. * * @since 0.1.0 */ public function delete_for_cart( int $cart_id ): void; /** * Distinct hold booking ids linked from cart items. * * @param int $cart_id Cart id. * @return list * * @since 0.1.0 */ public function hold_ids_for_cart( int $cart_id ): array; /** * Soft-hold booking ids that no cart item references. * * @param list $candidate_hold_ids Candidate booking ids. * @return list * * @since 0.1.0 */ public function filter_unreferenced_hold_ids( array $candidate_hold_ids ): array; }