@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
@@ -25,8 +25,10 @@ export interface WebSocketSubscriptionOptions {
25
25
  export declare class Nord {
26
26
  /** Base URL for the Nord web server */
27
27
  readonly webServerUrl: string;
28
- /** Solana program ID */
29
- readonly solanaProgramId: string;
28
+ /** Bridge verification key */
29
+ readonly bridgeVk: string;
30
+ /** Optional Solana program ID (will be derived from bridgeVk) */
31
+ private _solanaProgramId;
30
32
  /** Solana RPC URL */
31
33
  readonly solanaUrl: string;
32
34
  /** Available markets */
@@ -40,11 +42,11 @@ export declare class Nord {
40
42
  *
41
43
  * @param config - Configuration options for the Nord client
42
44
  * @param config.webServerUrl - Base URL for the Nord web server
43
- * @param config.solanaProgramId - Solana program ID
45
+ * @param config.bridgeVk - Bridge verification key
44
46
  * @param config.solanaUrl - Solana cluster URL
45
47
  * @throws {Error} If required configuration is missing
46
48
  */
47
- constructor({ webServerUrl, solanaProgramId, solanaUrl, }: NordConfig);
49
+ constructor(config: NordConfig);
48
50
  /**
49
51
  * Create a WebSocket client with specific subscriptions
50
52
  *
@@ -92,12 +94,24 @@ export declare class Nord {
92
94
  *
93
95
  * @param nordConfig - Configuration options for the Nord client
94
96
  * @param nordConfig.webServerUrl - Base URL for the Nord web server
95
- * @param nordConfig.solanaProgramId - Solana program ID
97
+ * @param nordConfig.bridgeVk - Bridge verification key
96
98
  * @param nordConfig.solanaUrl - Solana cluster URL
97
99
  * @returns Initialized Nord client
98
100
  * @throws {NordError} If initialization fails
99
101
  */
100
102
  static initNord(nordConfig: NordConfig): Promise<Nord>;
103
+ /**
104
+ * Initialize the Nord client by deriving program ID and fetching info
105
+ * @private
106
+ */
107
+ private init;
108
+ /**
109
+ * Get the Solana program ID derived from bridge VK
110
+ *
111
+ * @returns Program ID string
112
+ * @throws {NordError} If program ID hasn't been initialized
113
+ */
114
+ getSolanaProgramId(): string;
101
115
  /**
102
116
  * Get market statistics
103
117
  *
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.Nord = void 0;
37
37
  const events_1 = require("events");
38
+ const web3_js_1 = require("@solana/web3.js");
38
39
  const types_1 = require("../../types");
39
40
  const core = __importStar(require("../api/core"));
40
41
  const market = __importStar(require("../api/market"));
@@ -50,29 +51,29 @@ class Nord {
50
51
  *
51
52
  * @param config - Configuration options for the Nord client
52
53
  * @param config.webServerUrl - Base URL for the Nord web server
53
- * @param config.solanaProgramId - Solana program ID
54
+ * @param config.bridgeVk - Bridge verification key
54
55
  * @param config.solanaUrl - Solana cluster URL
55
56
  * @throws {Error} If required configuration is missing
56
57
  */
57
- constructor({ webServerUrl, solanaProgramId, solanaUrl, }) {
58
+ constructor(config) {
58
59
  /** Available markets */
59
60
  this.markets = [];
60
61
  /** Available tokens */
61
62
  this.tokens = [];
62
63
  /** Map of symbol to market_id */
63
64
  this.symbolToMarketId = new Map();
64
- if (!webServerUrl) {
65
+ if (!config.webServerUrl) {
65
66
  throw new NordError_1.NordError("webServerUrl is required");
66
67
  }
67
- if (!solanaProgramId) {
68
- throw new NordError_1.NordError("solanaProgramId is required");
68
+ if (!config.bridgeVk) {
69
+ throw new NordError_1.NordError("bridgeVk is required");
69
70
  }
70
- if (!solanaUrl) {
71
+ if (!config.solanaUrl) {
71
72
  throw new NordError_1.NordError("solanaUrl is required");
72
73
  }
73
- this.webServerUrl = webServerUrl;
74
- this.solanaProgramId = solanaProgramId;
75
- this.solanaUrl = solanaUrl;
74
+ this.webServerUrl = config.webServerUrl;
75
+ this.bridgeVk = config.bridgeVk;
76
+ this.solanaUrl = config.solanaUrl;
76
77
  }
77
78
  /**
78
79
  * Create a WebSocket client with specific subscriptions
@@ -99,19 +100,19 @@ class Nord {
99
100
  const subscriptions = [];
100
101
  // Add trade subscriptions
101
102
  if (options.trades && options.trades.length > 0) {
102
- options.trades.forEach(symbol => {
103
+ options.trades.forEach((symbol) => {
103
104
  subscriptions.push(`trades@${symbol}`);
104
105
  });
105
106
  }
106
107
  // Add delta subscriptions
107
108
  if (options.deltas && options.deltas.length > 0) {
108
- options.deltas.forEach(symbol => {
109
+ options.deltas.forEach((symbol) => {
109
110
  subscriptions.push(`deltas@${symbol}`);
110
111
  });
111
112
  }
112
113
  // Add account subscriptions
113
114
  if (options.accounts && options.accounts.length > 0) {
114
- options.accounts.forEach(accountId => {
115
+ options.accounts.forEach((accountId) => {
115
116
  if (isNaN(accountId) || accountId <= 0) {
116
117
  throw new NordError_1.NordError(`Invalid account ID: ${accountId}. Must be a positive number.`);
117
118
  }
@@ -120,7 +121,7 @@ class Nord {
120
121
  }
121
122
  // Validate that at least one subscription was provided
122
123
  if (subscriptions.length === 0) {
123
- throw new NordError_1.NordError('At least one subscription must be provided');
124
+ throw new NordError_1.NordError("At least one subscription must be provided");
124
125
  }
125
126
  // Create and return a new WebSocket client
126
127
  return core.initWebSocketClient(this.webServerUrl, subscriptions);
@@ -168,16 +169,42 @@ class Nord {
168
169
  *
169
170
  * @param nordConfig - Configuration options for the Nord client
170
171
  * @param nordConfig.webServerUrl - Base URL for the Nord web server
171
- * @param nordConfig.solanaProgramId - Solana program ID
172
+ * @param nordConfig.bridgeVk - Bridge verification key
172
173
  * @param nordConfig.solanaUrl - Solana cluster URL
173
174
  * @returns Initialized Nord client
174
175
  * @throws {NordError} If initialization fails
175
176
  */
176
177
  static async initNord(nordConfig) {
177
178
  const nord = new Nord(nordConfig);
178
- await nord.fetchNordInfo();
179
+ await nord.init();
179
180
  return nord;
180
181
  }
182
+ /**
183
+ * Initialize the Nord client by deriving program ID and fetching info
184
+ * @private
185
+ */
186
+ async init() {
187
+ const connection = new web3_js_1.Connection(this.solanaUrl);
188
+ const bridgeVkPubkey = new web3_js_1.PublicKey(this.bridgeVk);
189
+ const bridgeAccount = await connection.getAccountInfo(bridgeVkPubkey);
190
+ if (!bridgeAccount) {
191
+ throw new NordError_1.NordError(`Bridge account ${this.bridgeVk} not found`);
192
+ }
193
+ this._solanaProgramId = bridgeAccount.owner.toString();
194
+ await this.fetchNordInfo();
195
+ }
196
+ /**
197
+ * Get the Solana program ID derived from bridge VK
198
+ *
199
+ * @returns Program ID string
200
+ * @throws {NordError} If program ID hasn't been initialized
201
+ */
202
+ getSolanaProgramId() {
203
+ if (!this._solanaProgramId) {
204
+ throw new NordError_1.NordError("Solana program ID not initialized. Have you called Nord.initNord()?");
205
+ }
206
+ return this._solanaProgramId;
207
+ }
181
208
  /**
182
209
  * Get market statistics
183
210
  *
@@ -305,12 +332,12 @@ class Nord {
305
332
  * @throws {NordError} If symbol is invalid
306
333
  */
307
334
  subscribeOrderbook(symbol) {
308
- if (!symbol || typeof symbol !== 'string') {
309
- throw new NordError_1.NordError('Invalid market symbol');
335
+ if (!symbol || typeof symbol !== "string") {
336
+ throw new NordError_1.NordError("Invalid market symbol");
310
337
  }
311
338
  const subscription = new events_1.EventEmitter();
312
339
  const wsClient = this.createWebSocketClient({
313
- deltas: [symbol]
340
+ deltas: [symbol],
314
341
  });
315
342
  const handleDelta = (update) => {
316
343
  if (update.symbol !== symbol) {
@@ -334,12 +361,12 @@ class Nord {
334
361
  * @throws {NordError} If symbol is invalid
335
362
  */
336
363
  subscribeTrades(symbol) {
337
- if (!symbol || typeof symbol !== 'string') {
338
- throw new NordError_1.NordError('Invalid market symbol');
364
+ if (!symbol || typeof symbol !== "string") {
365
+ throw new NordError_1.NordError("Invalid market symbol");
339
366
  }
340
367
  const subscription = new events_1.EventEmitter();
341
368
  const wsClient = this.createWebSocketClient({
342
- trades: [symbol]
369
+ trades: [symbol],
343
370
  });
344
371
  const handleTrade = (update) => {
345
372
  if (update.symbol !== symbol) {
@@ -364,11 +391,11 @@ class Nord {
364
391
  */
365
392
  subscribeAccount(accountId) {
366
393
  if (isNaN(accountId) || accountId <= 0) {
367
- throw new NordError_1.NordError('Invalid account ID');
394
+ throw new NordError_1.NordError("Invalid account ID");
368
395
  }
369
396
  const subscription = new events_1.EventEmitter();
370
397
  const wsClient = this.createWebSocketClient({
371
- accounts: [accountId]
398
+ accounts: [accountId],
372
399
  });
373
400
  const handleAccountUpdate = (update) => {
374
401
  if (update.account_id !== accountId) {
@@ -36,7 +36,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.NordUser = void 0;
37
37
  const spl_token_1 = require("@solana/spl-token");
38
38
  const web3_js_1 = require("@solana/web3.js");
39
- const nacl = __importStar(require("tweetnacl"));
39
+ const ed = __importStar(require("@noble/ed25519"));
40
+ const sha512_1 = require("@noble/hashes/sha512");
41
+ ed.etc.sha512Sync = sha512_1.sha512;
40
42
  const client_1 = require("../../bridge/client");
41
43
  const utils_1 = require("../../bridge/utils");
42
44
  const utils_2 = require("../../utils");
@@ -153,7 +155,7 @@ class NordUser {
153
155
  initBridgeClient() {
154
156
  if (!this.getSolanaPublicKey() ||
155
157
  !this.connection ||
156
- !this.nord.solanaProgramId) {
158
+ !this.nord.getSolanaProgramId()) {
157
159
  throw new NordError_1.NordError("Solana public key, connection, and program ID are required to initialize bridge client");
158
160
  }
159
161
  // Create an Anchor wallet that uses walletSignFn for signing
@@ -176,9 +178,10 @@ class NordUser {
176
178
  // Initialize the bridge client
177
179
  this.bridgeClient = new client_1.SolanaBridgeClient({
178
180
  rpcUrl: this.connection.rpcEndpoint,
179
- programId: this.nord.solanaProgramId,
181
+ programId: this.nord.getSolanaProgramId(),
180
182
  commitment: "confirmed",
181
183
  tokenInfos: this.splTokenInfos,
184
+ bridgeVk: this.nord.bridgeVk,
182
185
  }, wallet);
183
186
  }
184
187
  /**
@@ -196,16 +199,19 @@ class NordUser {
196
199
  const publicKey = keypair.publicKey;
197
200
  // Create a signing function that uses the keypair but doesn't expose it
198
201
  const walletSignFn = async (message) => {
199
- const messageBuffer = typeof message === "string"
200
- ? Buffer.from(message)
201
- : Buffer.from(message);
202
- // Use the keypair to sign the message
203
- const signature = nacl.sign.detached(messageBuffer, keypair.secretKey);
202
+ function toHex(buffer) {
203
+ return Array.from(buffer)
204
+ .map((byte) => byte.toString(16).padStart(2, "0"))
205
+ .join("");
206
+ }
207
+ const messageBuffer = new TextEncoder().encode(toHex(message));
208
+ // Use ed25519 to sign the message
209
+ const signature = ed.sign(messageBuffer, keypair.secretKey.slice(0, 32));
204
210
  return signature;
205
211
  };
206
212
  const sessionSignFn = async (message) => {
207
- // Use the keypair to sign the message
208
- return nacl.sign.detached(message, keypair.secretKey);
213
+ // Use ed25519 to sign the message
214
+ return ed.sign(message, keypair.secretKey.slice(0, 32));
209
215
  };
210
216
  // Create a transaction signing function
211
217
  const transactionSignFn = async (transaction) => {
@@ -276,9 +282,6 @@ class NordUser {
276
282
  const mint = new web3_js_1.PublicKey(tokenInfo.mint);
277
283
  // Get the user's token account
278
284
  const fromAccount = await this.getAssociatedTokenAccount(mint);
279
- // Get the bridge's token account
280
- const [authority] = await this.bridgeClient.findAuthorityPda();
281
- const toAccount = await (0, spl_token_1.getAssociatedTokenAddress)(mint, authority, true, spl_token_1.TOKEN_2022_PROGRAM_ID);
282
285
  // Convert amount to BN with proper decimals
283
286
  const amountBN = (0, utils_2.toBN)(amount, tokenInfo.precision);
284
287
  // Deposit tokens
@@ -286,7 +289,6 @@ class NordUser {
286
289
  amount: amountBN,
287
290
  mint,
288
291
  fromAccount,
289
- toAccount,
290
292
  });
291
293
  }
292
294
  catch (error) {
@@ -372,7 +374,7 @@ class NordUser {
372
374
  async fetchInfo() {
373
375
  if (this.accountIds !== undefined) {
374
376
  const accountsData = await Promise.all(this.accountIds.map(async (accountId) => {
375
- const response = await (0, utils_2.checkedFetch)(`${this.nord.webServerUrl}/account?account_id=${accountId}`);
377
+ const response = await (0, utils_2.checkedFetch)(`${this.nord.webServerUrl}/account/${accountId}`);
376
378
  const accountData = (await response.json());
377
379
  // Ensure we have the correct accountId
378
380
  return {
package/dist/types.d.ts CHANGED
@@ -18,7 +18,7 @@ export declare enum PeakTpsPeriodUnit {
18
18
  /**
19
19
  * Nord subscription type for trades or deltas
20
20
  */
21
- export type SubscriptionType = 'trades' | 'deltas' | 'account';
21
+ export type SubscriptionType = "trades" | "deltas" | "account";
22
22
  /**
23
23
  * Pattern for a valid Nord subscription
24
24
  * Format should be: "<type>@<parameter>"
@@ -31,8 +31,8 @@ export type SubscriptionPattern = `${SubscriptionType}@${string}` | string;
31
31
  export interface NordConfig {
32
32
  /** Base URL for the Nord web server */
33
33
  webServerUrl: string;
34
- /** Solana program ID */
35
- solanaProgramId: string;
34
+ /** Bridge verification key */
35
+ bridgeVk: string;
36
36
  /** Solana cluster URL */
37
37
  solanaUrl: string;
38
38
  /** Whether to initialize WebSockets on creation, defaults to true */
@@ -98,9 +98,7 @@ class NordWebSocketClient extends events_1.EventEmitter {
98
98
  getWebSocketClass() {
99
99
  if (this.isBrowser) {
100
100
  // In browser environments
101
- // @ts-expect-error - Check for WebSocket in globalThis
102
101
  if (typeof globalThis !== "undefined" && globalThis.WebSocket) {
103
- // @ts-expect-error - Return WebSocket from globalThis
104
102
  return globalThis.WebSocket;
105
103
  }
106
104
  throw new Error("WebSocket is not available in this environment");
@@ -1 +1 @@
1
- window.hierarchyData = "eJx9kDEPgjAQhf/LzUVTUGJYjSuLg4NhqO0RGkqbtKcL6X+3lciELnfJ3Xv5Xt4M3jkK0Nx5VdYdA4+9QUna2XScgfPqkLcVE0IDrfPqho+rkyPS2Wi0BAxGbRU0vDwxeHqTZNKIEDDsN+S7gSaTPB9JklJQRfYXyyEyyEH+Iy+vNMIKLo/1F6wtoe+F3GYvvp8JVnN+DtoojzYXkyroYoxvUbxlHA=="
1
+ window.hierarchyData = "eJx9kDEPwiAQhf/LzVQFo9GuxtXFwcF0QLimpBQSOF0a/rtgY6fqcpfcvZfv5Y0QvKcI9Z2L47ZhELC1qMh4l48jcL7hZTs5INRw8UHf8HH1qkc6WYOOgEFvnIaaiwODZ7BZpqyMEeN6Qb7qaLDZ85FkKUVdFX81HRKDEuQ/8vzKI85gsdt/wcYRhlaqZfbk+5lgNpdnZ6wO6EoxuYImpfQGUItlFg=="
@@ -1 +1 @@
1
- window.navigationData = "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"
1
+ window.navigationData = "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"
@@ -1 +1 @@
1
- window.searchData = "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";
1
+ window.searchData = "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";