syntax = "proto3";
package osmosis.poolincentives.v1beta1;

import "gogoproto/gogo.proto";
import "google/protobuf/duration.proto";

option go_package = "github.com/osmosis-labs/osmosis/v13/x/pool-incentives/types";

message Params {
  option (gogoproto.goproto_stringer) = false;

  // minted_denom is the denomination of the coin expected to be minted by the
  // minting module. Pool-incentives module doesn’t actually mint the coin
  // itself, but rather manages the distribution of coins that matches the
  // defined minted_denom.
  string minted_denom = 1 [ (gogoproto.moretags) = "yaml:\"minted_denom\"" ];
}

message LockableDurationsInfo {
  repeated google.protobuf.Duration lockable_durations = 1 [
    (gogoproto.nullable) = false,
    (gogoproto.stdduration) = true,
    (gogoproto.moretags) = "yaml:\"lockable_durations\""
  ];
}

message DistrInfo {
  string total_weight = 1 [
    (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
    (gogoproto.moretags) = "yaml:\"total_weight\"",
    (gogoproto.nullable) = false
  ];
  repeated DistrRecord records = 2 [ (gogoproto.nullable) = false ];
}

message DistrRecord {
  option (gogoproto.equal) = true;

  uint64 gauge_id = 1 [ (gogoproto.moretags) = "yaml:\"gauge_id\"" ];
  string weight = 2 [
    (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
    (gogoproto.nullable) = false
  ];
}

message PoolToGauge {
  uint64 pool_id = 1 [ (gogoproto.moretags) = "yaml:\"pool_id\"" ];
  uint64 gauge_id = 2 [ (gogoproto.moretags) = "yaml:\"gauge\"" ];
  google.protobuf.Duration duration = 3 [
    (gogoproto.nullable) = false,
    (gogoproto.stdduration) = true,
    (gogoproto.moretags) = "yaml:\"duration\""
  ];
}

message PoolToGauges {
  repeated PoolToGauge pool_to_gauge = 2 [ (gogoproto.nullable) = false ];
}