package pl.wk.bid.core.auction;

import pl.wk.bid.core.bid.Bid;
import pl.wk.bid.core.bid.Bidder;
import pl.wk.bid.core.price.Price;

import java.util.Currency;
import java.util.List;
import java.util.Optional;

/**
 * Created by wojtek on 10.12.16.
 */
public interface Auction {
    void bidUpWith(Bidder bidderOne, Price plnPrice);

    void bidTo(Bidder bidder, Price price);

    boolean tryOpenAuction();

    boolean tryCloseAuction();

    boolean isOpen();

    List<Bid> getHistory();

    String getDescription();

    Currency getAcceptableCurrency();

    Price getInitialPrice();

    Optional<Bid> getTopBid();
}
