diff --git a/modules/coinswap/client/rest/grpc_query_test.go b/modules/coinswap/client/rest/grpc_query_test.go index 90e2b95b..7e46812a 100644 --- a/modules/coinswap/client/rest/grpc_query_test.go +++ b/modules/coinswap/client/rest/grpc_query_test.go @@ -6,8 +6,6 @@ import ( "testing" "time" - "github.com/tidwall/gjson" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" @@ -173,12 +171,16 @@ func (s *IntegrationTestSuite) TestCoinswap() { s.Require().Equal("399985965", coins.AmountOf(sdk.DefaultBondDenom).String()) s.Require().Equal("1000", coins.AmountOf(lptDenom).String()) - url := fmt.Sprintf("%s/coinswap/liquidities/%s", baseURL, lptDenom) + queryPoolResponse := proto.Message(&coinswaptypes.QueryPoolResponse{}) + url := fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) resp, err := rest.GetRequest(url) s.Require().NoError(err) - s.Require().Equal("1000", gjson.Get(string(resp), "result.standard.amount").String()) - s.Require().Equal("1000", gjson.Get(string(resp), "result.token.amount").String()) - s.Require().Equal("1000", gjson.Get(string(resp), "result.liquidity.amount").String()) + s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(resp, queryPoolResponse)) + + queryPool := queryPoolResponse.(*coinswaptypes.QueryPoolResponse) + s.Require().Equal("1000", queryPool.Pool.Standard.Amount.String()) + s.Require().Equal("1000", queryPool.Pool.Token.Amount.String()) + s.Require().Equal("1000", queryPool.Pool.Lpt.Amount.String()) // test add liquidity (poor exist) status, err = clientCtx.Client.Status(context.Background()) @@ -235,12 +237,14 @@ func (s *IntegrationTestSuite) TestCoinswap() { s.Require().Equal("399983955", coins.AmountOf(sdk.DefaultBondDenom).String()) s.Require().Equal("3000", coins.AmountOf(lptDenom).String()) - url = fmt.Sprintf("%s/coinswap/liquidities/%s", baseURL, lptDenom) + url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) resp, err = rest.GetRequest(url) s.Require().NoError(err) - s.Require().Equal("3000", gjson.Get(string(resp), "result.standard.amount").String()) - s.Require().Equal("3001", gjson.Get(string(resp), "result.token.amount").String()) - s.Require().Equal("3000", gjson.Get(string(resp), "result.liquidity.amount").String()) + s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(resp, queryPoolResponse)) + + s.Require().Equal("3000", queryPool.Pool.Standard.Amount.String()) + s.Require().Equal("3001", queryPool.Pool.Token.Amount.String()) + s.Require().Equal("3000", queryPool.Pool.Lpt.Amount.String()) // test sell order msgSellOrder := &coinswaptypes.MsgSwapOrder{ @@ -297,12 +301,14 @@ func (s *IntegrationTestSuite) TestCoinswap() { s.Require().Equal("399984693", coins.AmountOf(sdk.DefaultBondDenom).String()) s.Require().Equal("3000", coins.AmountOf(lptDenom).String()) - url = fmt.Sprintf("%s/coinswap/liquidities/%s", baseURL, lptDenom) + url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) resp, err = rest.GetRequest(url) s.Require().NoError(err) - s.Require().Equal("2252", gjson.Get(string(resp), "result.standard.amount").String()) - s.Require().Equal("4001", gjson.Get(string(resp), "result.token.amount").String()) - s.Require().Equal("3000", gjson.Get(string(resp), "result.liquidity.amount").String()) + s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(resp, queryPoolResponse)) + + s.Require().Equal("2252", queryPool.Pool.Standard.Amount.String()) + s.Require().Equal("4001", queryPool.Pool.Token.Amount.String()) + s.Require().Equal("3000", queryPool.Pool.Lpt.Amount.String()) // test buy order msgBuyOrder := &coinswaptypes.MsgSwapOrder{ @@ -359,12 +365,14 @@ func (s *IntegrationTestSuite) TestCoinswap() { s.Require().Equal("399983930", coins.AmountOf(sdk.DefaultBondDenom).String()) s.Require().Equal("3000", coins.AmountOf(lptDenom).String()) - url = fmt.Sprintf("%s/coinswap/liquidities/%s", baseURL, lptDenom) + url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) resp, err = rest.GetRequest(url) s.Require().NoError(err) - s.Require().Equal("3005", gjson.Get(string(resp), "result.standard.amount").String()) - s.Require().Equal("3001", gjson.Get(string(resp), "result.token.amount").String()) - s.Require().Equal("3000", gjson.Get(string(resp), "result.liquidity.amount").String()) + s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(resp, queryPoolResponse)) + + s.Require().Equal("3005", queryPool.Pool.Standard.Amount.String()) + s.Require().Equal("3001", queryPool.Pool.Token.Amount.String()) + s.Require().Equal("3000", queryPool.Pool.Lpt.Amount.String()) // Test remove liquidity (remove part) msgRemoveLiquidity := &coinswaptypes.MsgRemoveLiquidity{ @@ -416,12 +424,14 @@ func (s *IntegrationTestSuite) TestCoinswap() { s.Require().Equal("399985923", coins.AmountOf(sdk.DefaultBondDenom).String()) s.Require().Equal("1000", coins.AmountOf(lptDenom).String()) - url = fmt.Sprintf("%s/coinswap/liquidities/%s", baseURL, lptDenom) + url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) resp, err = rest.GetRequest(url) s.Require().NoError(err) - s.Require().Equal("1002", gjson.Get(string(resp), "result.standard.amount").String()) - s.Require().Equal("1001", gjson.Get(string(resp), "result.token.amount").String()) - s.Require().Equal("1000", gjson.Get(string(resp), "result.liquidity.amount").String()) + s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(resp, queryPoolResponse)) + + s.Require().Equal("1002", queryPool.Pool.Standard.Amount.String()) + s.Require().Equal("1001", queryPool.Pool.Token.Amount.String()) + s.Require().Equal("1000", queryPool.Pool.Lpt.Amount.String()) // Test remove liquidity (remove all) msgRemoveLiquidity = &coinswaptypes.MsgRemoveLiquidity{ @@ -473,10 +483,21 @@ func (s *IntegrationTestSuite) TestCoinswap() { s.Require().Equal("399986915", coins.AmountOf(sdk.DefaultBondDenom).String()) s.Require().Equal("0", coins.AmountOf(lptDenom).String()) - url = fmt.Sprintf("%s/coinswap/liquidities/%s", baseURL, lptDenom) + url = fmt.Sprintf("%s/irismod/coinswap/pools/%s", baseURL, lptDenom) resp, err = rest.GetRequest(url) s.Require().NoError(err) - s.Require().Equal("0", gjson.Get(string(resp), "result.standard.amount").String()) - s.Require().Equal("0", gjson.Get(string(resp), "result.token.amount").String()) - s.Require().Equal("0", gjson.Get(string(resp), "result.liquidity.amount").String()) + s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(resp, queryPoolResponse)) + + s.Require().Equal("0", queryPool.Pool.Standard.Amount.String()) + s.Require().Equal("0", queryPool.Pool.Token.Amount.String()) + s.Require().Equal("0", queryPool.Pool.Lpt.Amount.String()) + + queryPoolsResponse := proto.Message(&coinswaptypes.QueryPoolsResponse{}) + url = fmt.Sprintf("%s/irismod/coinswap/pools", baseURL) + resp, err = rest.GetRequest(url) + s.Require().NoError(err) + s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(resp, queryPoolsResponse)) + + queryPools := queryPoolsResponse.(*coinswaptypes.QueryPoolsResponse) + s.Require().Len(queryPools.Pools, 1) } diff --git a/modules/coinswap/client/rest/query.go b/modules/coinswap/client/rest/query.go index 98988770..13a69943 100644 --- a/modules/coinswap/client/rest/query.go +++ b/modules/coinswap/client/rest/query.go @@ -13,12 +13,12 @@ import ( ) func registerQueryRoutes(cliCtx client.Context, r *mux.Router) { - // query liquidity - r.HandleFunc(fmt.Sprintf("/%s/liquidities/{%s}", types.ModuleName, RestPoolID), queryLiquidityHandlerFn(cliCtx)).Methods("GET") + // query pool + r.HandleFunc(fmt.Sprintf("/%s/pools/{%s}", types.ModuleName, RestPoolID), queryPoolsHandlerFn(cliCtx)).Methods("GET") } // HTTP request handler to query liquidity information. -func queryLiquidityHandlerFn(cliCtx client.Context) http.HandlerFunc { +func queryPoolsHandlerFn(cliCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) denom := vars[RestPoolID] @@ -28,8 +28,8 @@ func queryLiquidityHandlerFn(cliCtx client.Context) http.HandlerFunc { return } - params := types.QueryLiquidityParams{ - Denom: denom, + params := types.QueryPoolParams{ + LptDenom: denom, } bz, err := cliCtx.LegacyAmino.MarshalJSON(params) @@ -38,7 +38,7 @@ func queryLiquidityHandlerFn(cliCtx client.Context) http.HandlerFunc { return } - route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryLiquidity) + route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryPool) res, height, err := cliCtx.QueryWithData(route, bz) if err != nil { rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) diff --git a/modules/coinswap/keeper/grpc_query.go b/modules/coinswap/keeper/grpc_query.go index f4bcf483..bb784cd0 100644 --- a/modules/coinswap/keeper/grpc_query.go +++ b/modules/coinswap/keeper/grpc_query.go @@ -6,43 +6,87 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" "github.com/irisnet/irismod/modules/coinswap/types" ) var _ types.QueryServer = Keeper{} -// Liquidity returns the liquidity pool information of the denom -func (k Keeper) Liquidity(c context.Context, req *types.QueryLiquidityRequest) (*types.QueryLiquidityResponse, error) { +// Pool returns the liquidity pool information of the denom +func (k Keeper) Pool(c context.Context, req *types.QueryPoolRequest) (*types.QueryPoolResponse, error) { if req == nil { return nil, status.Errorf(codes.InvalidArgument, "empty request") } ctx := sdk.UnwrapSDKContext(c) - pool, exists := k.GetPoolByLptDenom(ctx, req.Denom) + pool, exists := k.GetPoolByLptDenom(ctx, req.LptDenom) if !exists { - return nil, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", req.Denom) + return nil, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", req.LptDenom) } - standardDenom := k.GetStandardDenom(ctx) - reservePool, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom) + balances, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom) if err != nil { return nil, err } - standard := sdk.NewCoin(standardDenom, reservePool.AmountOf(standardDenom)) - token := sdk.NewCoin(pool.CounterpartyDenom, reservePool.AmountOf(pool.CounterpartyDenom)) - liquidity := sdk.NewCoin(pool.LptDenom, k.bk.GetSupply(ctx).GetTotal().AmountOf(pool.LptDenom)) - - swapParams := k.GetParams(ctx) - fee := swapParams.Fee.String() - res := types.QueryLiquidityResponse{ - Standard: standard, - Token: token, - Liquidity: liquidity, - Fee: fee, + supply := k.bk.GetSupply(ctx) + standard := sdk.NewCoin(pool.StandardDenom, balances.AmountOf(pool.StandardDenom)) + token := sdk.NewCoin(pool.CounterpartyDenom, balances.AmountOf(pool.CounterpartyDenom)) + liquidity := sdk.NewCoin(pool.LptDenom, supply.GetTotal().AmountOf(pool.LptDenom)) + params := k.GetParams(ctx) + res := types.QueryPoolResponse{ + Pool: types.PoolInfo{ + Id: pool.Id, + EscrowAddress: pool.EscrowAddress, + Standard: standard, + Token: token, + Lpt: liquidity, + Fee: params.Fee.String(), + }, } return &res, nil } + +func (k Keeper) Pools(c context.Context, req *types.QueryPoolsRequest) (*types.QueryPoolsResponse, error) { + if req == nil { + return nil, status.Errorf(codes.InvalidArgument, "empty request") + } + ctx := sdk.UnwrapSDKContext(c) + supply := k.bk.GetSupply(ctx).GetTotal() + params := k.GetParams(ctx) + + var pools []types.PoolInfo + + store := ctx.KVStore(k.storeKey) + nftStore := prefix.NewStore(store, []byte(types.KeyPool)) + pageRes, err := query.Paginate(nftStore, req.Pagination, func(key []byte, value []byte) error { + var pool types.Pool + k.cdc.MustUnmarshalBinaryBare(value, &pool) + + balances, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom) + if err != nil { + return err + } + + pools = append(pools, types.PoolInfo{ + Id: pool.Id, + EscrowAddress: pool.EscrowAddress, + Standard: sdk.NewCoin(pool.StandardDenom, balances.AmountOf(pool.StandardDenom)), + Token: sdk.NewCoin(pool.CounterpartyDenom, balances.AmountOf(pool.CounterpartyDenom)), + Lpt: sdk.NewCoin(pool.LptDenom, supply.AmountOf(pool.LptDenom)), + Fee: params.Fee.String(), + }) + return nil + }) + if err != nil { + return nil, err + } + return &types.QueryPoolsResponse{ + Pagination: pageRes, + Pools: pools, + }, nil +} diff --git a/modules/coinswap/keeper/querier.go b/modules/coinswap/keeper/querier.go index 56616c7a..a00cd4fb 100644 --- a/modules/coinswap/keeper/querier.go +++ b/modules/coinswap/keeper/querier.go @@ -14,48 +14,30 @@ import ( func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { return func(ctx sdk.Context, path []string, req abci.RequestQuery) (res []byte, err error) { switch path[0] { - case types.QueryLiquidity: - return queryLiquidity(ctx, req, k, legacyQuerierCdc) + case types.QueryPool: + return queryPool(ctx, req, k, legacyQuerierCdc) default: return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0]) } } } -// queryLiquidity returns the total liquidity available for the provided denomination +// queryPool returns the total liquidity available for the provided denomination // upon success or an error if the query fails. -func queryLiquidity(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - var params types.QueryLiquidityParams +func queryPool(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + var params types.QueryPoolParams if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) } - pool, exists := k.GetPoolByLptDenom(ctx, params.Denom) - if !exists { - return nil, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", params.Denom) - } - - standardDenom := k.GetStandardDenom(ctx) - reservePool, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom) + c := sdk.WrapSDKContext(ctx) + response, err := k.Pool(c, &types.QueryPoolRequest{LptDenom: params.LptDenom}) if err != nil { return nil, err } - standard := sdk.NewCoin(standardDenom, reservePool.AmountOf(standardDenom)) - token := sdk.NewCoin(pool.CounterpartyDenom, reservePool.AmountOf(pool.CounterpartyDenom)) - liquidity := sdk.NewCoin(pool.LptDenom, k.bk.GetSupply(ctx).GetTotal().AmountOf(pool.LptDenom)) - - swapParams := k.GetParams(ctx) - fee := swapParams.Fee.String() - res := types.QueryLiquidityResponse{ - Standard: standard, - Token: token, - Liquidity: liquidity, - Fee: fee, - } - - bz, errRes := codec.MarshalJSONIndent(legacyQuerierCdc, res) + bz, errRes := codec.MarshalJSONIndent(legacyQuerierCdc, response) if errRes != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) } diff --git a/modules/coinswap/keeper/querier_test.go b/modules/coinswap/keeper/querier_test.go index b19a6577..8a8af6b0 100644 --- a/modules/coinswap/keeper/querier_test.go +++ b/modules/coinswap/keeper/querier_test.go @@ -41,23 +41,23 @@ func (suite *TestSuite) TestNewQuerier() { // test queryLiquidity - bz, errRes := legacyAmino.MarshalJSON(types.QueryLiquidityParams{Denom: lptCoin.Denom}) + bz, errRes := legacyAmino.MarshalJSON(types.QueryPoolParams{LptDenom: lptCoin.Denom}) suite.NoError(errRes) - req.Path = fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryLiquidity) + req.Path = fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryPool) req.Data = bz - res, err = querier(suite.ctx, []string{types.QueryLiquidity}, req) + res, err = querier(suite.ctx, []string{types.QueryPool}, req) suite.NoError(err) - var respone types.QueryLiquidityResponse + var respone types.QueryPoolResponse errRes = suite.app.LegacyAmino().UnmarshalJSON(res, &respone) suite.NoError(errRes) standard := sdk.NewCoin(denomStandard, standardAmt) token := sdk.NewCoin(denomBTC, btcAmt) liquidity := sdk.NewCoin(lptCoin.Denom, standardAmt) - suite.Equal(standard, respone.Standard) - suite.Equal(token, respone.Token) - suite.Equal(liquidity, respone.Liquidity) - suite.Equal(suite.app.CoinswapKeeper.GetParams(suite.ctx).Fee.String(), respone.Fee) + suite.Equal(standard, respone.Pool.Standard) + suite.Equal(token, respone.Pool.Token) + suite.Equal(liquidity, respone.Pool.Lpt) + suite.Equal(suite.app.CoinswapKeeper.GetParams(suite.ctx).Fee.String(), respone.Pool.Fee) } diff --git a/modules/coinswap/types/querier.go b/modules/coinswap/types/querier.go index 6381161d..501ed64c 100644 --- a/modules/coinswap/types/querier.go +++ b/modules/coinswap/types/querier.go @@ -1,11 +1,13 @@ package types const ( - // QueryLiquidity is the liquidity query endpoint supported by the coinswap querier - QueryLiquidity = "liquidity" + // QueryPool is the liquidity query endpoint supported by the coinswap querier + QueryPool = "pool" + // QueryPools is the liquidity query endpoint supported by the coinswap querier + QueryPools = "pools" ) -// QueryLiquidityParams is the query parameters for 'custom/swap/liquidity' -type QueryLiquidityParams struct { - Denom string `json:"denom" yaml:"denom"` // same as uniDenom +// QueryPoolParams is the query parameters for 'custom/swap/liquidity' +type QueryPoolParams struct { + LptDenom string `json:"lpt-denom" yaml:"lpt-denom"` // same as uniDenom } diff --git a/modules/coinswap/types/query.pb.go b/modules/coinswap/types/query.pb.go index dce2b288..761a4d3b 100644 --- a/modules/coinswap/types/query.pb.go +++ b/modules/coinswap/types/query.pb.go @@ -7,6 +7,7 @@ import ( context "context" fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" + query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" @@ -30,23 +31,23 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// QueryLiquidityRequest is request type for the Query/Liquidity RPC method -type QueryLiquidityRequest struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` +// QueryPoolRequest is request type for the Query/Pool RPC method +type QueryPoolRequest struct { + LptDenom string `protobuf:"bytes,1,opt,name=lpt_denom,json=lptDenom,proto3" json:"lpt_denom,omitempty"` } -func (m *QueryLiquidityRequest) Reset() { *m = QueryLiquidityRequest{} } -func (m *QueryLiquidityRequest) String() string { return proto.CompactTextString(m) } -func (*QueryLiquidityRequest) ProtoMessage() {} -func (*QueryLiquidityRequest) Descriptor() ([]byte, []int) { +func (m *QueryPoolRequest) Reset() { *m = QueryPoolRequest{} } +func (m *QueryPoolRequest) String() string { return proto.CompactTextString(m) } +func (*QueryPoolRequest) ProtoMessage() {} +func (*QueryPoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor_2cabf8423404f12f, []int{0} } -func (m *QueryLiquidityRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryPoolRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryLiquidityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryPoolRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryLiquidityRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryPoolRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -56,45 +57,42 @@ func (m *QueryLiquidityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byt return b[:n], nil } } -func (m *QueryLiquidityRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryLiquidityRequest.Merge(m, src) +func (m *QueryPoolRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPoolRequest.Merge(m, src) } -func (m *QueryLiquidityRequest) XXX_Size() int { +func (m *QueryPoolRequest) XXX_Size() int { return m.Size() } -func (m *QueryLiquidityRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryLiquidityRequest.DiscardUnknown(m) +func (m *QueryPoolRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPoolRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryLiquidityRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryPoolRequest proto.InternalMessageInfo -func (m *QueryLiquidityRequest) GetDenom() string { +func (m *QueryPoolRequest) GetLptDenom() string { if m != nil { - return m.Denom + return m.LptDenom } return "" } -// QueryLiquidityResponse is response type for the Query/Liquidity RPC method -type QueryLiquidityResponse struct { - Standard types.Coin `protobuf:"bytes,1,opt,name=standard,proto3" json:"standard"` - Token types.Coin `protobuf:"bytes,2,opt,name=token,proto3" json:"token"` - Liquidity types.Coin `protobuf:"bytes,3,opt,name=liquidity,proto3" json:"liquidity"` - Fee string `protobuf:"bytes,4,opt,name=fee,proto3" json:"fee,omitempty"` +// QueryPoolResponse is response type for the Query/Pool RPC method +type QueryPoolResponse struct { + Pool PoolInfo `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool"` } -func (m *QueryLiquidityResponse) Reset() { *m = QueryLiquidityResponse{} } -func (m *QueryLiquidityResponse) String() string { return proto.CompactTextString(m) } -func (*QueryLiquidityResponse) ProtoMessage() {} -func (*QueryLiquidityResponse) Descriptor() ([]byte, []int) { +func (m *QueryPoolResponse) Reset() { *m = QueryPoolResponse{} } +func (m *QueryPoolResponse) String() string { return proto.CompactTextString(m) } +func (*QueryPoolResponse) ProtoMessage() {} +func (*QueryPoolResponse) Descriptor() ([]byte, []int) { return fileDescriptor_2cabf8423404f12f, []int{1} } -func (m *QueryLiquidityResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryPoolResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryLiquidityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryPoolResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryLiquidityResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryPoolResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -104,40 +102,207 @@ func (m *QueryLiquidityResponse) XXX_Marshal(b []byte, deterministic bool) ([]by return b[:n], nil } } -func (m *QueryLiquidityResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryLiquidityResponse.Merge(m, src) +func (m *QueryPoolResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPoolResponse.Merge(m, src) } -func (m *QueryLiquidityResponse) XXX_Size() int { +func (m *QueryPoolResponse) XXX_Size() int { return m.Size() } -func (m *QueryLiquidityResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryLiquidityResponse.DiscardUnknown(m) +func (m *QueryPoolResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPoolResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryLiquidityResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryPoolResponse proto.InternalMessageInfo -func (m *QueryLiquidityResponse) GetStandard() types.Coin { +func (m *QueryPoolResponse) GetPool() PoolInfo { + if m != nil { + return m.Pool + } + return PoolInfo{} +} + +// QueryPoolsRequest is request type for the Query/Pools RPC method +type QueryPoolsRequest struct { + // pagination defines an optional pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryPoolsRequest) Reset() { *m = QueryPoolsRequest{} } +func (m *QueryPoolsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryPoolsRequest) ProtoMessage() {} +func (*QueryPoolsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_2cabf8423404f12f, []int{2} +} +func (m *QueryPoolsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPoolsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPoolsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryPoolsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPoolsRequest.Merge(m, src) +} +func (m *QueryPoolsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryPoolsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPoolsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryPoolsRequest proto.InternalMessageInfo + +func (m *QueryPoolsRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryPoolsResponse is response type for the Query/Pools RPC method +type QueryPoolsResponse struct { + Pools []PoolInfo `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools"` + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryPoolsResponse) Reset() { *m = QueryPoolsResponse{} } +func (m *QueryPoolsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryPoolsResponse) ProtoMessage() {} +func (*QueryPoolsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2cabf8423404f12f, []int{3} +} +func (m *QueryPoolsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPoolsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPoolsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryPoolsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPoolsResponse.Merge(m, src) +} +func (m *QueryPoolsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryPoolsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPoolsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryPoolsResponse proto.InternalMessageInfo + +func (m *QueryPoolsResponse) GetPools() []PoolInfo { + if m != nil { + return m.Pools + } + return nil +} + +func (m *QueryPoolsResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +type PoolInfo struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // escrow account for deposit tokens + EscrowAddress string `protobuf:"bytes,2,opt,name=escrow_address,json=escrowAddress,proto3" json:"escrow_address,omitempty"` + // main token balance + Standard types.Coin `protobuf:"bytes,3,opt,name=standard,proto3" json:"standard"` + // counterparty token balance + Token types.Coin `protobuf:"bytes,4,opt,name=token,proto3" json:"token"` + // liquidity token balance + Lpt types.Coin `protobuf:"bytes,5,opt,name=lpt,proto3" json:"lpt"` + // liquidity pool fee + Fee string `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"` +} + +func (m *PoolInfo) Reset() { *m = PoolInfo{} } +func (m *PoolInfo) String() string { return proto.CompactTextString(m) } +func (*PoolInfo) ProtoMessage() {} +func (*PoolInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_2cabf8423404f12f, []int{4} +} +func (m *PoolInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PoolInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PoolInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PoolInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_PoolInfo.Merge(m, src) +} +func (m *PoolInfo) XXX_Size() int { + return m.Size() +} +func (m *PoolInfo) XXX_DiscardUnknown() { + xxx_messageInfo_PoolInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_PoolInfo proto.InternalMessageInfo + +func (m *PoolInfo) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *PoolInfo) GetEscrowAddress() string { + if m != nil { + return m.EscrowAddress + } + return "" +} + +func (m *PoolInfo) GetStandard() types.Coin { if m != nil { return m.Standard } return types.Coin{} } -func (m *QueryLiquidityResponse) GetToken() types.Coin { +func (m *PoolInfo) GetToken() types.Coin { if m != nil { return m.Token } return types.Coin{} } -func (m *QueryLiquidityResponse) GetLiquidity() types.Coin { +func (m *PoolInfo) GetLpt() types.Coin { if m != nil { - return m.Liquidity + return m.Lpt } return types.Coin{} } -func (m *QueryLiquidityResponse) GetFee() string { +func (m *PoolInfo) GetFee() string { if m != nil { return m.Fee } @@ -145,38 +310,51 @@ func (m *QueryLiquidityResponse) GetFee() string { } func init() { - proto.RegisterType((*QueryLiquidityRequest)(nil), "irismod.coinswap.QueryLiquidityRequest") - proto.RegisterType((*QueryLiquidityResponse)(nil), "irismod.coinswap.QueryLiquidityResponse") + proto.RegisterType((*QueryPoolRequest)(nil), "irismod.coinswap.QueryPoolRequest") + proto.RegisterType((*QueryPoolResponse)(nil), "irismod.coinswap.QueryPoolResponse") + proto.RegisterType((*QueryPoolsRequest)(nil), "irismod.coinswap.QueryPoolsRequest") + proto.RegisterType((*QueryPoolsResponse)(nil), "irismod.coinswap.QueryPoolsResponse") + proto.RegisterType((*PoolInfo)(nil), "irismod.coinswap.PoolInfo") } func init() { proto.RegisterFile("coinswap/query.proto", fileDescriptor_2cabf8423404f12f) } var fileDescriptor_2cabf8423404f12f = []byte{ - // 373 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xbf, 0x4b, 0x2b, 0x41, - 0x10, 0xc7, 0x6f, 0xf3, 0xe3, 0xf1, 0xb2, 0xaf, 0x09, 0x4b, 0x9e, 0x9c, 0x41, 0x4e, 0x09, 0x48, - 0xd2, 0x64, 0x97, 0x44, 0xac, 0xc4, 0x26, 0x96, 0xda, 0x98, 0xd2, 0x6e, 0x2f, 0xb7, 0x9e, 0x8b, - 0xb9, 0x9d, 0xcb, 0xed, 0x9e, 0x12, 0xc4, 0xc6, 0x5e, 0x10, 0x2c, 0xfc, 0x97, 0x52, 0x06, 0x6c, - 0x6c, 0x14, 0x49, 0xfc, 0x43, 0xe4, 0xee, 0x92, 0x0b, 0x04, 0xc1, 0x74, 0xb3, 0x3b, 0xf3, 0x99, - 0xfd, 0xce, 0x77, 0x16, 0xd7, 0x06, 0x20, 0x95, 0xbe, 0xe5, 0x21, 0x1b, 0xc5, 0x22, 0x1a, 0xd3, - 0x30, 0x02, 0x03, 0xa4, 0x2a, 0x23, 0xa9, 0x03, 0xf0, 0xe8, 0x32, 0x5b, 0x77, 0x06, 0xa0, 0x03, - 0xd0, 0xcc, 0xe5, 0x5a, 0xb0, 0x9b, 0x8e, 0x2b, 0x0c, 0xef, 0xb0, 0x24, 0x9b, 0x11, 0xf5, 0x9a, - 0x0f, 0x3e, 0xa4, 0x21, 0x4b, 0xa2, 0xc5, 0xed, 0x8e, 0x0f, 0xe0, 0x0f, 0x05, 0xe3, 0xa1, 0x64, - 0x5c, 0x29, 0x30, 0xdc, 0x48, 0x50, 0x3a, 0xcb, 0x36, 0xda, 0xf8, 0xff, 0x79, 0xf2, 0xe8, 0x99, - 0x1c, 0xc5, 0xd2, 0x93, 0x66, 0xdc, 0x17, 0xa3, 0x58, 0x68, 0x43, 0x6a, 0xb8, 0xec, 0x09, 0x05, - 0x81, 0x8d, 0xf6, 0x50, 0xab, 0xd2, 0xcf, 0x0e, 0x8d, 0x77, 0x84, 0xb7, 0xd6, 0xeb, 0x75, 0x08, - 0x4a, 0x0b, 0x72, 0x84, 0xff, 0x6a, 0xc3, 0x95, 0xc7, 0x23, 0x2f, 0x65, 0xfe, 0x75, 0xb7, 0x69, - 0x26, 0x98, 0x26, 0x82, 0xe9, 0x42, 0x30, 0x3d, 0x01, 0xa9, 0x7a, 0xa5, 0xc9, 0xc7, 0xae, 0xd5, - 0xcf, 0x01, 0x72, 0x88, 0xcb, 0x06, 0xae, 0x85, 0xb2, 0x0b, 0x9b, 0x91, 0x59, 0x35, 0x39, 0xc6, - 0x95, 0xe1, 0x52, 0x88, 0x5d, 0xdc, 0x0c, 0x5d, 0x11, 0xa4, 0x8a, 0x8b, 0x97, 0x42, 0xd8, 0xa5, - 0x74, 0xc2, 0x24, 0xec, 0xbe, 0x20, 0x5c, 0x4e, 0xe7, 0x23, 0x8f, 0x08, 0x57, 0xf2, 0x21, 0x49, - 0x93, 0xae, 0x6f, 0x83, 0xfe, 0x68, 0x5b, 0xbd, 0xf5, 0x7b, 0x61, 0xe6, 0x57, 0xa3, 0xfd, 0xf0, - 0xfa, 0xf5, 0x5c, 0x68, 0x92, 0x7d, 0xb6, 0x20, 0x58, 0xfe, 0x0d, 0x96, 0x0a, 0xa5, 0xd0, 0xec, - 0x2e, 0x35, 0xfe, 0xbe, 0x77, 0x3a, 0x99, 0x39, 0x68, 0x3a, 0x73, 0xd0, 0xe7, 0xcc, 0x41, 0x4f, - 0x73, 0xc7, 0x9a, 0xce, 0x1d, 0xeb, 0x6d, 0xee, 0x58, 0x17, 0x1d, 0x5f, 0x9a, 0xab, 0xd8, 0xa5, - 0x03, 0x08, 0xd2, 0x56, 0x4a, 0x98, 0xbc, 0x65, 0x00, 0x5e, 0x3c, 0x14, 0x7a, 0xd5, 0xda, 0x8c, - 0x43, 0xa1, 0xdd, 0x3f, 0xe9, 0xf2, 0x0f, 0xbe, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe4, 0xd7, 0x08, - 0xc5, 0x7a, 0x02, 0x00, 0x00, + // 539 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcb, 0x6e, 0x13, 0x3f, + 0x14, 0xc6, 0x33, 0xb9, 0x54, 0x89, 0xff, 0xfa, 0x57, 0xc1, 0xaa, 0xc4, 0x34, 0xa0, 0x69, 0x35, + 0xa5, 0x80, 0x40, 0x1a, 0x2b, 0xe5, 0xb2, 0x61, 0x45, 0x41, 0xa0, 0x8a, 0x4d, 0xc9, 0x12, 0x16, + 0x95, 0x93, 0x71, 0x07, 0x8b, 0x89, 0x8f, 0x3b, 0x76, 0xa8, 0x2a, 0x60, 0xc3, 0x13, 0x20, 0x21, + 0xde, 0xa9, 0xcb, 0x4a, 0x6c, 0x58, 0x21, 0x94, 0xf0, 0x14, 0x5d, 0x21, 0x5f, 0x92, 0x4e, 0x8a, + 0x08, 0xd9, 0x79, 0xec, 0xef, 0xfb, 0xce, 0xef, 0xd8, 0x67, 0xd0, 0xda, 0x00, 0xb8, 0x50, 0xc7, + 0x54, 0x92, 0xa3, 0x11, 0x2b, 0x4e, 0x12, 0x59, 0x80, 0x06, 0xdc, 0xe6, 0x05, 0x57, 0x43, 0x48, + 0x93, 0xe9, 0x69, 0x27, 0x1a, 0x80, 0x1a, 0x82, 0x22, 0x7d, 0xaa, 0x18, 0x79, 0xd7, 0xed, 0x33, + 0x4d, 0xbb, 0xc4, 0x9c, 0x3a, 0x47, 0x67, 0x2d, 0x83, 0x0c, 0xec, 0x92, 0x98, 0x95, 0xdf, 0xbd, + 0x9e, 0x01, 0x64, 0x39, 0x23, 0x54, 0x72, 0x42, 0x85, 0x00, 0x4d, 0x35, 0x07, 0xa1, 0xfc, 0xe9, + 0x9d, 0x72, 0xa6, 0x2d, 0x3f, 0x4b, 0x96, 0x34, 0xe3, 0xc2, 0x8a, 0x9d, 0x36, 0x26, 0xa8, 0xfd, + 0xd2, 0x28, 0xf6, 0x01, 0xf2, 0x1e, 0x3b, 0x1a, 0x31, 0xa5, 0xf1, 0x35, 0xd4, 0xca, 0xa5, 0x3e, + 0x48, 0x99, 0x80, 0x61, 0x18, 0x6c, 0x06, 0xb7, 0x5b, 0xbd, 0x66, 0x2e, 0xf5, 0x53, 0xf3, 0x1d, + 0xef, 0xa1, 0x2b, 0x25, 0x83, 0x92, 0x20, 0x14, 0xc3, 0xf7, 0x51, 0x5d, 0x02, 0xe4, 0x56, 0xfc, + 0xdf, 0x4e, 0x27, 0xb9, 0xdc, 0x66, 0x62, 0xd4, 0x7b, 0xe2, 0x10, 0x76, 0xeb, 0xa7, 0x3f, 0x36, + 0x2a, 0x3d, 0xab, 0x8e, 0x5f, 0x97, 0xa2, 0xd4, 0xb4, 0xf8, 0x33, 0x84, 0x2e, 0x20, 0x7d, 0xe0, + 0xcd, 0xc4, 0x75, 0x94, 0x98, 0x8e, 0x12, 0x77, 0xa1, 0xbe, 0xa3, 0x64, 0x9f, 0x66, 0xcc, 0x7b, + 0x7b, 0x25, 0x67, 0xfc, 0x35, 0x40, 0xb8, 0x9c, 0xee, 0x49, 0x1f, 0xa2, 0x86, 0xa9, 0xad, 0xc2, + 0x60, 0xb3, 0xb6, 0x14, 0xaa, 0x93, 0xe3, 0xe7, 0x73, 0x58, 0x55, 0x8b, 0x75, 0xeb, 0x9f, 0x58, + 0xae, 0xe8, 0x1c, 0xd7, 0x79, 0x80, 0x9a, 0xd3, 0x12, 0x78, 0x15, 0x55, 0x79, 0xea, 0xaf, 0xb8, + 0xca, 0x53, 0xbc, 0x8d, 0x56, 0x99, 0x1a, 0x14, 0x70, 0x7c, 0x40, 0xd3, 0xb4, 0x60, 0x4a, 0xd9, + 0x4a, 0xad, 0xde, 0xff, 0x6e, 0xf7, 0xb1, 0xdb, 0xc4, 0x8f, 0x50, 0x53, 0x69, 0x2a, 0x52, 0x5a, + 0xa4, 0x61, 0xcd, 0xa2, 0xac, 0xcf, 0xa1, 0x4c, 0x21, 0x9e, 0x00, 0x17, 0xbe, 0x8d, 0x99, 0x01, + 0x3f, 0x40, 0x0d, 0x0d, 0x6f, 0x99, 0x08, 0xeb, 0xcb, 0x39, 0x9d, 0x1a, 0x77, 0x51, 0x2d, 0x97, + 0x3a, 0x6c, 0x2c, 0x67, 0x32, 0x5a, 0xdc, 0x46, 0xb5, 0x43, 0xc6, 0xc2, 0x15, 0xdb, 0x82, 0x59, + 0xee, 0x9c, 0x07, 0xa8, 0x61, 0x1f, 0x05, 0x7f, 0x40, 0x75, 0x73, 0x0b, 0x38, 0xfe, 0xf3, 0x01, + 0x2e, 0xcf, 0x63, 0x67, 0x6b, 0xa1, 0xc6, 0xdd, 0x71, 0x7c, 0xf7, 0xd3, 0xb7, 0x5f, 0x5f, 0xaa, + 0xdb, 0x78, 0x8b, 0x78, 0x31, 0x99, 0xfd, 0x81, 0xf6, 0x05, 0xc9, 0xfb, 0xd9, 0x4c, 0x7f, 0xc4, + 0x0a, 0x35, 0xec, 0x58, 0xe0, 0x45, 0xd1, 0xd3, 0x91, 0xec, 0xdc, 0x58, 0x2c, 0xf2, 0x00, 0x1b, + 0x16, 0x60, 0x1d, 0x5f, 0xfd, 0x0b, 0xc0, 0xee, 0x8b, 0xd3, 0x71, 0x14, 0x9c, 0x8d, 0xa3, 0xe0, + 0xe7, 0x38, 0x0a, 0x3e, 0x4f, 0xa2, 0xca, 0xd9, 0x24, 0xaa, 0x7c, 0x9f, 0x44, 0x95, 0x57, 0xdd, + 0x8c, 0xeb, 0x37, 0xa3, 0x7e, 0x32, 0x80, 0xa1, 0x35, 0x0b, 0xa6, 0x67, 0x21, 0x43, 0x48, 0x47, + 0x39, 0x53, 0x17, 0x61, 0xfa, 0x44, 0x32, 0xd5, 0x5f, 0xb1, 0xbf, 0xef, 0xbd, 0xdf, 0x01, 0x00, + 0x00, 0xff, 0xff, 0x71, 0xd8, 0x60, 0x92, 0x68, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -191,8 +369,11 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { - // Liquidity returns the total liquidity available for the provided denomination - Liquidity(ctx context.Context, in *QueryLiquidityRequest, opts ...grpc.CallOption) (*QueryLiquidityResponse, error) + // Pool returns the liquidity pool for the provided + // lpt_denom + Pool(ctx context.Context, in *QueryPoolRequest, opts ...grpc.CallOption) (*QueryPoolResponse, error) + // Pools returns all the liquidity pools available + Pools(ctx context.Context, in *QueryPoolsRequest, opts ...grpc.CallOption) (*QueryPoolsResponse, error) } type queryClient struct { @@ -203,9 +384,18 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } -func (c *queryClient) Liquidity(ctx context.Context, in *QueryLiquidityRequest, opts ...grpc.CallOption) (*QueryLiquidityResponse, error) { - out := new(QueryLiquidityResponse) - err := c.cc.Invoke(ctx, "/irismod.coinswap.Query/Liquidity", in, out, opts...) +func (c *queryClient) Pool(ctx context.Context, in *QueryPoolRequest, opts ...grpc.CallOption) (*QueryPoolResponse, error) { + out := new(QueryPoolResponse) + err := c.cc.Invoke(ctx, "/irismod.coinswap.Query/Pool", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Pools(ctx context.Context, in *QueryPoolsRequest, opts ...grpc.CallOption) (*QueryPoolsResponse, error) { + out := new(QueryPoolsResponse) + err := c.cc.Invoke(ctx, "/irismod.coinswap.Query/Pools", in, out, opts...) if err != nil { return nil, err } @@ -214,36 +404,60 @@ func (c *queryClient) Liquidity(ctx context.Context, in *QueryLiquidityRequest, // QueryServer is the server API for Query service. type QueryServer interface { - // Liquidity returns the total liquidity available for the provided denomination - Liquidity(context.Context, *QueryLiquidityRequest) (*QueryLiquidityResponse, error) + // Pool returns the liquidity pool for the provided + // lpt_denom + Pool(context.Context, *QueryPoolRequest) (*QueryPoolResponse, error) + // Pools returns all the liquidity pools available + Pools(context.Context, *QueryPoolsRequest) (*QueryPoolsResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. type UnimplementedQueryServer struct { } -func (*UnimplementedQueryServer) Liquidity(ctx context.Context, req *QueryLiquidityRequest) (*QueryLiquidityResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Liquidity not implemented") +func (*UnimplementedQueryServer) Pool(ctx context.Context, req *QueryPoolRequest) (*QueryPoolResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Pool not implemented") +} +func (*UnimplementedQueryServer) Pools(ctx context.Context, req *QueryPoolsRequest) (*QueryPoolsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Pools not implemented") } func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } -func _Query_Liquidity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryLiquidityRequest) +func _Query_Pool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPoolRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Pool(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.coinswap.Query/Pool", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Pool(ctx, req.(*QueryPoolRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Pools_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPoolsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).Liquidity(ctx, in) + return srv.(QueryServer).Pools(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/irismod.coinswap.Query/Liquidity", + FullMethod: "/irismod.coinswap.Query/Pools", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Liquidity(ctx, req.(*QueryLiquidityRequest)) + return srv.(QueryServer).Pools(ctx, req.(*QueryPoolsRequest)) } return interceptor(ctx, in, info, handler) } @@ -253,15 +467,82 @@ var _Query_serviceDesc = grpc.ServiceDesc{ HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "Liquidity", - Handler: _Query_Liquidity_Handler, + MethodName: "Pool", + Handler: _Query_Pool_Handler, + }, + { + MethodName: "Pools", + Handler: _Query_Pools_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "coinswap/query.proto", } -func (m *QueryLiquidityRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryPoolRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPoolRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPoolRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.LptDenom) > 0 { + i -= len(m.LptDenom) + copy(dAtA[i:], m.LptDenom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.LptDenom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPoolResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPoolResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryPoolsRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -271,27 +552,81 @@ func (m *QueryLiquidityRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryLiquidityRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryPoolsRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryLiquidityRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryPoolsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *QueryLiquidityResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryPoolsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPoolsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPoolsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Pools) > 0 { + for iNdEx := len(m.Pools) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Pools[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *PoolInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -301,12 +636,12 @@ func (m *QueryLiquidityResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryLiquidityResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *PoolInfo) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryLiquidityResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *PoolInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -316,10 +651,10 @@ func (m *QueryLiquidityResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) copy(dAtA[i:], m.Fee) i = encodeVarintQuery(dAtA, i, uint64(len(m.Fee))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x32 } { - size, err := m.Liquidity.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Lpt.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -327,7 +662,7 @@ func (m *QueryLiquidityResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintQuery(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x2a { size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -337,7 +672,7 @@ func (m *QueryLiquidityResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintQuery(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 + dAtA[i] = 0x22 { size, err := m.Standard.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -347,7 +682,21 @@ func (m *QueryLiquidityResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintQuery(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x1a + if len(m.EscrowAddress) > 0 { + i -= len(m.EscrowAddress) + copy(dAtA[i:], m.EscrowAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.EscrowAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -362,30 +711,81 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *QueryLiquidityRequest) Size() (n int) { +func (m *QueryPoolRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Denom) + l = len(m.LptDenom) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryLiquidityResponse) Size() (n int) { +func (m *QueryPoolResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Pool.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryPoolsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPoolsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Pools) > 0 { + for _, e := range m.Pools { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *PoolInfo) Size() (n int) { if m == nil { return 0 } var l int _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.EscrowAddress) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } l = m.Standard.Size() n += 1 + l + sovQuery(uint64(l)) l = m.Token.Size() n += 1 + l + sovQuery(uint64(l)) - l = m.Liquidity.Size() + l = m.Lpt.Size() n += 1 + l + sovQuery(uint64(l)) l = len(m.Fee) if l > 0 { @@ -400,7 +800,7 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *QueryLiquidityRequest) Unmarshal(dAtA []byte) error { +func (m *QueryPoolRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -423,15 +823,15 @@ func (m *QueryLiquidityRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryLiquidityRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPoolRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryLiquidityRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPoolRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LptDenom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -459,7 +859,7 @@ func (m *QueryLiquidityRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Denom = string(dAtA[iNdEx:postIndex]) + m.LptDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -467,10 +867,7 @@ func (m *QueryLiquidityRequest) Unmarshal(dAtA []byte) error { if err != nil { return err } - if skippy < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } if (iNdEx + skippy) > l { @@ -485,7 +882,7 @@ func (m *QueryLiquidityRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryLiquidityResponse) Unmarshal(dAtA []byte) error { +func (m *QueryPoolResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -508,15 +905,15 @@ func (m *QueryLiquidityResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryLiquidityResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPoolResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryLiquidityResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPoolResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Standard", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -543,17 +940,67 @@ func (m *QueryLiquidityResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Standard.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryPoolsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryPoolsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryPoolsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { return ErrIntOverflowQuery } if iNdEx >= l { @@ -576,13 +1023,250 @@ func (m *QueryLiquidityResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryPoolsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryPoolsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryPoolsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pools", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pools = append(m.Pools, PoolInfo{}) + if err := m.Pools[len(m.Pools)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { return err } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PoolInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PoolInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PoolInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EscrowAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EscrowAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Liquidity", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Standard", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -609,11 +1293,77 @@ func (m *QueryLiquidityResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Liquidity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Standard.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Lpt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Lpt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) } @@ -651,10 +1401,7 @@ func (m *QueryLiquidityResponse) Unmarshal(dAtA []byte) error { if err != nil { return err } - if skippy < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } if (iNdEx + skippy) > l { diff --git a/modules/coinswap/types/query.pb.gw.go b/modules/coinswap/types/query.pb.gw.go index f03bbde3..89e0ef93 100644 --- a/modules/coinswap/types/query.pb.gw.go +++ b/modules/coinswap/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,9 +31,10 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join -func request_Query_Liquidity_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryLiquidityRequest +func request_Query_Pool_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryPoolRequest var metadata runtime.ServerMetadata var ( @@ -42,24 +44,24 @@ func request_Query_Liquidity_0(ctx context.Context, marshaler runtime.Marshaler, _ = err ) - val, ok = pathParams["denom"] + val, ok = pathParams["lpt_denom"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "lpt_denom") } - protoReq.Denom, err = runtime.String(val) + protoReq.LptDenom, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "lpt_denom", err) } - msg, err := client.Liquidity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Pool(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_Liquidity_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryLiquidityRequest +func local_request_Query_Pool_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryPoolRequest var metadata runtime.ServerMetadata var ( @@ -69,18 +71,54 @@ func local_request_Query_Liquidity_0(ctx context.Context, marshaler runtime.Mars _ = err ) - val, ok = pathParams["denom"] + val, ok = pathParams["lpt_denom"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "lpt_denom") } - protoReq.Denom, err = runtime.String(val) + protoReq.LptDenom, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "lpt_denom", err) } - msg, err := server.Liquidity(ctx, &protoReq) + msg, err := server.Pool(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_Pools_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_Pools_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryPoolsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Pools_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Pools(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Pools_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryPoolsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Pools_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.Pools(ctx, &protoReq) return msg, metadata, err } @@ -88,26 +126,52 @@ func local_request_Query_Liquidity_0(ctx context.Context, marshaler runtime.Mars // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - mux.Handle("GET", pattern_Query_Liquidity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_Pool_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_Liquidity_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_Pool_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_Liquidity_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Pool_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Pools_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Pools_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Pools_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -152,7 +216,27 @@ func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // "QueryClient" to call the correct interceptors. func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - mux.Handle("GET", pattern_Query_Liquidity_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_Pool_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Pool_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Pool_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Pools_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -161,14 +245,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_Liquidity_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_Pools_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_Liquidity_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Pools_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -176,9 +260,13 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_Liquidity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"irismod", "coinswap", "liquidities", "denom"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_Pool_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"irismod", "coinswap", "pools", "lpt_denom"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Query_Pools_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"irismod", "coinswap", "pools"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( - forward_Query_Liquidity_0 = runtime.ForwardResponseMessage + forward_Query_Pool_0 = runtime.ForwardResponseMessage + + forward_Query_Pools_0 = runtime.ForwardResponseMessage ) diff --git a/modules/token/types/validation.go b/modules/token/types/validation.go index cd41a63b..72a073b2 100644 --- a/modules/token/types/validation.go +++ b/modules/token/types/validation.go @@ -32,12 +32,15 @@ const ( const ( ReservedPeg = "peg" ReservedIBC = "ibc" + ReservedTIBC = "tibc" ReservedLpt = "lpt" ReservedHTLT = "htlt" ) var ( - keywords = strings.Join([]string{ReservedPeg, ReservedIBC, ReservedLpt, ReservedHTLT}, "|") + keywords = strings.Join([]string{ + ReservedPeg, ReservedIBC, ReservedLpt, ReservedHTLT, ReservedTIBC, + }, "|") regexpKeywordsFmt = fmt.Sprintf("^(%s).*", keywords) regexpKeyword = regexp.MustCompile(regexpKeywordsFmt).MatchString diff --git a/proto/coinswap/query.proto b/proto/coinswap/query.proto index ab6548be..cf00535b 100644 --- a/proto/coinswap/query.proto +++ b/proto/coinswap/query.proto @@ -4,25 +4,54 @@ package irismod.coinswap; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; +import "cosmos/base/query/v1beta1/pagination.proto"; option go_package = "github.com/irisnet/irismod/modules/coinswap/types"; // Query creates service with coinswap as rpc service Query { - // Liquidity returns the total liquidity available for the provided - // denomination - rpc Liquidity(QueryLiquidityRequest) returns (QueryLiquidityResponse) { - option (google.api.http).get = "/irismod/coinswap/liquidities/{denom}"; + // Pool returns the liquidity pool for the provided + // lpt_denom + rpc Pool(QueryPoolRequest) returns (QueryPoolResponse) { + option (google.api.http).get = "/irismod/coinswap/pools/{lpt_denom}"; } + + // Pools returns all the liquidity pools available + rpc Pools(QueryPoolsRequest) returns (QueryPoolsResponse) { + option (google.api.http).get = "/irismod/coinswap/pools"; + } +} + +// QueryPoolRequest is request type for the Query/Pool RPC method +message QueryPoolRequest { string lpt_denom = 1; } + +// QueryPoolResponse is response type for the Query/Pool RPC method +message QueryPoolResponse { + PoolInfo pool = 1 [ (gogoproto.nullable) = false ]; +} + +// QueryPoolsRequest is request type for the Query/Pools RPC method +message QueryPoolsRequest { + // pagination defines an optional pagination for the request. + cosmos.base.query.v1beta1.PageRequest pagination = 1; } -// QueryLiquidityRequest is request type for the Query/Liquidity RPC method -message QueryLiquidityRequest { string denom = 1; } +// QueryPoolsResponse is response type for the Query/Pools RPC method +message QueryPoolsResponse { + repeated PoolInfo pools = 1 [ (gogoproto.nullable) = false ]; + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} -// QueryLiquidityResponse is response type for the Query/Liquidity RPC method -message QueryLiquidityResponse { - cosmos.base.v1beta1.Coin standard = 1 [ (gogoproto.nullable) = false ]; - cosmos.base.v1beta1.Coin token = 2 [ (gogoproto.nullable) = false ]; - cosmos.base.v1beta1.Coin liquidity = 3 [ (gogoproto.nullable) = false ]; - string fee = 4; +message PoolInfo { + string id = 1; + // escrow account for deposit tokens + string escrow_address = 2; + // main token balance + cosmos.base.v1beta1.Coin standard = 3 [ (gogoproto.nullable) = false ]; + // counterparty token balance + cosmos.base.v1beta1.Coin token = 4 [ (gogoproto.nullable) = false ]; + // liquidity token balance + cosmos.base.v1beta1.Coin lpt = 5 [ (gogoproto.nullable) = false ]; + // liquidity pool fee + string fee = 6; } \ No newline at end of file