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

option go_package          = "github.com/provenance-io/provenance/x/msgfees/types";
option java_package        = "io.provenance.msgfees.v1";
option java_multiple_files = true;

import "amino/amino.proto";
import "gogoproto/gogo.proto";
import "cosmos_proto/cosmos.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/msg/v1/msg.proto";

// MsgAssessCustomMsgFeeRequest defines an sdk.Msg type
// Deprecated: This message is no longer usable. It is only still included for
// backwards compatibility (e.g. looking up old governance proposals).
// It is replaced by functionality in the flatfees module.
message MsgAssessCustomMsgFeeRequest {
  option deprecated                  = true;
  option (cosmos.msg.v1.signer)      = "from";
  option (gogoproto.equal)           = false;
  option (gogoproto.goproto_getters) = false;

  string name = 1; // optional short name for custom msg fee, this will be emitted as a property of the event
  cosmos.base.v1beta1.Coin amount = 2 [(gogoproto.nullable) = false]; // amount of additional fee that must be paid
  string recipient                = 3; // optional recipient address, the basis points amount is sent to the recipient
  string from                     = 4; // the signer of the msg
  string recipient_basis_points   = 5; // optional basis points 0 - 10,000 for recipient defaults to 10,000
}

// MsgAssessCustomMsgFeeResponse defines the Msg/AssessCustomMsgFeee response type.
message MsgAssessCustomMsgFeeResponse {}

// AddMsgFeeProposal defines a governance proposal to add additional msg based fee
// Deprecated: This message is no longer usable. It is only still included for
// backwards compatibility (e.g. looking up old governance proposals).
// It is replaced by functionality in the flatfees module.
message MsgAddMsgFeeProposalRequest {
  option deprecated             = true;
  option (cosmos.msg.v1.signer) = "authority";

  // type url of msg to add fee
  string msg_type_url = 1;

  // additional fee for msg type
  cosmos.base.v1beta1.Coin additional_fee = 2 [
    (gogoproto.nullable)     = false,
    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
    (amino.dont_omitempty)   = true,
    (amino.encoding)         = "legacy_coins"
  ];

  // optional recipient to receive basis points
  string recipient = 3;
  // basis points to use when recipient is present (1 - 10,000)
  string recipient_basis_points = 4;
  // the signing authority for the proposal
  string authority = 5 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}

// MsgAddMsgFeeProposalResponse defines the Msg/AddMsgFeeProposal response type
message MsgAddMsgFeeProposalResponse {}

// UpdateMsgFeeProposal defines a governance proposal to update a current msg based fee
// Deprecated: This message is no longer usable. It is only still included for
// backwards compatibility (e.g. looking up old governance proposals).
// It is replaced by functionality in the flatfees module.
message MsgUpdateMsgFeeProposalRequest {
  option deprecated             = true;
  option (cosmos.msg.v1.signer) = "authority";

  // type url of msg to update fee
  string msg_type_url = 1;

  // additional fee for msg type
  cosmos.base.v1beta1.Coin additional_fee = 2 [
    (gogoproto.nullable)     = false,
    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
    (amino.dont_omitempty)   = true,
    (amino.encoding)         = "legacy_coins"
  ];
  // optional recipient to receive basis points
  string recipient = 3;
  // basis points to use when recipient is present (1 - 10,000)
  string recipient_basis_points = 4;
  // the signing authority for the proposal
  string authority = 5 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}

// MsgUpdateMsgFeeProposalResponse defines the Msg/RemoveMsgFeeProposal response type
message MsgUpdateMsgFeeProposalResponse {}

// RemoveMsgFeeProposal defines a governance proposal to delete a current msg based fee
// Deprecated: This message is no longer usable. It is only still included for
// backwards compatibility (e.g. looking up old governance proposals).
// It is replaced by functionality in the flatfees module.
message MsgRemoveMsgFeeProposalRequest {
  option deprecated             = true;
  option (cosmos.msg.v1.signer) = "authority";

  // type url of msg fee to remove
  string msg_type_url = 1;
  // the signing authority for the proposal
  string authority = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; //
}

// MsgRemoveMsgFeeProposalResponse defines the Msg/RemoveMsgFeeProposal response type
message MsgRemoveMsgFeeProposalResponse {}

// UpdateNhashPerUsdMilProposal defines a governance proposal to update the nhash per usd mil param
// Deprecated: This message is no longer usable. It is only still included for
// backwards compatibility (e.g. looking up old governance proposals).
// It is replaced by functionality in the flatfees module.
message MsgUpdateNhashPerUsdMilProposalRequest {
  option deprecated             = true;
  option (cosmos.msg.v1.signer) = "authority";

  // nhash_per_usd_mil is number of nhash per usd mil
  uint64 nhash_per_usd_mil = 1;
  // the signing authority for the proposal
  string authority = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; //
}

// MsgUpdateNhashPerUsdMilProposalResponse defines the Msg/UpdateNhashPerUsdMilProposal response type
message MsgUpdateNhashPerUsdMilProposalResponse {}

// UpdateConversionFeeDenomProposal defines a governance proposal to update the msg fee conversion denom
// Deprecated: This message is no longer usable. It is only still included for
// backwards compatibility (e.g. looking up old governance proposals).
// It is replaced by functionality in the flatfees module.
message MsgUpdateConversionFeeDenomProposalRequest {
  option deprecated             = true;
  option (cosmos.msg.v1.signer) = "authority";

  // conversion_fee_denom is the denom that usd will be converted to
  string conversion_fee_denom = 1;
  // the signing authority for the proposal
  string authority = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; //
}

// MsgUpdateConversionFeeDenomProposalResponse defines the Msg/UpdateConversionFeeDenomProposal response type
message MsgUpdateConversionFeeDenomProposalResponse {}