@acta-markets/ts-sdk 0.0.1-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 +308 -0
- package/dist/actaClient.d.ts +46 -0
- package/dist/actaClient.js +99 -0
- package/dist/chain/client.d.ts +65 -0
- package/dist/chain/client.js +82 -0
- package/dist/chain/fetch.d.ts +204 -0
- package/dist/chain/fetch.js +392 -0
- package/dist/chain/fetch.test.d.ts +1 -0
- package/dist/chain/fetch.test.js +158 -0
- package/dist/chain/flows/index.d.ts +1 -0
- package/dist/chain/flows/index.js +1 -0
- package/dist/chain/flows/openPosition.d.ts +48 -0
- package/dist/chain/flows/openPosition.js +78 -0
- package/dist/chain/flows/openPosition.test.d.ts +1 -0
- package/dist/chain/flows/openPosition.test.js +43 -0
- package/dist/chain/helpers.d.ts +16 -0
- package/dist/chain/helpers.js +60 -0
- package/dist/chain/index.d.ts +9 -0
- package/dist/chain/index.js +9 -0
- package/dist/chain/instructions.admin.d.ts +44 -0
- package/dist/chain/instructions.admin.js +113 -0
- package/dist/chain/instructions.d.ts +5 -0
- package/dist/chain/instructions.js +5 -0
- package/dist/chain/instructions.maker.d.ts +34 -0
- package/dist/chain/instructions.maker.js +86 -0
- package/dist/chain/instructions.market.d.ts +39 -0
- package/dist/chain/instructions.market.js +107 -0
- package/dist/chain/instructions.oracle.d.ts +38 -0
- package/dist/chain/instructions.oracle.js +63 -0
- package/dist/chain/instructions.position.d.ts +82 -0
- package/dist/chain/instructions.position.js +240 -0
- package/dist/chain/instructions.resolve.test.d.ts +1 -0
- package/dist/chain/instructions.resolve.test.js +32 -0
- package/dist/chain/instructions.shared.d.ts +23 -0
- package/dist/chain/instructions.shared.js +55 -0
- package/dist/chain/orders.d.ts +40 -0
- package/dist/chain/orders.js +117 -0
- package/dist/chain/orders.test.d.ts +1 -0
- package/dist/chain/orders.test.js +67 -0
- package/dist/chain/signers.d.ts +9 -0
- package/dist/chain/signers.js +19 -0
- package/dist/chain/signers.test.d.ts +1 -0
- package/dist/chain/signers.test.js +13 -0
- package/dist/chain/token.d.ts +59 -0
- package/dist/chain/token.js +136 -0
- package/dist/chain/token.test.d.ts +1 -0
- package/dist/chain/token.test.js +69 -0
- package/dist/chain/tx.d.ts +72 -0
- package/dist/chain/tx.js +97 -0
- package/dist/cjs/actaClient.js +103 -0
- package/dist/cjs/chain/client.js +119 -0
- package/dist/cjs/chain/fetch.js +431 -0
- package/dist/cjs/chain/fetch.test.js +160 -0
- package/dist/cjs/chain/flows/index.js +17 -0
- package/dist/cjs/chain/flows/openPosition.js +81 -0
- package/dist/cjs/chain/flows/openPosition.test.js +45 -0
- package/dist/cjs/chain/helpers.js +67 -0
- package/dist/cjs/chain/index.js +48 -0
- package/dist/cjs/chain/instructions.admin.js +119 -0
- package/dist/cjs/chain/instructions.js +21 -0
- package/dist/cjs/chain/instructions.maker.js +92 -0
- package/dist/cjs/chain/instructions.market.js +112 -0
- package/dist/cjs/chain/instructions.oracle.js +70 -0
- package/dist/cjs/chain/instructions.position.js +247 -0
- package/dist/cjs/chain/instructions.resolve.test.js +34 -0
- package/dist/cjs/chain/instructions.shared.js +64 -0
- package/dist/cjs/chain/orders.js +126 -0
- package/dist/cjs/chain/orders.test.js +69 -0
- package/dist/cjs/chain/signers.js +22 -0
- package/dist/cjs/chain/signers.test.js +15 -0
- package/dist/cjs/chain/token.js +147 -0
- package/dist/cjs/chain/token.test.js +71 -0
- package/dist/cjs/chain/tx.js +103 -0
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/constants.test.js +31 -0
- package/dist/cjs/events.js +75 -0
- package/dist/cjs/events.test.js +384 -0
- package/dist/cjs/generated/accounts/config.js +79 -0
- package/dist/cjs/generated/accounts/index.js +28 -0
- package/dist/cjs/generated/accounts/maker.js +71 -0
- package/dist/cjs/generated/accounts/market.js +93 -0
- package/dist/cjs/generated/accounts/oracle.js +85 -0
- package/dist/cjs/generated/accounts/position.js +89 -0
- package/dist/cjs/generated/errors/actaContract.js +154 -0
- package/dist/cjs/generated/errors/index.js +24 -0
- package/dist/cjs/generated/index.js +28 -0
- package/dist/cjs/generated/instructions/changeOracleSource.js +81 -0
- package/dist/cjs/generated/instructions/closeMarket.js +83 -0
- package/dist/cjs/generated/instructions/closeOracle.js +79 -0
- package/dist/cjs/generated/instructions/createMarket.js +116 -0
- package/dist/cjs/generated/instructions/createOracle.js +99 -0
- package/dist/cjs/generated/instructions/depositFundsToPosition.js +101 -0
- package/dist/cjs/generated/instructions/depositPremium.js +96 -0
- package/dist/cjs/generated/instructions/finalizeMarket.js +91 -0
- package/dist/cjs/generated/instructions/index.js +43 -0
- package/dist/cjs/generated/instructions/initializeConfig.js +108 -0
- package/dist/cjs/generated/instructions/liquidatePosition.js +107 -0
- package/dist/cjs/generated/instructions/openPosition.js +154 -0
- package/dist/cjs/generated/instructions/registerMaker.js +90 -0
- package/dist/cjs/generated/instructions/setOracleConfig.js +80 -0
- package/dist/cjs/generated/instructions/settlePosition.js +104 -0
- package/dist/cjs/generated/instructions/topupFeeFund.js +96 -0
- package/dist/cjs/generated/instructions/updateConfig.js +86 -0
- package/dist/cjs/generated/instructions/updateMakerQuoteSigning.js +79 -0
- package/dist/cjs/generated/instructions/updateMarketOracles.js +96 -0
- package/dist/cjs/generated/instructions/updateOraclePrice.js +89 -0
- package/dist/cjs/generated/instructions/withdrawFromFeeFund.js +96 -0
- package/dist/cjs/generated/instructions/withdrawPremium.js +96 -0
- package/dist/cjs/generated/programs/actaContract.js +108 -0
- package/dist/cjs/generated/programs/index.js +24 -0
- package/dist/cjs/generated/shared/index.js +94 -0
- package/dist/cjs/generated/types/actaEvent.js +342 -0
- package/dist/cjs/generated/types/eventKind.js +45 -0
- package/dist/cjs/generated/types/index.js +27 -0
- package/dist/cjs/generated/types/positionStatus.js +31 -0
- package/dist/cjs/generated/types/positionType.js +28 -0
- package/dist/cjs/idl/acta_contract.json +2329 -0
- package/dist/cjs/idl/hash.js +4 -0
- package/dist/cjs/index.js +84 -0
- package/dist/cjs/nonce.js +93 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/types/index.js +18 -0
- package/dist/cjs/types/orderId.js +40 -0
- package/dist/cjs/types/orders.js +10 -0
- package/dist/cjs/ws/apy.js +106 -0
- package/dist/cjs/ws/apy.test.js +29 -0
- package/dist/cjs/ws/auth.js +104 -0
- package/dist/cjs/ws/client.handshake.integration.test.js +69 -0
- package/dist/cjs/ws/client.js +861 -0
- package/dist/cjs/ws/client.test.js +230 -0
- package/dist/cjs/ws/discovery.js +48 -0
- package/dist/cjs/ws/flows.js +101 -0
- package/dist/cjs/ws/flows.test.js +85 -0
- package/dist/cjs/ws/index.js +23 -0
- package/dist/cjs/ws/sponsoredTx.js +95 -0
- package/dist/cjs/ws/types.js +14 -0
- package/dist/cjs/ws/wirePolicy.js +34 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +3 -0
- package/dist/constants.test.d.ts +1 -0
- package/dist/constants.test.js +29 -0
- package/dist/events.d.ts +15 -0
- package/dist/events.js +64 -0
- package/dist/events.test.d.ts +1 -0
- package/dist/events.test.js +382 -0
- package/dist/generated/accounts/config.d.ts +47 -0
- package/dist/generated/accounts/config.js +68 -0
- package/dist/generated/accounts/index.d.ts +12 -0
- package/dist/generated/accounts/index.js +12 -0
- package/dist/generated/accounts/maker.d.ts +39 -0
- package/dist/generated/accounts/maker.js +60 -0
- package/dist/generated/accounts/market.d.ts +61 -0
- package/dist/generated/accounts/market.js +82 -0
- package/dist/generated/accounts/oracle.d.ts +53 -0
- package/dist/generated/accounts/oracle.js +74 -0
- package/dist/generated/accounts/position.d.ts +57 -0
- package/dist/generated/accounts/position.js +78 -0
- package/dist/generated/errors/actaContract.d.ts +103 -0
- package/dist/generated/errors/actaContract.js +149 -0
- package/dist/generated/errors/index.d.ts +8 -0
- package/dist/generated/errors/index.js +8 -0
- package/dist/generated/index.d.ts +12 -0
- package/dist/generated/index.js +12 -0
- package/dist/generated/instructions/changeOracleSource.d.ts +50 -0
- package/dist/generated/instructions/changeOracleSource.js +72 -0
- package/dist/generated/instructions/closeMarket.d.ts +58 -0
- package/dist/generated/instructions/closeMarket.js +74 -0
- package/dist/generated/instructions/closeOracle.d.ts +48 -0
- package/dist/generated/instructions/closeOracle.js +70 -0
- package/dist/generated/instructions/createMarket.d.ts +90 -0
- package/dist/generated/instructions/createMarket.js +107 -0
- package/dist/generated/instructions/createOracle.d.ts +71 -0
- package/dist/generated/instructions/createOracle.js +90 -0
- package/dist/generated/instructions/depositFundsToPosition.d.ts +73 -0
- package/dist/generated/instructions/depositFundsToPosition.js +92 -0
- package/dist/generated/instructions/depositPremium.d.ts +62 -0
- package/dist/generated/instructions/depositPremium.js +87 -0
- package/dist/generated/instructions/finalizeMarket.d.ts +63 -0
- package/dist/generated/instructions/finalizeMarket.js +82 -0
- package/dist/generated/instructions/index.d.ts +27 -0
- package/dist/generated/instructions/index.js +27 -0
- package/dist/generated/instructions/initializeConfig.d.ts +75 -0
- package/dist/generated/instructions/initializeConfig.js +99 -0
- package/dist/generated/instructions/liquidatePosition.d.ts +78 -0
- package/dist/generated/instructions/liquidatePosition.js +98 -0
- package/dist/generated/instructions/openPosition.d.ts +130 -0
- package/dist/generated/instructions/openPosition.js +145 -0
- package/dist/generated/instructions/registerMaker.d.ts +57 -0
- package/dist/generated/instructions/registerMaker.js +81 -0
- package/dist/generated/instructions/setOracleConfig.d.ts +53 -0
- package/dist/generated/instructions/setOracleConfig.js +71 -0
- package/dist/generated/instructions/settlePosition.d.ts +78 -0
- package/dist/generated/instructions/settlePosition.js +95 -0
- package/dist/generated/instructions/topupFeeFund.d.ts +67 -0
- package/dist/generated/instructions/topupFeeFund.js +87 -0
- package/dist/generated/instructions/updateConfig.d.ts +58 -0
- package/dist/generated/instructions/updateConfig.js +77 -0
- package/dist/generated/instructions/updateMakerQuoteSigning.d.ts +47 -0
- package/dist/generated/instructions/updateMakerQuoteSigning.js +70 -0
- package/dist/generated/instructions/updateMarketOracles.d.ts +65 -0
- package/dist/generated/instructions/updateMarketOracles.js +87 -0
- package/dist/generated/instructions/updateOraclePrice.d.ts +55 -0
- package/dist/generated/instructions/updateOraclePrice.js +80 -0
- package/dist/generated/instructions/withdrawFromFeeFund.d.ts +62 -0
- package/dist/generated/instructions/withdrawFromFeeFund.js +87 -0
- package/dist/generated/instructions/withdrawPremium.d.ts +62 -0
- package/dist/generated/instructions/withdrawPremium.js +87 -0
- package/dist/generated/programs/actaContract.d.ts +83 -0
- package/dist/generated/programs/actaContract.js +104 -0
- package/dist/generated/programs/index.d.ts +8 -0
- package/dist/generated/programs/index.js +8 -0
- package/dist/generated/shared/index.d.ts +49 -0
- package/dist/generated/shared/index.js +86 -0
- package/dist/generated/types/actaEvent.d.ts +249 -0
- package/dist/generated/types/actaEvent.js +335 -0
- package/dist/generated/types/eventKind.d.ts +33 -0
- package/dist/generated/types/eventKind.js +39 -0
- package/dist/generated/types/index.d.ts +11 -0
- package/dist/generated/types/index.js +11 -0
- package/dist/generated/types/positionStatus.d.ts +19 -0
- package/dist/generated/types/positionStatus.js +25 -0
- package/dist/generated/types/positionType.d.ts +16 -0
- package/dist/generated/types/positionType.js +22 -0
- package/dist/idl/acta_contract.json +2329 -0
- package/dist/idl/hash.d.ts +1 -0
- package/dist/idl/hash.js +1 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.js +34 -0
- package/dist/nonce.d.ts +29 -0
- package/dist/nonce.js +89 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/orderId.d.ts +13 -0
- package/dist/types/orderId.js +35 -0
- package/dist/types/orders.d.ts +9 -0
- package/dist/types/orders.js +9 -0
- package/dist/ws/apy.d.ts +79 -0
- package/dist/ws/apy.js +98 -0
- package/dist/ws/apy.test.d.ts +1 -0
- package/dist/ws/apy.test.js +27 -0
- package/dist/ws/auth.d.ts +67 -0
- package/dist/ws/auth.js +98 -0
- package/dist/ws/client.d.ts +263 -0
- package/dist/ws/client.handshake.integration.test.d.ts +1 -0
- package/dist/ws/client.handshake.integration.test.js +64 -0
- package/dist/ws/client.js +857 -0
- package/dist/ws/client.test.d.ts +1 -0
- package/dist/ws/client.test.js +228 -0
- package/dist/ws/discovery.d.ts +13 -0
- package/dist/ws/discovery.js +44 -0
- package/dist/ws/flows.d.ts +44 -0
- package/dist/ws/flows.js +96 -0
- package/dist/ws/flows.test.d.ts +1 -0
- package/dist/ws/flows.test.js +83 -0
- package/dist/ws/index.d.ts +7 -0
- package/dist/ws/index.js +7 -0
- package/dist/ws/sponsoredTx.d.ts +39 -0
- package/dist/ws/sponsoredTx.js +92 -0
- package/dist/ws/types.d.ts +900 -0
- package/dist/ws/types.js +13 -0
- package/dist/ws/wirePolicy.d.ts +12 -0
- package/dist/ws/wirePolicy.js +30 -0
- package/package.json +87 -0
|
@@ -0,0 +1,900 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket protocol types for Acta RFQ server.
|
|
3
|
+
*
|
|
4
|
+
* Source of truth:
|
|
5
|
+
* - docs/state-machines-eng.md (protocol spec)
|
|
6
|
+
* - rust-backend/shared/src/types/ws.rs (as-built reference)
|
|
7
|
+
*
|
|
8
|
+
* Notes:
|
|
9
|
+
* - UUIDs are represented as strings in JSON.
|
|
10
|
+
* - Rust uses u64 in many places; we model them as `number` for now.
|
|
11
|
+
* If/when we need precision beyond JS safe integer, we can migrate to `bigint | string`.
|
|
12
|
+
*/
|
|
13
|
+
import type { Address } from "@solana/addresses";
|
|
14
|
+
export type UuidString = string;
|
|
15
|
+
export type RequestId = string;
|
|
16
|
+
export type PubkeyBase58 = string;
|
|
17
|
+
export type SignatureBase58 = string;
|
|
18
|
+
export type ErrorMessage = string;
|
|
19
|
+
export type ErrorCode = string;
|
|
20
|
+
export type AuthRequiredAction = string;
|
|
21
|
+
export type UserRole = string;
|
|
22
|
+
export type QuoteLockedReason = string;
|
|
23
|
+
export type RfqStateError = string;
|
|
24
|
+
export type RateLimitReason = string;
|
|
25
|
+
export type DbFeature = string;
|
|
26
|
+
export type WsU64 = number;
|
|
27
|
+
export type WsU32 = number;
|
|
28
|
+
export type WsI64 = number;
|
|
29
|
+
/** Values: "pending" | "submitted" | "confirmed" | "failed" | "not_found". */
|
|
30
|
+
export type OrderStatusValue = string;
|
|
31
|
+
/** Values: "active" | "pending_signature" | "enqueued". */
|
|
32
|
+
export type MyActiveRfqState = string;
|
|
33
|
+
/** Values: "quote_expired". */
|
|
34
|
+
export type HelloFeatureFlag = string;
|
|
35
|
+
/** Values: "covered_call" | "cash_secured_put". */
|
|
36
|
+
export type PositionType = string;
|
|
37
|
+
/** Values: "none" | "open" | "funded" | "liquidated" | "settled". */
|
|
38
|
+
export type PositionStatus = string;
|
|
39
|
+
/** Values: "pending" | "best" | "outbid" | "filled" | "expired". */
|
|
40
|
+
export type MakerQuoteStatus = string;
|
|
41
|
+
/** Values: "expired" | "expiring_soon". */
|
|
42
|
+
export type QuoteRefreshReason = string;
|
|
43
|
+
/** Values: "requested" | "risk_check" | "rfq_accepted". */
|
|
44
|
+
export type QuoteCancelledReason = string;
|
|
45
|
+
/** Values: "valid_until_passed" | "rfq_expired" | "rfq_cancelled". */
|
|
46
|
+
export type QuoteExpiredReason = string;
|
|
47
|
+
/** Values: "signature_timeout" | "tx_failed". */
|
|
48
|
+
export type RfqAvailableAgainReason = string;
|
|
49
|
+
/** 32-byte orderId encoded as 64-char hex string. */
|
|
50
|
+
export type OrderIdHex32 = string;
|
|
51
|
+
/** Values: "stats" | "rfqs" | "trades" | "positions" | "chain_events" | "markets". */
|
|
52
|
+
export type WsChannel = string;
|
|
53
|
+
export type ProtocolVersion = string;
|
|
54
|
+
export type HelloMessage = {
|
|
55
|
+
protocol_version: ProtocolVersion;
|
|
56
|
+
features: HelloFeatureFlag[];
|
|
57
|
+
client_name?: string;
|
|
58
|
+
client_version?: string;
|
|
59
|
+
};
|
|
60
|
+
export type WelcomeMessage = {
|
|
61
|
+
protocol_version: ProtocolVersion;
|
|
62
|
+
server_version: string;
|
|
63
|
+
min_supported_version: string;
|
|
64
|
+
enabled_features: HelloFeatureFlag[];
|
|
65
|
+
server_time_unix_ms?: WsU64;
|
|
66
|
+
};
|
|
67
|
+
export type VersionMismatchMessage = {
|
|
68
|
+
requested_version: ProtocolVersion;
|
|
69
|
+
server_version: ProtocolVersion;
|
|
70
|
+
min_supported_version: ProtocolVersion;
|
|
71
|
+
message: ErrorMessage;
|
|
72
|
+
};
|
|
73
|
+
export type ClientMessage = {
|
|
74
|
+
type: "Hello";
|
|
75
|
+
data: HelloMessage;
|
|
76
|
+
} | {
|
|
77
|
+
type: "StartAuth";
|
|
78
|
+
data: {
|
|
79
|
+
pubkey: string;
|
|
80
|
+
};
|
|
81
|
+
} | {
|
|
82
|
+
type: "AuthChallenge";
|
|
83
|
+
data: AuthChallengeData;
|
|
84
|
+
} | {
|
|
85
|
+
type: "Quote";
|
|
86
|
+
data: QuoteMessage;
|
|
87
|
+
} | {
|
|
88
|
+
type: "CancelQuote";
|
|
89
|
+
data: {
|
|
90
|
+
rfq_id: UuidString;
|
|
91
|
+
};
|
|
92
|
+
} | {
|
|
93
|
+
type: "IndicativePricesResponse";
|
|
94
|
+
data: IndicativePricesResponseMessage;
|
|
95
|
+
} | {
|
|
96
|
+
type: "RfqRequest";
|
|
97
|
+
data: RfqRequestMessage;
|
|
98
|
+
} | {
|
|
99
|
+
type: "AcceptQuote";
|
|
100
|
+
data: AcceptQuoteMessage;
|
|
101
|
+
} | {
|
|
102
|
+
type: "SubmitSignedSponsoredTx";
|
|
103
|
+
data: {
|
|
104
|
+
order_id: OrderIdHex32;
|
|
105
|
+
tx_base64: string;
|
|
106
|
+
};
|
|
107
|
+
} | {
|
|
108
|
+
type: "CancelRfq";
|
|
109
|
+
data: {
|
|
110
|
+
rfq_id: UuidString;
|
|
111
|
+
};
|
|
112
|
+
} | {
|
|
113
|
+
type: "GetIndicativePrices";
|
|
114
|
+
data: GetIndicativePricesMessage;
|
|
115
|
+
} | {
|
|
116
|
+
type: "GetPositions";
|
|
117
|
+
} | {
|
|
118
|
+
type: "GetMarkets";
|
|
119
|
+
} | {
|
|
120
|
+
type: "GetMarketDescriptors";
|
|
121
|
+
data: GetMarketDescriptorsMessage;
|
|
122
|
+
} | {
|
|
123
|
+
type: "GetExpiries";
|
|
124
|
+
data: GetExpiriesMessage;
|
|
125
|
+
} | {
|
|
126
|
+
type: "GetTokens";
|
|
127
|
+
data: GetTokensMessage;
|
|
128
|
+
} | {
|
|
129
|
+
type: "GetMyActiveRfqs";
|
|
130
|
+
} | {
|
|
131
|
+
type: "GetOrderStatus";
|
|
132
|
+
data: GetOrderStatusMessage;
|
|
133
|
+
} | {
|
|
134
|
+
type: "GetActiveRfqs";
|
|
135
|
+
} | {
|
|
136
|
+
type: "GetMakerPositions";
|
|
137
|
+
data: GetMakerPositionsMessage;
|
|
138
|
+
} | {
|
|
139
|
+
type: "GetMyQuotes";
|
|
140
|
+
data: GetMyQuotesMessage;
|
|
141
|
+
} | {
|
|
142
|
+
type: "GetMarketsForMaker";
|
|
143
|
+
data: GetMarketsForMakerMessage;
|
|
144
|
+
} | {
|
|
145
|
+
type: "GetMakerBalances";
|
|
146
|
+
} | {
|
|
147
|
+
type: "GetSubscriptions";
|
|
148
|
+
} | {
|
|
149
|
+
type: "CancelAllQuotes";
|
|
150
|
+
data: CancelAllQuotesMessage;
|
|
151
|
+
} | {
|
|
152
|
+
type: "Ping";
|
|
153
|
+
} | {
|
|
154
|
+
type: "Subscribe";
|
|
155
|
+
data: {
|
|
156
|
+
channels: WsChannel[];
|
|
157
|
+
markets?: string[];
|
|
158
|
+
};
|
|
159
|
+
} | {
|
|
160
|
+
type: "Unsubscribe";
|
|
161
|
+
data: {
|
|
162
|
+
channels: WsChannel[];
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
export type GetMarketDescriptorsMessage = {
|
|
166
|
+
active_only?: boolean;
|
|
167
|
+
};
|
|
168
|
+
export type GetTokensMessage = {
|
|
169
|
+
active_only?: boolean;
|
|
170
|
+
};
|
|
171
|
+
export type GetExpiriesMessage = {
|
|
172
|
+
underlying_mint?: Address<string>;
|
|
173
|
+
quote_mint?: Address<string>;
|
|
174
|
+
is_put?: boolean | null;
|
|
175
|
+
};
|
|
176
|
+
export type GetOrderStatusMessage = {
|
|
177
|
+
order_id: OrderIdHex32;
|
|
178
|
+
};
|
|
179
|
+
export type GetMakerPositionsMessage = {
|
|
180
|
+
market?: string;
|
|
181
|
+
underlying_mint?: string;
|
|
182
|
+
status?: string[];
|
|
183
|
+
min_expiry_ts?: WsU64;
|
|
184
|
+
};
|
|
185
|
+
export type GetMyQuotesMessage = {
|
|
186
|
+
active_only?: boolean;
|
|
187
|
+
};
|
|
188
|
+
export type GetMarketsForMakerMessage = {
|
|
189
|
+
underlying_mints?: string[];
|
|
190
|
+
quote_mints?: string[];
|
|
191
|
+
min_expiry_ts?: WsU64;
|
|
192
|
+
max_expiry_ts?: WsU64;
|
|
193
|
+
is_put?: boolean;
|
|
194
|
+
include_stats?: boolean;
|
|
195
|
+
};
|
|
196
|
+
export type CancelAllQuotesMessage = {
|
|
197
|
+
market?: string;
|
|
198
|
+
};
|
|
199
|
+
export type AuthChallengeData = {
|
|
200
|
+
/** Human-readable SIWS-style challenge text (sign UTF-8 bytes of this string). */
|
|
201
|
+
challenge: string;
|
|
202
|
+
signature: string;
|
|
203
|
+
pubkey: string;
|
|
204
|
+
};
|
|
205
|
+
export type QuoteMessage = {
|
|
206
|
+
rfq_id: UuidString;
|
|
207
|
+
/** Strike for this quote (must be one of server-provided strike options when present). */
|
|
208
|
+
strike: WsU64;
|
|
209
|
+
price: WsU64;
|
|
210
|
+
valid_until: WsU64;
|
|
211
|
+
/** u64 nonce (little-endian on-chain) used in the orderId preimage. */
|
|
212
|
+
nonce: WsU64;
|
|
213
|
+
/** 32-byte orderId (sha256) encoded as hex (64 chars). */
|
|
214
|
+
order_id: OrderIdHex32;
|
|
215
|
+
signature: string;
|
|
216
|
+
};
|
|
217
|
+
export type MarketDescriptor = {
|
|
218
|
+
chain_id: WsU64;
|
|
219
|
+
program_id: Address<string>;
|
|
220
|
+
market_pda: Address<string>;
|
|
221
|
+
underlying_mint: Address<string>;
|
|
222
|
+
quote_mint: Address<string>;
|
|
223
|
+
expiry_ts: WsU64;
|
|
224
|
+
is_put: boolean;
|
|
225
|
+
collateral_mint: Address<string>;
|
|
226
|
+
settlement_mint: Address<string>;
|
|
227
|
+
};
|
|
228
|
+
export type RfqRequestMessage = {
|
|
229
|
+
market: Address<string>;
|
|
230
|
+
position_type: PositionType;
|
|
231
|
+
strike: WsU64;
|
|
232
|
+
quantity: WsU64;
|
|
233
|
+
timeout_seconds: WsU32;
|
|
234
|
+
/** Optional idempotency key; echoed back in RfqCreated. */
|
|
235
|
+
client_request_id?: RequestId;
|
|
236
|
+
};
|
|
237
|
+
export type AcceptQuoteMessage = {
|
|
238
|
+
rfq_id: UuidString;
|
|
239
|
+
maker: Address<string>;
|
|
240
|
+
/** 32-byte orderId (sha256) encoded as hex (64 chars). */
|
|
241
|
+
order_id: OrderIdHex32;
|
|
242
|
+
};
|
|
243
|
+
export type ServerMessage = {
|
|
244
|
+
type: "Welcome";
|
|
245
|
+
data: WelcomeMessage;
|
|
246
|
+
} | {
|
|
247
|
+
type: "VersionMismatch";
|
|
248
|
+
data: VersionMismatchMessage;
|
|
249
|
+
} | {
|
|
250
|
+
type: "AuthRequest";
|
|
251
|
+
data: {
|
|
252
|
+
challenge: string;
|
|
253
|
+
};
|
|
254
|
+
} | {
|
|
255
|
+
type: "AuthSuccess";
|
|
256
|
+
data: {
|
|
257
|
+
session_id: string;
|
|
258
|
+
};
|
|
259
|
+
} | {
|
|
260
|
+
type: "AuthError";
|
|
261
|
+
data: {
|
|
262
|
+
reason: ErrorMessage;
|
|
263
|
+
};
|
|
264
|
+
} | {
|
|
265
|
+
type: "RfqCreated";
|
|
266
|
+
data: RfqCreatedMessage;
|
|
267
|
+
} | {
|
|
268
|
+
type: "RfqBroadcast";
|
|
269
|
+
data: RfqBroadcastMessage;
|
|
270
|
+
} | {
|
|
271
|
+
type: "QuoteReceived";
|
|
272
|
+
data: QuoteReceivedMessage;
|
|
273
|
+
} | {
|
|
274
|
+
type: "QuotesUpdate";
|
|
275
|
+
data: QuotesUpdateMessage;
|
|
276
|
+
} | {
|
|
277
|
+
type: "QuoteRefreshRequested";
|
|
278
|
+
data: QuoteRefreshRequestedMessage;
|
|
279
|
+
} | {
|
|
280
|
+
type: "IndicativePricesRequest";
|
|
281
|
+
data: IndicativePricesRequestMessage;
|
|
282
|
+
} | {
|
|
283
|
+
type: "IndicativePrices";
|
|
284
|
+
data: IndicativePricesMessage;
|
|
285
|
+
} | {
|
|
286
|
+
type: "QuoteAcknowledged";
|
|
287
|
+
data: QuoteAcknowledgedMessage;
|
|
288
|
+
} | {
|
|
289
|
+
type: "QuoteBestStatus";
|
|
290
|
+
data: QuoteBestStatusMessage;
|
|
291
|
+
} | {
|
|
292
|
+
type: "QuoteOutbid";
|
|
293
|
+
data: QuoteOutbidMessage;
|
|
294
|
+
} | {
|
|
295
|
+
type: "QuoteSelected";
|
|
296
|
+
data: QuoteSelectedMessage;
|
|
297
|
+
} | {
|
|
298
|
+
type: "QuoteFilled";
|
|
299
|
+
data: QuoteFilledMessage;
|
|
300
|
+
} | {
|
|
301
|
+
type: "QuoteCancelled";
|
|
302
|
+
data: QuoteCancelledMessage;
|
|
303
|
+
} | {
|
|
304
|
+
type: "RfqAvailableAgain";
|
|
305
|
+
data: RfqAvailableAgainMessage;
|
|
306
|
+
} | {
|
|
307
|
+
type: "RfqClosed";
|
|
308
|
+
data: RfqClosedMessage;
|
|
309
|
+
} | {
|
|
310
|
+
type: "QuoteExpired";
|
|
311
|
+
data: QuoteExpiredMessage;
|
|
312
|
+
} | {
|
|
313
|
+
type: "ActiveRfqs";
|
|
314
|
+
data: {
|
|
315
|
+
rfqs: ActiveRfqInfo[];
|
|
316
|
+
};
|
|
317
|
+
} | {
|
|
318
|
+
type: "MakerPositions";
|
|
319
|
+
data: MakerPositionsMessage;
|
|
320
|
+
} | {
|
|
321
|
+
type: "MyQuotes";
|
|
322
|
+
data: MyQuotesMessage;
|
|
323
|
+
} | {
|
|
324
|
+
type: "MakerMarkets";
|
|
325
|
+
data: MakerMarketsMessage;
|
|
326
|
+
} | {
|
|
327
|
+
type: "MakerBalances";
|
|
328
|
+
data: MakerBalancesMessage;
|
|
329
|
+
} | {
|
|
330
|
+
type: "Subscriptions";
|
|
331
|
+
data: SubscriptionsMessage;
|
|
332
|
+
} | {
|
|
333
|
+
type: "OrderAccepted";
|
|
334
|
+
data: {
|
|
335
|
+
order_id: OrderIdHex32;
|
|
336
|
+
};
|
|
337
|
+
} | {
|
|
338
|
+
type: "SponsoredTxToSign";
|
|
339
|
+
data: {
|
|
340
|
+
order_id: OrderIdHex32;
|
|
341
|
+
tx_base64: string;
|
|
342
|
+
signature_deadline: WsU64;
|
|
343
|
+
};
|
|
344
|
+
} | {
|
|
345
|
+
type: "OrderSubmitted";
|
|
346
|
+
data: {
|
|
347
|
+
order_id: OrderIdHex32;
|
|
348
|
+
tx_signature: string;
|
|
349
|
+
order_version: WsU64;
|
|
350
|
+
};
|
|
351
|
+
} | {
|
|
352
|
+
type: "OrderConfirmed";
|
|
353
|
+
data: {
|
|
354
|
+
order_id: OrderIdHex32;
|
|
355
|
+
position_pda: string;
|
|
356
|
+
order_version: WsU64;
|
|
357
|
+
};
|
|
358
|
+
} | {
|
|
359
|
+
type: "OrderFailed";
|
|
360
|
+
data: {
|
|
361
|
+
order_id: OrderIdHex32;
|
|
362
|
+
reason: ErrorMessage;
|
|
363
|
+
order_version: WsU64;
|
|
364
|
+
};
|
|
365
|
+
} | {
|
|
366
|
+
type: "MarketCreated";
|
|
367
|
+
data: MarketInfo;
|
|
368
|
+
} | {
|
|
369
|
+
type: "MarketFinalized";
|
|
370
|
+
data: {
|
|
371
|
+
market_pda: string;
|
|
372
|
+
settlement_price: WsU64;
|
|
373
|
+
};
|
|
374
|
+
} | {
|
|
375
|
+
type: "ChainEvent";
|
|
376
|
+
data: ChainEventMessage;
|
|
377
|
+
} | {
|
|
378
|
+
type: "Snapshot";
|
|
379
|
+
data: SnapshotMessage;
|
|
380
|
+
} | {
|
|
381
|
+
type: "MyActiveRfqs";
|
|
382
|
+
data: MyActiveRfqsMessage;
|
|
383
|
+
} | {
|
|
384
|
+
type: "OrderStatus";
|
|
385
|
+
data: OrderStatusMessage;
|
|
386
|
+
} | {
|
|
387
|
+
type: "Positions";
|
|
388
|
+
data: PositionsMessage;
|
|
389
|
+
} | {
|
|
390
|
+
type: "Markets";
|
|
391
|
+
data: MarketsMessage;
|
|
392
|
+
} | {
|
|
393
|
+
type: "MarketDescriptors";
|
|
394
|
+
data: MarketDescriptorsMessage;
|
|
395
|
+
} | {
|
|
396
|
+
type: "Expiries";
|
|
397
|
+
data: ExpiriesMessage;
|
|
398
|
+
} | {
|
|
399
|
+
type: "Tokens";
|
|
400
|
+
data: TokensMessage;
|
|
401
|
+
} | {
|
|
402
|
+
type: "TradeExecuted";
|
|
403
|
+
data: TradeExecutedMessage;
|
|
404
|
+
} | {
|
|
405
|
+
type: "PositionUpdated";
|
|
406
|
+
data: PositionUpdatedMessage;
|
|
407
|
+
} | {
|
|
408
|
+
type: "StatsUpdate";
|
|
409
|
+
data: StatsUpdateMessage;
|
|
410
|
+
} | {
|
|
411
|
+
type: "Pong";
|
|
412
|
+
data: {
|
|
413
|
+
server_time_unix_ms: WsU64;
|
|
414
|
+
};
|
|
415
|
+
} | {
|
|
416
|
+
type: "Error";
|
|
417
|
+
data: ServerError;
|
|
418
|
+
};
|
|
419
|
+
export type MarketDescriptorInfo = {
|
|
420
|
+
market: MarketDescriptor;
|
|
421
|
+
underlying_oracle_pda: PubkeyBase58;
|
|
422
|
+
quote_oracle_pda: PubkeyBase58;
|
|
423
|
+
underlying_decimals: number;
|
|
424
|
+
quote_decimals: number;
|
|
425
|
+
underlying_symbol?: string;
|
|
426
|
+
quote_symbol?: string;
|
|
427
|
+
};
|
|
428
|
+
export type TokenInfo = {
|
|
429
|
+
mint: Address<string>;
|
|
430
|
+
decimals: number;
|
|
431
|
+
symbol?: string;
|
|
432
|
+
};
|
|
433
|
+
export type RfqCreatedMessage = {
|
|
434
|
+
rfq_id: UuidString;
|
|
435
|
+
rfq_version: WsU64;
|
|
436
|
+
client_request_id?: RequestId;
|
|
437
|
+
expires_at: WsU64;
|
|
438
|
+
created_at: WsU64;
|
|
439
|
+
/** Server-defined order options (strike inventory). */
|
|
440
|
+
order_options?: RfqOrderOption[];
|
|
441
|
+
};
|
|
442
|
+
export type QuoteRefreshRequestedMessage = {
|
|
443
|
+
rfq_id: UuidString;
|
|
444
|
+
strike: WsU64;
|
|
445
|
+
/** The backend is asking the maker to produce a quote with valid_until >= min_valid_until. */
|
|
446
|
+
min_valid_until: WsU64;
|
|
447
|
+
reason: QuoteRefreshReason;
|
|
448
|
+
};
|
|
449
|
+
export type ServerError = {
|
|
450
|
+
type: "unauthenticated";
|
|
451
|
+
data: {
|
|
452
|
+
action: AuthRequiredAction;
|
|
453
|
+
};
|
|
454
|
+
} | {
|
|
455
|
+
type: "unauthorized";
|
|
456
|
+
data: {
|
|
457
|
+
role: UserRole;
|
|
458
|
+
action: AuthRequiredAction;
|
|
459
|
+
};
|
|
460
|
+
} | {
|
|
461
|
+
type: "rfq_not_found";
|
|
462
|
+
} | {
|
|
463
|
+
type: "rfq_not_active";
|
|
464
|
+
} | {
|
|
465
|
+
type: "invalid_state";
|
|
466
|
+
data: {
|
|
467
|
+
state: RfqStateError;
|
|
468
|
+
};
|
|
469
|
+
} | {
|
|
470
|
+
type: "quote_locked";
|
|
471
|
+
data: {
|
|
472
|
+
reason: QuoteLockedReason;
|
|
473
|
+
};
|
|
474
|
+
} | {
|
|
475
|
+
type: "quote_not_found";
|
|
476
|
+
} | {
|
|
477
|
+
type: "quote_expired";
|
|
478
|
+
} | {
|
|
479
|
+
type: "invalid_strike";
|
|
480
|
+
} | {
|
|
481
|
+
type: "invalid_valid_until";
|
|
482
|
+
} | {
|
|
483
|
+
type: "order_id_mismatch";
|
|
484
|
+
} | {
|
|
485
|
+
type: "signature_timeout";
|
|
486
|
+
} | {
|
|
487
|
+
type: "oracle_not_ready";
|
|
488
|
+
} | {
|
|
489
|
+
type: "oracle_price_stale";
|
|
490
|
+
data: {
|
|
491
|
+
age_seconds: WsU64;
|
|
492
|
+
};
|
|
493
|
+
} | {
|
|
494
|
+
type: "oracle_price_not_ready";
|
|
495
|
+
} | {
|
|
496
|
+
type: "invalid_position_type";
|
|
497
|
+
} | {
|
|
498
|
+
type: "invalid_market";
|
|
499
|
+
data: {
|
|
500
|
+
pubkey: string;
|
|
501
|
+
};
|
|
502
|
+
} | {
|
|
503
|
+
type: "market_metadata_incomplete";
|
|
504
|
+
data: {
|
|
505
|
+
details: string;
|
|
506
|
+
};
|
|
507
|
+
} | {
|
|
508
|
+
type: "token_metadata_incomplete";
|
|
509
|
+
data: {
|
|
510
|
+
details: string;
|
|
511
|
+
};
|
|
512
|
+
} | {
|
|
513
|
+
type: "rate_limit";
|
|
514
|
+
data: RateLimitReason;
|
|
515
|
+
} | {
|
|
516
|
+
type: "internal_error";
|
|
517
|
+
} | {
|
|
518
|
+
type: "kernel_not_available";
|
|
519
|
+
} | {
|
|
520
|
+
type: "db_disabled";
|
|
521
|
+
data: {
|
|
522
|
+
feature: DbFeature;
|
|
523
|
+
};
|
|
524
|
+
} | {
|
|
525
|
+
type: "server_shutting_down";
|
|
526
|
+
} | {
|
|
527
|
+
type: "generic";
|
|
528
|
+
data: {
|
|
529
|
+
code: ErrorCode;
|
|
530
|
+
message: ErrorMessage;
|
|
531
|
+
};
|
|
532
|
+
};
|
|
533
|
+
/** Confirms quote was received and validated. */
|
|
534
|
+
export type QuoteAcknowledgedMessage = {
|
|
535
|
+
rfq_id: UuidString;
|
|
536
|
+
order_id: OrderIdHex32;
|
|
537
|
+
/** Present if this quote replaced a previous quote for the same RFQ. */
|
|
538
|
+
replaced_order_id?: OrderIdHex32;
|
|
539
|
+
};
|
|
540
|
+
/** Indicates whether your quote is currently the best (highest price). */
|
|
541
|
+
export type QuoteBestStatusMessage = {
|
|
542
|
+
rfq_id: UuidString;
|
|
543
|
+
order_id: OrderIdHex32;
|
|
544
|
+
is_best: boolean;
|
|
545
|
+
current_best_price?: WsU64;
|
|
546
|
+
};
|
|
547
|
+
/** Your quote was outbid by another maker. */
|
|
548
|
+
export type QuoteOutbidMessage = {
|
|
549
|
+
rfq_id: UuidString;
|
|
550
|
+
order_id: OrderIdHex32;
|
|
551
|
+
/** Your quoted price. Competitor's price is NOT disclosed. */
|
|
552
|
+
your_price: WsU64;
|
|
553
|
+
current_best_price?: WsU64;
|
|
554
|
+
};
|
|
555
|
+
/** Your quote was selected by the taker. */
|
|
556
|
+
export type QuoteSelectedMessage = {
|
|
557
|
+
rfq_id: UuidString;
|
|
558
|
+
order_id: OrderIdHex32;
|
|
559
|
+
taker: PubkeyBase58;
|
|
560
|
+
price: WsU64;
|
|
561
|
+
quantity: WsU64;
|
|
562
|
+
strike: WsU64;
|
|
563
|
+
signature_deadline: WsU64;
|
|
564
|
+
};
|
|
565
|
+
/** Your quote was selected and executed on-chain. */
|
|
566
|
+
export type QuoteFilledMessage = {
|
|
567
|
+
rfq_id: UuidString;
|
|
568
|
+
order_id: OrderIdHex32;
|
|
569
|
+
taker: PubkeyBase58;
|
|
570
|
+
price: WsU64;
|
|
571
|
+
quantity: WsU64;
|
|
572
|
+
strike: WsU64;
|
|
573
|
+
position_pda: PubkeyBase58;
|
|
574
|
+
tx_signature: SignatureBase58;
|
|
575
|
+
filled_at: WsU64;
|
|
576
|
+
};
|
|
577
|
+
/** Server removed your quote(s) for this RFQ. */
|
|
578
|
+
export type QuoteCancelledMessage = {
|
|
579
|
+
rfq_id: UuidString;
|
|
580
|
+
order_ids: OrderIdHex32[];
|
|
581
|
+
reason: QuoteCancelledReason;
|
|
582
|
+
cancelled_at: WsU64;
|
|
583
|
+
};
|
|
584
|
+
/** Values: "expired" | "taker_cancelled" | "filled" | "market_expired" | "ladder_timeout". */
|
|
585
|
+
export type RfqClosedReason = string;
|
|
586
|
+
/** Values: "expired" | "outbid" | "cancelled" | "filled". */
|
|
587
|
+
export type QuoteFinalStatus = string;
|
|
588
|
+
/** RFQ terminal event. */
|
|
589
|
+
export type RfqClosedMessage = {
|
|
590
|
+
rfq_id: UuidString;
|
|
591
|
+
rfq_version: WsU64;
|
|
592
|
+
reason: RfqClosedReason;
|
|
593
|
+
your_quote?: {
|
|
594
|
+
order_id: OrderIdHex32;
|
|
595
|
+
status: QuoteFinalStatus;
|
|
596
|
+
price: WsU64;
|
|
597
|
+
} | null;
|
|
598
|
+
winner?: {
|
|
599
|
+
maker: PubkeyBase58;
|
|
600
|
+
price: WsU64;
|
|
601
|
+
tx_signature?: SignatureBase58;
|
|
602
|
+
} | null;
|
|
603
|
+
closed_at: WsU64;
|
|
604
|
+
};
|
|
605
|
+
/** RFQ is available again (selected quote failed/expired). */
|
|
606
|
+
export type RfqAvailableAgainMessage = {
|
|
607
|
+
rfq_id: UuidString;
|
|
608
|
+
rfq_version: WsU64;
|
|
609
|
+
/** Reason: "signature_timeout" | "tx_failed" */
|
|
610
|
+
reason: RfqAvailableAgainReason;
|
|
611
|
+
/** When the RFQ became available again (unix seconds). */
|
|
612
|
+
available_again_at: WsU64;
|
|
613
|
+
};
|
|
614
|
+
/** Your quote expired. */
|
|
615
|
+
export type QuoteExpiredMessage = {
|
|
616
|
+
rfq_id: UuidString;
|
|
617
|
+
order_id: OrderIdHex32;
|
|
618
|
+
reason: QuoteExpiredReason;
|
|
619
|
+
};
|
|
620
|
+
export type MakerPositionsMessage = {
|
|
621
|
+
positions: MakerPositionInfo[];
|
|
622
|
+
};
|
|
623
|
+
export type MakerPositionInfo = {
|
|
624
|
+
pda: string;
|
|
625
|
+
market: string;
|
|
626
|
+
position_type: PositionType;
|
|
627
|
+
status: PositionStatus;
|
|
628
|
+
strike: WsU64;
|
|
629
|
+
quantity: WsU64;
|
|
630
|
+
price: WsU64;
|
|
631
|
+
collateral_locked: WsU64;
|
|
632
|
+
created_at: WsU64;
|
|
633
|
+
expiry_ts: WsU64;
|
|
634
|
+
};
|
|
635
|
+
export type MyQuotesMessage = {
|
|
636
|
+
quotes: MakerQuoteInfo[];
|
|
637
|
+
};
|
|
638
|
+
export type MakerQuoteInfo = {
|
|
639
|
+
rfq_id: UuidString;
|
|
640
|
+
order_id: OrderIdHex32;
|
|
641
|
+
market: string;
|
|
642
|
+
strike: WsU64;
|
|
643
|
+
price: WsU64;
|
|
644
|
+
quantity: WsU64;
|
|
645
|
+
valid_until: WsU64;
|
|
646
|
+
/** "pending" | "best" | "outbid" | "filled" | "expired" | "cancelled" */
|
|
647
|
+
status: MakerQuoteStatus;
|
|
648
|
+
created_at: WsU64;
|
|
649
|
+
};
|
|
650
|
+
export type MakerMarketsMessage = {
|
|
651
|
+
markets: MakerMarketInfo[];
|
|
652
|
+
};
|
|
653
|
+
export type MakerMarketInfo = {
|
|
654
|
+
market_pda: string;
|
|
655
|
+
underlying_mint: string;
|
|
656
|
+
quote_mint: string;
|
|
657
|
+
expiry_ts: WsU64;
|
|
658
|
+
is_put: boolean;
|
|
659
|
+
is_finalized: boolean;
|
|
660
|
+
underlying_symbol?: string;
|
|
661
|
+
quote_symbol?: string;
|
|
662
|
+
stats?: MarketStats;
|
|
663
|
+
};
|
|
664
|
+
export type MarketStats = {
|
|
665
|
+
volume_24h: WsU64;
|
|
666
|
+
trades_24h: WsU32;
|
|
667
|
+
};
|
|
668
|
+
export type MakerBalancesMessage = {
|
|
669
|
+
balances_by_mint: Record<string, MakerMintBalance>;
|
|
670
|
+
};
|
|
671
|
+
export type MakerMintBalance = {
|
|
672
|
+
total: WsU64;
|
|
673
|
+
locked_as_collateral: WsU64;
|
|
674
|
+
available: WsU64;
|
|
675
|
+
};
|
|
676
|
+
export type SubscriptionsMessage = {
|
|
677
|
+
channels: WsChannel[];
|
|
678
|
+
markets?: string[];
|
|
679
|
+
};
|
|
680
|
+
export type IndicativePricesRequestMessage = {
|
|
681
|
+
request_id: RequestId;
|
|
682
|
+
market: MarketDescriptor;
|
|
683
|
+
position_type: PositionType;
|
|
684
|
+
strikes: WsU64[];
|
|
685
|
+
};
|
|
686
|
+
export type IndicativePricesResponseMessage = {
|
|
687
|
+
request_id: RequestId;
|
|
688
|
+
market: Address<string>;
|
|
689
|
+
position_type: PositionType;
|
|
690
|
+
prices: Array<{
|
|
691
|
+
strike: WsU64;
|
|
692
|
+
price: WsU64;
|
|
693
|
+
}>;
|
|
694
|
+
};
|
|
695
|
+
export type GetIndicativePricesMessage = {
|
|
696
|
+
market: Address<string>;
|
|
697
|
+
position_type: PositionType;
|
|
698
|
+
};
|
|
699
|
+
export type IndicativePricesMessage = {
|
|
700
|
+
market: Address<string>;
|
|
701
|
+
position_type: PositionType;
|
|
702
|
+
updated_at: WsU64;
|
|
703
|
+
is_stale: boolean;
|
|
704
|
+
strikes: Array<{
|
|
705
|
+
strike: WsU64;
|
|
706
|
+
best_price?: WsU64 | null;
|
|
707
|
+
}>;
|
|
708
|
+
};
|
|
709
|
+
export type RfqBroadcastMessage = {
|
|
710
|
+
rfq_id: UuidString;
|
|
711
|
+
market: MarketDescriptor;
|
|
712
|
+
position_type: PositionType;
|
|
713
|
+
/** RFQ base strike (informational/reference). */
|
|
714
|
+
strike: WsU64;
|
|
715
|
+
quantity: WsU64;
|
|
716
|
+
expires_at: WsU64;
|
|
717
|
+
taker: Address<string>;
|
|
718
|
+
/**
|
|
719
|
+
* Server-defined order options (strike inventory).
|
|
720
|
+
* Makers must quote only these strikes.
|
|
721
|
+
*/
|
|
722
|
+
order_options: RfqOrderOption[];
|
|
723
|
+
};
|
|
724
|
+
export type QuoteReceivedMessage = {
|
|
725
|
+
rfq_id: UuidString;
|
|
726
|
+
strike: WsU64;
|
|
727
|
+
maker: Address<string>;
|
|
728
|
+
price: WsU64;
|
|
729
|
+
valid_until: WsU64;
|
|
730
|
+
/** u64 nonce used in the orderId preimage. */
|
|
731
|
+
nonce: WsU64;
|
|
732
|
+
/** Order ID hex string (64 chars). */
|
|
733
|
+
order_id: OrderIdHex32;
|
|
734
|
+
};
|
|
735
|
+
export type QuotesUpdateMessage = {
|
|
736
|
+
rfq_id: UuidString;
|
|
737
|
+
quotes: QuoteReceivedMessage[];
|
|
738
|
+
};
|
|
739
|
+
export type PositionsMessage = {
|
|
740
|
+
positions: PositionInfo[];
|
|
741
|
+
};
|
|
742
|
+
export type MarketsMessage = {
|
|
743
|
+
markets: MarketInfo[];
|
|
744
|
+
};
|
|
745
|
+
export type MarketDescriptorsMessage = {
|
|
746
|
+
markets: MarketDescriptorInfo[];
|
|
747
|
+
};
|
|
748
|
+
export type ExpiriesMessage = {
|
|
749
|
+
expiries_ts: WsU64[];
|
|
750
|
+
};
|
|
751
|
+
export type TokensMessage = {
|
|
752
|
+
underlyings: TokenInfo[];
|
|
753
|
+
quotes_by_underlying: Record<Address<string>, TokenInfo[]>;
|
|
754
|
+
};
|
|
755
|
+
export type SnapshotMessage = {
|
|
756
|
+
stats: GlobalStats;
|
|
757
|
+
active_rfqs: ActiveRfqInfo[];
|
|
758
|
+
positions?: PositionInfo[];
|
|
759
|
+
recent_trades?: TradeInfo[];
|
|
760
|
+
markets: MarketInfo[];
|
|
761
|
+
};
|
|
762
|
+
export type MyActiveRfqsMessage = {
|
|
763
|
+
rfqs: MyActiveRfqInfo[];
|
|
764
|
+
};
|
|
765
|
+
export type OrderStatusMessage = {
|
|
766
|
+
order_id: OrderIdHex32;
|
|
767
|
+
status: OrderStatusValue;
|
|
768
|
+
rfq_id?: UuidString | null;
|
|
769
|
+
tx_signature?: string | null;
|
|
770
|
+
position_pda?: string | null;
|
|
771
|
+
error_reason?: string | null;
|
|
772
|
+
};
|
|
773
|
+
export type GlobalStats = {
|
|
774
|
+
total_volume_24h: WsU64;
|
|
775
|
+
total_trades_24h: WsU32;
|
|
776
|
+
total_price_24h: WsU64;
|
|
777
|
+
active_markets: WsU32;
|
|
778
|
+
active_makers: WsU32;
|
|
779
|
+
active_rfqs: WsU32;
|
|
780
|
+
};
|
|
781
|
+
export type ActiveRfqInfo = {
|
|
782
|
+
rfq_id: UuidString;
|
|
783
|
+
market: string;
|
|
784
|
+
position_type: PositionType;
|
|
785
|
+
strike: WsU64;
|
|
786
|
+
quantity: WsU64;
|
|
787
|
+
expires_at: WsU64;
|
|
788
|
+
quotes_count: WsU32;
|
|
789
|
+
/** Best (highest) quoted price observed for this RFQ. */
|
|
790
|
+
best_price: WsU64 | null;
|
|
791
|
+
order_options: RfqOrderOption[];
|
|
792
|
+
};
|
|
793
|
+
export type MyActiveRfqInfo = {
|
|
794
|
+
rfq_id: UuidString;
|
|
795
|
+
market: string;
|
|
796
|
+
position_type: PositionType;
|
|
797
|
+
strike: WsU64;
|
|
798
|
+
quantity: WsU64;
|
|
799
|
+
state: MyActiveRfqState;
|
|
800
|
+
locked_order_id?: OrderIdHex32 | null;
|
|
801
|
+
expires_at: WsU64;
|
|
802
|
+
quotes_count: WsU32;
|
|
803
|
+
best_price?: WsU64 | null;
|
|
804
|
+
};
|
|
805
|
+
export type RfqOrderOption = {
|
|
806
|
+
strike: WsU64;
|
|
807
|
+
};
|
|
808
|
+
export type PositionInfo = {
|
|
809
|
+
pda: string;
|
|
810
|
+
market: string;
|
|
811
|
+
position_type: PositionType;
|
|
812
|
+
status: PositionStatus;
|
|
813
|
+
strike: WsU64;
|
|
814
|
+
quantity: WsU64;
|
|
815
|
+
price: WsU64;
|
|
816
|
+
created_at: WsU64;
|
|
817
|
+
};
|
|
818
|
+
export type TradeInfo = {
|
|
819
|
+
id: UuidString;
|
|
820
|
+
market: string;
|
|
821
|
+
position_type: PositionType;
|
|
822
|
+
strike: WsU64;
|
|
823
|
+
quantity: WsU64;
|
|
824
|
+
price: WsU64;
|
|
825
|
+
taker: string;
|
|
826
|
+
maker: string;
|
|
827
|
+
tx_signature: string;
|
|
828
|
+
executed_at: WsU64;
|
|
829
|
+
};
|
|
830
|
+
export type MarketInfo = {
|
|
831
|
+
pda: string;
|
|
832
|
+
underlying: string;
|
|
833
|
+
quote: string;
|
|
834
|
+
expiry_ts: WsU64;
|
|
835
|
+
is_put: boolean;
|
|
836
|
+
};
|
|
837
|
+
export type TradeExecutedMessage = {
|
|
838
|
+
trade: TradeInfo;
|
|
839
|
+
stats_delta?: StatsDelta | null;
|
|
840
|
+
};
|
|
841
|
+
export type PositionUpdatedMessage = {
|
|
842
|
+
position: PositionInfo;
|
|
843
|
+
update_type: PositionUpdateType;
|
|
844
|
+
};
|
|
845
|
+
/** Values: "created" | "funded" | "settled" | "liquidated". */
|
|
846
|
+
export type PositionUpdateType = string;
|
|
847
|
+
export type StatsUpdateMessage = {
|
|
848
|
+
stats: GlobalStats;
|
|
849
|
+
};
|
|
850
|
+
export type StatsDelta = {
|
|
851
|
+
volume_added?: WsU64 | null;
|
|
852
|
+
trades_added?: WsU32 | null;
|
|
853
|
+
price_added?: WsU64 | null;
|
|
854
|
+
};
|
|
855
|
+
export type ChainEventMessage = {
|
|
856
|
+
event_type: "PositionOpened";
|
|
857
|
+
signature: string;
|
|
858
|
+
slot: WsU64;
|
|
859
|
+
market: string;
|
|
860
|
+
maker: string;
|
|
861
|
+
taker: string;
|
|
862
|
+
position_type: PositionType;
|
|
863
|
+
strike: WsU64;
|
|
864
|
+
quantity: WsU64;
|
|
865
|
+
price: WsU64;
|
|
866
|
+
/** 32-byte orderId (sha256) encoded as hex (64 chars). */
|
|
867
|
+
order_id: OrderIdHex32;
|
|
868
|
+
} | {
|
|
869
|
+
event_type: "MarketCreated";
|
|
870
|
+
signature: string;
|
|
871
|
+
slot: WsU64;
|
|
872
|
+
market: string;
|
|
873
|
+
underlying_mint: string;
|
|
874
|
+
quote_mint: string;
|
|
875
|
+
expiry_ts: WsU64;
|
|
876
|
+
is_put: boolean;
|
|
877
|
+
} | {
|
|
878
|
+
event_type: "MarketFinalized";
|
|
879
|
+
signature: string;
|
|
880
|
+
slot: WsU64;
|
|
881
|
+
market: string;
|
|
882
|
+
settlement_price: WsU64;
|
|
883
|
+
} | {
|
|
884
|
+
event_type: "MakerRegistered";
|
|
885
|
+
signature: string;
|
|
886
|
+
slot: WsU64;
|
|
887
|
+
owner: string;
|
|
888
|
+
maker_pda: string;
|
|
889
|
+
quote_signing: string;
|
|
890
|
+
} | {
|
|
891
|
+
event_type: "PositionSettled";
|
|
892
|
+
signature: string;
|
|
893
|
+
slot: WsU64;
|
|
894
|
+
position: string;
|
|
895
|
+
} | {
|
|
896
|
+
event_type: "PositionLiquidated";
|
|
897
|
+
signature: string;
|
|
898
|
+
slot: WsU64;
|
|
899
|
+
position: string;
|
|
900
|
+
};
|