syntax = "proto3";
package drouot;

message BidStruct {
    enum Type {
        LIVE = 0;
        ROOM = 1;
    }
    uint32 amount = 1;
    uint32 currentBidder = 2;
    Type type = 3;
    bool hasPriority = 4;
    bool isLate = 5;
    bool isAuto = 6;
    IncrementStruct increment = 7;
    uint32 nextamount = 8;
    uint32 nextsmallamount = 9;
    uint32 nextmediumamount = 10;
    uint32 nextbigamount = 11;
    uint32 nextsmallvehicleamount = 12;
    uint32 nextmediumvehicleamount = 13;
    uint32 nextstandardamount = 14;
    uint32 nextmodel10amount = 15;
}

message IncrementStruct {
  enum Type {
    FIXED = 0;
    SMALL = 1;
    MEDIUM = 2;
    BIG = 3;
    SMALL_VEHICLE = 4;
    MEDIUM_VEHICLE = 5;
    STANDARD = 6;
    MODEL10 = 7;
    CUSTOM = 8;
  }

  Type type = 1;
  uint32 fixedvalue = 2;
  IncrementData customincrement = 3;
}

message IncrementData {
  repeated IncrementStep incrementarray = 1;
}

message IncrementStep {
  uint32 startvalue = 1;
  uint32 incrementvalue = 2;
  bool specialstep = 3;
}

message ClientStruct {
  enum Permission {
    BIDDER = 0;
    CYBER = 1;
    SPECTATOR = 2;
  }

  enum Activity {
    IDLE = 0;
    ACTIVE = 1;
    OVER = 2;
    OUT = 3;
  }

  string sessionId = 1;
  uint32 passeportId = 2;
  string uuid = 3;
  Permission permission = 4;
  Activity activity = 5;
  uint32 pingdelay = 6;
  uint32 maxamount = 7;
  bool hasnolimit = 8;
  string token = 9;
  string refreshtoken = 10;
}

message LiveBiddingMessage {
  enum Type {
    PING = 0;
    PONG = 1;
    INIT = 2;
    CLOSE = 3;
    BID = 4;
    SELECT_LOT = 5;
    STARTING_PRICE = 6;
    INCREMENT = 7;
    TENDERING = 8;
    GENERIC_MESSAGE = 9;
    CREATE_LOT = 10;
    NOT_INTERESTED = 11;
    INTERESTED = 12;
    ACTIVITY = 13;
    NEW_CLIENT = 14;
    CLOSED_CLIENT = 15;
    KILL = 16;
    MULTILOT_REQUEST = 17;
    MULTILOT_RESPONSE = 18;
    SYNC_PAYMENT_LIMIT = 19;
    SWITCH_FREE_BID_AUTHORIZE = 20;
    REFRESH_CLIENTS_COUNT = 21;
  }

  Type type = 1;
  ClientStruct client = 2;
  VenteStruct vente = 3;
  string message = 4;
  map<string, string> paramsMap = 5;
  int64 pingtime = 6;
}

message LotStruct {
  enum State {
    NEW = 0;
    MAP = 1;
    BIDDING = 2;
    ADJ = 3;
    ADJ_CANCELED = 4;
  }

  uint32 lotId = 1;
  State state = 2;
  uint32 nextLotId = 3;
}

message VenteStruct {
    uint32 venteId = 1;
    BidStruct bid = 2;
    LotStruct lot = 3;
    repeated uint32 connectedRegisteredListList = 4;
    repeated uint32 connectedSpectatorListList = 5;
    repeated uint32 connectedCyberclercListList = 6;
    bool isfreebidauthorized = 7;
    uint32 connectedbiddercount = 8;
    uint32 connectedspectatorcount = 9;
    uint32 readytobidcount = 10;
}