syntax = "proto3";

package mint.v1beta1;

import "cosmos_proto/cosmos.proto";
import "gogoproto/gogo.proto";

option go_package = "github.com/axone-protocol/axoned/x/mint/types";

// Minter holds the state of minting within the blockchain.
message Minter {
  // Current annual inflation rate.
  string inflation = 1 [
    (cosmos_proto.scalar) = "cosmos.Dec",
    (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    (gogoproto.nullable) = false
  ];
  // Current annual anticipated provisions.
  string annual_provisions = 2 [
    (cosmos_proto.scalar) = "cosmos.Dec",
    (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    (gogoproto.nullable) = false
  ];
}

// Params defines the parameters for the mint module.
message Params {
  option (gogoproto.goproto_stringer) = false;

  // Denomination of the coin to be minted.
  string mint_denom = 1;

  // Annual inflation coefficient, influencing the inflation rate based on the bonded ratio.
  // Values range from 0 to 1, with higher values indicating higher inflation.
  string inflation_coef = 2 [
    (cosmos_proto.scalar) = "cosmos.Dec",
    (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    (gogoproto.nullable) = false
  ];

  // Estimated number of blocks per year.
  uint64 blocks_per_year = 3;

  // Maximum annual inflation rate.
  string inflation_max = 4 [
    (cosmos_proto.scalar) = "cosmos.Dec",
    (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    (gogoproto.nullable) = true
  ];

  // Minimum annual inflation rate.
  string inflation_min = 5 [
    (cosmos_proto.scalar) = "cosmos.Dec",
    (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    (gogoproto.nullable) = true
  ];
}
