syntax = "proto3";
package cosmos_sdk.x.supply.v1;

import "third_party/proto/gogoproto/gogo.proto";
import "third_party/proto/cosmos-sdk/types/types.proto";
import "third_party/proto/cosmos-sdk/x/auth/types/types.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/supply/types";

// ModuleAccount defines an account for modules that holds coins on a pool
message ModuleAccount {
  option (gogoproto.goproto_getters)  = false;
  option (gogoproto.goproto_stringer) = false;

  cosmos_sdk.x.auth.v1.BaseAccount base_account = 1
      [(gogoproto.embed) = true, (gogoproto.moretags) = "yaml:\"base_account\""];
  string          name        = 2;
  repeated string permissions = 3;
}

// Supply represents a struct that passively keeps track of the total supply
// amounts in the network.
message Supply {
  option (gogoproto.equal)            = true;
  option (gogoproto.goproto_getters)  = false;
  option (gogoproto.goproto_stringer) = false;

  repeated cosmos_sdk.v1.Coin total = 1 [
    (gogoproto.nullable)     = false,
    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
  ];
}
