@startuml skinparam packageStyle rectangle package "furniture-dal" { class FurnitureAvailabilityLookupRequest class FurnitureAvailabilityRecord class CatalogProductLookupRequest class CatalogProductProjectionRecord interface IFurnitureDalGrpcContractAdapter interface ICatalogProjectionContractAdapter interface IFurnitureDataProvider interface ICatalogDataProvider interface IFurnitureRepository interface ICatalogRepository interface ICacheInvalidationPolicy IFurnitureDalGrpcContractAdapter --> FurnitureAvailabilityLookupRequest IFurnitureDalGrpcContractAdapter --> CatalogProductLookupRequest ICatalogProjectionContractAdapter --> CatalogProductLookupRequest ICatalogProjectionContractAdapter --> CatalogProductProjectionRecord IFurnitureRepository --> IFurnitureDataProvider IFurnitureRepository --> FurnitureAvailabilityLookupRequest IFurnitureRepository --> FurnitureAvailabilityRecord ICatalogRepository --> ICatalogDataProvider ICatalogRepository --> CatalogProductLookupRequest ICatalogRepository --> CatalogProductProjectionRecord IFurnitureRepository --> ICacheInvalidationPolicy ICatalogRepository --> ICacheInvalidationPolicy } package "furniture-service" as FurnitureService FurnitureService --> IFurnitureRepository FurnitureService --> ICatalogRepository @enduml