github.com/InjectiveLabs/sdk-go@v1.53.0/proto/injective/exchange/v1beta1/proposal.proto (about)

     1  syntax = "proto3";
     2  package injective.exchange.v1beta1;
     3  
     4  import "cosmos/base/v1beta1/coin.proto";
     5  import "cosmos/distribution/v1beta1/distribution.proto";
     6  import "cosmos/msg/v1/msg.proto";
     7  import "cosmos_proto/cosmos.proto";
     8  import "gogoproto/gogo.proto";
     9  import "injective/exchange/v1beta1/exchange.proto";
    10  import "injective/oracle/v1beta1/oracle.proto";
    11  import "amino/amino.proto";
    12  
    13  option go_package = "github.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types";
    14  
    15  message SpotMarketParamUpdateProposal {
    16    option (amino.name) = "exchange/SpotMarketParamUpdateProposal";
    17    option (gogoproto.equal) = false;
    18    option (gogoproto.goproto_getters) = false;
    19    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
    20  
    21    string title = 1;
    22    string description = 2;
    23    string market_id = 3;
    24  
    25    // maker_fee_rate defines the trade fee rate for makers on the spot market
    26    string maker_fee_rate = 4 [
    27      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    28      (gogoproto.nullable) = true
    29    ];
    30  
    31    // taker_fee_rate defines the trade fee rate for takers on the spot market
    32    string taker_fee_rate = 5 [
    33      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    34      (gogoproto.nullable) = true
    35    ];
    36  
    37    // relayer_fee_share_rate defines the relayer fee share rate for the spot
    38    // market
    39    string relayer_fee_share_rate = 6 [
    40      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    41      (gogoproto.nullable) = true
    42    ];
    43  
    44    // min_price_tick_size defines the minimum tick size of the order's price and
    45    // margin
    46    string min_price_tick_size = 7 [
    47      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    48      (gogoproto.nullable) = true
    49    ];
    50    // min_quantity_tick_size defines the minimum tick size of the order's
    51    // quantity
    52    string min_quantity_tick_size = 8 [
    53      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    54      (gogoproto.nullable) = true
    55    ];
    56  
    57    MarketStatus status = 9;
    58  
    59    string ticker = 10 [ (gogoproto.nullable) = true ];
    60  
    61    // min_notional defines the minimum notional (in quote asset) required for
    62    // orders in the market
    63    string min_notional = 11 [
    64      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    65      (gogoproto.nullable) = true
    66    ];
    67  
    68    AdminInfo admin_info = 12;
    69  }
    70  
    71  enum ExchangeType {
    72    EXCHANGE_UNSPECIFIED = 0
    73        [ (gogoproto.enumvalue_customname) = "EXCHANGE_UNSPECIFIED" ];
    74    SPOT = 1 [ (gogoproto.enumvalue_customname) = "SPOT" ];
    75    DERIVATIVES = 2 [ (gogoproto.enumvalue_customname) = "DERIVATIVES" ];
    76  }
    77  
    78  message ExchangeEnableProposal {
    79    option (amino.name) = "exchange/ExchangeEnableProposal";
    80    option (gogoproto.equal) = false;
    81    option (gogoproto.goproto_getters) = false;
    82  
    83    string title = 1;
    84    string description = 2;
    85  
    86    ExchangeType exchangeType = 3;
    87  }
    88  
    89  message BatchExchangeModificationProposal {
    90    option (amino.name) = "exchange/BatchExchangeModificationProposal";
    91    option (gogoproto.equal) = false;
    92    option (gogoproto.goproto_getters) = false;
    93    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
    94  
    95    string title = 1;
    96    string description = 2;
    97  
    98    repeated SpotMarketParamUpdateProposal spot_market_param_update_proposals = 3;
    99    repeated DerivativeMarketParamUpdateProposal
   100        derivative_market_param_update_proposals = 4;
   101    repeated SpotMarketLaunchProposal spot_market_launch_proposals = 5;
   102    repeated PerpetualMarketLaunchProposal perpetual_market_launch_proposals = 6;
   103    repeated ExpiryFuturesMarketLaunchProposal
   104        expiry_futures_market_launch_proposals = 7;
   105    TradingRewardCampaignUpdateProposal trading_reward_campaign_update_proposal =
   106        8;
   107    repeated BinaryOptionsMarketLaunchProposal
   108        binary_options_market_launch_proposals = 9;
   109    repeated BinaryOptionsMarketParamUpdateProposal
   110        binary_options_param_update_proposals = 10;
   111    UpdateDenomDecimalsProposal denom_decimals_update_proposal = 11;
   112  
   113    FeeDiscountProposal fee_discount_proposal = 12;
   114  
   115    repeated MarketForcedSettlementProposal market_forced_settlement_proposals =
   116        13;
   117  }
   118  
   119  // SpotMarketLaunchProposal defines a SDK message for proposing a new spot
   120  // market through governance
   121  message SpotMarketLaunchProposal {
   122    option (amino.name) = "exchange/SpotMarketLaunchProposal";
   123    option (gogoproto.equal) = false;
   124    option (gogoproto.goproto_getters) = false;
   125    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   126  
   127    string title = 1;
   128    string description = 2;
   129    // Ticker for the spot market.
   130    string ticker = 3;
   131    // type of coin to use as the base currency
   132    string base_denom = 4;
   133    // type of coin to use as the quote currency
   134    string quote_denom = 5;
   135    // min_price_tick_size defines the minimum tick size of the order's price
   136    string min_price_tick_size = 6 [
   137      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   138      (gogoproto.nullable) = false
   139    ];
   140    // min_quantity_tick_size defines the minimum tick size of the order's
   141    // quantity
   142    string min_quantity_tick_size = 7 [
   143      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   144      (gogoproto.nullable) = false
   145    ];
   146    // maker_fee_rate defines the fee percentage makers pay when trading
   147    string maker_fee_rate = 8 [
   148      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   149      (gogoproto.nullable) = true
   150    ];
   151    // taker_fee_rate defines the fee percentage takers pay when trading
   152    string taker_fee_rate = 9 [
   153      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   154      (gogoproto.nullable) = true
   155    ];
   156    // min_notional defines the minimum notional for orders in the market
   157    string min_notional = 10 [
   158      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   159      (gogoproto.nullable) = false
   160    ];
   161    AdminInfo admin_info = 11;
   162  }
   163  
   164  // PerpetualMarketLaunchProposal defines a SDK message for proposing a new
   165  // perpetual futures market through governance
   166  message PerpetualMarketLaunchProposal {
   167    option (amino.name) = "exchange/PerpetualMarketLaunchProposal";
   168    option (gogoproto.equal) = false;
   169    option (gogoproto.goproto_getters) = false;
   170    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   171  
   172    string title = 1;
   173    string description = 2;
   174    // Ticker for the derivative market.
   175    string ticker = 3;
   176    // type of coin to use as the base currency
   177    string quote_denom = 4;
   178    // Oracle base currency
   179    string oracle_base = 5;
   180    // Oracle quote currency
   181    string oracle_quote = 6;
   182    // Scale factor for oracle prices.
   183    uint32 oracle_scale_factor = 7;
   184    // Oracle type
   185    injective.oracle.v1beta1.OracleType oracle_type = 8;
   186    // initial_margin_ratio defines the initial margin ratio for the derivative
   187    // market
   188    string initial_margin_ratio = 9 [
   189      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   190      (gogoproto.nullable) = false
   191    ];
   192  
   193    // maintenance_margin_ratio defines the maintenance margin ratio for the
   194    // derivative market
   195    string maintenance_margin_ratio = 10 [
   196      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   197      (gogoproto.nullable) = false
   198    ];
   199  
   200    // maker_fee_rate defines the exchange trade fee for makers for the derivative
   201    // market
   202    string maker_fee_rate = 11 [
   203      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   204      (gogoproto.nullable) = false
   205    ];
   206  
   207    // taker_fee_rate defines the exchange trade fee for takers for the derivative
   208    // market
   209    string taker_fee_rate = 12 [
   210      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   211      (gogoproto.nullable) = false
   212    ];
   213    // min_price_tick_size defines the minimum tick size of the order's price and
   214    // margin
   215    string min_price_tick_size = 13 [
   216      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   217      (gogoproto.nullable) = false
   218    ];
   219    // min_quantity_tick_size defines the minimum tick size of the order's
   220    // quantity
   221    string min_quantity_tick_size = 14 [
   222      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   223      (gogoproto.nullable) = false
   224    ];
   225    // min_notional defines the minimum notional (in quote asset) required for
   226    // orders in the market
   227    string min_notional = 15 [
   228      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   229      (gogoproto.nullable) = false
   230    ];
   231    AdminInfo admin_info = 16;
   232  }
   233  
   234  message BinaryOptionsMarketLaunchProposal {
   235    option (amino.name) = "exchange/BinaryOptionsMarketLaunchProposal";
   236    option (gogoproto.equal) = false;
   237    option (gogoproto.goproto_getters) = false;
   238    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   239  
   240    string title = 1;
   241    string description = 2;
   242    // Ticker for the derivative contract.
   243    string ticker = 3;
   244    // Oracle symbol
   245    string oracle_symbol = 4;
   246    // Oracle Provider
   247    string oracle_provider = 5;
   248    // Oracle type
   249    injective.oracle.v1beta1.OracleType oracle_type = 6;
   250    // Scale factor for oracle prices.
   251    uint32 oracle_scale_factor = 7;
   252    // expiration timestamp
   253    int64 expiration_timestamp = 8;
   254    // expiration timestamp
   255    int64 settlement_timestamp = 9;
   256    // admin of the market
   257    string admin = 10;
   258    // Address of the quote currency denomination for the binary options contract
   259    string quote_denom = 11;
   260    // maker_fee_rate defines the maker fee rate of a binary options market
   261    string maker_fee_rate = 12 [
   262      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   263      (gogoproto.nullable) = false
   264    ];
   265    // taker_fee_rate defines the taker fee rate of a derivative market
   266    string taker_fee_rate = 13 [
   267      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   268      (gogoproto.nullable) = false
   269    ];
   270    // min_price_tick_size defines the minimum tick size that the price and margin
   271    // required for orders in the market
   272    string min_price_tick_size = 14 [
   273      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   274      (gogoproto.nullable) = false
   275    ];
   276    // min_quantity_tick_size defines the minimum tick size of the quantity
   277    // required for orders in the market
   278    string min_quantity_tick_size = 15 [
   279      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   280      (gogoproto.nullable) = false
   281    ];
   282    // min_notional defines the minimum notional (in quote asset) required for
   283    // orders in the market
   284    string min_notional = 16 [
   285      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   286      (gogoproto.nullable) = false
   287    ];
   288    uint32 admin_permissions = 17;
   289  }
   290  
   291  // ExpiryFuturesMarketLaunchProposal defines a SDK message for proposing a new
   292  // expiry futures market through governance
   293  message ExpiryFuturesMarketLaunchProposal {
   294    option (amino.name) = "exchange/ExpiryFuturesMarketLaunchProposal";
   295    option (gogoproto.equal) = false;
   296    option (gogoproto.goproto_getters) = false;
   297    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   298  
   299    string title = 1;
   300    string description = 2;
   301    // Ticker for the derivative market.
   302    string ticker = 3;
   303    // type of coin to use as the quote currency
   304    string quote_denom = 4;
   305    // Oracle base currency
   306    string oracle_base = 5;
   307    // Oracle quote currency
   308    string oracle_quote = 6;
   309    // Scale factor for oracle prices.
   310    uint32 oracle_scale_factor = 7;
   311    // Oracle type
   312    injective.oracle.v1beta1.OracleType oracle_type = 8;
   313    // Expiration time of the market
   314    int64 expiry = 9;
   315    // initial_margin_ratio defines the initial margin ratio for the derivative
   316    // market
   317    string initial_margin_ratio = 10 [
   318      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   319      (gogoproto.nullable) = false
   320    ];
   321  
   322    // maintenance_margin_ratio defines the maintenance margin ratio for the
   323    // derivative market
   324    string maintenance_margin_ratio = 11 [
   325      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   326      (gogoproto.nullable) = false
   327    ];
   328  
   329    // maker_fee_rate defines the exchange trade fee for makers for the derivative
   330    // market
   331    string maker_fee_rate = 12 [
   332      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   333      (gogoproto.nullable) = false
   334    ];
   335  
   336    // taker_fee_rate defines the exchange trade fee for takers for the derivative
   337    // market
   338    string taker_fee_rate = 13 [
   339      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   340      (gogoproto.nullable) = false
   341    ];
   342    // min_price_tick_size defines the minimum tick size of the order's price and
   343    // margin
   344    string min_price_tick_size = 14 [
   345      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   346      (gogoproto.nullable) = false
   347    ];
   348    // min_quantity_tick_size defines the minimum tick size of the order's
   349    // quantity
   350    string min_quantity_tick_size = 15 [
   351      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   352      (gogoproto.nullable) = false
   353    ];
   354    // min_notional defines the minimum notional (in quote asset) required for
   355    // orders in the market
   356    string min_notional = 16 [
   357      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   358      (gogoproto.nullable) = false
   359    ];
   360  
   361    AdminInfo admin_info = 17;
   362  }
   363  
   364  message DerivativeMarketParamUpdateProposal {
   365    option (amino.name) = "exchange/DerivativeMarketParamUpdateProposal";
   366    option (gogoproto.equal) = false;
   367    option (gogoproto.goproto_getters) = false;
   368  
   369    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   370  
   371    string title = 1;
   372    string description = 2;
   373    string market_id = 3;
   374  
   375    // initial_margin_ratio defines the initial margin ratio for the derivative
   376    // market
   377    string initial_margin_ratio = 4 [
   378      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   379      (gogoproto.nullable) = true
   380    ];
   381  
   382    // maintenance_margin_ratio defines the maintenance margin ratio for the
   383    // derivative market
   384    string maintenance_margin_ratio = 5 [
   385      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   386      (gogoproto.nullable) = true
   387    ];
   388  
   389    // maker_fee_rate defines the exchange trade fee for makers for the derivative
   390    // market
   391    string maker_fee_rate = 6 [
   392      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   393      (gogoproto.nullable) = true
   394    ];
   395  
   396    // taker_fee_rate defines the exchange trade fee for takers for the derivative
   397    // market
   398    string taker_fee_rate = 7 [
   399      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   400      (gogoproto.nullable) = true
   401    ];
   402  
   403    // relayer_fee_share_rate defines the relayer fee share rate for the
   404    // derivative market
   405    string relayer_fee_share_rate = 8 [
   406      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   407      (gogoproto.nullable) = true
   408    ];
   409  
   410    // min_price_tick_size defines the minimum tick size of the order's price and
   411    // margin
   412    string min_price_tick_size = 9 [
   413      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   414      (gogoproto.nullable) = true
   415    ];
   416    // min_quantity_tick_size defines the minimum tick size of the order's
   417    // quantity
   418    string min_quantity_tick_size = 10 [
   419      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   420      (gogoproto.nullable) = true
   421    ];
   422    // hourly_interest_rate defines the hourly interest rate
   423    string HourlyInterestRate = 11 [
   424      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   425      (gogoproto.nullable) = true
   426    ];
   427    // hourly_funding_rate_cap defines the maximum absolute value of the hourly
   428    // funding rate
   429    string HourlyFundingRateCap = 12 [
   430      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   431      (gogoproto.nullable) = true
   432    ];
   433  
   434    MarketStatus status = 13;
   435  
   436    OracleParams oracle_params = 14;
   437  
   438    string ticker = 15 [ (gogoproto.nullable) = true ];
   439  
   440    // min_notional defines the minimum notional (in quote asset) required for
   441    // orders in the market
   442    string min_notional = 16 [
   443      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   444      (gogoproto.nullable) = true
   445    ];
   446  
   447    AdminInfo admin_info = 17;
   448  }
   449  
   450  message AdminInfo {
   451    string admin = 1;
   452    uint32 admin_permissions = 2;
   453  }
   454  
   455  message MarketForcedSettlementProposal {
   456    option (amino.name) = "exchange/MarketForcedSettlementProposal";
   457    option (gogoproto.equal) = false;
   458    option (gogoproto.goproto_getters) = false;
   459    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   460  
   461    string title = 1;
   462    string description = 2;
   463    string market_id = 3;
   464    string settlement_price = 4 [
   465      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   466      (gogoproto.nullable) = true
   467    ];
   468  }
   469  
   470  message UpdateDenomDecimalsProposal {
   471    option (amino.name) = "exchange/UpdateDenomDecimalsProposal";
   472    option (gogoproto.equal) = false;
   473    option (gogoproto.goproto_getters) = false;
   474    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   475  
   476    string title = 1;
   477    string description = 2;
   478    repeated DenomDecimals denom_decimals = 3;
   479  }
   480  
   481  message BinaryOptionsMarketParamUpdateProposal {
   482    option (amino.name) = "exchange/BinaryOptionsMarketParamUpdateProposal";
   483    option (gogoproto.equal) = false;
   484    option (gogoproto.goproto_getters) = false;
   485  
   486    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   487  
   488    string title = 1;
   489    string description = 2;
   490    string market_id = 3;
   491  
   492    // maker_fee_rate defines the exchange trade fee for makers for the derivative
   493    // market
   494    string maker_fee_rate = 4 [
   495      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   496      (gogoproto.nullable) = true
   497    ];
   498  
   499    // taker_fee_rate defines the exchange trade fee for takers for the derivative
   500    // market
   501    string taker_fee_rate = 5 [
   502      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   503      (gogoproto.nullable) = true
   504    ];
   505  
   506    // relayer_fee_share_rate defines the relayer fee share rate for the
   507    // derivative market
   508    string relayer_fee_share_rate = 6 [
   509      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   510      (gogoproto.nullable) = true
   511    ];
   512  
   513    // min_price_tick_size defines the minimum tick size of the order's price and
   514    // margin
   515    string min_price_tick_size = 7 [
   516      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   517      (gogoproto.nullable) = true
   518    ];
   519    // min_quantity_tick_size defines the minimum tick size of the order's
   520    // quantity
   521    string min_quantity_tick_size = 8 [
   522      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   523      (gogoproto.nullable) = true
   524    ];
   525  
   526    // expiration timestamp
   527    int64 expiration_timestamp = 9;
   528    // expiration timestamp
   529    int64 settlement_timestamp = 10;
   530    // new price at which market will be settled
   531    string settlement_price = 11 [
   532      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   533      (gogoproto.nullable) = true
   534    ];
   535    // admin of the market
   536    string admin = 12;
   537    MarketStatus status = 13;
   538    ProviderOracleParams oracle_params = 14;
   539  
   540    string ticker = 15 [ (gogoproto.nullable) = true ];
   541  
   542    // min_notional defines the minimum notional (in quote asset) required for
   543    // orders in the market
   544    string min_notional = 16 [
   545      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   546      (gogoproto.nullable) = true
   547    ];
   548  }
   549  
   550  message ProviderOracleParams {
   551    // Oracle base currency
   552    string symbol = 1;
   553    // Oracle quote currency
   554    string provider = 2;
   555    // Scale factor for oracle prices.
   556    uint32 oracle_scale_factor = 3;
   557    // Oracle type
   558    injective.oracle.v1beta1.OracleType oracle_type = 4;
   559  }
   560  
   561  message OracleParams {
   562    // Oracle base currency
   563    string oracle_base = 1;
   564    // Oracle quote currency
   565    string oracle_quote = 2;
   566    // Scale factor for oracle prices.
   567    uint32 oracle_scale_factor = 3;
   568    // Oracle type
   569    injective.oracle.v1beta1.OracleType oracle_type = 4;
   570  }
   571  
   572  message TradingRewardCampaignLaunchProposal {
   573    option (amino.name) = "exchange/TradingRewardCampaignLaunchProposal";
   574    option (gogoproto.equal) = false;
   575    option (gogoproto.goproto_getters) = false;
   576    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   577  
   578    string title = 1;
   579    string description = 2;
   580    TradingRewardCampaignInfo campaign_info = 3;
   581    repeated CampaignRewardPool campaign_reward_pools = 4;
   582  }
   583  
   584  message TradingRewardCampaignUpdateProposal {
   585    option (amino.name) = "exchange/TradingRewardCampaignUpdateProposal";
   586    option (gogoproto.equal) = false;
   587    option (gogoproto.goproto_getters) = false;
   588    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   589  
   590    string title = 1;
   591    string description = 2;
   592    TradingRewardCampaignInfo campaign_info = 3;
   593    repeated CampaignRewardPool campaign_reward_pools_additions = 4;
   594    repeated CampaignRewardPool campaign_reward_pools_updates = 5;
   595  }
   596  
   597  message RewardPointUpdate {
   598    string account_address = 1;
   599    // new_points overwrites the current trading reward points for the account
   600    string new_points = 12 [
   601      (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
   602      (gogoproto.nullable) = false
   603    ];
   604  }
   605  
   606  message TradingRewardPendingPointsUpdateProposal {
   607    option (amino.name) = "exchange/TradingRewardPendingPointsUpdateProposal";
   608    option (gogoproto.equal) = false;
   609    option (gogoproto.goproto_getters) = false;
   610    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   611  
   612    string title = 1;
   613    string description = 2;
   614    int64 pending_pool_timestamp = 3;
   615    repeated RewardPointUpdate reward_point_updates = 4;
   616  }
   617  
   618  message FeeDiscountProposal {
   619    option (amino.name) = "exchange/FeeDiscountProposal";
   620    option (gogoproto.equal) = false;
   621    option (gogoproto.goproto_getters) = false;
   622    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   623  
   624    string title = 1;
   625    string description = 2;
   626    FeeDiscountSchedule schedule = 3;
   627  }
   628  
   629  message BatchCommunityPoolSpendProposal {
   630    option (amino.name) = "exchange/BatchCommunityPoolSpendProposal";
   631    option (gogoproto.equal) = false;
   632    option (gogoproto.goproto_getters) = false;
   633    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   634  
   635    string title = 1;
   636    string description = 2;
   637    repeated cosmos.distribution.v1beta1.CommunityPoolSpendProposal proposals = 3;
   638  }
   639  
   640  // AtomicMarketOrderFeeMultiplierScheduleProposal defines a SDK message for
   641  // proposing new atomic take fee multipliers for specified markets
   642  message AtomicMarketOrderFeeMultiplierScheduleProposal {
   643    option (amino.name) =
   644        "exchange/AtomicMarketOrderFeeMultiplierScheduleProposal";
   645    option (gogoproto.equal) = false;
   646    option (gogoproto.goproto_getters) = false;
   647    option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
   648  
   649    string title = 1;
   650    string description = 2;
   651  
   652    repeated MarketFeeMultiplier market_fee_multipliers = 3;
   653  }