@acta-markets/ts-sdk 0.0.23-beta → 0.0.24-beta
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.
- package/README.md +2 -2
- package/dist/cjs/ws/client.js +27 -10
- package/dist/ws/client.d.ts +12 -6
- package/dist/ws/client.js +27 -10
- package/dist/ws/types.d.ts +77 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,10 +8,10 @@ Generated by Codama.
|
|
|
8
8
|
|
|
9
9
|
## Package
|
|
10
10
|
|
|
11
|
-
Published package: `@acta-markets/ts-sdk@0.0.
|
|
11
|
+
Published package: `@acta-markets/ts-sdk@0.0.24-beta` (ESM-first, CJS fallback)
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
yarn add @acta-markets/ts-sdk@0.0.
|
|
14
|
+
yarn add @acta-markets/ts-sdk@0.0.24-beta
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Tooling
|
package/dist/cjs/ws/client.js
CHANGED
|
@@ -103,6 +103,7 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
103
103
|
connectionState = "disconnected";
|
|
104
104
|
sessionId = null;
|
|
105
105
|
lastAuthSessionId = null;
|
|
106
|
+
makerPda = null;
|
|
106
107
|
helloSent = false;
|
|
107
108
|
welcomeReceived = false;
|
|
108
109
|
pendingMessages = [];
|
|
@@ -147,6 +148,7 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
147
148
|
this.authRequested = false;
|
|
148
149
|
this.pendingResumeSessionId = null;
|
|
149
150
|
this.lastAuthSessionId = null;
|
|
151
|
+
this.makerPda = null;
|
|
150
152
|
this.shouldReconnect = this.options.autoReconnect;
|
|
151
153
|
this.doConnect();
|
|
152
154
|
}
|
|
@@ -200,6 +202,9 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
200
202
|
getSessionId() {
|
|
201
203
|
return this.sessionId;
|
|
202
204
|
}
|
|
205
|
+
getMakerPda() {
|
|
206
|
+
return this.makerPda;
|
|
207
|
+
}
|
|
203
208
|
async createRfq(request) {
|
|
204
209
|
this.ensureAuthenticated();
|
|
205
210
|
(0, wirePolicy_1.assertWsU64Safe)(request.strike, "strike");
|
|
@@ -340,12 +345,12 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
340
345
|
});
|
|
341
346
|
return requestId;
|
|
342
347
|
}
|
|
343
|
-
/** Maker-only:
|
|
344
|
-
|
|
348
|
+
/** Maker-only: one-shot MM dashboard bootstrap. */
|
|
349
|
+
getMmSummary() {
|
|
345
350
|
this.ensureAuthenticated();
|
|
346
351
|
const requestId = this.nextRequestId();
|
|
347
352
|
this.send({
|
|
348
|
-
type: "
|
|
353
|
+
type: "GetMmSummary",
|
|
349
354
|
data: { request_id: requestId },
|
|
350
355
|
});
|
|
351
356
|
return requestId;
|
|
@@ -400,6 +405,7 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
400
405
|
const data = {
|
|
401
406
|
request_id: requestId,
|
|
402
407
|
active_only: args?.active_only ?? true,
|
|
408
|
+
...(args?.limit !== undefined ? { limit: args.limit } : {}),
|
|
403
409
|
};
|
|
404
410
|
this.send({ type: "GetMyQuotes", data });
|
|
405
411
|
return requestId;
|
|
@@ -724,7 +730,7 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
724
730
|
void this.handleAuthRequest(message.data.challenge);
|
|
725
731
|
break;
|
|
726
732
|
case "AuthSuccess":
|
|
727
|
-
this.handleAuthSuccess(message.data.session_id, message.data.expires_at);
|
|
733
|
+
this.handleAuthSuccess(message.data.session_id, message.data.expires_at, message.data.maker_pda ?? null);
|
|
728
734
|
break;
|
|
729
735
|
case "AuthError":
|
|
730
736
|
this.handleAuthError(message.data.reason, message.data.message);
|
|
@@ -733,6 +739,7 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
733
739
|
this.sessionId = null;
|
|
734
740
|
this.pendingResumeSessionId = null;
|
|
735
741
|
this.lastAuthSessionId = null;
|
|
742
|
+
this.makerPda = null;
|
|
736
743
|
this.startAuthSent = false;
|
|
737
744
|
this.setConnectionState("connecting");
|
|
738
745
|
this.emit("logoutSuccess");
|
|
@@ -780,9 +787,6 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
780
787
|
case "MyCaps":
|
|
781
788
|
this.emit("myCaps", message.data);
|
|
782
789
|
break;
|
|
783
|
-
case "MakerBalances":
|
|
784
|
-
this.emit("makerBalances", message.data);
|
|
785
|
-
break;
|
|
786
790
|
case "MakerPositions":
|
|
787
791
|
this.emit("makerPositions", message.data);
|
|
788
792
|
break;
|
|
@@ -795,6 +799,18 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
795
799
|
case "MyQuotes":
|
|
796
800
|
this.emit("myQuotes", message.data);
|
|
797
801
|
break;
|
|
802
|
+
case "MmSummary":
|
|
803
|
+
this.emit("mmSummary", message.data);
|
|
804
|
+
break;
|
|
805
|
+
case "QuoteRejected":
|
|
806
|
+
this.emit("quoteRejected", message.data);
|
|
807
|
+
break;
|
|
808
|
+
case "BatchQuotesAck":
|
|
809
|
+
this.emit("batchQuotesAck", message.data);
|
|
810
|
+
break;
|
|
811
|
+
case "CancelAllQuotesAck":
|
|
812
|
+
this.emit("cancelAllQuotesAck", message.data);
|
|
813
|
+
break;
|
|
798
814
|
case "MyActiveRfqs":
|
|
799
815
|
this.handleMyActiveRfqs(message.data);
|
|
800
816
|
break;
|
|
@@ -1050,14 +1066,15 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
1050
1066
|
this.send(msg);
|
|
1051
1067
|
}
|
|
1052
1068
|
}
|
|
1053
|
-
handleAuthSuccess(sessionId, expiresAt) {
|
|
1069
|
+
handleAuthSuccess(sessionId, expiresAt, makerPda) {
|
|
1054
1070
|
this.sessionId = sessionId;
|
|
1055
1071
|
this.pendingResumeSessionId = null;
|
|
1056
1072
|
if (expiresAt !== null) {
|
|
1057
1073
|
this.lastAuthSessionId = sessionId;
|
|
1058
1074
|
}
|
|
1075
|
+
this.makerPda = makerPda;
|
|
1059
1076
|
this.setConnectionState("authenticated");
|
|
1060
|
-
this.emit("authenticated", sessionId, expiresAt);
|
|
1077
|
+
this.emit("authenticated", sessionId, expiresAt, makerPda);
|
|
1061
1078
|
if (this.subscribedChannels.size > 0) {
|
|
1062
1079
|
const channels = Array.from(this.subscribedChannels);
|
|
1063
1080
|
const request_id = this.nextRequestId();
|
|
@@ -1141,7 +1158,7 @@ class ActaWsClient extends TypedEventEmitter {
|
|
|
1141
1158
|
}
|
|
1142
1159
|
handlePositionUpdated(data) {
|
|
1143
1160
|
this.state.positions.set(data.position.pda, data.position);
|
|
1144
|
-
this.emit("positionUpdated", data.position, data.update_type);
|
|
1161
|
+
this.emit("positionUpdated", data.position, data.update_type, data);
|
|
1145
1162
|
}
|
|
1146
1163
|
handleChainEvent(event) {
|
|
1147
1164
|
this.emit("chainEvent", event);
|
package/dist/ws/client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { AuthProvider } from "./auth";
|
|
3
3
|
import type { SignerLike } from "../chain/orders";
|
|
4
4
|
import type { Address } from "@solana/addresses";
|
|
5
|
-
import type { ActiveRfqInfo, ChainEventMessage, EarnSummaryData, TokenMarketsInfoData, GlobalStats, MarketDescriptorInfo, MarketInfo, MyActiveRfqInfo, MyActiveRfqsMessage, OrderStatusMessage, PositionInfo, QuoteAcknowledgedMessage, QuoteBestStatusMessage, QuoteCancelledMessage, QuoteMessage, ReplaceQuoteMessage, QuoteRefreshRequestedMessage, QuoteOutbidMessage, QuoteReceivedMessage, QuoteSelectedMessage, QuotesUpdateMessage, RfqBroadcastMessage, RfqClosedMessage, RfqCreatedMessage, RfqSkippedMessage, RfqRequestMessage, RfqAvailableAgainMessage, QuoteExpiredMessage, QuoteFilledMessage, IndicativePricesMessage, IndicativePricesRequestMessage, IndicativePricesResponseMessage, GetIndicativePricesMessage,
|
|
5
|
+
import type { ActiveRfqInfo, ChainEventMessage, EarnSummaryData, TokenMarketsInfoData, GlobalStats, MarketDescriptorInfo, MarketInfo, MyActiveRfqInfo, MyActiveRfqsMessage, OrderStatusMessage, PositionInfo, PositionUpdatedMessage, QuoteAcknowledgedMessage, QuoteBestStatusMessage, QuoteCancelledMessage, QuoteMessage, ReplaceQuoteMessage, QuoteRefreshRequestedMessage, QuoteOutbidMessage, QuoteReceivedMessage, QuoteSelectedMessage, QuotesUpdateMessage, RfqBroadcastMessage, RfqClosedMessage, RfqCreatedMessage, RfqSkippedMessage, RfqRequestMessage, RfqAvailableAgainMessage, QuoteExpiredMessage, QuoteFilledMessage, IndicativePricesMessage, IndicativePricesRequestMessage, IndicativePricesResponseMessage, GetIndicativePricesMessage, CancelAllQuotesAckMessage, BatchQuotesAckMessage, QuoteRejectedMessage, MakerMarketsMessage, MakerPositionsMessage, MmSummaryData, MyCapsMessage, MyQuotesMessage, MyTradesMessage, RequestId, ServerError, ServerMessage, SnapshotMessage, StatsDelta, SubscriptionsMessage, TokenInfo, TradeInfo, UuidString, VersionMismatchMessage, WelcomeMessage, WsChannel, InviteRedeemedData, ReferralCodeClaimedData, MyReferralInfoData } from "./types";
|
|
6
6
|
export type ConnectionState = "disconnected" | "connecting" | "authenticating" | "authenticated" | "error";
|
|
7
7
|
export type ClientRole = "taker" | "maker";
|
|
8
8
|
export type PendingMessagesOverflowPolicy = "drop_oldest" | "drop_newest" | "throw";
|
|
@@ -56,7 +56,7 @@ export type ActaWsClientEvents = {
|
|
|
56
56
|
connected: () => void;
|
|
57
57
|
welcome: (msg: WelcomeMessage) => void;
|
|
58
58
|
versionMismatch: (msg: VersionMismatchMessage) => void;
|
|
59
|
-
authenticated: (sessionId: string, expiresAt: number | null) => void;
|
|
59
|
+
authenticated: (sessionId: string, expiresAt: number | null, makerPda: string | null) => void;
|
|
60
60
|
authError: (reason: string, message?: string) => void;
|
|
61
61
|
logoutSuccess: () => void;
|
|
62
62
|
disconnected: (code: number, reason: string) => void;
|
|
@@ -110,12 +110,15 @@ export type ActaWsClientEvents = {
|
|
|
110
110
|
quoteCancelled: (msg: QuoteCancelledMessage) => void;
|
|
111
111
|
rfqAvailableAgain: (msg: RfqAvailableAgainMessage) => void;
|
|
112
112
|
quoteExpired: (msg: QuoteExpiredMessage) => void;
|
|
113
|
+
quoteRejected: (msg: QuoteRejectedMessage) => void;
|
|
114
|
+
batchQuotesAck: (msg: BatchQuotesAckMessage) => void;
|
|
115
|
+
cancelAllQuotesAck: (msg: CancelAllQuotesAckMessage) => void;
|
|
113
116
|
indicativePrices: (msg: IndicativePricesMessage) => void;
|
|
114
117
|
indicativePricesRequest: (msg: IndicativePricesRequestMessage) => void;
|
|
115
|
-
makerBalances: (msg: MakerBalancesMessage) => void;
|
|
116
118
|
makerPositions: (msg: MakerPositionsMessage) => void;
|
|
117
119
|
myTrades: (msg: MyTradesMessage) => void;
|
|
118
120
|
myCaps: (msg: MyCapsMessage) => void;
|
|
121
|
+
mmSummary: (msg: MmSummaryData) => void;
|
|
119
122
|
makerMarkets: (msg: MakerMarketsMessage) => void;
|
|
120
123
|
myQuotes: (msg: MyQuotesMessage) => void;
|
|
121
124
|
myActiveRfqs: (msg: MyActiveRfqsMessage) => void;
|
|
@@ -126,7 +129,7 @@ export type ActaWsClientEvents = {
|
|
|
126
129
|
orderConfirmed: (orderId: string, positionPda: string) => void;
|
|
127
130
|
orderFailed: (orderId: string, reason: string) => void;
|
|
128
131
|
tradeExecuted: (trade: TradeInfo, delta?: StatsDelta | null) => void;
|
|
129
|
-
positionUpdated: (position: PositionInfo, updateType: string) => void;
|
|
132
|
+
positionUpdated: (position: PositionInfo, updateType: string, msg: PositionUpdatedMessage) => void;
|
|
130
133
|
marketCreated: (market: MarketInfo) => void;
|
|
131
134
|
marketFinalized: (marketPda: string, settlementPrice: number) => void;
|
|
132
135
|
chainEvent: (event: ChainEventMessage) => void;
|
|
@@ -184,6 +187,7 @@ export declare class ActaWsClient extends TypedEventEmitter<ActaWsClientEvents>
|
|
|
184
187
|
private connectionState;
|
|
185
188
|
private sessionId;
|
|
186
189
|
private lastAuthSessionId;
|
|
190
|
+
private makerPda;
|
|
187
191
|
private helloSent;
|
|
188
192
|
private welcomeReceived;
|
|
189
193
|
private pendingMessages;
|
|
@@ -207,6 +211,7 @@ export declare class ActaWsClient extends TypedEventEmitter<ActaWsClientEvents>
|
|
|
207
211
|
getConnectionState(): ConnectionState;
|
|
208
212
|
isAuthenticated(): boolean;
|
|
209
213
|
getSessionId(): string | null;
|
|
214
|
+
getMakerPda(): string | null;
|
|
210
215
|
createRfq(request: Omit<RfqRequestMessage, "timeout_seconds"> & {
|
|
211
216
|
timeoutSeconds?: number;
|
|
212
217
|
clientRequestId?: string;
|
|
@@ -249,8 +254,8 @@ export declare class ActaWsClient extends TypedEventEmitter<ActaWsClientEvents>
|
|
|
249
254
|
}): RequestId;
|
|
250
255
|
getEarnSummary(): RequestId;
|
|
251
256
|
getTokenMarketsInfo(underlyingMint: string): RequestId;
|
|
252
|
-
/** Maker-only:
|
|
253
|
-
|
|
257
|
+
/** Maker-only: one-shot MM dashboard bootstrap. */
|
|
258
|
+
getMmSummary(): RequestId;
|
|
254
259
|
/** Maker-only: get open positions with optional filters. */
|
|
255
260
|
getMakerPositions(args?: {
|
|
256
261
|
market?: string;
|
|
@@ -279,6 +284,7 @@ export declare class ActaWsClient extends TypedEventEmitter<ActaWsClientEvents>
|
|
|
279
284
|
/** Maker-only: get submitted quotes with status. */
|
|
280
285
|
getMyQuotes(args?: {
|
|
281
286
|
active_only?: boolean;
|
|
287
|
+
limit?: number;
|
|
282
288
|
}): RequestId;
|
|
283
289
|
logout(): void;
|
|
284
290
|
/**
|
package/dist/ws/client.js
CHANGED
|
@@ -100,6 +100,7 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
100
100
|
connectionState = "disconnected";
|
|
101
101
|
sessionId = null;
|
|
102
102
|
lastAuthSessionId = null;
|
|
103
|
+
makerPda = null;
|
|
103
104
|
helloSent = false;
|
|
104
105
|
welcomeReceived = false;
|
|
105
106
|
pendingMessages = [];
|
|
@@ -144,6 +145,7 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
144
145
|
this.authRequested = false;
|
|
145
146
|
this.pendingResumeSessionId = null;
|
|
146
147
|
this.lastAuthSessionId = null;
|
|
148
|
+
this.makerPda = null;
|
|
147
149
|
this.shouldReconnect = this.options.autoReconnect;
|
|
148
150
|
this.doConnect();
|
|
149
151
|
}
|
|
@@ -197,6 +199,9 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
197
199
|
getSessionId() {
|
|
198
200
|
return this.sessionId;
|
|
199
201
|
}
|
|
202
|
+
getMakerPda() {
|
|
203
|
+
return this.makerPda;
|
|
204
|
+
}
|
|
200
205
|
async createRfq(request) {
|
|
201
206
|
this.ensureAuthenticated();
|
|
202
207
|
assertWsU64Safe(request.strike, "strike");
|
|
@@ -337,12 +342,12 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
337
342
|
});
|
|
338
343
|
return requestId;
|
|
339
344
|
}
|
|
340
|
-
/** Maker-only:
|
|
341
|
-
|
|
345
|
+
/** Maker-only: one-shot MM dashboard bootstrap. */
|
|
346
|
+
getMmSummary() {
|
|
342
347
|
this.ensureAuthenticated();
|
|
343
348
|
const requestId = this.nextRequestId();
|
|
344
349
|
this.send({
|
|
345
|
-
type: "
|
|
350
|
+
type: "GetMmSummary",
|
|
346
351
|
data: { request_id: requestId },
|
|
347
352
|
});
|
|
348
353
|
return requestId;
|
|
@@ -397,6 +402,7 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
397
402
|
const data = {
|
|
398
403
|
request_id: requestId,
|
|
399
404
|
active_only: args?.active_only ?? true,
|
|
405
|
+
...(args?.limit !== undefined ? { limit: args.limit } : {}),
|
|
400
406
|
};
|
|
401
407
|
this.send({ type: "GetMyQuotes", data });
|
|
402
408
|
return requestId;
|
|
@@ -721,7 +727,7 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
721
727
|
void this.handleAuthRequest(message.data.challenge);
|
|
722
728
|
break;
|
|
723
729
|
case "AuthSuccess":
|
|
724
|
-
this.handleAuthSuccess(message.data.session_id, message.data.expires_at);
|
|
730
|
+
this.handleAuthSuccess(message.data.session_id, message.data.expires_at, message.data.maker_pda ?? null);
|
|
725
731
|
break;
|
|
726
732
|
case "AuthError":
|
|
727
733
|
this.handleAuthError(message.data.reason, message.data.message);
|
|
@@ -730,6 +736,7 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
730
736
|
this.sessionId = null;
|
|
731
737
|
this.pendingResumeSessionId = null;
|
|
732
738
|
this.lastAuthSessionId = null;
|
|
739
|
+
this.makerPda = null;
|
|
733
740
|
this.startAuthSent = false;
|
|
734
741
|
this.setConnectionState("connecting");
|
|
735
742
|
this.emit("logoutSuccess");
|
|
@@ -777,9 +784,6 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
777
784
|
case "MyCaps":
|
|
778
785
|
this.emit("myCaps", message.data);
|
|
779
786
|
break;
|
|
780
|
-
case "MakerBalances":
|
|
781
|
-
this.emit("makerBalances", message.data);
|
|
782
|
-
break;
|
|
783
787
|
case "MakerPositions":
|
|
784
788
|
this.emit("makerPositions", message.data);
|
|
785
789
|
break;
|
|
@@ -792,6 +796,18 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
792
796
|
case "MyQuotes":
|
|
793
797
|
this.emit("myQuotes", message.data);
|
|
794
798
|
break;
|
|
799
|
+
case "MmSummary":
|
|
800
|
+
this.emit("mmSummary", message.data);
|
|
801
|
+
break;
|
|
802
|
+
case "QuoteRejected":
|
|
803
|
+
this.emit("quoteRejected", message.data);
|
|
804
|
+
break;
|
|
805
|
+
case "BatchQuotesAck":
|
|
806
|
+
this.emit("batchQuotesAck", message.data);
|
|
807
|
+
break;
|
|
808
|
+
case "CancelAllQuotesAck":
|
|
809
|
+
this.emit("cancelAllQuotesAck", message.data);
|
|
810
|
+
break;
|
|
795
811
|
case "MyActiveRfqs":
|
|
796
812
|
this.handleMyActiveRfqs(message.data);
|
|
797
813
|
break;
|
|
@@ -1047,14 +1063,15 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
1047
1063
|
this.send(msg);
|
|
1048
1064
|
}
|
|
1049
1065
|
}
|
|
1050
|
-
handleAuthSuccess(sessionId, expiresAt) {
|
|
1066
|
+
handleAuthSuccess(sessionId, expiresAt, makerPda) {
|
|
1051
1067
|
this.sessionId = sessionId;
|
|
1052
1068
|
this.pendingResumeSessionId = null;
|
|
1053
1069
|
if (expiresAt !== null) {
|
|
1054
1070
|
this.lastAuthSessionId = sessionId;
|
|
1055
1071
|
}
|
|
1072
|
+
this.makerPda = makerPda;
|
|
1056
1073
|
this.setConnectionState("authenticated");
|
|
1057
|
-
this.emit("authenticated", sessionId, expiresAt);
|
|
1074
|
+
this.emit("authenticated", sessionId, expiresAt, makerPda);
|
|
1058
1075
|
if (this.subscribedChannels.size > 0) {
|
|
1059
1076
|
const channels = Array.from(this.subscribedChannels);
|
|
1060
1077
|
const request_id = this.nextRequestId();
|
|
@@ -1138,7 +1155,7 @@ export class ActaWsClient extends TypedEventEmitter {
|
|
|
1138
1155
|
}
|
|
1139
1156
|
handlePositionUpdated(data) {
|
|
1140
1157
|
this.state.positions.set(data.position.pda, data.position);
|
|
1141
|
-
this.emit("positionUpdated", data.position, data.update_type);
|
|
1158
|
+
this.emit("positionUpdated", data.position, data.update_type, data);
|
|
1142
1159
|
}
|
|
1143
1160
|
handleChainEvent(event) {
|
|
1144
1161
|
this.emit("chainEvent", event);
|
package/dist/ws/types.d.ts
CHANGED
|
@@ -23,10 +23,10 @@ export type MyActiveRfqState = string;
|
|
|
23
23
|
export type HelloFeatureFlag = string;
|
|
24
24
|
/** Values: "covered_call" | "cash_secured_put". */
|
|
25
25
|
export type PositionType = string;
|
|
26
|
-
|
|
27
|
-
export type PositionStatus = string;
|
|
26
|
+
export type PositionStatus = "none" | "open" | "funded" | "liquidated" | "settled";
|
|
28
27
|
/** Values: "pending" | "best" | "outbid" | "filled" | "expired". */
|
|
29
28
|
export type MakerQuoteStatus = string;
|
|
29
|
+
export type QuoteRejectReasonValue = "invalid_strike" | "market_expired" | "quote_expiry_too_short" | "invalid_signature" | "maker_not_registered" | "order_id_mismatch" | "cap_exceeded" | "rfq_not_found" | "rfq_not_active" | "duplicate_order_id";
|
|
30
30
|
/** Values: "expired" | "expiring_soon". */
|
|
31
31
|
export type QuoteRefreshReason = string;
|
|
32
32
|
/** Values: "requested" | "risk_check" | "rfq_accepted". */
|
|
@@ -149,9 +149,6 @@ export type ClientMessage = {
|
|
|
149
149
|
} | {
|
|
150
150
|
type: "GetMarketsForMaker";
|
|
151
151
|
data: GetMarketsForMakerMessage;
|
|
152
|
-
} | {
|
|
153
|
-
type: "GetMakerBalances";
|
|
154
|
-
data: GetMakerBalancesMessage;
|
|
155
152
|
} | {
|
|
156
153
|
type: "GetTokenCaps";
|
|
157
154
|
data: GetTokenCapsMessage;
|
|
@@ -161,6 +158,9 @@ export type ClientMessage = {
|
|
|
161
158
|
} | {
|
|
162
159
|
type: "GetEarnSummary";
|
|
163
160
|
data: GetEarnSummaryMessage;
|
|
161
|
+
} | {
|
|
162
|
+
type: "GetMmSummary";
|
|
163
|
+
data: GetMmSummaryMessage;
|
|
164
164
|
} | {
|
|
165
165
|
type: "GetTokenMarketsInfo";
|
|
166
166
|
data: GetTokenMarketsInfoMessage;
|
|
@@ -276,7 +276,7 @@ export type GetMyActiveRfqsMessage = {
|
|
|
276
276
|
export type GetActiveRfqsMessage = {
|
|
277
277
|
request_id: RequestId;
|
|
278
278
|
};
|
|
279
|
-
export type
|
|
279
|
+
export type GetMmSummaryMessage = {
|
|
280
280
|
request_id: RequestId;
|
|
281
281
|
};
|
|
282
282
|
export type GetSubscriptionsMessage = {
|
|
@@ -296,6 +296,7 @@ export type GetMakerPositionsMessage = {
|
|
|
296
296
|
export type GetMyQuotesMessage = {
|
|
297
297
|
request_id: RequestId;
|
|
298
298
|
active_only?: boolean;
|
|
299
|
+
limit?: WsU32;
|
|
299
300
|
};
|
|
300
301
|
export type GetMarketsForMakerMessage = {
|
|
301
302
|
request_id: RequestId;
|
|
@@ -386,6 +387,7 @@ export type ServerMessage = {
|
|
|
386
387
|
data: {
|
|
387
388
|
session_id: string;
|
|
388
389
|
expires_at: WsI64 | null;
|
|
390
|
+
maker_pda?: string | null;
|
|
389
391
|
};
|
|
390
392
|
} | {
|
|
391
393
|
type: "AuthError";
|
|
@@ -444,6 +446,15 @@ export type ServerMessage = {
|
|
|
444
446
|
} | {
|
|
445
447
|
type: "QuoteExpired";
|
|
446
448
|
data: QuoteExpiredMessage;
|
|
449
|
+
} | {
|
|
450
|
+
type: "QuoteRejected";
|
|
451
|
+
data: QuoteRejectedMessage;
|
|
452
|
+
} | {
|
|
453
|
+
type: "BatchQuotesAck";
|
|
454
|
+
data: BatchQuotesAckMessage;
|
|
455
|
+
} | {
|
|
456
|
+
type: "CancelAllQuotesAck";
|
|
457
|
+
data: CancelAllQuotesAckMessage;
|
|
447
458
|
} | {
|
|
448
459
|
type: "ActiveRfqs";
|
|
449
460
|
data: {
|
|
@@ -459,15 +470,15 @@ export type ServerMessage = {
|
|
|
459
470
|
} | {
|
|
460
471
|
type: "MakerMarkets";
|
|
461
472
|
data: MakerMarketsMessage;
|
|
462
|
-
} | {
|
|
463
|
-
type: "MakerBalances";
|
|
464
|
-
data: MakerBalancesMessage;
|
|
465
473
|
} | {
|
|
466
474
|
type: "TokenCaps";
|
|
467
475
|
data: TokenCapsMessage;
|
|
468
476
|
} | {
|
|
469
477
|
type: "MyCaps";
|
|
470
478
|
data: MyCapsMessage;
|
|
479
|
+
} | {
|
|
480
|
+
type: "MmSummary";
|
|
481
|
+
data: MmSummaryData;
|
|
471
482
|
} | {
|
|
472
483
|
type: "Subscriptions";
|
|
473
484
|
data: SubscriptionsMessage;
|
|
@@ -881,6 +892,27 @@ export type QuoteExpiredMessage = {
|
|
|
881
892
|
order_id: OrderIdHex32;
|
|
882
893
|
reason: QuoteExpiredReason;
|
|
883
894
|
};
|
|
895
|
+
export type QuoteRejectedMessage = {
|
|
896
|
+
rfq_id: UuidString;
|
|
897
|
+
order_id: OrderIdHex32;
|
|
898
|
+
reason: QuoteRejectReasonValue;
|
|
899
|
+
message?: string | null;
|
|
900
|
+
};
|
|
901
|
+
export type BatchQuoteResult = {
|
|
902
|
+
status: "acknowledged";
|
|
903
|
+
data: QuoteAcknowledgedMessage;
|
|
904
|
+
} | {
|
|
905
|
+
status: "rejected";
|
|
906
|
+
data: QuoteRejectedMessage;
|
|
907
|
+
};
|
|
908
|
+
export type BatchQuotesAckMessage = {
|
|
909
|
+
results: BatchQuoteResult[];
|
|
910
|
+
};
|
|
911
|
+
export type CancelAllQuotesAckMessage = {
|
|
912
|
+
request_id: RequestId;
|
|
913
|
+
cancelled_count: WsU32;
|
|
914
|
+
cancelled_order_ids: OrderIdHex32[];
|
|
915
|
+
};
|
|
884
916
|
export type MakerPositionsMessage = {
|
|
885
917
|
request_id: RequestId;
|
|
886
918
|
positions: MakerPositionInfo[];
|
|
@@ -889,7 +921,11 @@ export type MakerPositionInfo = {
|
|
|
889
921
|
pda: string;
|
|
890
922
|
market: string;
|
|
891
923
|
underlying_mint: string;
|
|
924
|
+
underlying_symbol: string;
|
|
925
|
+
underlying_decimals: number;
|
|
892
926
|
quote_mint: string;
|
|
927
|
+
quote_symbol: string;
|
|
928
|
+
quote_decimals: number;
|
|
893
929
|
position_type: PositionType;
|
|
894
930
|
status: PositionStatus;
|
|
895
931
|
strike: WsU64;
|
|
@@ -897,10 +933,10 @@ export type MakerPositionInfo = {
|
|
|
897
933
|
price: WsU64;
|
|
898
934
|
/** Net premium amount from on-chain position state (quote token base units). */
|
|
899
935
|
total_premium: WsU64;
|
|
900
|
-
collateral_locked: WsU64;
|
|
901
936
|
created_at: WsU64;
|
|
902
937
|
expiry_ts: WsU64;
|
|
903
938
|
is_otm?: boolean;
|
|
939
|
+
settlement_price?: WsU64 | null;
|
|
904
940
|
};
|
|
905
941
|
export type MyQuotesMessage = {
|
|
906
942
|
request_id: RequestId;
|
|
@@ -910,6 +946,12 @@ export type MakerQuoteInfo = {
|
|
|
910
946
|
rfq_id: UuidString;
|
|
911
947
|
order_id: OrderIdHex32;
|
|
912
948
|
market: string;
|
|
949
|
+
underlying_mint: string;
|
|
950
|
+
underlying_symbol: string;
|
|
951
|
+
underlying_decimals: number;
|
|
952
|
+
quote_mint: string;
|
|
953
|
+
quote_symbol: string;
|
|
954
|
+
quote_decimals: number;
|
|
913
955
|
strike: WsU64;
|
|
914
956
|
price: WsU64;
|
|
915
957
|
quantity: WsU64;
|
|
@@ -917,6 +959,7 @@ export type MakerQuoteInfo = {
|
|
|
917
959
|
/** "pending" | "best" | "outbid" | "filled" | "expired" | "cancelled" */
|
|
918
960
|
status: MakerQuoteStatus;
|
|
919
961
|
created_at: WsU64;
|
|
962
|
+
selected?: boolean | null;
|
|
920
963
|
};
|
|
921
964
|
export type MakerMarketsMessage = {
|
|
922
965
|
request_id: RequestId;
|
|
@@ -937,15 +980,6 @@ export type MarketStats = {
|
|
|
937
980
|
volume_24h: WsU64;
|
|
938
981
|
trades_24h: WsU32;
|
|
939
982
|
};
|
|
940
|
-
export type MakerBalancesMessage = {
|
|
941
|
-
request_id: RequestId;
|
|
942
|
-
balances_by_mint: Record<string, MakerMintBalance>;
|
|
943
|
-
};
|
|
944
|
-
export type MakerMintBalance = {
|
|
945
|
-
total: WsU64;
|
|
946
|
-
locked_as_collateral: WsU64;
|
|
947
|
-
available: WsU64;
|
|
948
|
-
};
|
|
949
983
|
export type GetTokenCapsMessage = {
|
|
950
984
|
request_id: RequestId;
|
|
951
985
|
include_markets?: boolean;
|
|
@@ -1004,10 +1038,27 @@ export type MakerNotionalCapInfo = {
|
|
|
1004
1038
|
export type MakerBalanceCapInfo = {
|
|
1005
1039
|
mint: string;
|
|
1006
1040
|
symbol: string;
|
|
1041
|
+
decimals: number;
|
|
1007
1042
|
deposited: WsU64;
|
|
1008
1043
|
committed: WsU64;
|
|
1009
1044
|
available: WsU64;
|
|
1010
1045
|
};
|
|
1046
|
+
/** Lightweight caps snapshot attached to owner-direct `PositionUpdated` events. */
|
|
1047
|
+
export type MakerCapsSnapshot = {
|
|
1048
|
+
positions: MakerPositionCapInfo;
|
|
1049
|
+
notional: MakerNotionalCapInfo[];
|
|
1050
|
+
balances: MakerBalanceCapInfo[];
|
|
1051
|
+
};
|
|
1052
|
+
export type MmSummaryData = {
|
|
1053
|
+
request_id: RequestId;
|
|
1054
|
+
maker_pda: string;
|
|
1055
|
+
caps: MyCapsMessage;
|
|
1056
|
+
positions: MakerPositionInfo[];
|
|
1057
|
+
active_quotes: MakerQuoteInfo[];
|
|
1058
|
+
markets: MakerMarketInfo[];
|
|
1059
|
+
tokens: TokenInfo[];
|
|
1060
|
+
computed_at: WsU64;
|
|
1061
|
+
};
|
|
1011
1062
|
export type SubscriptionsMessage = {
|
|
1012
1063
|
request_id: RequestId;
|
|
1013
1064
|
channels: WsChannel[];
|
|
@@ -1198,6 +1249,7 @@ export type TradeExecutedMessage = {
|
|
|
1198
1249
|
export type PositionUpdatedMessage = {
|
|
1199
1250
|
position: PositionInfo;
|
|
1200
1251
|
update_type: PositionUpdateType;
|
|
1252
|
+
caps_snapshot: MakerCapsSnapshot;
|
|
1201
1253
|
};
|
|
1202
1254
|
/** Values: "created" | "funded" | "settled" | "liquidated". */
|
|
1203
1255
|
export type PositionUpdateType = string;
|
|
@@ -1269,6 +1321,12 @@ export type MakerTradeInfo = {
|
|
|
1269
1321
|
id: UuidString;
|
|
1270
1322
|
rfq_id: UuidString;
|
|
1271
1323
|
market_pda: string;
|
|
1324
|
+
underlying_mint: string;
|
|
1325
|
+
underlying_symbol: string;
|
|
1326
|
+
underlying_decimals: number;
|
|
1327
|
+
quote_mint: string;
|
|
1328
|
+
quote_symbol: string;
|
|
1329
|
+
quote_decimals: number;
|
|
1272
1330
|
position_type: PositionType;
|
|
1273
1331
|
taker: string;
|
|
1274
1332
|
strike: WsU64;
|