syntax = "proto3";
package band.tunnel.v1beta1;

option go_package = "github.com/bandprotocol/chain/v3/x/tunnel/types";

import "gogoproto/gogo.proto";
import "cosmos/base/v1beta1/coin.proto";

// Params is the data structure that keeps the parameters of the module.
message Params {
  option (gogoproto.equal) = true; // Use gogoproto.equal for proto3 message equality checks

  // min_deposit is the minimum deposit required to create a tunnel.
  repeated cosmos.base.v1beta1.Coin min_deposit = 1
      [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
  // min_interval is the minimum interval in seconds.
  uint64 min_interval = 2;
  // max_interval is the maximum interval in seconds.
  uint64 max_interval = 3;
  // min_deviation_bps is the minimum deviation in basis points.
  uint64 min_deviation_bps = 4 [(gogoproto.customname) = "MinDeviationBPS"];
  // max_deviation_bps is the maximum deviation in basis points.
  uint64 max_deviation_bps = 5 [(gogoproto.customname) = "MaxDeviationBPS"];
  // max_signals defines the maximum number of signals allowed per tunnel.
  uint64 max_signals = 6;
  // base_packet_fee is the base fee for each packet.
  repeated cosmos.base.v1beta1.Coin base_packet_fee = 7
      [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
  // router_ibc_channel specifies the IBC channel used by the tunnel to communicate with the Router chain.
  string router_ibc_channel = 8 [(gogoproto.customname) = "RouterIBCChannel"];
  // router_integration_contract specifies the address of the Router integration contract on the Router chain
  // that the tunnel module will interact with.
  string router_integration_contract = 9;
  // axelar_ibc_channel specifies the IBC channel used by the tunnel to communicate with the axelar chain.
  string axelar_ibc_channel = 10 [(gogoproto.customname) = "AxelarIBCChannel"];
  // axelar_gmp_account is the account address on axelar chain that processes and verifies Axelar GMP transactions.
  string axelar_gmp_account = 11 [(gogoproto.customname) = "AxelarGMPAccount"];
  // axelar_fee_recipient is the account address on axelar chain that receive fee from tunnel.
  string axelar_fee_recipient = 12;
}
