import type { MenuRepository } from '@/domain/menu/repository'; import type { CartRepository } from '@/domain/cart/repository'; import type { WishlistRepository } from '@/domain/wishlist/repository'; import type { LanguageRepository } from '@/domain/language/repository'; import type { MessagingGateway } from '@/application/messaging/ports'; import { StaticMenuRepository } from '@/infrastructure/menu/static-menu-repository'; import { LocalStorageCartRepository } from '@/infrastructure/persistence/local-storage-cart-repository'; import { LocalStorageWishlistRepository } from '@/infrastructure/persistence/local-storage-wishlist-repository'; import { LocalStorageLanguageRepository } from '@/infrastructure/persistence/local-storage-language-repository'; import { BrowserWhatsAppGateway } from '@/infrastructure/messaging/browser-whatsapp-gateway'; /** * Composition root — wires domain ports to infrastructure adapters. * Presentation layer imports from here instead of concrete implementations. */ class AppContainer { readonly menuRepository: MenuRepository = new StaticMenuRepository(); readonly cartRepository: CartRepository = new LocalStorageCartRepository(); readonly wishlistRepository: WishlistRepository = new LocalStorageWishlistRepository(); readonly languageRepository: LanguageRepository = new LocalStorageLanguageRepository(); readonly messagingGateway: MessagingGateway = new BrowserWhatsAppGateway(); } export const container = new AppContainer();