status-im/status-go

View on GitHub
services/wallet/router/pathprocessor/proto_cbridge/gateway.proto

Summary

Maintainability
Test Coverage
syntax = "proto3";
package cbridge;

import "query.proto";
import "cbridge.proto";

option go_package = "../cbridge";


message Chain {
  uint32 id = 1;
  string name = 2;
  string icon = 3;
  uint32 block_delay = 4;
  string gas_token_symbol = 5;
  string explore_url = 6;
    reserved 7; // rpc_url removed
  string contract_addr = 8;  // bridge contract addr
  string drop_gas_amt = 9; // how much gas will be dropped on dst chain when transfer(dst chain gas token)
  double suggested_base_fee = 10; // only for backend
}

message ChainTokenInfo {
  repeated TokenInfo token = 1;
}

message TokenInfo {
  Token token = 1;
  string name = 2;
  string icon = 3;
}

message TransferInfo {
  Chain chain = 1;
  Token token = 2;
  string amount = 3;
}

message GetTransferStatusRequest {
  string transfer_id = 1;
}

message GetTransferStatusResponse {
  ErrMsg err = 1;
  TransferHistoryStatus status = 2;
  bytes wd_onchain = 3;            // for refund only
  repeated bytes sorted_sigs = 4;  // for refund only
  repeated bytes signers = 5;      // for refund only
  repeated bytes powers = 6;       // for refund only
  XferStatus refund_reason = 7;                   // used only for to_be_refund TransferStatus. BAD_LIQUIDITY, BAD_SLIPPAGE and BAD_TOKEN are used here
  uint32 block_delay = 8;  // waiting
  string src_block_tx_link = 9;
  string dst_block_tx_link = 10;
}

message GetTransferConfigsRequest {}

message GetTransferConfigsResponse {
  ErrMsg err = 1;
  repeated Chain chains = 2;
  map<uint32, ChainTokenInfo> chain_token = 3;  // map<chain_id, ChainTokenInfo>
  string farming_reward_contract_addr = 4;
}

message GetTokenInfoRequest {
  uint32 chain_id = 1;
  string token_symbol = 2;
}

message GetTokenInfoResponse {
  ErrMsg err = 1;
  TokenInfo token_info = 2;
}

message EstimateAmtRequest {
  uint32 src_chain_id = 1;
  uint32 dst_chain_id = 2;
  string token_symbol = 3;
  string amt = 4;
  string usr_addr = 5;
  uint32 slippage_tolerance = 6;  // user setting, for ui only, slippage * 1M, eg. 0.5% is 5000
}

message EstimateAmtResponse {
  ErrMsg err = 1;
  string eq_value_token_amt = 2;  // on_dst_chain, to cal minimum_received_amt = eq_value_token_amt*(1-slippage_tolerance) -  fee
  float bridge_rate = 3;
  string perc_fee = 4;            // on_dst_chain, percentage fee based on amount
  string base_fee = 7;            // on_dest_chain, independent of amount, to cover relay onchain tx gas cost
  uint32 slippage_tolerance = 5;  // user setting, from request, slippage * 1M, eg. 0.5% is 5000
  uint32 max_slippage = 6;        // param for requesting on chain, slippage * 1M, eg. 0.5% is 5000
}

message WithdrawInfo {
  uint32 chain_id = 1;
  string amount = 2;
  uint32 slippage_tolerance = 3;  // user setting, for ui only, slippage * 1M, eg. 0.5% is 5000
}

message EstimateWithdrawAmtRequest {
  repeated WithdrawInfo src_withdraws = 1;
  uint32 dst_chain_id = 2;
  string token_symbol = 3;
  string usr_addr = 4;
}

message EstimateWithdrawAmtResponse {
  ErrMsg err = 1;
  map<uint32, EstimateWithdrawAmt> req_amt = 2;  // map<src_chain_id, EstimateWithdrawAmt>
}

message EstimateWithdrawAmt {
  string eq_value_token_amt = 1;  // on_dst_chain, to cal minimum_received_amt = eq_value_token_amt*(1-slippage_tolerance) -  fee
  float bridge_rate = 2;
  string perc_fee = 3;            // on_dst_chain, percentage fee based on amount
  string base_fee = 4;            // on_dest_chain, independent of amount, to cover relay onchain tx gas cost
  uint32 slippage_tolerance = 5;  // user setting, for ui only, slippage * 1M, eg. 0.5% is 5000
  uint32 max_slippage = 6;        // param for requesting on chain, slippage * 1M, eg. 0.5% is 5000
}

message WithdrawLiquidityRequest {
  bytes withdraw_req = 1;  // serialized WithdrawReq in sgn/cbridge/v1/tx.proto
  bytes sig = 2;
  string estimated_received_amt = 3;   // on dst chain
  WithdrawMethodType method_type = 4;  // record which type it is
}

message WithdrawLiquidityResponse {
  ErrMsg err = 1;
  uint64 seq_num = 2;  // same as WithdrawLiquidityRequest.reqid
}

message TransferHistory {
  string transfer_id = 1;
  TransferInfo src_send_info = 2;
  TransferInfo dst_received_info = 3;
  uint64 ts = 4;
  string src_block_tx_link = 5;
  string dst_block_tx_link = 6;
  TransferHistoryStatus status = 7;
  XferStatus refund_reason = 8;  // used only for to_be_refund TransferStatus. BAD_LIQUIDITY, BAD_SLIPPAGE and BAD_TOKEN are used here
}

message TransferHistoryRequest {
  string next_page_token = 1;  // for first page, it's ""
  uint64 page_size = 2;
  string addr = 3;
}

message TransferHistoryResponse {
  ErrMsg err = 1;
  repeated TransferHistory history = 2;
  string next_page_token = 3;
  uint64 current_size = 4;
}

enum WithdrawMethodType {
  WD_METHOD_TYPE_UNDEFINED = 0;
  WD_METHOD_TYPE_ONE_RM = 1;         // for lp one chain liquidity remove
  WD_METHOD_TYPE_ALL_IN_ONE = 2;     // for lp multi-chain -> one chain liquidity remove
  WD_METHOD_TYPE_STAKING_CLAIM = 3;  // for staking claim lp reward, these entries will not be shown in lp history
}

message ErrMsg {
  ErrCode code = 1;
  string msg = 2;
}

enum ErrCode {
  ERROR_CODE_UNDEFINED = 0;
  ERROR_CODE_COMMON = 500;
  ERROR_NO_TOKEN_ON_DST_CHAIN = 1001;
  ERROR_NO_TOKEN_ON_SRC_CHAIN = 1002;
  ERROR_INIT_WITHDRAW_FAILED = 1003;
}