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

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

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

import "gogoproto/gogo.proto";
import "provenance/marker/v1/marker.proto";

// GenesisState defines the account module's genesis state.
message GenesisState {
  option (gogoproto.equal)           = false;
  option (gogoproto.goproto_getters) = false;

  // params defines all the parameters of the module.
  Params params = 1 [(gogoproto.nullable) = false];

  // A collection of marker accounts to create on start
  repeated MarkerAccount markers = 2 [(gogoproto.nullable) = false];

  // list of marker net asset values
  repeated MarkerNetAssetValues net_asset_values = 3 [(gogoproto.nullable) = false];

  // list of denom based denied send addresses
  repeated DenySendAddress deny_send_addresses = 4 [(gogoproto.nullable) = false];
}

// DenySendAddress defines addresses that are denied sends for marker denom
message DenySendAddress {
  option (gogoproto.equal)           = false;
  option (gogoproto.goproto_getters) = false;

  // marker_address is the marker's address for denied address
  string marker_address = 1;
  // deny_address defines all wallet addresses that are denied sends for the marker
  string deny_address = 2;
}

// MarkerNetAssetValues defines the net asset values for a marker
message MarkerNetAssetValues {
  option (gogoproto.equal)           = false;
  option (gogoproto.goproto_getters) = false;

  // address defines the marker address
  string address = 1;

  // net_asset_values that are assigned to marker
  repeated NetAssetValue net_asset_values = 2 [(gogoproto.nullable) = false];
}