@kamino-finance/klend-sdk 8.0.1 → 8.0.2
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/dist/classes/index.d.ts +0 -5
- package/dist/classes/index.d.ts.map +1 -1
- package/dist/classes/index.js +2 -5
- package/dist/classes/index.js.map +1 -1
- package/dist/lib.d.ts +1 -0
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +1 -0
- package/dist/lib.js.map +1 -1
- package/dist/ws/accountSubscriptionManager.d.ts +161 -0
- package/dist/ws/accountSubscriptionManager.d.ts.map +1 -0
- package/dist/ws/accountSubscriptionManager.js +504 -0
- package/dist/ws/accountSubscriptionManager.js.map +1 -0
- package/dist/ws/anchorConstants.d.ts +7 -0
- package/dist/ws/anchorConstants.d.ts.map +1 -0
- package/dist/ws/anchorConstants.js +10 -0
- package/dist/ws/anchorConstants.js.map +1 -0
- package/dist/ws/balanceListener.d.ts +66 -0
- package/dist/ws/balanceListener.d.ts.map +1 -0
- package/dist/ws/balanceListener.js +63 -0
- package/dist/ws/balanceListener.js.map +1 -0
- package/dist/{classes → ws}/borrowOrderFillListener.d.ts +3 -4
- package/dist/ws/borrowOrderFillListener.d.ts.map +1 -0
- package/dist/{classes → ws}/borrowOrderFillListener.js +19 -24
- package/dist/ws/borrowOrderFillListener.js.map +1 -0
- package/dist/ws/bufferedDispatcher.d.ts +29 -0
- package/dist/ws/bufferedDispatcher.d.ts.map +1 -0
- package/dist/ws/bufferedDispatcher.js +92 -0
- package/dist/ws/bufferedDispatcher.js.map +1 -0
- package/dist/ws/createManagerSubscription.d.ts +24 -0
- package/dist/ws/createManagerSubscription.d.ts.map +1 -0
- package/dist/ws/createManagerSubscription.js +29 -0
- package/dist/ws/createManagerSubscription.js.map +1 -0
- package/dist/ws/createStandaloneSubscription.d.ts +26 -0
- package/dist/ws/createStandaloneSubscription.d.ts.map +1 -0
- package/dist/ws/createStandaloneSubscription.js +41 -0
- package/dist/ws/createStandaloneSubscription.js.map +1 -0
- package/dist/ws/index.d.ts +16 -0
- package/dist/ws/index.d.ts.map +1 -0
- package/dist/ws/index.js +38 -0
- package/dist/ws/index.js.map +1 -0
- package/dist/ws/obligationListener.d.ts +39 -0
- package/dist/ws/obligationListener.d.ts.map +1 -0
- package/dist/ws/obligationListener.js +39 -0
- package/dist/ws/obligationListener.js.map +1 -0
- package/dist/ws/oracleListener.d.ts +32 -0
- package/dist/ws/oracleListener.d.ts.map +1 -0
- package/dist/ws/oracleListener.js +61 -0
- package/dist/ws/oracleListener.js.map +1 -0
- package/dist/{classes → ws}/reserveListener.d.ts +10 -14
- package/dist/ws/reserveListener.d.ts.map +1 -0
- package/dist/ws/reserveListener.js +48 -0
- package/dist/ws/reserveListener.js.map +1 -0
- package/dist/ws/slotListener.d.ts +21 -0
- package/dist/ws/slotListener.d.ts.map +1 -0
- package/dist/ws/slotListener.js +14 -0
- package/dist/ws/slotListener.js.map +1 -0
- package/dist/ws/subscriptionHandle.d.ts +13 -0
- package/dist/ws/subscriptionHandle.d.ts.map +1 -0
- package/dist/ws/subscriptionHandle.js +9 -0
- package/dist/ws/subscriptionHandle.js.map +1 -0
- package/dist/ws/utils.d.ts +23 -0
- package/dist/ws/utils.d.ts.map +1 -0
- package/dist/ws/utils.js +45 -0
- package/dist/ws/utils.js.map +1 -0
- package/dist/ws/wsCadenceOptions.d.ts +17 -0
- package/dist/ws/wsCadenceOptions.d.ts.map +1 -0
- package/dist/ws/wsCadenceOptions.js +25 -0
- package/dist/ws/wsCadenceOptions.js.map +1 -0
- package/dist/ws/wsErrorReporter.d.ts +12 -0
- package/dist/ws/wsErrorReporter.d.ts.map +1 -0
- package/dist/ws/wsErrorReporter.js +39 -0
- package/dist/ws/wsErrorReporter.js.map +1 -0
- package/dist/ws/wsListenerObservability.d.ts +27 -0
- package/dist/ws/wsListenerObservability.d.ts.map +1 -0
- package/dist/ws/wsListenerObservability.js +6 -0
- package/dist/ws/wsListenerObservability.js.map +1 -0
- package/dist/ws/wsReconnectLoop.d.ts +54 -0
- package/dist/ws/wsReconnectLoop.d.ts.map +1 -0
- package/dist/ws/wsReconnectLoop.js +167 -0
- package/dist/ws/wsReconnectLoop.js.map +1 -0
- package/dist/ws/wsUpdateScheduler.d.ts +28 -0
- package/dist/ws/wsUpdateScheduler.d.ts.map +1 -0
- package/dist/ws/wsUpdateScheduler.js +124 -0
- package/dist/ws/wsUpdateScheduler.js.map +1 -0
- package/package.json +1 -1
- package/src/classes/index.ts +2 -5
- package/src/lib.ts +1 -0
- package/src/ws/accountSubscriptionManager.ts +699 -0
- package/src/ws/anchorConstants.ts +6 -0
- package/src/ws/balanceListener.ts +123 -0
- package/src/{classes → ws}/borrowOrderFillListener.ts +24 -35
- package/src/ws/bufferedDispatcher.ts +113 -0
- package/src/ws/createManagerSubscription.ts +55 -0
- package/src/ws/createStandaloneSubscription.ts +66 -0
- package/src/ws/index.ts +25 -0
- package/src/ws/obligationListener.ts +78 -0
- package/src/ws/oracleListener.ts +100 -0
- package/src/ws/reserveListener.ts +73 -0
- package/src/ws/slotListener.ts +34 -0
- package/src/ws/subscriptionHandle.ts +17 -0
- package/src/ws/utils.ts +41 -0
- package/src/ws/wsCadenceOptions.ts +33 -0
- package/src/ws/wsErrorReporter.ts +37 -0
- package/src/ws/wsListenerObservability.ts +27 -0
- package/src/ws/wsReconnectLoop.ts +232 -0
- package/src/ws/wsUpdateScheduler.ts +143 -0
- package/dist/classes/accountSubscriptionManager.d.ts +0 -101
- package/dist/classes/accountSubscriptionManager.d.ts.map +0 -1
- package/dist/classes/accountSubscriptionManager.js +0 -254
- package/dist/classes/accountSubscriptionManager.js.map +0 -1
- package/dist/classes/balanceListener.d.ts +0 -73
- package/dist/classes/balanceListener.d.ts.map +0 -1
- package/dist/classes/balanceListener.js +0 -90
- package/dist/classes/balanceListener.js.map +0 -1
- package/dist/classes/borrowOrderFillListener.d.ts.map +0 -1
- package/dist/classes/borrowOrderFillListener.js.map +0 -1
- package/dist/classes/obligationListener.d.ts +0 -33
- package/dist/classes/obligationListener.d.ts.map +0 -1
- package/dist/classes/obligationListener.js +0 -41
- package/dist/classes/obligationListener.js.map +0 -1
- package/dist/classes/reserveListener.d.ts.map +0 -1
- package/dist/classes/reserveListener.js +0 -57
- package/dist/classes/reserveListener.js.map +0 -1
- package/src/classes/accountSubscriptionManager.ts +0 -361
- package/src/classes/balanceListener.ts +0 -146
- package/src/classes/obligationListener.ts +0 -79
- package/src/classes/reserveListener.ts +0 -88
package/dist/classes/index.d.ts
CHANGED
|
@@ -13,10 +13,5 @@ export * from './manager';
|
|
|
13
13
|
export * from './vault';
|
|
14
14
|
export * from './fraction';
|
|
15
15
|
export * from './vault_types';
|
|
16
|
-
export * from './accountSubscriptionManager';
|
|
17
|
-
export * from './balanceListener';
|
|
18
|
-
export * from './borrowOrderFillListener';
|
|
19
|
-
export * from './obligationListener';
|
|
20
|
-
export * from './reserveListener';
|
|
21
16
|
export * from './cdnClient';
|
|
22
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAI9B,cAAc,aAAa,CAAC"}
|
package/dist/classes/index.js
CHANGED
|
@@ -29,10 +29,7 @@ __exportStar(require("./manager"), exports);
|
|
|
29
29
|
__exportStar(require("./vault"), exports);
|
|
30
30
|
__exportStar(require("./fraction"), exports);
|
|
31
31
|
__exportStar(require("./vault_types"), exports);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
__exportStar(require("./borrowOrderFillListener"), exports);
|
|
35
|
-
__exportStar(require("./obligationListener"), exports);
|
|
36
|
-
__exportStar(require("./reserveListener"), exports);
|
|
32
|
+
// WS subsystem moved to src/ws/. `src/lib.ts` re-exports `./ws` at the
|
|
33
|
+
// package root so external imports stay unchanged.
|
|
37
34
|
__exportStar(require("./cdnClient"), exports);
|
|
38
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,6CAA2B;AAC3B,2CAAyB;AACzB,+CAA6B;AAC7B,oDAAkC;AAClC,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AAExB,iDAA+B;AAE/B,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,gDAA8B;AAE9B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,6CAA2B;AAC3B,2CAAyB;AACzB,+CAA6B;AAC7B,oDAAkC;AAClC,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AAExB,iDAA+B;AAE/B,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,gDAA8B;AAE9B,uEAAuE;AACvE,mDAAmD;AACnD,8CAA4B"}
|
package/dist/lib.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './@codegen/kvault/accounts/VaultState';
|
|
|
8
8
|
export * from './@codegen/kvault/types';
|
|
9
9
|
export { PROGRAM_ID as KVAULTS_PROGRAM_ID } from './@codegen/kvault/programId';
|
|
10
10
|
export * from './classes';
|
|
11
|
+
export * from './ws';
|
|
11
12
|
export * from './utils';
|
|
12
13
|
export * from './leverage';
|
|
13
14
|
export * from './referrals';
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7F,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE/E,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7F,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE/E,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC"}
|
package/dist/lib.js
CHANGED
|
@@ -28,6 +28,7 @@ __exportStar(require("./@codegen/kvault/types"), exports);
|
|
|
28
28
|
var programId_1 = require("./@codegen/kvault/programId");
|
|
29
29
|
Object.defineProperty(exports, "KVAULTS_PROGRAM_ID", { enumerable: true, get: function () { return programId_1.PROGRAM_ID; } });
|
|
30
30
|
__exportStar(require("./classes"), exports);
|
|
31
|
+
__exportStar(require("./ws"), exports);
|
|
31
32
|
__exportStar(require("./utils"), exports);
|
|
32
33
|
__exportStar(require("./leverage"), exports);
|
|
33
34
|
__exportStar(require("./referrals"), exports);
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,4DAA0C;AAC1C,6DAA2C;AAC3C,gEAA8C;AAE9C,iEAA+C;AAC/C,+HAA+H;AAC/H,wEAA6F;AAApF,kHAAA,YAAY,OAAsB;AAC3C,wEAAsD;AACtD,0DAAwC;AACxC,yDAA+E;AAAtE,+GAAA,UAAU,OAAsB;AAEzC,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,8CAA4B;AAC5B,uDAAqC;AACrC,sDAAoC;AACpC,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,4DAA0C;AAC1C,6DAA2C;AAC3C,gEAA8C;AAE9C,iEAA+C;AAC/C,+HAA+H;AAC/H,wEAA6F;AAApF,kHAAA,YAAY,OAAsB;AAC3C,wEAAsD;AACtD,0DAAwC;AACxC,yDAA+E;AAAtE,+GAAA,UAAU,OAAsB;AAEzC,4CAA0B;AAC1B,uCAAqB;AACrB,0CAAwB;AACxB,6CAA2B;AAC3B,8CAA4B;AAC5B,uDAAqC;AACrC,sDAAoC;AACpC,2CAAyB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic account subscription manager using Solana programNotifications.
|
|
3
|
+
* Framework-agnostic — consumers provide error/log callbacks for observability.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Ref-counted: first listener starts the WS, last unsubscribe tears it down.
|
|
7
|
+
* - Slot-based ordering + buffer dedup (skips unchanged data, updates slot only).
|
|
8
|
+
* - Auto-reconnect via {@link runReconnectLoop}.
|
|
9
|
+
* - Decode/listener throws are reported but DO NOT trigger reconnect.
|
|
10
|
+
* - Per-listener `onReconnect` for state refresh after WS recovery; cleaned
|
|
11
|
+
* up on unsubscribe so departed listeners' hooks cannot fire later.
|
|
12
|
+
*/
|
|
13
|
+
import { type Address, type Base58EncodedBytes, type Commitment, type RpcSubscriptions, type Slot, type SolanaRpcSubscriptionsApi } from '@solana/kit';
|
|
14
|
+
import { type SubscriptionHandle } from './subscriptionHandle';
|
|
15
|
+
import type { UpdateScheduler } from './wsUpdateScheduler';
|
|
16
|
+
export type SubscriptionCallback = (address: Address, buffer: Uint8Array, slot: Slot) => void;
|
|
17
|
+
export type SubscriptionMode = 'ws' | 'idle';
|
|
18
|
+
export type SubscriptionErrorHandler = (error: unknown) => void;
|
|
19
|
+
export type SubscriptionLogger = (...args: unknown[]) => void;
|
|
20
|
+
export type ProgramFilter = Readonly<{
|
|
21
|
+
dataSize: bigint;
|
|
22
|
+
}> | Readonly<{
|
|
23
|
+
memcmp: Readonly<{
|
|
24
|
+
offset: bigint;
|
|
25
|
+
bytes: Base58EncodedBytes;
|
|
26
|
+
encoding: 'base58';
|
|
27
|
+
}>;
|
|
28
|
+
}>;
|
|
29
|
+
export interface AccountSubscriptionManagerConfig {
|
|
30
|
+
wsRpc: RpcSubscriptions<SolanaRpcSubscriptionsApi>;
|
|
31
|
+
onError?: SubscriptionErrorHandler;
|
|
32
|
+
onLog?: SubscriptionLogger;
|
|
33
|
+
reconnectDelayMs?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface SubscribeProgramAccountsOptions {
|
|
36
|
+
commitment?: Commitment;
|
|
37
|
+
/** Called after WS reconnects, before resuming the notification loop.
|
|
38
|
+
* Use to refresh state that may have drifted during downtime.
|
|
39
|
+
*
|
|
40
|
+
* Per-listener: each subscriber's hook is tracked independently and
|
|
41
|
+
* cleaned up on `unsubscribe()`. The hook invoked on each reconnect is
|
|
42
|
+
* the most recently registered one still attached (latest wins), so a
|
|
43
|
+
* subscriber whose hook is currently in use can leave without leaving
|
|
44
|
+
* a dangling reference.
|
|
45
|
+
*
|
|
46
|
+
* The manager wraps the call in retry-with-exponential-backoff (capped
|
|
47
|
+
* at 30s, 5 attempts). A throwing hook is reported through `onError`
|
|
48
|
+
* per attempt; after the max, we give up and proceed with cached state.
|
|
49
|
+
* Aborts cleanly on `unsubscribe()`. */
|
|
50
|
+
onReconnect?: () => void | Promise<void>;
|
|
51
|
+
/** Request a delivery cadence of at most one per N ms. The actual cadence
|
|
52
|
+
* is the minimum of all subscribers' demands (**shortest wins**) — your
|
|
53
|
+
* callback may fire faster than your own `throttleMs` if another
|
|
54
|
+
* subscriber asked for less.
|
|
55
|
+
*
|
|
56
|
+
* - A subscriber that omits `throttleMs` adds no demand and inherits the
|
|
57
|
+
* existing cadence. To guarantee strictly immediate delivery, ensure
|
|
58
|
+
* no other subscriber on the same `(programId, commitment, filters)`
|
|
59
|
+
* key sets a `throttleMs` — otherwise their throttle wins.
|
|
60
|
+
* - A throttled subscriber joining an unthrottled key silently throttles
|
|
61
|
+
* the original subscriber (intentional — fast wins, no data loss).
|
|
62
|
+
*
|
|
63
|
+
* Required when `scheduler` is set (sets the group cadence). */
|
|
64
|
+
throttleMs?: number;
|
|
65
|
+
/** Cross-stream flush scheduler — registers an updater under `throttleMs`
|
|
66
|
+
* in the scheduler's group map. Drains the buffer on each scheduler tick
|
|
67
|
+
* instead of running an own setTimeout.
|
|
68
|
+
*
|
|
69
|
+
* Per-listener tracking: each subscriber's scheduler is recorded, and
|
|
70
|
+
* the **active** scheduler is the FIRST one passed (insertion order).
|
|
71
|
+
* Subscribers that omit `scheduler` don't contribute, so a no-scheduler
|
|
72
|
+
* subscriber doesn't block a later one from establishing the active
|
|
73
|
+
* scheduler. If a subscriber passes a scheduler DIFFERENT from the
|
|
74
|
+
* active one, the manager logs (via `onLog`) and records the demand
|
|
75
|
+
* anyway — that scheduler will take over only if every listener owning
|
|
76
|
+
* the currently-active scheduler unsubscribes.
|
|
77
|
+
*
|
|
78
|
+
* On unsubscribe, the active scheduler is recomputed and the buffered-
|
|
79
|
+
* drain registration moves to the next scheduler in line (or falls back
|
|
80
|
+
* to a self-managed timer if none remain). This prevents holding a dead
|
|
81
|
+
* reference to a scheduler whose owner has departed.
|
|
82
|
+
*
|
|
83
|
+
* Note: this subscription's scheduler-group cadence follows the
|
|
84
|
+
* shortest-wins effective `throttleMs`. If a later subscriber to the
|
|
85
|
+
* same key passes a shorter `throttleMs` (with or without scheduler),
|
|
86
|
+
* the scheduler-group registration moves to the faster cadence — your
|
|
87
|
+
* other subscriptions registered under the original cadence will no
|
|
88
|
+
* longer flush together with this one. */
|
|
89
|
+
scheduler?: UpdateScheduler;
|
|
90
|
+
}
|
|
91
|
+
export declare class AccountSubscriptionManager {
|
|
92
|
+
private subscriptions;
|
|
93
|
+
private nextListenerId;
|
|
94
|
+
private wsRpc;
|
|
95
|
+
private onError;
|
|
96
|
+
private onLog;
|
|
97
|
+
private reconnectDelayMs;
|
|
98
|
+
constructor(config: AccountSubscriptionManagerConfig);
|
|
99
|
+
/**
|
|
100
|
+
* Subscribe to program account changes. First subscriber for a key starts
|
|
101
|
+
* the WS; last unsubscribe tears it down. Late subscribers replay any
|
|
102
|
+
* cached account data immediately.
|
|
103
|
+
*/
|
|
104
|
+
subscribeProgramAccounts(programId: Address, filters: readonly ProgramFilter[], callback: SubscriptionCallback, options?: SubscribeProgramAccountsOptions): SubscriptionHandle;
|
|
105
|
+
/**
|
|
106
|
+
* Drain any buffered notifications immediately. With `commitment`, flushes
|
|
107
|
+
* just that subscription; without, flushes all matching programId+filters
|
|
108
|
+
* across all commitments.
|
|
109
|
+
*
|
|
110
|
+
* No-op if unbuffered or empty. Cadence timers keep ticking — next firing
|
|
111
|
+
* may be a no-op since the buffer was just cleared.
|
|
112
|
+
*/
|
|
113
|
+
flushPending(programId: Address, filters: readonly ProgramFilter[], commitment?: Commitment): void;
|
|
114
|
+
getMode(programId: Address, filters: readonly ProgramFilter[], commitment?: Commitment): SubscriptionMode;
|
|
115
|
+
destroy(): void;
|
|
116
|
+
/** Resolves when the WS subscription is established.
|
|
117
|
+
*
|
|
118
|
+
* Throws if no subscription matches `(programId, filters, commitment)` —
|
|
119
|
+
* silently resolving used to make caller typos (wrong commitment, missing
|
|
120
|
+
* prior `subscribeProgramAccounts`, stale filter array) look like a
|
|
121
|
+
* successful wait. Failing loudly surfaces the sequencing bug at the
|
|
122
|
+
* call site. */
|
|
123
|
+
waitForConnection(programId: Address, filters: readonly ProgramFilter[], commitment?: Commitment): Promise<void>;
|
|
124
|
+
private buildKey;
|
|
125
|
+
/** Direct lookup with `commitment`; fan-out scan without. */
|
|
126
|
+
private findSubscription;
|
|
127
|
+
/** Re-wire cadence machinery after a demands change. Fast no-op if effective throttle didn't change. */
|
|
128
|
+
private recomputeEffectiveThrottle;
|
|
129
|
+
/** Re-pick the active scheduler from current demands and re-wire the
|
|
130
|
+
* group registration if the choice changed. */
|
|
131
|
+
private recomputeActiveScheduler;
|
|
132
|
+
private tearDownActiveCadence;
|
|
133
|
+
private attachToSchedulerGroup;
|
|
134
|
+
private flushOrphanedBuffer;
|
|
135
|
+
private rearmTimerForBufferedData;
|
|
136
|
+
/** No-op if a timer is already armed. */
|
|
137
|
+
private armThrottleDrainTimer;
|
|
138
|
+
private flushSubscription;
|
|
139
|
+
private createSubscription;
|
|
140
|
+
private startWs;
|
|
141
|
+
private handleNotification;
|
|
142
|
+
private deliverByCadence;
|
|
143
|
+
private drainBufferedNotifications;
|
|
144
|
+
private fireListeners;
|
|
145
|
+
private teardown;
|
|
146
|
+
/** Sleep `ms`, but resolve immediately on abort — mirrors the pattern in
|
|
147
|
+
* runReconnectLoop so teardown cancels in-flight reconnect-hook retries. */
|
|
148
|
+
private static abortableSleep;
|
|
149
|
+
/** Calls the latest registered `onReconnect` hook with bounded retry-with-
|
|
150
|
+
* backoff. The manager is the documented wrapper for runReconnectLoop's
|
|
151
|
+
* best-effort `onBeforeReconnect` contract — failing the hook silently
|
|
152
|
+
* would let listeners resume with stale state (e.g. borrowOrderFills
|
|
153
|
+
* misclassifying new fills against pre-downtime obligations).
|
|
154
|
+
*
|
|
155
|
+
* After {@link RECONNECT_HOOK_MAX_RETRIES} consecutive failures we give
|
|
156
|
+
* up and proceed anyway: an indefinitely failing hook would block the
|
|
157
|
+
* WS forever, which is worse than stale state. The error reporter sees
|
|
158
|
+
* every failure regardless. */
|
|
159
|
+
private runReconnectHookWithRetry;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=accountSubscriptionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountSubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/ws/accountSubscriptionManager.ts"],"names":[],"mappings":"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"}
|