@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.
Files changed (127) hide show
  1. package/dist/classes/index.d.ts +0 -5
  2. package/dist/classes/index.d.ts.map +1 -1
  3. package/dist/classes/index.js +2 -5
  4. package/dist/classes/index.js.map +1 -1
  5. package/dist/lib.d.ts +1 -0
  6. package/dist/lib.d.ts.map +1 -1
  7. package/dist/lib.js +1 -0
  8. package/dist/lib.js.map +1 -1
  9. package/dist/ws/accountSubscriptionManager.d.ts +161 -0
  10. package/dist/ws/accountSubscriptionManager.d.ts.map +1 -0
  11. package/dist/ws/accountSubscriptionManager.js +504 -0
  12. package/dist/ws/accountSubscriptionManager.js.map +1 -0
  13. package/dist/ws/anchorConstants.d.ts +7 -0
  14. package/dist/ws/anchorConstants.d.ts.map +1 -0
  15. package/dist/ws/anchorConstants.js +10 -0
  16. package/dist/ws/anchorConstants.js.map +1 -0
  17. package/dist/ws/balanceListener.d.ts +66 -0
  18. package/dist/ws/balanceListener.d.ts.map +1 -0
  19. package/dist/ws/balanceListener.js +63 -0
  20. package/dist/ws/balanceListener.js.map +1 -0
  21. package/dist/{classes → ws}/borrowOrderFillListener.d.ts +3 -4
  22. package/dist/ws/borrowOrderFillListener.d.ts.map +1 -0
  23. package/dist/{classes → ws}/borrowOrderFillListener.js +19 -24
  24. package/dist/ws/borrowOrderFillListener.js.map +1 -0
  25. package/dist/ws/bufferedDispatcher.d.ts +29 -0
  26. package/dist/ws/bufferedDispatcher.d.ts.map +1 -0
  27. package/dist/ws/bufferedDispatcher.js +92 -0
  28. package/dist/ws/bufferedDispatcher.js.map +1 -0
  29. package/dist/ws/createManagerSubscription.d.ts +24 -0
  30. package/dist/ws/createManagerSubscription.d.ts.map +1 -0
  31. package/dist/ws/createManagerSubscription.js +29 -0
  32. package/dist/ws/createManagerSubscription.js.map +1 -0
  33. package/dist/ws/createStandaloneSubscription.d.ts +26 -0
  34. package/dist/ws/createStandaloneSubscription.d.ts.map +1 -0
  35. package/dist/ws/createStandaloneSubscription.js +41 -0
  36. package/dist/ws/createStandaloneSubscription.js.map +1 -0
  37. package/dist/ws/index.d.ts +16 -0
  38. package/dist/ws/index.d.ts.map +1 -0
  39. package/dist/ws/index.js +38 -0
  40. package/dist/ws/index.js.map +1 -0
  41. package/dist/ws/obligationListener.d.ts +39 -0
  42. package/dist/ws/obligationListener.d.ts.map +1 -0
  43. package/dist/ws/obligationListener.js +39 -0
  44. package/dist/ws/obligationListener.js.map +1 -0
  45. package/dist/ws/oracleListener.d.ts +32 -0
  46. package/dist/ws/oracleListener.d.ts.map +1 -0
  47. package/dist/ws/oracleListener.js +61 -0
  48. package/dist/ws/oracleListener.js.map +1 -0
  49. package/dist/{classes → ws}/reserveListener.d.ts +10 -14
  50. package/dist/ws/reserveListener.d.ts.map +1 -0
  51. package/dist/ws/reserveListener.js +48 -0
  52. package/dist/ws/reserveListener.js.map +1 -0
  53. package/dist/ws/slotListener.d.ts +21 -0
  54. package/dist/ws/slotListener.d.ts.map +1 -0
  55. package/dist/ws/slotListener.js +14 -0
  56. package/dist/ws/slotListener.js.map +1 -0
  57. package/dist/ws/subscriptionHandle.d.ts +13 -0
  58. package/dist/ws/subscriptionHandle.d.ts.map +1 -0
  59. package/dist/ws/subscriptionHandle.js +9 -0
  60. package/dist/ws/subscriptionHandle.js.map +1 -0
  61. package/dist/ws/utils.d.ts +23 -0
  62. package/dist/ws/utils.d.ts.map +1 -0
  63. package/dist/ws/utils.js +45 -0
  64. package/dist/ws/utils.js.map +1 -0
  65. package/dist/ws/wsCadenceOptions.d.ts +17 -0
  66. package/dist/ws/wsCadenceOptions.d.ts.map +1 -0
  67. package/dist/ws/wsCadenceOptions.js +25 -0
  68. package/dist/ws/wsCadenceOptions.js.map +1 -0
  69. package/dist/ws/wsErrorReporter.d.ts +12 -0
  70. package/dist/ws/wsErrorReporter.d.ts.map +1 -0
  71. package/dist/ws/wsErrorReporter.js +39 -0
  72. package/dist/ws/wsErrorReporter.js.map +1 -0
  73. package/dist/ws/wsListenerObservability.d.ts +27 -0
  74. package/dist/ws/wsListenerObservability.d.ts.map +1 -0
  75. package/dist/ws/wsListenerObservability.js +6 -0
  76. package/dist/ws/wsListenerObservability.js.map +1 -0
  77. package/dist/ws/wsReconnectLoop.d.ts +54 -0
  78. package/dist/ws/wsReconnectLoop.d.ts.map +1 -0
  79. package/dist/ws/wsReconnectLoop.js +167 -0
  80. package/dist/ws/wsReconnectLoop.js.map +1 -0
  81. package/dist/ws/wsUpdateScheduler.d.ts +28 -0
  82. package/dist/ws/wsUpdateScheduler.d.ts.map +1 -0
  83. package/dist/ws/wsUpdateScheduler.js +124 -0
  84. package/dist/ws/wsUpdateScheduler.js.map +1 -0
  85. package/package.json +1 -1
  86. package/src/classes/index.ts +2 -5
  87. package/src/lib.ts +1 -0
  88. package/src/ws/accountSubscriptionManager.ts +699 -0
  89. package/src/ws/anchorConstants.ts +6 -0
  90. package/src/ws/balanceListener.ts +123 -0
  91. package/src/{classes → ws}/borrowOrderFillListener.ts +24 -35
  92. package/src/ws/bufferedDispatcher.ts +113 -0
  93. package/src/ws/createManagerSubscription.ts +55 -0
  94. package/src/ws/createStandaloneSubscription.ts +66 -0
  95. package/src/ws/index.ts +25 -0
  96. package/src/ws/obligationListener.ts +78 -0
  97. package/src/ws/oracleListener.ts +100 -0
  98. package/src/ws/reserveListener.ts +73 -0
  99. package/src/ws/slotListener.ts +34 -0
  100. package/src/ws/subscriptionHandle.ts +17 -0
  101. package/src/ws/utils.ts +41 -0
  102. package/src/ws/wsCadenceOptions.ts +33 -0
  103. package/src/ws/wsErrorReporter.ts +37 -0
  104. package/src/ws/wsListenerObservability.ts +27 -0
  105. package/src/ws/wsReconnectLoop.ts +232 -0
  106. package/src/ws/wsUpdateScheduler.ts +143 -0
  107. package/dist/classes/accountSubscriptionManager.d.ts +0 -101
  108. package/dist/classes/accountSubscriptionManager.d.ts.map +0 -1
  109. package/dist/classes/accountSubscriptionManager.js +0 -254
  110. package/dist/classes/accountSubscriptionManager.js.map +0 -1
  111. package/dist/classes/balanceListener.d.ts +0 -73
  112. package/dist/classes/balanceListener.d.ts.map +0 -1
  113. package/dist/classes/balanceListener.js +0 -90
  114. package/dist/classes/balanceListener.js.map +0 -1
  115. package/dist/classes/borrowOrderFillListener.d.ts.map +0 -1
  116. package/dist/classes/borrowOrderFillListener.js.map +0 -1
  117. package/dist/classes/obligationListener.d.ts +0 -33
  118. package/dist/classes/obligationListener.d.ts.map +0 -1
  119. package/dist/classes/obligationListener.js +0 -41
  120. package/dist/classes/obligationListener.js.map +0 -1
  121. package/dist/classes/reserveListener.d.ts.map +0 -1
  122. package/dist/classes/reserveListener.js +0 -57
  123. package/dist/classes/reserveListener.js.map +0 -1
  124. package/src/classes/accountSubscriptionManager.ts +0 -361
  125. package/src/classes/balanceListener.ts +0 -146
  126. package/src/classes/obligationListener.ts +0 -79
  127. package/src/classes/reserveListener.ts +0 -88
@@ -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;AAE9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,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"}
@@ -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
- __exportStar(require("./accountSubscriptionManager"), exports);
33
- __exportStar(require("./balanceListener"), exports);
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,+DAA6C;AAC7C,oDAAkC;AAClC,4DAA0C;AAC1C,uDAAqC;AACrC,oDAAkC;AAClC,8CAA4B"}
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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"}