syntax = "proto3";
package sentinel.oracle.v1;

import "gogoproto/gogo.proto";
import "osmosis/poolmanager/v1beta1/query.proto";
import "osmosis/protorev/v1beta1/query.proto";
import "sentinel/oracle/v1/params.proto";

option go_package = "github.com/sentinel-official/sentinelhub/v13/x/oracle/types/v1";
option (gogoproto.equal_all) = false;
option (gogoproto.goproto_getters_all) = false;

message MsgCreateAssetRequest {
  string frm = 1;
  string denom = 2;
  int64 decimals = 3;
  osmosis.protorev.v1beta1.QueryGetProtoRevPoolRequest proto_rev_pool_request = 4 [(gogoproto.nullable) = false];
  osmosis.poolmanager.v1beta1.SpotPriceRequest spot_price_request = 5 [(gogoproto.nullable) = false];
}

message MsgDeleteAssetRequest {
  string frm = 1;
  string denom = 2;
}

message MsgUpdateAssetRequest {
  string frm = 1;
  string denom = 2;
  int64 decimals = 3;
  osmosis.protorev.v1beta1.QueryGetProtoRevPoolRequest proto_rev_pool_request = 4 [(gogoproto.nullable) = false];
  osmosis.poolmanager.v1beta1.SpotPriceRequest spot_price_request = 5 [(gogoproto.nullable) = false];
}

message MsgUpdateParamsRequest {
  string frm = 1;
  Params params = 2 [(gogoproto.nullable) = false];
}

message MsgCreateAssetResponse {}

message MsgDeleteAssetResponse {}

message MsgUpdateAssetResponse {}

message MsgUpdateParamsResponse {}

service MsgService {
  rpc MsgCreateAsset(MsgCreateAssetRequest) returns (MsgCreateAssetResponse);
  rpc MsgDeleteAsset(MsgDeleteAssetRequest) returns (MsgDeleteAssetResponse);
  rpc MsgUpdateAsset(MsgUpdateAssetRequest) returns (MsgUpdateAssetResponse);
  rpc MsgUpdateParams(MsgUpdateParamsRequest) returns (MsgUpdateParamsResponse);
}
