@n1xyz/nord-ts 0.0.14 → 0.0.16

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 (186) hide show
  1. package/.prettierignore +1 -0
  2. package/README.md +9 -6
  3. package/codebase.md +18886 -0
  4. package/dist/bridge/client.d.ts +8 -7
  5. package/dist/bridge/client.js +38 -37
  6. package/dist/bridge/index.d.ts +1 -2
  7. package/dist/bridge/index.js +2 -2
  8. package/dist/bridge/types.d.ts +5 -3
  9. package/dist/bridge/types.js +3 -1
  10. package/dist/gen/common.js +1 -1
  11. package/dist/gen/nord.d.ts +74 -25
  12. package/dist/gen/nord.js +498 -78
  13. package/dist/idl/bridge.json +1493 -0
  14. package/dist/idl/index.d.ts +585 -0
  15. package/dist/idl/index.js +8 -0
  16. package/dist/nord/api/core.js +7 -5
  17. package/dist/nord/api/metrics.js +7 -4
  18. package/dist/nord/client/Nord.d.ts +19 -5
  19. package/dist/nord/client/Nord.js +50 -23
  20. package/dist/nord/client/NordUser.js +17 -15
  21. package/dist/types.d.ts +3 -3
  22. package/dist/websocket/NordWebSocketClient.js +0 -2
  23. package/docs/assets/hierarchy.js +1 -1
  24. package/docs/assets/navigation.js +1 -1
  25. package/docs/assets/search.js +1 -1
  26. package/docs/classes/Nord.html +99 -100
  27. package/docs/classes/NordError.html +6 -6
  28. package/docs/classes/NordUser.html +48 -53
  29. package/docs/classes/NordWebSocketClient.html +6 -11
  30. package/docs/classes/SolanaBridgeClient.html +32 -27
  31. package/docs/classes/Subscriber.html +3 -3
  32. package/docs/enums/FillMode.html +2 -2
  33. package/docs/enums/KeyType.html +2 -2
  34. package/docs/enums/MetricPeriod.html +2 -2
  35. package/docs/enums/PdaSeedType.html +5 -3
  36. package/docs/enums/PeakTpsPeriodUnit.html +2 -2
  37. package/docs/enums/Side.html +2 -2
  38. package/docs/enums/WebSocketMessageType.html +3 -3
  39. package/docs/functions/actionQueryRollman.html +1 -1
  40. package/docs/functions/actionsQueryRollman.html +1 -1
  41. package/docs/functions/aggregateMetrics-1.html +1 -1
  42. package/docs/functions/assert.html +1 -1
  43. package/docs/functions/bigIntToProtoU128.html +1 -1
  44. package/docs/functions/bridgeToBN.html +1 -1
  45. package/docs/functions/bufferToHex.html +1 -1
  46. package/docs/functions/cancelOrder.html +1 -1
  47. package/docs/functions/checkPubKeyLength.html +1 -1
  48. package/docs/functions/checkedFetch.html +1 -1
  49. package/docs/functions/createSession.html +1 -1
  50. package/docs/functions/decodeLengthDelimited.html +1 -1
  51. package/docs/functions/encodeLengthDelimited.html +1 -1
  52. package/docs/functions/fillModeToProtoFillMode.html +1 -1
  53. package/docs/functions/findMarket.html +1 -1
  54. package/docs/functions/findPda.html +1 -1
  55. package/docs/functions/findToken.html +1 -1
  56. package/docs/functions/fromBN.html +1 -1
  57. package/docs/functions/getAccount.html +1 -1
  58. package/docs/functions/getActionNonce.html +1 -1
  59. package/docs/functions/getCurrentTps.html +1 -1
  60. package/docs/functions/getInfo.html +1 -1
  61. package/docs/functions/{queryLastNBlocks.html → getLastActionId.html} +3 -3
  62. package/docs/functions/getMedianLatency.html +1 -1
  63. package/docs/functions/getOrderbook.html +1 -1
  64. package/docs/functions/getPeakTps.html +1 -1
  65. package/docs/functions/getTimestamp.html +1 -1
  66. package/docs/functions/getTotalTransactions.html +1 -1
  67. package/docs/functions/getTrades.html +1 -1
  68. package/docs/functions/getUserAccountIds.html +1 -1
  69. package/docs/functions/hexToBuffer.html +1 -1
  70. package/docs/functions/initWebSocketClient.html +9 -9
  71. package/docs/functions/keypairFromPrivateKey.html +1 -1
  72. package/docs/functions/makeSigningFunction.html +1 -1
  73. package/docs/functions/makeWalletSignFn.html +1 -1
  74. package/docs/functions/marketsStats.html +1 -1
  75. package/docs/functions/optExpect.html +1 -1
  76. package/docs/functions/optMap.html +1 -1
  77. package/docs/functions/optUnwrap.html +1 -1
  78. package/docs/functions/panic.html +1 -1
  79. package/docs/functions/placeOrder.html +1 -1
  80. package/docs/functions/queryAction.html +1 -1
  81. package/docs/functions/queryPrometheus.html +1 -1
  82. package/docs/functions/queryRecentActions.html +4 -3
  83. package/docs/functions/revokeSession.html +1 -1
  84. package/docs/functions/shortenPublicKey.html +1 -1
  85. package/docs/functions/signAction.html +1 -1
  86. package/docs/functions/toBN.html +1 -1
  87. package/docs/functions/toScaledU128.html +1 -1
  88. package/docs/functions/toScaledU64.html +1 -1
  89. package/docs/functions/transfer.html +1 -1
  90. package/docs/functions/withdraw.html +1 -1
  91. package/docs/hierarchy.html +1 -1
  92. package/docs/index.html +2 -2
  93. package/docs/interfaces/Account.html +2 -2
  94. package/docs/interfaces/ActionInfo.html +2 -2
  95. package/docs/interfaces/ActionNonceResponse.html +2 -2
  96. package/docs/interfaces/ActionQuery.html +2 -2
  97. package/docs/interfaces/ActionResponse.html +2 -2
  98. package/docs/interfaces/ActionsExtendedInfo.html +2 -2
  99. package/docs/interfaces/ActionsQuery.html +2 -2
  100. package/docs/interfaces/ActionsResponse.html +2 -2
  101. package/docs/interfaces/AggregateMetrics.html +2 -2
  102. package/docs/interfaces/BlockFacts.html +5 -5
  103. package/docs/interfaces/BlockQuery.html +2 -2
  104. package/docs/interfaces/BlockResponse.html +2 -2
  105. package/docs/interfaces/BlockSummary.html +2 -2
  106. package/docs/interfaces/BlockSummaryResponse.html +2 -2
  107. package/docs/interfaces/DeltaEvent.html +2 -2
  108. package/docs/interfaces/DepositSplParams.html +4 -6
  109. package/docs/interfaces/Info.html +2 -2
  110. package/docs/interfaces/Market.html +2 -2
  111. package/docs/interfaces/MarketStats.html +2 -2
  112. package/docs/interfaces/MarketsStatsResponse.html +2 -2
  113. package/docs/interfaces/NordConfig.html +19 -9
  114. package/docs/interfaces/NordWebSocketClientEvents.html +2 -2
  115. package/docs/interfaces/NordWebSocketEvents.html +3 -3
  116. package/docs/interfaces/Order.html +2 -2
  117. package/docs/interfaces/OrderInfo.html +2 -2
  118. package/docs/interfaces/OrderbookEntry.html +2 -2
  119. package/docs/interfaces/OrderbookQuery.html +2 -2
  120. package/docs/interfaces/OrderbookResponse.html +2 -2
  121. package/docs/interfaces/OrderbookSubscription.html +5 -5
  122. package/docs/interfaces/PerpMarketStats.html +2 -2
  123. package/docs/interfaces/RollmanActionExtendedInfo.html +2 -2
  124. package/docs/interfaces/RollmanActionInfo.html +2 -2
  125. package/docs/interfaces/RollmanActionResponse.html +2 -2
  126. package/docs/interfaces/RollmanActionsResponse.html +2 -2
  127. package/docs/interfaces/RollmanBlockResponse.html +2 -2
  128. package/docs/interfaces/SPLTokenInfo.html +5 -5
  129. package/docs/interfaces/SolanaBridgeConfig.html +8 -6
  130. package/docs/interfaces/StateFacts.html +5 -5
  131. package/docs/interfaces/SubscriberConfig.html +2 -2
  132. package/docs/interfaces/TimestampResponse.html +2 -2
  133. package/docs/interfaces/Token.html +2 -2
  134. package/docs/interfaces/TokenInfo.html +3 -2
  135. package/docs/interfaces/Trade.html +2 -2
  136. package/docs/interfaces/TradeSubscription.html +5 -5
  137. package/docs/interfaces/Trades.html +2 -2
  138. package/docs/interfaces/TradesQuery.html +2 -2
  139. package/docs/interfaces/TradesResponse.html +2 -2
  140. package/docs/interfaces/TransferParams.html +4 -4
  141. package/docs/interfaces/UserAccountIdsQuery.html +2 -2
  142. package/docs/interfaces/UserAccountIdsResponse.html +2 -2
  143. package/docs/interfaces/WebSocketAccountUpdate.html +6 -0
  144. package/docs/interfaces/WebSocketDeltaUpdate.html +3 -3
  145. package/docs/interfaces/WebSocketSubscription.html +3 -3
  146. package/docs/interfaces/WebSocketTradeUpdate.html +3 -3
  147. package/docs/interfaces/WithdrawalClaim.html +7 -7
  148. package/docs/interfaces/WithdrawalParams.html +4 -4
  149. package/docs/modules.html +1 -1
  150. package/docs/types/BigIntValue.html +1 -1
  151. package/docs/types/SubscriptionPattern.html +4 -0
  152. package/docs/types/SubscriptionType.html +2 -0
  153. package/docs/types/WebSocketMessage.html +1 -1
  154. package/docs/variables/DEBUG_KEYS.html +1 -1
  155. package/docs/variables/DEFAULT_FUNDING_AMOUNTS.html +1 -1
  156. package/docs/variables/DEV_TOKEN_INFOS.html +1 -1
  157. package/docs/variables/DEV_URL.html +1 -1
  158. package/docs/variables/MAX_BUFFER_LEN.html +1 -1
  159. package/docs/variables/SESSION_TTL.html +1 -1
  160. package/docs/variables/WEBSERVER_DEV_URL.html +1 -1
  161. package/docs/variables/ZERO_DECIMAL.html +1 -1
  162. package/docs/variables/_private.html +1 -1
  163. package/idl-generate.sh +4 -0
  164. package/package.json +6 -3
  165. package/src/bridge/client.ts +54 -43
  166. package/src/bridge/index.ts +1 -2
  167. package/src/bridge/types.ts +5 -3
  168. package/src/gen/common.ts +1 -1
  169. package/src/gen/nord.ts +567 -75
  170. package/src/idl/bridge.json +1493 -0
  171. package/src/idl/index.ts +2 -0
  172. package/src/nord/api/core.ts +1 -3
  173. package/src/nord/api/metrics.ts +2 -0
  174. package/src/nord/client/Nord.ts +49 -13
  175. package/src/nord/client/NordUser.ts +50 -58
  176. package/src/types.ts +2 -2
  177. package/src/websocket/NordWebSocketClient.ts +0 -2
  178. package/tsconfig.json +1 -1
  179. package/dist/idl/bridge.d.ts +0 -2
  180. package/dist/idl/bridge.js +0 -930
  181. package/docs/functions/blockQueryRollman.html +0 -6
  182. package/docs/functions/blockSummaryQueryRollman.html +0 -6
  183. package/docs/functions/queryBlock.html +0 -6
  184. package/docs/functions/queryRecentBlocks.html +0 -6
  185. package/docs/interfaces/WebSocketUserUpdate.html +0 -6
  186. package/src/idl/bridge.ts +0 -929
@@ -0,0 +1,2 @@
1
+ import data from "./bridge.json";
2
+ export const BRIDGE_IDL = data;
@@ -65,9 +65,7 @@ export async function getAccount(
65
65
  accountId: number,
66
66
  ): Promise<Account> {
67
67
  try {
68
- const response = await checkedFetch(
69
- `${webServerUrl}/account?account_id=${accountId}`,
70
- );
68
+ const response = await checkedFetch(`${webServerUrl}/account/${accountId}`);
71
69
  return await response.json();
72
70
  } catch (error) {
73
71
  throw new NordError(`Failed to get account ${accountId}`, { cause: error });
@@ -99,6 +99,7 @@ function calculateTps(text: string): number {
99
99
  */
100
100
  function calculatePeakTps(text: string): number {
101
101
  // For peak TPS, we'll use a simple heuristic: 2x the current TPS estimate
102
+ // TODO: fix this
102
103
  return calculateTps(text) * 2;
103
104
  }
104
105
 
@@ -109,6 +110,7 @@ function calculatePeakTps(text: string): number {
109
110
  * @returns Average latency in seconds
110
111
  */
111
112
  function extractLatency(text: string): number {
113
+ // TODO: fix - using average for latency is kinda wack. ok to merge for now but should change.
112
114
  const latencySum = extractSummaryValue(text, "nord_requests_ok_latency_sum");
113
115
  const latencyCount = extractSummaryValue(
114
116
  text,
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from "events";
2
+ import { Connection, PublicKey } from "@solana/web3.js";
2
3
  import {
3
4
  Account,
4
5
  ActionQuery,
@@ -55,8 +56,11 @@ export class Nord {
55
56
  /** Base URL for the Nord web server */
56
57
  public readonly webServerUrl: string;
57
58
 
58
- /** Solana program ID */
59
- public readonly solanaProgramId: string;
59
+ /** Bridge verification key */
60
+ public readonly bridgeVk: string;
61
+
62
+ /** Optional Solana program ID (will be derived from bridgeVk) */
63
+ private _solanaProgramId!: string;
60
64
 
61
65
  /** Solana RPC URL */
62
66
  public readonly solanaUrl: string;
@@ -75,26 +79,26 @@ export class Nord {
75
79
  *
76
80
  * @param config - Configuration options for the Nord client
77
81
  * @param config.webServerUrl - Base URL for the Nord web server
78
- * @param config.solanaProgramId - Solana program ID
82
+ * @param config.bridgeVk - Bridge verification key
79
83
  * @param config.solanaUrl - Solana cluster URL
80
84
  * @throws {Error} If required configuration is missing
81
85
  */
82
- constructor({ webServerUrl, solanaProgramId, solanaUrl }: NordConfig) {
83
- if (!webServerUrl) {
86
+ constructor(config: NordConfig) {
87
+ if (!config.webServerUrl) {
84
88
  throw new NordError("webServerUrl is required");
85
89
  }
86
90
 
87
- if (!solanaProgramId) {
88
- throw new NordError("solanaProgramId is required");
91
+ if (!config.bridgeVk) {
92
+ throw new NordError("bridgeVk is required");
89
93
  }
90
94
 
91
- if (!solanaUrl) {
95
+ if (!config.solanaUrl) {
92
96
  throw new NordError("solanaUrl is required");
93
97
  }
94
98
 
95
- this.webServerUrl = webServerUrl;
96
- this.solanaProgramId = solanaProgramId;
97
- this.solanaUrl = solanaUrl;
99
+ this.webServerUrl = config.webServerUrl;
100
+ this.bridgeVk = config.bridgeVk;
101
+ this.solanaUrl = config.solanaUrl;
98
102
  }
99
103
 
100
104
  /**
@@ -204,17 +208,49 @@ export class Nord {
204
208
  *
205
209
  * @param nordConfig - Configuration options for the Nord client
206
210
  * @param nordConfig.webServerUrl - Base URL for the Nord web server
207
- * @param nordConfig.solanaProgramId - Solana program ID
211
+ * @param nordConfig.bridgeVk - Bridge verification key
208
212
  * @param nordConfig.solanaUrl - Solana cluster URL
209
213
  * @returns Initialized Nord client
210
214
  * @throws {NordError} If initialization fails
211
215
  */
212
216
  public static async initNord(nordConfig: NordConfig): Promise<Nord> {
213
217
  const nord = new Nord(nordConfig);
214
- await nord.fetchNordInfo();
218
+ await nord.init();
215
219
  return nord;
216
220
  }
217
221
 
222
+ /**
223
+ * Initialize the Nord client by deriving program ID and fetching info
224
+ * @private
225
+ */
226
+ private async init(): Promise<void> {
227
+ const connection = new Connection(this.solanaUrl);
228
+ const bridgeVkPubkey = new PublicKey(this.bridgeVk);
229
+
230
+ const bridgeAccount = await connection.getAccountInfo(bridgeVkPubkey);
231
+ if (!bridgeAccount) {
232
+ throw new NordError(`Bridge account ${this.bridgeVk} not found`);
233
+ }
234
+
235
+ this._solanaProgramId = bridgeAccount.owner.toString();
236
+ await this.fetchNordInfo();
237
+ }
238
+
239
+ /**
240
+ * Get the Solana program ID derived from bridge VK
241
+ *
242
+ * @returns Program ID string
243
+ * @throws {NordError} If program ID hasn't been initialized
244
+ */
245
+ public getSolanaProgramId(): string {
246
+ if (!this._solanaProgramId) {
247
+ throw new NordError(
248
+ "Solana program ID not initialized. Have you called Nord.initNord()?",
249
+ );
250
+ }
251
+ return this._solanaProgramId;
252
+ }
253
+
218
254
  /**
219
255
  * Get market statistics
220
256
  *
@@ -6,7 +6,9 @@ import {
6
6
  } from "@solana/spl-token";
7
7
  import { Connection, Keypair, PublicKey, Transaction } from "@solana/web3.js";
8
8
  import Decimal from "decimal.js";
9
- import * as nacl from "tweetnacl";
9
+ import * as ed from "@noble/ed25519";
10
+ import { sha512 } from "@noble/hashes/sha512";
11
+ ed.etc.sha512Sync = sha512;
10
12
  import { SolanaBridgeClient } from "../../bridge/client";
11
13
  import { SPLTokenInfo } from "../../bridge/types";
12
14
  import { keypairFromPrivateKey } from "../../bridge/utils";
@@ -300,7 +302,7 @@ export class NordUser {
300
302
  if (
301
303
  !this.getSolanaPublicKey() ||
302
304
  !this.connection ||
303
- !this.nord.solanaProgramId
305
+ !this.nord.getSolanaProgramId()
304
306
  ) {
305
307
  throw new NordError(
306
308
  "Solana public key, connection, and program ID are required to initialize bridge client",
@@ -331,9 +333,10 @@ export class NordUser {
331
333
  this.bridgeClient = new SolanaBridgeClient(
332
334
  {
333
335
  rpcUrl: this.connection.rpcEndpoint,
334
- programId: this.nord.solanaProgramId,
336
+ programId: this.nord.getSolanaProgramId(),
335
337
  commitment: "confirmed",
336
338
  tokenInfos: this.splTokenInfos,
339
+ bridgeVk: this.nord.bridgeVk,
337
340
  },
338
341
  wallet,
339
342
  );
@@ -361,21 +364,28 @@ export class NordUser {
361
364
  const walletSignFn = async (
362
365
  message: Uint8Array | string,
363
366
  ): Promise<Uint8Array> => {
364
- const messageBuffer =
365
- typeof message === "string"
366
- ? Buffer.from(message)
367
- : Buffer.from(message);
367
+ function toHex(buffer: Uint8Array) {
368
+ return Array.from(buffer)
369
+ .map((byte) => byte.toString(16).padStart(2, "0"))
370
+ .join("");
371
+ }
372
+ const messageBuffer = new TextEncoder().encode(
373
+ toHex(message as Uint8Array),
374
+ );
368
375
 
369
- // Use the keypair to sign the message
370
- const signature = nacl.sign.detached(messageBuffer, keypair.secretKey);
376
+ // Use ed25519 to sign the message
377
+ const signature = ed.sign(
378
+ messageBuffer,
379
+ keypair.secretKey.slice(0, 32),
380
+ );
371
381
  return signature;
372
382
  };
373
383
 
374
384
  const sessionSignFn = async (
375
385
  message: Uint8Array,
376
386
  ): Promise<Uint8Array> => {
377
- // Use the keypair to sign the message
378
- return nacl.sign.detached(message, keypair.secretKey);
387
+ // Use ed25519 to sign the message
388
+ return ed.sign(message, keypair.secretKey.slice(0, 32));
379
389
  };
380
390
 
381
391
  // Create a transaction signing function
@@ -462,16 +472,6 @@ export class NordUser {
462
472
  const mint = new PublicKey(tokenInfo.mint);
463
473
  // Get the user's token account
464
474
  const fromAccount = await this.getAssociatedTokenAccount(mint);
465
-
466
- // Get the bridge's token account
467
- const [authority] = await this.bridgeClient.findAuthorityPda();
468
- const toAccount = await getAssociatedTokenAddress(
469
- mint,
470
- authority,
471
- true,
472
- TOKEN_2022_PROGRAM_ID,
473
- );
474
-
475
475
  // Convert amount to BN with proper decimals
476
476
  const amountBN = utilsToBN(amount, tokenInfo.precision);
477
477
 
@@ -480,7 +480,6 @@ export class NordUser {
480
480
  amount: amountBN,
481
481
  mint,
482
482
  fromAccount,
483
- toAccount,
484
483
  });
485
484
  } catch (error) {
486
485
  throw new NordError(
@@ -588,23 +587,23 @@ export class NordUser {
588
587
  * @throws {NordError} If the operation fails
589
588
  */
590
589
  async fetchInfo(): Promise<void> {
591
- interface FetchOrder {
590
+ type OpenOrder = {
592
591
  orderId: number;
593
- size: number;
594
- price: number;
595
592
  marketId: number;
596
593
  side: "ask" | "bid";
597
- originalOrderSize?: number;
594
+ size: number;
595
+ price: number;
596
+ originalOrderSize: number;
598
597
  clientOrderId?: number | null;
599
- }
598
+ };
600
599
 
601
- interface Balance {
600
+ type Balance = {
602
601
  tokenId: number;
603
602
  token: string;
604
603
  amount: number;
605
- }
604
+ };
606
605
 
607
- interface Position {
606
+ type Position = {
608
607
  marketId: number;
609
608
  openOrders: number;
610
609
  perp?: {
@@ -616,9 +615,9 @@ export class NordUser {
616
615
  isLong: boolean;
617
616
  };
618
617
  actionId: number;
619
- }
618
+ };
620
619
 
621
- interface Margins {
620
+ type Margins = {
622
621
  omf: number;
623
622
  mf: number;
624
623
  imf: number;
@@ -627,32 +626,31 @@ export class NordUser {
627
626
  pon: number;
628
627
  pn: number;
629
628
  bankruptcy: boolean;
630
- }
629
+ };
631
630
 
632
- interface Account {
631
+ type Account = {
633
632
  updateId: number;
634
- orders: FetchOrder[];
633
+ orders: OpenOrder[];
635
634
  positions: Position[];
636
635
  balances: Balance[];
637
636
  margins: Margins;
638
- actionNonce?: number | null;
639
- accountId: number;
640
- }
637
+ };
641
638
 
642
639
  if (this.accountIds !== undefined) {
643
- const accountsData = await Promise.all(
644
- this.accountIds.map(async (accountId) => {
645
- const response = await checkedFetch(
646
- `${this.nord.webServerUrl}/account?account_id=${accountId}`,
647
- );
648
- const accountData = (await response.json()) as Account;
649
- // Ensure we have the correct accountId
650
- return {
651
- ...accountData,
652
- accountId,
653
- };
654
- }),
655
- );
640
+ const accountsData: (Account & { accountId: number })[] =
641
+ await Promise.all(
642
+ this.accountIds.map(async (accountId) => {
643
+ const response = await checkedFetch(
644
+ `${this.nord.webServerUrl}/account/${accountId}`,
645
+ );
646
+ const accountData = (await response.json()) as Account;
647
+ // Ensure we have the correct accountId
648
+ return {
649
+ ...accountData,
650
+ accountId,
651
+ };
652
+ }),
653
+ );
656
654
 
657
655
  for (const accountData of accountsData) {
658
656
  // Process balances
@@ -667,13 +665,7 @@ export class NordUser {
667
665
 
668
666
  // Process orders
669
667
  this.orders[accountData.accountId] = accountData.orders.map(
670
- (order: {
671
- orderId: number;
672
- side: string;
673
- size: number;
674
- price: number;
675
- marketId: number;
676
- }) => {
668
+ (order: OpenOrder) => {
677
669
  return {
678
670
  orderId: order.orderId,
679
671
  isLong: order.side === "bid",
package/src/types.ts CHANGED
@@ -35,8 +35,8 @@ export type SubscriptionPattern = `${SubscriptionType}@${string}` | string;
35
35
  export interface NordConfig {
36
36
  /** Base URL for the Nord web server */
37
37
  webServerUrl: string;
38
- /** Solana program ID */
39
- solanaProgramId: string;
38
+ /** Bridge verification key */
39
+ bridgeVk: string;
40
40
  /** Solana cluster URL */
41
41
  solanaUrl: string;
42
42
  /** Whether to initialize WebSockets on creation, defaults to true */
@@ -145,9 +145,7 @@ export class NordWebSocketClient
145
145
  private getWebSocketClass(): any {
146
146
  if (this.isBrowser) {
147
147
  // In browser environments
148
- // @ts-expect-error - Check for WebSocket in globalThis
149
148
  if (typeof globalThis !== "undefined" && globalThis.WebSocket) {
150
- // @ts-expect-error - Return WebSocket from globalThis
151
149
  return globalThis.WebSocket;
152
150
  }
153
151
  throw new Error("WebSocket is not available in this environment");
package/tsconfig.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "compilerOptions": {
3
3
  "declaration": true,
4
4
  "target": "es2020",
5
- "lib": ["es2020"],
5
+ "lib": ["es2020", "dom"],
6
6
  "module": "commonjs",
7
7
  "rootDir": "./src",
8
8
  "moduleResolution": "Node",
@@ -1,2 +0,0 @@
1
- import { Idl } from "@coral-xyz/anchor";
2
- export declare const BRIDGE_IDL: Idl;