@injectivelabs/sdk-ts 1.17.6 → 1.17.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/cjs/{AbacusGrpcApi-QbGB8ZMB.cjs → AbacusGrpcApi-Da2mxc3z.cjs} +2 -2
  2. package/dist/cjs/{BaseGrpcConsumer-Db3sCC6b.cjs → BaseGrpcConsumer-B1hpRQJ-.cjs} +1 -1
  3. package/dist/cjs/{BaseIndexerGrpcConsumer-BBXxg_BR.cjs → BaseIndexerGrpcConsumer-rRYRp48i.cjs} +1 -1
  4. package/dist/cjs/{ChainGrpcExchangeApi-Xtflr7xp.cjs → ChainGrpcExchangeApi-5On5kown.cjs} +3 -3
  5. package/dist/cjs/{ChainRestTendermintApi-CyeoAmer.cjs → ChainRestTendermintApi-DILpgVDN.cjs} +2 -2
  6. package/dist/cjs/{DirectEthSecp256k1Wallet-BiAOoEd6.cjs → DirectEthSecp256k1Wallet-Bz_TABf8.cjs} +2 -2
  7. package/dist/cjs/{ExecArgNeptuneWithdraw-4esQ6Su-.cjs → ExecArgNeptuneWithdraw-TyUvdHsN.cjs} +2 -2
  8. package/dist/cjs/{IndexerGrpcWeb3GwApi-BxJoq1-k.cjs → IndexerGrpcWeb3GwApi-wpbu-sy0.cjs} +2 -2
  9. package/dist/cjs/{MsgBase-D_1CCpXQ.cjs → MsgBase-DknjeeDb.cjs} +1 -1
  10. package/dist/cjs/{MsgSetDenomMetadata-DzYvKtNj.cjs → MsgSetDenomMetadata-MOKVZiSF.cjs} +39 -8
  11. package/dist/cjs/{OLPGrpcApi-CoVqLaSC.cjs → OLPGrpcApi-DYU9vRNO.cjs} +2 -2
  12. package/dist/cjs/{QueryTradingStrategyContractTotalStrategies-DPrIH5Jb.cjs → QueryTradingStrategyContractTotalStrategies-CDeAJmZj.cjs} +3 -3
  13. package/dist/cjs/{StreamManagerV2-Dvfpwi5Z.cjs → StreamManagerV2-ocvGmGvp.cjs} +1034 -4
  14. package/dist/cjs/{accounts-HFzAaFRB.cjs → accounts-BPCUUwFm.cjs} +2 -2
  15. package/dist/cjs/{chain-CPs0kwL0.cjs → chain-DmIDW_8V.cjs} +3 -3
  16. package/dist/cjs/client/abacus.cjs +3 -3
  17. package/dist/cjs/client/chain.cjs +5 -5
  18. package/dist/cjs/client/chain.d.cts +2 -2
  19. package/dist/cjs/client/indexer.cjs +17 -5
  20. package/dist/cjs/client/indexer.d.cts +3 -3
  21. package/dist/cjs/client/olp.cjs +4 -4
  22. package/dist/cjs/client/wasm.cjs +8 -8
  23. package/dist/cjs/client/wasm.d.cts +1 -1
  24. package/dist/cjs/core/accounts.cjs +3 -3
  25. package/dist/cjs/core/accounts.d.cts +2 -2
  26. package/dist/cjs/core/modules.cjs +11 -11
  27. package/dist/cjs/core/modules.d.cts +2 -2
  28. package/dist/cjs/core/tx.cjs +8 -8
  29. package/dist/cjs/core/tx.d.cts +2 -2
  30. package/dist/cjs/cosmjs.cjs +9 -9
  31. package/dist/cjs/{defineProperty-dyr5BsvG.cjs → defineProperty-DAtJs5JQ.cjs} +4 -4
  32. package/dist/cjs/exports.cjs +9 -9
  33. package/dist/cjs/{index-Dz6elmkG.d.cts → index-CNxu0jEc.d.cts} +1312 -113
  34. package/dist/cjs/{index-CSWj2FPd.d.cts → index-COusnMLC.d.cts} +8 -5
  35. package/dist/cjs/index.cjs +29 -17
  36. package/dist/cjs/index.d.cts +3 -3
  37. package/dist/cjs/{service-C0DSVBn_.cjs → service-DmzN9jAl.cjs} +1 -1
  38. package/dist/cjs/service.cjs +2 -2
  39. package/dist/cjs/{tx-MgHAjEie.cjs → tx-CYMyLXlj.cjs} +5 -5
  40. package/dist/cjs/utils.d.cts +2 -2
  41. package/dist/esm/{AbacusGrpcApi-H-P0UiPh.js → AbacusGrpcApi-DG807S_D.js} +2 -2
  42. package/dist/esm/{BaseGrpcConsumer-a7fB9A_e.js → BaseGrpcConsumer-lUDP-V1I.js} +1 -1
  43. package/dist/esm/{BaseIndexerGrpcConsumer-CrwqSxDq.js → BaseIndexerGrpcConsumer-ByGqwnv0.js} +1 -1
  44. package/dist/esm/{ChainGrpcExchangeApi-Ko7rM6Df.js → ChainGrpcExchangeApi-dM8pIv3Q.js} +3 -3
  45. package/dist/esm/{ChainRestTendermintApi-BUV-cxVj.js → ChainRestTendermintApi-iiW50Z2J.js} +2 -2
  46. package/dist/esm/{DirectEthSecp256k1Wallet-CMxBvSTE.js → DirectEthSecp256k1Wallet-BV8ttcYH.js} +2 -2
  47. package/dist/esm/{ExecArgNeptuneWithdraw-BRJZq8Vb.js → ExecArgNeptuneWithdraw-DqIWmqJy.js} +2 -2
  48. package/dist/esm/{IndexerGrpcWeb3GwApi-CX4ohUOk.js → IndexerGrpcWeb3GwApi-OwqVZsKE.js} +2 -2
  49. package/dist/esm/{MsgBase-D4pO6org.js → MsgBase-BYNH7Kr5.js} +1 -1
  50. package/dist/esm/{MsgSetDenomMetadata-CeD0R82a.js → MsgSetDenomMetadata-CTyvXOGo.js} +39 -8
  51. package/dist/esm/{OLPGrpcApi-CX-m2wvC.js → OLPGrpcApi-CYVKwBCj.js} +2 -2
  52. package/dist/esm/{QueryTradingStrategyContractTotalStrategies-D9fMELJH.js → QueryTradingStrategyContractTotalStrategies-CCM0S67l.js} +3 -3
  53. package/dist/esm/{StreamManagerV2-B_6ctbMb.js → StreamManagerV2-CbZamzIn.js} +962 -5
  54. package/dist/esm/{accounts-CP_DVUou.js → accounts-DaSGlOcB.js} +2 -2
  55. package/dist/esm/{chain-CQczt2h3.js → chain-DqFxHeeE.js} +3 -3
  56. package/dist/esm/client/abacus.js +3 -3
  57. package/dist/esm/client/chain.d.ts +2 -2
  58. package/dist/esm/client/chain.js +5 -5
  59. package/dist/esm/client/indexer.d.ts +3 -3
  60. package/dist/esm/client/indexer.js +6 -6
  61. package/dist/esm/client/olp.js +4 -4
  62. package/dist/esm/client/wasm.d.ts +1 -1
  63. package/dist/esm/client/wasm.js +8 -8
  64. package/dist/esm/core/accounts.d.ts +2 -2
  65. package/dist/esm/core/accounts.js +3 -3
  66. package/dist/esm/core/modules.d.ts +2 -2
  67. package/dist/esm/core/modules.js +11 -11
  68. package/dist/esm/core/tx.d.ts +2 -2
  69. package/dist/esm/core/tx.js +8 -8
  70. package/dist/esm/cosmjs.js +9 -9
  71. package/dist/esm/{defineProperty-Bq6QU9Te.js → defineProperty-DuYPbdEg.js} +4 -4
  72. package/dist/esm/exports.js +9 -9
  73. package/dist/esm/{index-CvTpnDXx.d.ts → index-C32ydr8i.d.ts} +1313 -113
  74. package/dist/esm/{index-BbVYW9Fg.d.ts → index-M499Wbuy.d.ts} +8 -5
  75. package/dist/esm/index.d.ts +3 -3
  76. package/dist/esm/index.js +18 -18
  77. package/dist/esm/{service-CqKPnKgb.js → service-DcE3KfV9.js} +1 -1
  78. package/dist/esm/service.js +2 -2
  79. package/dist/esm/{tx-ZGcAWTaC.js → tx-CSkj2rce.js} +5 -5
  80. package/dist/esm/utils.d.ts +2 -2
  81. package/package.json +7 -6
@@ -1,12 +1,15 @@
1
1
  import { $t as uint8ArrayToString, a as grpcPagingToPagingV2, nn as bigIntToString, sn as isJsonString, tn as bigIntToNumber } from "./utils-CewUFGKA.js";
2
- import { t as _defineProperty } from "./defineProperty-Bq6QU9Te.js";
3
- import { n as GrpcWebRpcTransport } from "./BaseGrpcConsumer-a7fB9A_e.js";
4
- import { t as BaseIndexerGrpcConsumer } from "./BaseIndexerGrpcConsumer-CrwqSxDq.js";
2
+ import { t as _defineProperty } from "./defineProperty-DuYPbdEg.js";
3
+ import { n as GrpcWebRpcTransport } from "./BaseGrpcConsumer-lUDP-V1I.js";
4
+ import { t as BaseIndexerGrpcConsumer } from "./BaseIndexerGrpcConsumer-ByGqwnv0.js";
5
5
  import { t as BaseRestConsumer } from "./BaseRestConsumer-DTvorEHL.js";
6
- import { r as IndexerModule } from "./IndexerGrpcWeb3GwApi-CX4ohUOk.js";
6
+ import { r as IndexerModule } from "./IndexerGrpcWeb3GwApi-OwqVZsKE.js";
7
7
  import { a as TradeDirection, c as GrpcStatusCode, d as StreamState, i as OrderState, l as StreamDisconnectReason, m as TokenVerification, p as TokenType, t as StreamOperation, u as StreamEvent } from "./types-Cf4oVv93.js";
8
8
  import { BigNumber, toBigNumber, toHumanReadable } from "@injectivelabs/utils";
9
9
  import { GeneralException, HttpRequestException, UnspecifiedErrorCode } from "@injectivelabs/exceptions";
10
+ import { MakerStreamResponse, MakerStreamStreamingRequest, RFQQuoteType, RFQRequestType, TakerStreamResponse, TakerStreamStreamingRequest } from "@injectivelabs/indexer-proto-ts-v2/generated/injective_rfqrpc_pb.js";
11
+ import * as InjectiveRFQExchangeRpcPb from "@injectivelabs/indexer-proto-ts-v2/generated/injective_rfqrpc_pb";
12
+ import { InjectiveRFQRPCClient } from "@injectivelabs/indexer-proto-ts-v2/generated/injective_rfqrpc_pb.client";
10
13
  import { MitoAPIClient } from "@injectivelabs/mito-proto-ts-v2/generated/goadesign_goagen_mito_api_pb.client";
11
14
  import * as GoadesignGoagenMitoApiPb from "@injectivelabs/mito-proto-ts-v2/generated/goadesign_goagen_mito_api_pb";
12
15
  import * as InjectiveMetaRpcPb from "@injectivelabs/indexer-proto-ts-v2/generated/injective_meta_rpc_pb";
@@ -39,6 +42,839 @@ import * as InjectiveInsuranceRpcPb from "@injectivelabs/indexer-proto-ts-v2/gen
39
42
  import { InjectiveInsuranceRPCClient } from "@injectivelabs/indexer-proto-ts-v2/generated/injective_insurance_rpc_pb.client";
40
43
  import { EventEmitter } from "eventemitter3";
41
44
 
45
+ //#region src/client/indexer/ws/types.ts
46
+ /**
47
+ * WebSocket connection states
48
+ */
49
+ const WsState = {
50
+ Idle: "idle",
51
+ Connecting: "connecting",
52
+ Connected: "connected",
53
+ Reconnecting: "reconnecting",
54
+ Disconnected: "disconnected"
55
+ };
56
+ /**
57
+ * Reasons for WebSocket disconnection
58
+ */
59
+ const WsDisconnectReason = {
60
+ UserStopped: "user-stopped",
61
+ ConnectionFailed: "connection-failed",
62
+ ConnectionTimeout: "connection-timeout",
63
+ ServerClosed: "server-closed",
64
+ MaxRetries: "max-retries",
65
+ Error: "error"
66
+ };
67
+ /**
68
+ * Default reconnection configuration
69
+ */
70
+ const DEFAULT_RECONNECT_CONFIG = {
71
+ enabled: true,
72
+ maxAttempts: 10,
73
+ initialDelayMs: 1e3,
74
+ maxDelayMs: 3e4,
75
+ backoffMultiplier: 2
76
+ };
77
+ /**
78
+ * Default transport configuration values
79
+ */
80
+ const DEFAULT_TRANSPORT_CONFIG = {
81
+ protocol: "grpc-ws",
82
+ connectionTimeoutMs: 1e4
83
+ };
84
+ /**
85
+ * gRPC service paths for RFQ streams
86
+ */
87
+ const RFQ_GRPC_PATHS = {
88
+ TakerStream: "/injective_rfqrpc.InjectiveRFQRPC/TakerStream",
89
+ MakerStream: "/injective_rfqrpc.InjectiveRFQRPC/MakerStream"
90
+ };
91
+ var GrpcDecodeError = class extends Error {
92
+ constructor(message) {
93
+ super(message);
94
+ this.name = "GrpcDecodeError";
95
+ }
96
+ };
97
+
98
+ //#endregion
99
+ //#region src/client/indexer/ws/GrpcWebSocketCodec.ts
100
+ const COMPRESSION_FLAG_NONE = 0;
101
+ const COMPRESSION_FLAG_TRAILER = 128;
102
+ const GRPC_HEADER_SIZE = 5;
103
+ /**
104
+ * Codec for encoding/decoding gRPC-over-WebSocket messages for RFQ streams.
105
+ */
106
+ const GrpcWebSocketCodec = {
107
+ encodeTakerPing() {
108
+ const message = TakerStreamStreamingRequest.create({ messageType: "ping" });
109
+ return encodeGrpcFrame(TakerStreamStreamingRequest.toBinary(message));
110
+ },
111
+ encodeTakerRequest(input) {
112
+ const request = RFQRequestType.create({
113
+ rfqId: BigInt(input.rfqId),
114
+ marketId: input.marketId,
115
+ direction: input.direction,
116
+ margin: input.margin,
117
+ quantity: input.quantity,
118
+ worstPrice: input.worstPrice,
119
+ requestAddress: input.requestAddress,
120
+ expiry: BigInt(input.expiry),
121
+ status: input.status,
122
+ createdAt: 0n,
123
+ updatedAt: 0n,
124
+ transactionTime: 0n,
125
+ height: 0n
126
+ });
127
+ const message = TakerStreamStreamingRequest.create({
128
+ messageType: "request",
129
+ request
130
+ });
131
+ return encodeGrpcFrame(TakerStreamStreamingRequest.toBinary(message));
132
+ },
133
+ decodeTakerResponse(data) {
134
+ return decodeGrpcFrame(data instanceof ArrayBuffer ? new Uint8Array(data) : data, TakerStreamResponse);
135
+ },
136
+ encodeMakerPing() {
137
+ const message = MakerStreamStreamingRequest.create({ messageType: "ping" });
138
+ return encodeGrpcFrame(MakerStreamStreamingRequest.toBinary(message));
139
+ },
140
+ encodeMakerQuote(input) {
141
+ const quote = RFQQuoteType.create({
142
+ chainId: input.chainId,
143
+ contractAddress: input.contractAddress,
144
+ marketId: input.marketId,
145
+ rfqId: BigInt(input.rfqId),
146
+ takerDirection: input.takerDirection,
147
+ margin: input.margin,
148
+ quantity: input.quantity,
149
+ price: input.price,
150
+ expiry: BigInt(input.expiry),
151
+ maker: input.maker,
152
+ taker: input.taker,
153
+ signature: input.signature,
154
+ status: input.status,
155
+ createdAt: 0n,
156
+ updatedAt: 0n,
157
+ height: 0n,
158
+ eventTime: 0n,
159
+ transactionTime: 0n
160
+ });
161
+ const message = MakerStreamStreamingRequest.create({
162
+ messageType: "quote",
163
+ quote
164
+ });
165
+ return encodeGrpcFrame(MakerStreamStreamingRequest.toBinary(message));
166
+ },
167
+ decodeMakerResponse(data) {
168
+ return decodeGrpcFrame(data instanceof ArrayBuffer ? new Uint8Array(data) : data, MakerStreamResponse);
169
+ },
170
+ isTrailerFrame(data) {
171
+ const bytes = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
172
+ if (bytes.length < 1) return false;
173
+ return (bytes[0] & COMPRESSION_FLAG_TRAILER) !== 0;
174
+ },
175
+ getPayloadLength(data) {
176
+ const bytes = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
177
+ if (bytes.length < GRPC_HEADER_SIZE) return -1;
178
+ return bytes[1] << 24 | bytes[2] << 16 | bytes[3] << 8 | bytes[4];
179
+ },
180
+ isCompleteFrame(data) {
181
+ const bytes = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
182
+ if (bytes.length < GRPC_HEADER_SIZE) return false;
183
+ const payloadLength = this.getPayloadLength(bytes);
184
+ return bytes.length >= GRPC_HEADER_SIZE + payloadLength;
185
+ },
186
+ HEADER_SIZE: GRPC_HEADER_SIZE
187
+ };
188
+ function encodeGrpcFrame(payload) {
189
+ const frame = new Uint8Array(GRPC_HEADER_SIZE + payload.length);
190
+ frame[0] = COMPRESSION_FLAG_NONE;
191
+ new DataView(frame.buffer).setUint32(1, payload.length, false);
192
+ frame.set(payload, GRPC_HEADER_SIZE);
193
+ return frame;
194
+ }
195
+ function decodeGrpcFrame(data, messageType) {
196
+ if (data.byteLength < GRPC_HEADER_SIZE) throw new GrpcDecodeError(`Frame too short: expected at least ${GRPC_HEADER_SIZE} bytes, got ${data.byteLength}`);
197
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
198
+ const compressionFlag = view.getUint8(0);
199
+ const isTrailer = (compressionFlag & COMPRESSION_FLAG_TRAILER) !== 0;
200
+ const totalLength = GRPC_HEADER_SIZE + view.getUint32(1, false);
201
+ if (data.byteLength < totalLength) throw new GrpcDecodeError(`Incomplete frame: expected ${totalLength} bytes, got ${data.byteLength}`);
202
+ const payload = data.subarray(GRPC_HEADER_SIZE, totalLength);
203
+ if (isTrailer) return {
204
+ isTrailer: true,
205
+ payload
206
+ };
207
+ if (compressionFlag !== COMPRESSION_FLAG_NONE) throw new GrpcDecodeError(`Unsupported compression flag: 0x${compressionFlag.toString(16)}`);
208
+ try {
209
+ return {
210
+ isTrailer: false,
211
+ message: messageType.fromBinary(payload),
212
+ payload
213
+ };
214
+ } catch (error) {
215
+ throw new GrpcDecodeError(`Failed to decode protobuf message: ${error instanceof Error ? error.message : String(error)}`);
216
+ }
217
+ }
218
+
219
+ //#endregion
220
+ //#region src/client/indexer/ws/GrpcWebSocketTransport.ts
221
+ /**
222
+ * Low-level gRPC-over-WebSocket transport layer.
223
+ *
224
+ * Handles:
225
+ * - WebSocket connection lifecycle
226
+ * - Reconnection with exponential backoff
227
+ * - State management
228
+ * - Binary message framing
229
+ *
230
+ * This class does NOT handle protobuf encoding/decoding - use GrpcWebSocketCodec for that.
231
+ */
232
+ var GrpcWebSocketTransport = class {
233
+ constructor(config) {
234
+ _defineProperty(this, "config", void 0);
235
+ _defineProperty(this, "ws", null);
236
+ _defineProperty(this, "state", WsState.Idle);
237
+ _defineProperty(this, "connectionTimeout", null);
238
+ _defineProperty(this, "reconnectTimeout", null);
239
+ _defineProperty(this, "reconnectAttempts", 0);
240
+ _defineProperty(this, "currentReconnectDelay", void 0);
241
+ _defineProperty(this, "isDestroyed", false);
242
+ _defineProperty(this, "hasConnectedOnce", false);
243
+ _defineProperty(this, "listeners", /* @__PURE__ */ new Map());
244
+ this.config = this.resolveConfig(config);
245
+ this.currentReconnectDelay = this.config.reconnect.initialDelayMs;
246
+ }
247
+ getState() {
248
+ return this.state;
249
+ }
250
+ /**
251
+ * Check if the transport is connected and ready to send
252
+ */
253
+ isConnected() {
254
+ var _this$ws;
255
+ return this.state === WsState.Connected && ((_this$ws = this.ws) === null || _this$ws === void 0 ? void 0 : _this$ws.readyState) === 1;
256
+ }
257
+ async connect() {
258
+ if (this.isDestroyed) throw new Error("Transport has been destroyed");
259
+ if (this.state === WsState.Connected || this.state === WsState.Connecting) return;
260
+ try {
261
+ await this.createConnection();
262
+ } catch (error) {
263
+ const reason = WsDisconnectReason.ConnectionFailed;
264
+ if (this.shouldAttemptReconnect(reason)) {
265
+ this.setState(WsState.Reconnecting);
266
+ this.emit("disconnect", {
267
+ reason,
268
+ willRetry: true
269
+ });
270
+ this.scheduleReconnect();
271
+ } else this.cleanup(reason, false);
272
+ throw error;
273
+ }
274
+ }
275
+ disconnect() {
276
+ this.cleanup(WsDisconnectReason.UserStopped, false);
277
+ }
278
+ destroy() {
279
+ this.isDestroyed = true;
280
+ this.cleanup(WsDisconnectReason.UserStopped, false);
281
+ this.listeners.clear();
282
+ }
283
+ send(data) {
284
+ if (!this.isConnected()) throw new Error("Cannot send: WebSocket is not connected");
285
+ this.ws.send(data);
286
+ }
287
+ on(event, listener) {
288
+ if (!this.listeners.has(event)) this.listeners.set(event, /* @__PURE__ */ new Set());
289
+ this.listeners.get(event).add(listener);
290
+ }
291
+ off(event, listener) {
292
+ var _this$listeners$get;
293
+ (_this$listeners$get = this.listeners.get(event)) === null || _this$listeners$get === void 0 || _this$listeners$get.delete(listener);
294
+ }
295
+ emit(event, data) {
296
+ var _this$listeners$get2;
297
+ (_this$listeners$get2 = this.listeners.get(event)) === null || _this$listeners$get2 === void 0 || _this$listeners$get2.forEach((listener) => {
298
+ try {
299
+ listener(data);
300
+ } catch (error) {
301
+ console.error(`Error in ${event} listener:`, error);
302
+ }
303
+ });
304
+ }
305
+ async createConnection() {
306
+ return new Promise(async (resolve, reject) => {
307
+ const url = this.config.url;
308
+ this.connectionTimeout = setTimeout(() => {
309
+ this.handleConnectionTimeout(reject);
310
+ }, this.config.connectionTimeoutMs);
311
+ try {
312
+ this.ws = await this.createWebSocket(url, this.config.protocol, this.config.metadata);
313
+ if ("binaryType" in this.ws) this.ws.binaryType = "arraybuffer";
314
+ this.ws.onopen = () => {
315
+ this.handleOpen(resolve);
316
+ };
317
+ this.ws.onclose = (event) => {
318
+ this.handleClose(event, reject);
319
+ };
320
+ this.ws.onerror = (error) => {
321
+ this.handleError(error, reject);
322
+ };
323
+ this.ws.onmessage = (event) => {
324
+ this.handleMessage(event);
325
+ };
326
+ } catch (error) {
327
+ this.clearConnectionTimeout();
328
+ reject(error);
329
+ }
330
+ });
331
+ }
332
+ async createWebSocket(url, protocol, metadata) {
333
+ if (typeof WebSocket !== "undefined") {
334
+ const urlWithMetadata = this.addMetadataToUrl(url, metadata);
335
+ return new WebSocket(urlWithMetadata, protocol);
336
+ }
337
+ return new (await (import("ws"))).default(url, protocol, { headers: metadata || {} });
338
+ }
339
+ addMetadataToUrl(url, metadata) {
340
+ if (!metadata || Object.keys(metadata).length === 0) return url;
341
+ const params = new URLSearchParams(metadata);
342
+ return `${url}${url.includes("?") ? "&" : "?"}${params.toString()}`;
343
+ }
344
+ /**
345
+ * Handle WebSocket open event
346
+ */
347
+ handleOpen(resolve) {
348
+ this.clearConnectionTimeout();
349
+ this.setState(WsState.Connected);
350
+ this.reconnectAttempts = 0;
351
+ this.currentReconnectDelay = this.config.reconnect.initialDelayMs;
352
+ const isReconnect = this.hasConnectedOnce;
353
+ this.hasConnectedOnce = true;
354
+ this.emit("connect", { isReconnect });
355
+ resolve();
356
+ }
357
+ handleClose(event, reject) {
358
+ if (this.state === WsState.Connecting) {
359
+ this.clearConnectionTimeout();
360
+ if (reject) reject(/* @__PURE__ */ new Error(`WebSocket closed before open: code=${event.code}, reason=${event.reason}`));
361
+ return;
362
+ }
363
+ if (this.state === WsState.Disconnected || this.isDestroyed) return;
364
+ const reason = this.determineDisconnectReason(event);
365
+ if (this.shouldAttemptReconnect(reason)) {
366
+ this.setState(WsState.Reconnecting);
367
+ this.scheduleReconnect();
368
+ this.emit("disconnect", {
369
+ reason,
370
+ willRetry: true
371
+ });
372
+ } else this.cleanup(reason, false);
373
+ }
374
+ handleError(error, reject) {
375
+ const errorObj = error instanceof Error ? error : /* @__PURE__ */ new Error("WebSocket error");
376
+ this.emit("error", errorObj);
377
+ if (this.state === WsState.Connecting && reject) {
378
+ this.clearConnectionTimeout();
379
+ reject(errorObj);
380
+ }
381
+ }
382
+ handleMessage(event) {
383
+ const data = event.data;
384
+ if (data instanceof ArrayBuffer) this.emit("message", data);
385
+ else if (typeof Blob !== "undefined" && data instanceof Blob) data.arrayBuffer().then((buffer) => {
386
+ this.emit("message", buffer);
387
+ });
388
+ else if (typeof Buffer !== "undefined" && Buffer.isBuffer(data)) {
389
+ const buffer = new Uint8Array(data).buffer;
390
+ this.emit("message", buffer);
391
+ }
392
+ }
393
+ handleConnectionTimeout(reject) {
394
+ var _this$ws2;
395
+ (_this$ws2 = this.ws) === null || _this$ws2 === void 0 || _this$ws2.close();
396
+ this.ws = null;
397
+ reject(/* @__PURE__ */ new Error("Connection timeout"));
398
+ if (this.shouldAttemptReconnect(WsDisconnectReason.ConnectionTimeout)) {
399
+ this.setState(WsState.Reconnecting);
400
+ this.scheduleReconnect();
401
+ } else this.cleanup(WsDisconnectReason.ConnectionTimeout, false);
402
+ }
403
+ clearConnectionTimeout() {
404
+ if (this.connectionTimeout) {
405
+ clearTimeout(this.connectionTimeout);
406
+ this.connectionTimeout = null;
407
+ }
408
+ }
409
+ clearReconnectTimeout() {
410
+ if (this.reconnectTimeout) {
411
+ clearTimeout(this.reconnectTimeout);
412
+ this.reconnectTimeout = null;
413
+ }
414
+ }
415
+ scheduleReconnect() {
416
+ this.clearReconnectTimeout();
417
+ this.reconnectTimeout = setTimeout(async () => {
418
+ if (this.isDestroyed || this.state === WsState.Disconnected) return;
419
+ this.reconnectAttempts++;
420
+ try {
421
+ await this.createConnection();
422
+ } catch (_unused) {}
423
+ this.currentReconnectDelay = Math.min(this.currentReconnectDelay * this.config.reconnect.backoffMultiplier, this.config.reconnect.maxDelayMs);
424
+ }, this.currentReconnectDelay);
425
+ }
426
+ shouldAttemptReconnect(reason) {
427
+ if (reason === WsDisconnectReason.UserStopped) return false;
428
+ if (!this.config.reconnect.enabled) return false;
429
+ if (this.config.reconnect.maxAttempts > 0 && this.reconnectAttempts >= this.config.reconnect.maxAttempts) return false;
430
+ return true;
431
+ }
432
+ determineDisconnectReason(event) {
433
+ if (event.code === 1e3) return WsDisconnectReason.ServerClosed;
434
+ if (event.code === 1001) return WsDisconnectReason.ServerClosed;
435
+ if (event.code === 1006) return WsDisconnectReason.ConnectionFailed;
436
+ return WsDisconnectReason.Error;
437
+ }
438
+ cleanup(reason, willRetry) {
439
+ this.clearConnectionTimeout();
440
+ this.clearReconnectTimeout();
441
+ if (this.ws) {
442
+ this.ws.onopen = null;
443
+ this.ws.onclose = null;
444
+ this.ws.onerror = null;
445
+ this.ws.onmessage = null;
446
+ if (this.ws.readyState === 0 || this.ws.readyState === 1) this.ws.close();
447
+ this.ws = null;
448
+ }
449
+ this.setState(WsState.Disconnected);
450
+ this.emit("disconnect", {
451
+ reason,
452
+ willRetry
453
+ });
454
+ }
455
+ setState(newState) {
456
+ if (this.state === newState) return;
457
+ const from = this.state;
458
+ this.state = newState;
459
+ this.emit("state_change", {
460
+ from,
461
+ to: newState
462
+ });
463
+ }
464
+ resolveConfig(config) {
465
+ var _config$protocol, _config$connectionTim;
466
+ const reconnect = {
467
+ ...DEFAULT_RECONNECT_CONFIG,
468
+ ...config.reconnect
469
+ };
470
+ return {
471
+ url: config.url,
472
+ protocol: (_config$protocol = config.protocol) !== null && _config$protocol !== void 0 ? _config$protocol : DEFAULT_TRANSPORT_CONFIG.protocol,
473
+ connectionTimeoutMs: (_config$connectionTim = config.connectionTimeoutMs) !== null && _config$connectionTim !== void 0 ? _config$connectionTim : DEFAULT_TRANSPORT_CONFIG.connectionTimeoutMs,
474
+ reconnect,
475
+ metadata: config.metadata
476
+ };
477
+ }
478
+ };
479
+
480
+ //#endregion
481
+ //#region src/client/indexer/transformers/IndexerGrpcRfqTransformer.ts
482
+ /**
483
+ * @category Indexer Grpc Transformer
484
+ */
485
+ var IndexerGrpcRfqTransformer = class IndexerGrpcRfqTransformer {
486
+ static grpcRfqRequestToRfqRequest(grpcRequest) {
487
+ return {
488
+ margin: grpcRequest.margin,
489
+ status: grpcRequest.status,
490
+ marketId: grpcRequest.marketId,
491
+ quantity: grpcRequest.quantity,
492
+ direction: grpcRequest.direction,
493
+ worstPrice: grpcRequest.worstPrice,
494
+ expiry: Number(grpcRequest.expiry),
495
+ height: Number(grpcRequest.height),
496
+ rfqId: grpcRequest.rfqId.toString(),
497
+ createdAt: Number(grpcRequest.createdAt),
498
+ updatedAt: Number(grpcRequest.updatedAt),
499
+ requestAddress: grpcRequest.requestAddress,
500
+ transactionTime: Number(grpcRequest.transactionTime)
501
+ };
502
+ }
503
+ static grpcRfqQuoteToRfqQuote(grpcQuote) {
504
+ return {
505
+ price: grpcQuote.price,
506
+ maker: grpcQuote.maker,
507
+ taker: grpcQuote.taker,
508
+ margin: grpcQuote.margin,
509
+ status: grpcQuote.status,
510
+ chainId: grpcQuote.chainId,
511
+ marketId: grpcQuote.marketId,
512
+ quantity: grpcQuote.quantity,
513
+ signature: grpcQuote.signature,
514
+ expiry: Number(grpcQuote.expiry),
515
+ height: Number(grpcQuote.height),
516
+ rfqId: grpcQuote.rfqId.toString(),
517
+ createdAt: Number(grpcQuote.createdAt),
518
+ updatedAt: Number(grpcQuote.updatedAt),
519
+ eventTime: Number(grpcQuote.eventTime),
520
+ takerDirection: grpcQuote.takerDirection,
521
+ contractAddress: grpcQuote.contractAddress,
522
+ transactionTime: Number(grpcQuote.transactionTime)
523
+ };
524
+ }
525
+ static grpcRfqSettlementToRfqSettlement(grpcSettlement) {
526
+ return {
527
+ taker: grpcSettlement.taker,
528
+ margin: grpcSettlement.margin,
529
+ marketId: grpcSettlement.marketId,
530
+ quantity: grpcSettlement.quantity,
531
+ direction: grpcSettlement.direction,
532
+ worstPrice: grpcSettlement.worstPrice,
533
+ height: Number(grpcSettlement.height),
534
+ rfqId: grpcSettlement.rfqId.toString(),
535
+ createdAt: Number(grpcSettlement.createdAt),
536
+ updatedAt: Number(grpcSettlement.updatedAt),
537
+ eventTime: Number(grpcSettlement.eventTime),
538
+ fallbackMargin: grpcSettlement.fallbackMargin,
539
+ fallbackQuantity: grpcSettlement.fallbackQuantity,
540
+ transactionTime: Number(grpcSettlement.transactionTime)
541
+ };
542
+ }
543
+ static openRequestsResponseToOpenRequests(response) {
544
+ return { requests: response.requests.map(IndexerGrpcRfqTransformer.grpcRfqRequestToRfqRequest) };
545
+ }
546
+ static pendingQuotesResponseToPendingQuotes(response) {
547
+ return { quotes: response.quotes.map(IndexerGrpcRfqTransformer.grpcRfqQuoteToRfqQuote) };
548
+ }
549
+ static listSettlementsResponseToSettlements(response) {
550
+ return {
551
+ settlements: response.settlements.map(IndexerGrpcRfqTransformer.grpcRfqSettlementToRfqSettlement),
552
+ total: Number(response.total)
553
+ };
554
+ }
555
+ };
556
+
557
+ //#endregion
558
+ //#region src/client/indexer/ws/rfq/IndexerWsTakerStream.ts
559
+ var IndexerWsTakerStream = class {
560
+ constructor(config) {
561
+ var _config$pingIntervalM;
562
+ _defineProperty(this, "transport", void 0);
563
+ _defineProperty(this, "pingInterval", null);
564
+ _defineProperty(this, "listeners", /* @__PURE__ */ new Map());
565
+ _defineProperty(this, "isDestroyed", false);
566
+ _defineProperty(this, "pingIntervalMs", void 0);
567
+ const fullUrl = this.buildUrl(config.url, RFQ_GRPC_PATHS.TakerStream);
568
+ this.pingIntervalMs = (_config$pingIntervalM = config.pingIntervalMs) !== null && _config$pingIntervalM !== void 0 ? _config$pingIntervalM : 1e3;
569
+ this.transport = new GrpcWebSocketTransport({
570
+ url: fullUrl,
571
+ connectionTimeoutMs: config.connectionTimeoutMs,
572
+ reconnect: config.reconnect,
573
+ metadata: { request_address: config.requestAddress }
574
+ });
575
+ this.setupTransportHandlers();
576
+ }
577
+ getState() {
578
+ return this.transport.getState();
579
+ }
580
+ isConnected() {
581
+ return this.transport.isConnected();
582
+ }
583
+ async connect() {
584
+ if (this.isDestroyed) throw new Error("Stream has been destroyed");
585
+ await this.transport.connect();
586
+ }
587
+ disconnect() {
588
+ this.stopPingInterval();
589
+ this.transport.disconnect();
590
+ }
591
+ destroy() {
592
+ this.isDestroyed = true;
593
+ this.stopPingInterval();
594
+ this.transport.destroy();
595
+ this.listeners.clear();
596
+ }
597
+ sendRequest(request) {
598
+ if (!this.isConnected()) throw new Error("Cannot send request: stream is not connected");
599
+ const encoded = GrpcWebSocketCodec.encodeTakerRequest(request);
600
+ this.transport.send(encoded);
601
+ }
602
+ on(event, listener) {
603
+ if (!this.listeners.has(event)) this.listeners.set(event, /* @__PURE__ */ new Set());
604
+ this.listeners.get(event).add(listener);
605
+ }
606
+ off(event, listener) {
607
+ var _this$listeners$get;
608
+ (_this$listeners$get = this.listeners.get(event)) === null || _this$listeners$get === void 0 || _this$listeners$get.delete(listener);
609
+ }
610
+ emit(event, data) {
611
+ var _this$listeners$get2;
612
+ (_this$listeners$get2 = this.listeners.get(event)) === null || _this$listeners$get2 === void 0 || _this$listeners$get2.forEach((listener) => {
613
+ try {
614
+ listener(data);
615
+ } catch (error) {
616
+ console.error(`Error in ${event} listener:`, error);
617
+ }
618
+ });
619
+ }
620
+ setupTransportHandlers() {
621
+ this.transport.on("connect", ({ isReconnect }) => {
622
+ this.startPingInterval();
623
+ this.emit("connect", { isReconnect });
624
+ });
625
+ this.transport.on("disconnect", ({ reason, willRetry }) => {
626
+ this.stopPingInterval();
627
+ this.emit("disconnect", {
628
+ reason,
629
+ willRetry
630
+ });
631
+ });
632
+ this.transport.on("state_change", ({ from, to }) => {
633
+ this.emit("state_change", {
634
+ from,
635
+ to
636
+ });
637
+ });
638
+ this.transport.on("message", (data) => {
639
+ this.handleMessage(data);
640
+ });
641
+ this.transport.on("error", (error) => {
642
+ this.emit("error", {
643
+ code: "TRANSPORT_ERROR",
644
+ message: error.message
645
+ });
646
+ });
647
+ }
648
+ handleMessage(data) {
649
+ try {
650
+ const frame = GrpcWebSocketCodec.decodeTakerResponse(data);
651
+ if (frame.isTrailer) return;
652
+ const response = frame.message;
653
+ if (!response) return;
654
+ switch (response.messageType) {
655
+ case "pong":
656
+ this.emit("pong", void 0);
657
+ break;
658
+ case "quote":
659
+ if (response.quote) {
660
+ const quote = IndexerGrpcRfqTransformer.grpcRfqQuoteToRfqQuote(response.quote);
661
+ this.emit("quote", { quote });
662
+ }
663
+ break;
664
+ case "request_ack":
665
+ if (response.requestAck) {
666
+ const ack = {
667
+ rfqId: response.requestAck.rfqId.toString(),
668
+ status: response.requestAck.status
669
+ };
670
+ this.emit("request_ack", ack);
671
+ }
672
+ break;
673
+ case "error":
674
+ if (response.error) {
675
+ const error = {
676
+ code: response.error.code,
677
+ message: response.error.message
678
+ };
679
+ this.emit("error", error);
680
+ }
681
+ break;
682
+ default: console.warn(`Unknown taker stream message type: ${response.messageType}`);
683
+ }
684
+ } catch (error) {
685
+ if (error instanceof GrpcDecodeError) this.emit("error", {
686
+ code: "DECODE_ERROR",
687
+ message: error.message
688
+ });
689
+ else this.emit("error", {
690
+ code: "UNKNOWN_ERROR",
691
+ message: error instanceof Error ? error.message : String(error)
692
+ });
693
+ }
694
+ }
695
+ startPingInterval() {
696
+ this.stopPingInterval();
697
+ this.pingInterval = setInterval(() => {
698
+ if (this.isConnected()) try {
699
+ const pingMessage = GrpcWebSocketCodec.encodeTakerPing();
700
+ this.transport.send(pingMessage);
701
+ } catch (error) {
702
+ console.error("Failed to send ping:", error);
703
+ }
704
+ }, this.pingIntervalMs);
705
+ }
706
+ stopPingInterval() {
707
+ if (this.pingInterval) {
708
+ clearInterval(this.pingInterval);
709
+ this.pingInterval = null;
710
+ }
711
+ }
712
+ buildUrl(baseUrl, grpcPath) {
713
+ return `${baseUrl.replace(/\/$/, "")}${grpcPath.startsWith("/") ? grpcPath : `/${grpcPath}`}`;
714
+ }
715
+ };
716
+
717
+ //#endregion
718
+ //#region src/client/indexer/ws/rfq/IndexerWsMakerStream.ts
719
+ var IndexerWsMakerStream = class {
720
+ constructor(config) {
721
+ var _config$pingIntervalM;
722
+ _defineProperty(this, "transport", void 0);
723
+ _defineProperty(this, "pingInterval", null);
724
+ _defineProperty(this, "listeners", /* @__PURE__ */ new Map());
725
+ _defineProperty(this, "isDestroyed", false);
726
+ _defineProperty(this, "pingIntervalMs", void 0);
727
+ const fullUrl = this.buildUrl(config.url, RFQ_GRPC_PATHS.MakerStream);
728
+ this.pingIntervalMs = (_config$pingIntervalM = config.pingIntervalMs) !== null && _config$pingIntervalM !== void 0 ? _config$pingIntervalM : 1e3;
729
+ this.transport = new GrpcWebSocketTransport({
730
+ url: fullUrl,
731
+ connectionTimeoutMs: config.connectionTimeoutMs,
732
+ reconnect: config.reconnect,
733
+ metadata: { maker_address: config.makerAddress }
734
+ });
735
+ this.setupTransportHandlers();
736
+ }
737
+ getState() {
738
+ return this.transport.getState();
739
+ }
740
+ isConnected() {
741
+ return this.transport.isConnected();
742
+ }
743
+ async connect() {
744
+ if (this.isDestroyed) throw new Error("Stream has been destroyed");
745
+ await this.transport.connect();
746
+ }
747
+ disconnect() {
748
+ this.stopPingInterval();
749
+ this.transport.disconnect();
750
+ }
751
+ destroy() {
752
+ this.isDestroyed = true;
753
+ this.stopPingInterval();
754
+ this.transport.destroy();
755
+ this.listeners.clear();
756
+ }
757
+ sendQuote(quote) {
758
+ if (!this.isConnected()) throw new Error("Cannot send quote: stream is not connected");
759
+ const encoded = GrpcWebSocketCodec.encodeMakerQuote(quote);
760
+ this.transport.send(encoded);
761
+ }
762
+ on(event, listener) {
763
+ if (!this.listeners.has(event)) this.listeners.set(event, /* @__PURE__ */ new Set());
764
+ this.listeners.get(event).add(listener);
765
+ }
766
+ off(event, listener) {
767
+ var _this$listeners$get;
768
+ (_this$listeners$get = this.listeners.get(event)) === null || _this$listeners$get === void 0 || _this$listeners$get.delete(listener);
769
+ }
770
+ emit(event, data) {
771
+ var _this$listeners$get2;
772
+ (_this$listeners$get2 = this.listeners.get(event)) === null || _this$listeners$get2 === void 0 || _this$listeners$get2.forEach((listener) => {
773
+ try {
774
+ listener(data);
775
+ } catch (error) {
776
+ console.error(`Error in ${event} listener:`, error);
777
+ }
778
+ });
779
+ }
780
+ setupTransportHandlers() {
781
+ this.transport.on("connect", ({ isReconnect }) => {
782
+ this.startPingInterval();
783
+ this.emit("connect", { isReconnect });
784
+ });
785
+ this.transport.on("disconnect", ({ reason, willRetry }) => {
786
+ this.stopPingInterval();
787
+ this.emit("disconnect", {
788
+ reason,
789
+ willRetry
790
+ });
791
+ });
792
+ this.transport.on("state_change", ({ from, to }) => {
793
+ this.emit("state_change", {
794
+ from,
795
+ to
796
+ });
797
+ });
798
+ this.transport.on("message", (data) => {
799
+ this.handleMessage(data);
800
+ });
801
+ this.transport.on("error", (error) => {
802
+ this.emit("error", {
803
+ code: "TRANSPORT_ERROR",
804
+ message: error.message
805
+ });
806
+ });
807
+ }
808
+ handleMessage(data) {
809
+ try {
810
+ const frame = GrpcWebSocketCodec.decodeMakerResponse(data);
811
+ if (frame.isTrailer) return;
812
+ const response = frame.message;
813
+ if (!response) return;
814
+ switch (response.messageType) {
815
+ case "pong":
816
+ this.emit("pong", void 0);
817
+ break;
818
+ case "request":
819
+ if (response.request) {
820
+ const request = IndexerGrpcRfqTransformer.grpcRfqRequestToRfqRequest(response.request);
821
+ this.emit("request", { request });
822
+ }
823
+ break;
824
+ case "quote_ack":
825
+ if (response.quoteAck) {
826
+ const ack = {
827
+ rfqId: response.quoteAck.rfqId.toString(),
828
+ status: response.quoteAck.status
829
+ };
830
+ this.emit("quote_ack", ack);
831
+ }
832
+ break;
833
+ case "error":
834
+ if (response.error) {
835
+ const error = {
836
+ code: response.error.code,
837
+ message: response.error.message
838
+ };
839
+ this.emit("error", error);
840
+ }
841
+ break;
842
+ default: console.warn(`Unknown maker stream message type: ${response.messageType}`);
843
+ }
844
+ } catch (error) {
845
+ if (error instanceof GrpcDecodeError) this.emit("error", {
846
+ code: "DECODE_ERROR",
847
+ message: error.message
848
+ });
849
+ else this.emit("error", {
850
+ code: "UNKNOWN_ERROR",
851
+ message: error instanceof Error ? error.message : String(error)
852
+ });
853
+ }
854
+ }
855
+ startPingInterval() {
856
+ this.stopPingInterval();
857
+ this.pingInterval = setInterval(() => {
858
+ if (this.isConnected()) try {
859
+ const pingMessage = GrpcWebSocketCodec.encodeMakerPing();
860
+ this.transport.send(pingMessage);
861
+ } catch (error) {
862
+ console.error("Failed to send ping:", error);
863
+ }
864
+ }, this.pingIntervalMs);
865
+ }
866
+ stopPingInterval() {
867
+ if (this.pingInterval) {
868
+ clearInterval(this.pingInterval);
869
+ this.pingInterval = null;
870
+ }
871
+ }
872
+ buildUrl(baseUrl, grpcPath) {
873
+ return `${baseUrl.replace(/\/$/, "")}${grpcPath.startsWith("/") ? grpcPath : `/${grpcPath}`}`;
874
+ }
875
+ };
876
+
877
+ //#endregion
42
878
  //#region src/client/indexer/transformers/IndexerCommonTransformer.ts
43
879
  var IndexerCommonTransformer = class {
44
880
  static grpcCoinToCoin(coin) {
@@ -836,6 +1672,25 @@ var IndexerCampaignTransformer = class IndexerCampaignTransformer {
836
1672
  }
837
1673
  };
838
1674
 
1675
+ //#endregion
1676
+ //#region src/client/indexer/transformers/IndexerRfqStreamTransformer.ts
1677
+ /**
1678
+ * @category Indexer Stream Transformer
1679
+ */
1680
+ var IndexerRfqStreamTransformer = class {};
1681
+ _defineProperty(IndexerRfqStreamTransformer, "requestStreamCallback", (response) => {
1682
+ const request = response.request;
1683
+ return { request: request ? IndexerGrpcRfqTransformer.grpcRfqRequestToRfqRequest(request) : void 0 };
1684
+ });
1685
+ _defineProperty(IndexerRfqStreamTransformer, "quoteStreamCallback", (response) => {
1686
+ const quote = response.quote;
1687
+ return { quote: quote ? IndexerGrpcRfqTransformer.grpcRfqQuoteToRfqQuote(quote) : void 0 };
1688
+ });
1689
+ _defineProperty(IndexerRfqStreamTransformer, "settlementStreamCallback", (response) => {
1690
+ const settlement = response.settlement;
1691
+ return { settlement: settlement ? IndexerGrpcRfqTransformer.grpcRfqSettlementToRfqSettlement(settlement) : void 0 };
1692
+ });
1693
+
839
1694
  //#endregion
840
1695
  //#region src/client/indexer/transformers/IndexerGrpcOracleTransformer.ts
841
1696
  var IndexerGrpcOracleTransformer = class IndexerGrpcOracleTransformer {
@@ -2825,6 +3680,73 @@ _defineProperty(IndexerAccountPortfolioStreamTransformer, "accountPortfolioStrea
2825
3680
  };
2826
3681
  });
2827
3682
 
3683
+ //#endregion
3684
+ //#region src/client/indexer/grpc/IndexerGrpcRfqApi.ts
3685
+ /**
3686
+ * @category Indexer Grpc API
3687
+ */
3688
+ var IndexerGrpcRFQApi = class extends BaseIndexerGrpcConsumer {
3689
+ constructor(..._args) {
3690
+ super(..._args);
3691
+ _defineProperty(this, "module", IndexerModule.RFQ);
3692
+ }
3693
+ get client() {
3694
+ return this.initClient(InjectiveRFQRPCClient);
3695
+ }
3696
+ async submitRequest({ rfqId, margin, expiry, status, height, marketId, quantity, direction, createdAt, updatedAt, worstPrice, requestAddress, transactionTime }) {
3697
+ const request = InjectiveRFQExchangeRpcPb.RFQRequestType.create();
3698
+ if (rfqId !== void 0) request.rfqId = rfqId;
3699
+ if (marketId) request.marketId = marketId;
3700
+ if (direction) request.direction = direction;
3701
+ if (margin) request.margin = margin;
3702
+ if (quantity) request.quantity = quantity;
3703
+ if (worstPrice) request.worstPrice = worstPrice;
3704
+ if (requestAddress) request.requestAddress = requestAddress;
3705
+ if (expiry) request.expiry = expiry;
3706
+ if (status) request.status = status;
3707
+ if (createdAt) request.createdAt = createdAt;
3708
+ if (updatedAt) request.updatedAt = updatedAt;
3709
+ if (transactionTime) request.transactionTime = transactionTime;
3710
+ if (height) request.height = height;
3711
+ const requestMessage = InjectiveRFQExchangeRpcPb.RequestRequest.create();
3712
+ requestMessage.request = request;
3713
+ return { status: (await this.executeGrpcCall(requestMessage, this.client.request.bind(this.client))).status };
3714
+ }
3715
+ async submitQuote({ rfqId, price, maker, taker, margin, expiry, status, height, chainId, marketId, quantity, signature, createdAt, updatedAt, eventTime, takerDirection, contractAddress, transactionTime }) {
3716
+ const request = InjectiveRFQExchangeRpcPb.RFQQuoteType.create();
3717
+ if (chainId) request.chainId = chainId;
3718
+ if (contractAddress) request.contractAddress = contractAddress;
3719
+ if (marketId) request.marketId = marketId;
3720
+ if (rfqId !== void 0) request.rfqId = rfqId;
3721
+ if (takerDirection) request.takerDirection = takerDirection;
3722
+ if (margin) request.margin = margin;
3723
+ if (quantity) request.quantity = quantity;
3724
+ if (price) request.price = price;
3725
+ if (expiry) request.expiry = expiry;
3726
+ if (maker) request.maker = maker;
3727
+ if (taker) request.taker = taker;
3728
+ if (signature) request.signature = signature;
3729
+ if (status) request.status = status;
3730
+ if (createdAt) request.createdAt = createdAt;
3731
+ if (updatedAt) request.updatedAt = updatedAt;
3732
+ if (height) request.height = height;
3733
+ if (eventTime) request.eventTime = eventTime;
3734
+ if (transactionTime) request.transactionTime = transactionTime;
3735
+ const quoteMessage = InjectiveRFQExchangeRpcPb.QuoteRequest.create();
3736
+ quoteMessage.quote = request;
3737
+ return { status: (await this.executeGrpcCall(quoteMessage, this.client.quote.bind(this.client))).status };
3738
+ }
3739
+ async fetchSettlements(params) {
3740
+ const { addresses, pagination } = params || {};
3741
+ const request = InjectiveRFQExchangeRpcPb.ListSettlementRequest.create();
3742
+ if (addresses && addresses.length > 0) request.addresses = addresses;
3743
+ if (pagination === null || pagination === void 0 ? void 0 : pagination.skip) request.skip = BigInt(pagination.skip);
3744
+ if (pagination === null || pagination === void 0 ? void 0 : pagination.limit) request.limit = BigInt(pagination.limit);
3745
+ const response = await this.executeGrpcCall(request, this.client.listSettlement.bind(this.client));
3746
+ return IndexerGrpcRfqTransformer.listSettlementsResponseToSettlements(response);
3747
+ }
3748
+ };
3749
+
2828
3750
  //#endregion
2829
3751
  //#region src/client/indexer/grpc/IndexerGrpcMitoApi.ts
2830
3752
  /**
@@ -5519,6 +6441,41 @@ function createStreamSubscriptionV2(stream, handleResponse) {
5519
6441
  return subscription;
5520
6442
  }
5521
6443
 
6444
+ //#endregion
6445
+ //#region src/client/indexer/grpc_stream/streamV2/IndexerGrpcRfqStreamV2.ts
6446
+ var IndexerGrpcRfqStreamV2 = class {
6447
+ constructor(endpoint, metadata) {
6448
+ _defineProperty(this, "client", void 0);
6449
+ _defineProperty(this, "transport", void 0);
6450
+ this.transport = new GrpcWebRpcTransport(endpoint, metadata);
6451
+ this.client = new InjectiveRFQRPCClient(this.transport);
6452
+ }
6453
+ streamRequests({ marketIds, callback }) {
6454
+ if (typeof callback !== "function") throw new Error("callback must be a function");
6455
+ const request = InjectiveRFQExchangeRpcPb.StreamRequestRequest.create();
6456
+ if (marketIds && marketIds.length > 0) request.marketIds = marketIds;
6457
+ return createStreamSubscriptionV2(this.client.streamRequest(request), (response) => {
6458
+ callback(IndexerRfqStreamTransformer.requestStreamCallback(response));
6459
+ });
6460
+ }
6461
+ streamQuotes({ addresses, callback }) {
6462
+ if (typeof callback !== "function") throw new Error("callback must be a function");
6463
+ const request = InjectiveRFQExchangeRpcPb.StreamQuoteRequest.create();
6464
+ if (addresses && addresses.length > 0) request.addresses = addresses;
6465
+ return createStreamSubscriptionV2(this.client.streamQuote(request), (response) => {
6466
+ callback(IndexerRfqStreamTransformer.quoteStreamCallback(response));
6467
+ });
6468
+ }
6469
+ streamSettlements({ addresses, callback }) {
6470
+ if (typeof callback !== "function") throw new Error("callback must be a function");
6471
+ const request = InjectiveRFQExchangeRpcPb.StreamSettlementRequest.create();
6472
+ if (addresses && addresses.length > 0) request.addresses = addresses;
6473
+ return createStreamSubscriptionV2(this.client.streamSettlement(request), (response) => {
6474
+ callback(IndexerRfqStreamTransformer.settlementStreamCallback(response));
6475
+ });
6476
+ }
6477
+ };
6478
+
5522
6479
  //#endregion
5523
6480
  //#region src/client/indexer/grpc_stream/streamV2/IndexerGrpcSpotStreamV2.ts
5524
6481
  var IndexerGrpcSpotStreamV2 = class {
@@ -6327,4 +7284,4 @@ var StreamManagerV2 = class extends EventEmitter {
6327
7284
  };
6328
7285
 
6329
7286
  //#endregion
6330
- export { IndexerGrpcMegaVaultTransformer as $, IndexerGrpcInsuranceFundApi as A, IndexerGrpcAccountApi as B, IndexerGrpcSpotStream as C, IndexerRestMarketChronosApi as D, IndexerRestDerivativesChronosApi as E, IndexerGrpcArchiverApi as F, IndexerAccountPortfolioStreamTransformer as G, IndexerGrpcSpotApi as H, IndexerGrpcCampaignApi as I, IndexerGrpcAccountPortfolioTransformer as J, IndexerGrpcInsuranceFundTransformer as K, IndexerGrpcExplorerApi as L, IndexerGrpcDerivativesApi as M, IndexerGrpcMegaVaultApi as N, IndexerRestSpotChronosApi as O, IndexerGrpcReferralApi as P, IndexerArchiverStreamTransformer as Q, IndexerGrpcTradingApi as R, IndexerGrpcMitoStream as S, IndexerRestLeaderboardChronosApi as T, IndexerGrpcMetaApi as U, IndexerGrpcOracleApi as V, IndexerGrpcMitoApi as W, IndexerGrpcDerivativeTransformer as X, IndexerGrpcMitoStreamTransformer as Y, ExplorerStreamTransformer as Z, IndexerGrpcArchiverStream as _, IndexerGrpcArchiverStreamV2 as a, IndexerGrpcExplorerTransformer as at, IndexerGrpcAccountStream as b, IndexerGrpcAccountStreamV2 as c, IndexerGrpcAccountTransformer as ct, IndexerGrpcSpotStreamV2 as d, IndexerCampaignTransformer as dt, IndexerAuctionStreamTransformer as et, createStreamSubscriptionV2 as f, IndexerGrpcSpotTransformer as ft, IndexerGrpcExplorerStream as g, IndexerGrpcDerivativesStream as h, IndexerGrpcExplorerStreamV2 as i, IndexerGrpcReferralTransformer as it, IndexerGrpcAccountPortfolioApi as j, IndexerRestExplorerApi as k, IndexerGrpcOracleStreamV2 as l, IndexerSpotStreamTransformer as lt, IndexerGrpcAccountPortfolioStream as m, IndexerGrpcAccountPortfolioStreamV2 as n, IndexerRestExplorerTransformer as nt, IndexerGrpcTradingStreamV2 as o, IndexerGrpcArchiverTransformer as ot, StreamManager as p, IndexerGrpcMitoTransformer as pt, IndexerDerivativeStreamTransformer as q, IndexerGrpcDerivativesStreamV2 as r, IndexerOracleStreamTransformer as rt, IndexerGrpcAuctionStreamV2 as s, IndexerGrpcAuctionTransformer as st, StreamManagerV2 as t, IndexerAccountStreamTransformer as tt, IndexerGrpcMitoStreamV2 as u, IndexerGrpcOracleTransformer as ut, IndexerGrpcTradingStream as v, createStreamSubscription as w, IndexerGrpcOracleStream as x, IndexerGrpcAuctionStream as y, IndexerGrpcAuctionApi as z };
7287
+ export { ExplorerStreamTransformer as $, IndexerRestExplorerApi as A, IndexerGrpcAuctionApi as B, IndexerGrpcMitoStream as C, DEFAULT_TRANSPORT_CONFIG as Ct, IndexerRestDerivativesChronosApi as D, IndexerRestLeaderboardChronosApi as E, IndexerGrpcReferralApi as F, IndexerGrpcMitoApi as G, IndexerGrpcOracleApi as H, IndexerGrpcArchiverApi as I, IndexerGrpcInsuranceFundTransformer as J, IndexerGrpcRFQApi as K, IndexerGrpcCampaignApi as L, IndexerGrpcAccountPortfolioApi as M, IndexerGrpcDerivativesApi as N, IndexerRestMarketChronosApi as O, IndexerGrpcMegaVaultApi as P, IndexerGrpcDerivativeTransformer as Q, IndexerGrpcExplorerApi as R, IndexerGrpcOracleStream as S, DEFAULT_RECONNECT_CONFIG as St, createStreamSubscription as T, WsState as Tt, IndexerGrpcSpotApi as U, IndexerGrpcAccountApi as V, IndexerGrpcMetaApi as W, IndexerGrpcAccountPortfolioTransformer as X, IndexerDerivativeStreamTransformer as Y, IndexerGrpcMitoStreamTransformer as Z, IndexerGrpcExplorerStream as _, IndexerWsMakerStream as _t, IndexerGrpcArchiverStreamV2 as a, IndexerOracleStreamTransformer as at, IndexerGrpcAuctionStream as b, GrpcWebSocketTransport as bt, IndexerGrpcAccountStreamV2 as c, IndexerGrpcArchiverTransformer as ct, IndexerGrpcSpotStreamV2 as d, IndexerSpotStreamTransformer as dt, IndexerArchiverStreamTransformer as et, IndexerGrpcRfqStreamV2 as f, IndexerGrpcOracleTransformer as ft, IndexerGrpcDerivativesStream as g, IndexerGrpcMitoTransformer as gt, IndexerGrpcAccountPortfolioStream as h, IndexerGrpcSpotTransformer as ht, IndexerGrpcExplorerStreamV2 as i, IndexerRestExplorerTransformer as it, IndexerGrpcInsuranceFundApi as j, IndexerRestSpotChronosApi as k, IndexerGrpcOracleStreamV2 as l, IndexerGrpcAuctionTransformer as lt, StreamManager as m, IndexerCampaignTransformer as mt, IndexerGrpcAccountPortfolioStreamV2 as n, IndexerAuctionStreamTransformer as nt, IndexerGrpcTradingStreamV2 as o, IndexerGrpcReferralTransformer as ot, createStreamSubscriptionV2 as p, IndexerRfqStreamTransformer as pt, IndexerAccountPortfolioStreamTransformer as q, IndexerGrpcDerivativesStreamV2 as r, IndexerAccountStreamTransformer as rt, IndexerGrpcAuctionStreamV2 as s, IndexerGrpcExplorerTransformer as st, StreamManagerV2 as t, IndexerGrpcMegaVaultTransformer as tt, IndexerGrpcMitoStreamV2 as u, IndexerGrpcAccountTransformer as ut, IndexerGrpcArchiverStream as v, IndexerWsTakerStream as vt, IndexerGrpcSpotStream as w, WsDisconnectReason as wt, IndexerGrpcAccountStream as x, GrpcWebSocketCodec as xt, IndexerGrpcTradingStream as y, IndexerGrpcRfqTransformer as yt, IndexerGrpcTradingApi as z };