syntax = "proto3";
package provenance.exchange.v1;

option go_package = "github.com/provenance-io/provenance/x/exchange";

option java_package        = "io.provenance.exchange.v1";
option java_multiple_files = true;

import "gogoproto/gogo.proto";
import "provenance/exchange/v1/commitments.proto";
import "provenance/exchange/v1/market.proto";
import "provenance/exchange/v1/orders.proto";
import "provenance/exchange/v1/params.proto";
import "provenance/exchange/v1/payments.proto";

// GenesisState is the data that should be loaded into the exchange module during genesis.
message GenesisState {
  option (gogoproto.equal)           = false;
  option (gogoproto.goproto_getters) = false;

  // params defines all the parameters of the exchange module.
  Params params = 1;

  // markets are all of the markets to create at genesis.
  repeated Market markets = 2 [(gogoproto.nullable) = false];

  // orders are all the orders to create at genesis.
  repeated Order orders = 3 [(gogoproto.nullable) = false];

  // last_market_id is the value of the last auto-selected market id.
  uint32 last_market_id = 4;

  // last_order_id is the value of the last order id created.
  uint64 last_order_id = 5;

  // commitments are all of the commitments to create at genesis.
  repeated Commitment commitments = 6 [(gogoproto.nullable) = false];

  // payments are all the payments to create at genesis.
  repeated Payment payments = 7 [(gogoproto.nullable) = false];
}