syntax = "proto3";

package logic.v1beta3;

import "cosmos/msg/v1/msg.proto";
import "cosmos_proto/cosmos.proto";
import "gogoproto/gogo.proto";
import "logic/v1beta3/params.proto";

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

// MsgService defines the service for the logic module.
// Do nothing for now as the service is without any side effects.
service MsgService {
  // UpdateParams defined a governance operation for updating the x/logic module parameters.
  // The authority is hard-coded to the Cosmos SDK x/gov module account
  rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
}

// MsgUpdateParams defines a Msg for updating the x/logic module parameters.
message MsgUpdateParams {
  option (cosmos.msg.v1.signer) = "authority";
  // authority is the address of the governance account.
  string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
  // params defines the x/logic parameters to update.
  // NOTE: All parameters must be supplied.
  Params params = 2 [(gogoproto.nullable) = false];
}

// MsgUpdateParamsResponse defines the response structure for executing a
// MsgUpdateParams message.
message MsgUpdateParamsResponse {}
