---
# System prepended metadata

title: Dependency invertion proposal (ListingManager)

---

# Dependency invertion proposal (ListingManager)

```
Item
{
tokenAddr, 
tokenId, 
startDate, 
endDate
}
```

```
AuctionData inherits Item
{
currency, 
buyNowPrice, 
reservedPrice, 
minBidStep,
}
```

```
FixedPriceData inherits Item
{
currencies, 
buyNowPrices,
}
```

```mermaid
sequenceDiagram
    title: Create Auction/FixedPrice Listing
    #-------
    actor Seller
    actor Buyer
    #-------
    participant EnglishAuctionStrategy
    participant FixedPriceStrategy
    participant ListingManager

    Seller->>EnglishAuctionStrategy: createAuction(auctionData)

    EnglishAuctionStrategy->>ListingManager: createListing(tokenAddr, tokenId, startDate, endDate)
    
   Seller->>FixedPriceStrategy: createAuction(fixedPriceData)

    FixedPriceStrategy->>ListingManager: createListing(tokenAddr, tokenId, startDate, endDate) 
    
    Buyer->>ListingManager: getListing(...)
    
    ListingManager-->>Buyer: returns strategy
    
    Buyer->>FixedPriceStrategy: placeBid(...)
    
    FixedPriceStrategy->>ListingManager: isStillActive(...)
    
    alt isStillActive(...)
        ListingManager--)FixedPriceStrategy: check status, startDate and endDate
    end

```

   