import { Rpc } from "../../helpers"; import * as _m0 from "protobufjs/minimal"; import { QueryClient, createProtobufRpcClient } from "@cosmjs/stargate"; import { QueryGetClobPairRequest, QueryClobPairResponse, QueryAllClobPairRequest, QueryClobPairAllResponse, MevNodeToNodeCalculationRequest, MevNodeToNodeCalculationResponse, QueryEquityTierLimitConfigurationRequest, QueryEquityTierLimitConfigurationResponse, QueryBlockRateLimitConfigurationRequest, QueryBlockRateLimitConfigurationResponse, QueryLiquidationsConfigurationRequest, QueryLiquidationsConfigurationResponse, QueryStatefulOrderRequest, QueryStatefulOrderResponse, QueryNextClobPairIdRequest, QueryNextClobPairIdResponse, QueryLeverageRequest, QueryLeverageResponse, StreamOrderbookUpdatesRequest, StreamOrderbookUpdatesResponse } from "./query"; /** Query defines the gRPC querier service. */ export interface Query { /** Queries a ClobPair by id. */ clobPair(request: QueryGetClobPairRequest): Promise; /** Queries a list of ClobPair items. */ clobPairAll(request?: QueryAllClobPairRequest): Promise; /** Runs the MEV node <> node calculation with the provided parameters. */ mevNodeToNodeCalculation(request: MevNodeToNodeCalculationRequest): Promise; /** Queries EquityTierLimitConfiguration. */ equityTierLimitConfiguration(request?: QueryEquityTierLimitConfigurationRequest): Promise; /** Queries BlockRateLimitConfiguration. */ blockRateLimitConfiguration(request?: QueryBlockRateLimitConfigurationRequest): Promise; /** Queries LiquidationsConfiguration. */ liquidationsConfiguration(request?: QueryLiquidationsConfigurationRequest): Promise; /** Queries the stateful order for a given order id. */ statefulOrder(request: QueryStatefulOrderRequest): Promise; /** Queries the next clob pair id. */ nextClobPairId(request?: QueryNextClobPairIdRequest): Promise; /** Queries leverage for a subaccount. */ leverage(request: QueryLeverageRequest): Promise; /** * Streams orderbook updates. Updates contain orderbook data * such as order placements, updates, and fills. */ streamOrderbookUpdates(request: StreamOrderbookUpdatesRequest): Promise; } export class QueryClientImpl implements Query { private readonly rpc: Rpc; constructor(rpc: Rpc) { this.rpc = rpc; this.clobPair = this.clobPair.bind(this); this.clobPairAll = this.clobPairAll.bind(this); this.mevNodeToNodeCalculation = this.mevNodeToNodeCalculation.bind(this); this.equityTierLimitConfiguration = this.equityTierLimitConfiguration.bind(this); this.blockRateLimitConfiguration = this.blockRateLimitConfiguration.bind(this); this.liquidationsConfiguration = this.liquidationsConfiguration.bind(this); this.statefulOrder = this.statefulOrder.bind(this); this.nextClobPairId = this.nextClobPairId.bind(this); this.leverage = this.leverage.bind(this); this.streamOrderbookUpdates = this.streamOrderbookUpdates.bind(this); } clobPair(request: QueryGetClobPairRequest): Promise { const data = QueryGetClobPairRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "ClobPair", data); return promise.then(data => QueryClobPairResponse.decode(new _m0.Reader(data))); } clobPairAll(request: QueryAllClobPairRequest = { pagination: undefined }): Promise { const data = QueryAllClobPairRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "ClobPairAll", data); return promise.then(data => QueryClobPairAllResponse.decode(new _m0.Reader(data))); } mevNodeToNodeCalculation(request: MevNodeToNodeCalculationRequest): Promise { const data = MevNodeToNodeCalculationRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "MevNodeToNodeCalculation", data); return promise.then(data => MevNodeToNodeCalculationResponse.decode(new _m0.Reader(data))); } equityTierLimitConfiguration(request: QueryEquityTierLimitConfigurationRequest = {}): Promise { const data = QueryEquityTierLimitConfigurationRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "EquityTierLimitConfiguration", data); return promise.then(data => QueryEquityTierLimitConfigurationResponse.decode(new _m0.Reader(data))); } blockRateLimitConfiguration(request: QueryBlockRateLimitConfigurationRequest = {}): Promise { const data = QueryBlockRateLimitConfigurationRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "BlockRateLimitConfiguration", data); return promise.then(data => QueryBlockRateLimitConfigurationResponse.decode(new _m0.Reader(data))); } liquidationsConfiguration(request: QueryLiquidationsConfigurationRequest = {}): Promise { const data = QueryLiquidationsConfigurationRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "LiquidationsConfiguration", data); return promise.then(data => QueryLiquidationsConfigurationResponse.decode(new _m0.Reader(data))); } statefulOrder(request: QueryStatefulOrderRequest): Promise { const data = QueryStatefulOrderRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "StatefulOrder", data); return promise.then(data => QueryStatefulOrderResponse.decode(new _m0.Reader(data))); } nextClobPairId(request: QueryNextClobPairIdRequest = {}): Promise { const data = QueryNextClobPairIdRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "NextClobPairId", data); return promise.then(data => QueryNextClobPairIdResponse.decode(new _m0.Reader(data))); } leverage(request: QueryLeverageRequest): Promise { const data = QueryLeverageRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "Leverage", data); return promise.then(data => QueryLeverageResponse.decode(new _m0.Reader(data))); } streamOrderbookUpdates(request: StreamOrderbookUpdatesRequest): Promise { const data = StreamOrderbookUpdatesRequest.encode(request).finish(); const promise = this.rpc.request("dydxprotocol.clob.Query", "StreamOrderbookUpdates", data); return promise.then(data => StreamOrderbookUpdatesResponse.decode(new _m0.Reader(data))); } } export const createRpcQueryExtension = (base: QueryClient) => { const rpc = createProtobufRpcClient(base); const queryService = new QueryClientImpl(rpc); return { clobPair(request: QueryGetClobPairRequest): Promise { return queryService.clobPair(request); }, clobPairAll(request?: QueryAllClobPairRequest): Promise { return queryService.clobPairAll(request); }, mevNodeToNodeCalculation(request: MevNodeToNodeCalculationRequest): Promise { return queryService.mevNodeToNodeCalculation(request); }, equityTierLimitConfiguration(request?: QueryEquityTierLimitConfigurationRequest): Promise { return queryService.equityTierLimitConfiguration(request); }, blockRateLimitConfiguration(request?: QueryBlockRateLimitConfigurationRequest): Promise { return queryService.blockRateLimitConfiguration(request); }, liquidationsConfiguration(request?: QueryLiquidationsConfigurationRequest): Promise { return queryService.liquidationsConfiguration(request); }, statefulOrder(request: QueryStatefulOrderRequest): Promise { return queryService.statefulOrder(request); }, nextClobPairId(request?: QueryNextClobPairIdRequest): Promise { return queryService.nextClobPairId(request); }, leverage(request: QueryLeverageRequest): Promise { return queryService.leverage(request); }, streamOrderbookUpdates(request: StreamOrderbookUpdatesRequest): Promise { return queryService.streamOrderbookUpdates(request); } }; };