@n1xyz/nord-ts 0.0.16 → 0.0.17

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 (192) hide show
  1. package/dist/bridge/client.js +45 -6
  2. package/dist/gen/nord.d.ts +48 -4
  3. package/dist/gen/nord.js +633 -33
  4. package/dist/idl/bridge.d.ts +569 -0
  5. package/dist/idl/bridge.js +8 -0
  6. package/dist/idl/bridge.json +75 -62
  7. package/dist/idl/index.d.ts +71 -49
  8. package/dist/index.d.ts +1 -3
  9. package/dist/index.js +6 -13
  10. package/dist/nord/api/actions.d.ts +7 -2
  11. package/dist/nord/api/actions.js +7 -1
  12. package/dist/nord/api/core.d.ts +1 -1
  13. package/dist/nord/api/core.js +3 -3
  14. package/dist/nord/api/market.js +1 -3
  15. package/dist/nord/api/queries.js +2 -2
  16. package/dist/nord/client/Nord.d.ts +9 -14
  17. package/dist/nord/client/Nord.js +27 -38
  18. package/dist/nord/client/NordUser.d.ts +7 -23
  19. package/dist/nord/client/NordUser.js +66 -143
  20. package/dist/nord/utils/NordError.js +5 -2
  21. package/dist/types.d.ts +34 -50
  22. package/dist/utils.d.ts +2 -0
  23. package/dist/utils.js +14 -0
  24. package/package.json +18 -18
  25. package/protoc-generate.sh +0 -0
  26. package/src/idl/bridge.json +75 -62
  27. package/src/index.ts +9 -12
  28. package/src/nord/api/actions.ts +14 -3
  29. package/src/nord/api/core.ts +4 -2
  30. package/src/nord/api/market.ts +1 -4
  31. package/src/nord/api/queries.ts +2 -2
  32. package/src/nord/client/Nord.ts +45 -50
  33. package/src/nord/client/NordUser.ts +89 -169
  34. package/src/nord/utils/NordError.ts +6 -2
  35. package/src/types.ts +34 -49
  36. package/src/utils.ts +18 -0
  37. package/codebase.md +0 -18886
  38. package/docs/.nojekyll +0 -1
  39. package/docs/assets/hierarchy.js +0 -1
  40. package/docs/assets/highlight.css +0 -92
  41. package/docs/assets/icons.js +0 -18
  42. package/docs/assets/icons.svg +0 -1
  43. package/docs/assets/main.js +0 -60
  44. package/docs/assets/navigation.js +0 -1
  45. package/docs/assets/search.js +0 -1
  46. package/docs/assets/style.css +0 -1611
  47. package/docs/classes/Nord.html +0 -189
  48. package/docs/classes/NordError.html +0 -24
  49. package/docs/classes/NordUser.html +0 -115
  50. package/docs/classes/NordWebSocketClient.html +0 -330
  51. package/docs/classes/SolanaBridgeClient.html +0 -91
  52. package/docs/classes/Subscriber.html +0 -10
  53. package/docs/enums/FillMode.html +0 -5
  54. package/docs/enums/KeyType.html +0 -4
  55. package/docs/enums/MetricPeriod.html +0 -9
  56. package/docs/enums/PdaSeedType.html +0 -11
  57. package/docs/enums/PeakTpsPeriodUnit.html +0 -15
  58. package/docs/enums/Side.html +0 -3
  59. package/docs/enums/WebSocketMessageType.html +0 -7
  60. package/docs/functions/actionQueryRollman.html +0 -6
  61. package/docs/functions/actionsQueryRollman.html +0 -6
  62. package/docs/functions/aggregateMetrics-1.html +0 -7
  63. package/docs/functions/assert.html +0 -1
  64. package/docs/functions/bigIntToProtoU128.html +0 -4
  65. package/docs/functions/bridgeToBN.html +0 -5
  66. package/docs/functions/bufferToHex.html +0 -4
  67. package/docs/functions/cancelOrder.html +0 -1
  68. package/docs/functions/checkPubKeyLength.html +0 -1
  69. package/docs/functions/checkedFetch.html +0 -6
  70. package/docs/functions/createSession.html +0 -1
  71. package/docs/functions/decodeLengthDelimited.html +0 -11
  72. package/docs/functions/encodeLengthDelimited.html +0 -6
  73. package/docs/functions/fillModeToProtoFillMode.html +0 -5
  74. package/docs/functions/findMarket.html +0 -1
  75. package/docs/functions/findPda.html +0 -6
  76. package/docs/functions/findToken.html +0 -1
  77. package/docs/functions/fromBN.html +0 -5
  78. package/docs/functions/getAccount.html +0 -6
  79. package/docs/functions/getActionNonce.html +0 -5
  80. package/docs/functions/getCurrentTps.html +0 -6
  81. package/docs/functions/getInfo.html +0 -5
  82. package/docs/functions/getLastActionId.html +0 -5
  83. package/docs/functions/getMedianLatency.html +0 -6
  84. package/docs/functions/getOrderbook.html +0 -6
  85. package/docs/functions/getPeakTps.html +0 -6
  86. package/docs/functions/getTimestamp.html +0 -5
  87. package/docs/functions/getTotalTransactions.html +0 -5
  88. package/docs/functions/getTrades.html +0 -6
  89. package/docs/functions/getUserAccountIds.html +0 -6
  90. package/docs/functions/hexToBuffer.html +0 -4
  91. package/docs/functions/initWebSocketClient.html +0 -12
  92. package/docs/functions/keypairFromPrivateKey.html +0 -4
  93. package/docs/functions/makeSigningFunction.html +0 -4
  94. package/docs/functions/makeWalletSignFn.html +0 -6
  95. package/docs/functions/marketsStats.html +0 -5
  96. package/docs/functions/optExpect.html +0 -5
  97. package/docs/functions/optMap.html +0 -5
  98. package/docs/functions/optUnwrap.html +0 -2
  99. package/docs/functions/panic.html +0 -1
  100. package/docs/functions/placeOrder.html +0 -1
  101. package/docs/functions/queryAction.html +0 -6
  102. package/docs/functions/queryPrometheus.html +0 -6
  103. package/docs/functions/queryRecentActions.html +0 -7
  104. package/docs/functions/revokeSession.html +0 -1
  105. package/docs/functions/shortenPublicKey.html +0 -5
  106. package/docs/functions/signAction.html +0 -6
  107. package/docs/functions/toBN.html +0 -5
  108. package/docs/functions/toScaledU128.html +0 -8
  109. package/docs/functions/toScaledU64.html +0 -8
  110. package/docs/functions/transfer.html +0 -1
  111. package/docs/functions/withdraw.html +0 -1
  112. package/docs/hierarchy.html +0 -1
  113. package/docs/index.html +0 -40
  114. package/docs/interfaces/Account.html +0 -8
  115. package/docs/interfaces/ActionInfo.html +0 -8
  116. package/docs/interfaces/ActionNonceResponse.html +0 -3
  117. package/docs/interfaces/ActionQuery.html +0 -4
  118. package/docs/interfaces/ActionResponse.html +0 -8
  119. package/docs/interfaces/ActionsExtendedInfo.html +0 -10
  120. package/docs/interfaces/ActionsQuery.html +0 -5
  121. package/docs/interfaces/ActionsResponse.html +0 -6
  122. package/docs/interfaces/AggregateMetrics.html +0 -12
  123. package/docs/interfaces/BlockFacts.html +0 -10
  124. package/docs/interfaces/BlockQuery.html +0 -6
  125. package/docs/interfaces/BlockResponse.html +0 -6
  126. package/docs/interfaces/BlockSummary.html +0 -8
  127. package/docs/interfaces/BlockSummaryResponse.html +0 -6
  128. package/docs/interfaces/DeltaEvent.html +0 -6
  129. package/docs/interfaces/DepositSplParams.html +0 -8
  130. package/docs/interfaces/Info.html +0 -3
  131. package/docs/interfaces/Market.html +0 -8
  132. package/docs/interfaces/MarketStats.html +0 -7
  133. package/docs/interfaces/MarketsStatsResponse.html +0 -2
  134. package/docs/interfaces/NordConfig.html +0 -24
  135. package/docs/interfaces/NordWebSocketClientEvents.html +0 -4
  136. package/docs/interfaces/NordWebSocketEvents.html +0 -8
  137. package/docs/interfaces/Order.html +0 -6
  138. package/docs/interfaces/OrderInfo.html +0 -6
  139. package/docs/interfaces/OrderbookEntry.html +0 -4
  140. package/docs/interfaces/OrderbookQuery.html +0 -6
  141. package/docs/interfaces/OrderbookResponse.html +0 -6
  142. package/docs/interfaces/OrderbookSubscription.html +0 -159
  143. package/docs/interfaces/PerpMarketStats.html +0 -5
  144. package/docs/interfaces/RollmanActionExtendedInfo.html +0 -4
  145. package/docs/interfaces/RollmanActionInfo.html +0 -4
  146. package/docs/interfaces/RollmanActionResponse.html +0 -4
  147. package/docs/interfaces/RollmanActionsResponse.html +0 -2
  148. package/docs/interfaces/RollmanBlockResponse.html +0 -3
  149. package/docs/interfaces/SPLTokenInfo.html +0 -10
  150. package/docs/interfaces/SolanaBridgeConfig.html +0 -12
  151. package/docs/interfaces/StateFacts.html +0 -10
  152. package/docs/interfaces/SubscriberConfig.html +0 -3
  153. package/docs/interfaces/TimestampResponse.html +0 -3
  154. package/docs/interfaces/Token.html +0 -5
  155. package/docs/interfaces/TokenInfo.html +0 -6
  156. package/docs/interfaces/Trade.html +0 -5
  157. package/docs/interfaces/TradeSubscription.html +0 -159
  158. package/docs/interfaces/Trades.html +0 -5
  159. package/docs/interfaces/TradesQuery.html +0 -6
  160. package/docs/interfaces/TradesResponse.html +0 -7
  161. package/docs/interfaces/TransferParams.html +0 -8
  162. package/docs/interfaces/UserAccountIdsQuery.html +0 -3
  163. package/docs/interfaces/UserAccountIdsResponse.html +0 -3
  164. package/docs/interfaces/WebSocketAccountUpdate.html +0 -6
  165. package/docs/interfaces/WebSocketDeltaUpdate.html +0 -9
  166. package/docs/interfaces/WebSocketSubscription.html +0 -4
  167. package/docs/interfaces/WebSocketTradeUpdate.html +0 -6
  168. package/docs/interfaces/WithdrawalClaim.html +0 -14
  169. package/docs/interfaces/WithdrawalParams.html +0 -8
  170. package/docs/modules.html +0 -1
  171. package/docs/types/BigIntValue.html +0 -2
  172. package/docs/types/SubscriptionPattern.html +0 -4
  173. package/docs/types/SubscriptionType.html +0 -2
  174. package/docs/types/WebSocketMessage.html +0 -1
  175. package/docs/variables/DEBUG_KEYS.html +0 -1
  176. package/docs/variables/DEFAULT_FUNDING_AMOUNTS.html +0 -1
  177. package/docs/variables/DEV_TOKEN_INFOS.html +0 -1
  178. package/docs/variables/DEV_URL.html +0 -1
  179. package/docs/variables/MAX_BUFFER_LEN.html +0 -1
  180. package/docs/variables/SESSION_TTL.html +0 -1
  181. package/docs/variables/WEBSERVER_DEV_URL.html +0 -1
  182. package/docs/variables/ZERO_DECIMAL.html +0 -1
  183. package/docs/variables/_private.html +0 -2
  184. package/idl-generate.sh +0 -4
  185. package/src/bridge/client.ts +0 -498
  186. package/src/bridge/const.ts +0 -53
  187. package/src/bridge/index.ts +0 -6
  188. package/src/bridge/types.ts +0 -129
  189. package/src/bridge/utils.ts +0 -140
  190. package/src/gen/common.ts +0 -297
  191. package/src/gen/nord.ts +0 -6716
  192. package/src/idl/index.ts +0 -2
@@ -185,7 +185,28 @@ class SolanaBridgeClient {
185
185
  }
186
186
  const tokenAuthority = (await this.findPda(types_1.PdaSeedType.TokenAuthority, this.bridge))[0];
187
187
  const crumbAuthority = (await this.findPda(types_1.PdaSeedType.CrumbAuthority, this.bridge))[0];
188
- const toAccount = await (0, spl_token_1.getAssociatedTokenAddress)(params.mint, tokenAuthority, true, spl_token_1.TOKEN_2022_PROGRAM_ID);
188
+ // Get the token program ID from the mint account
189
+ const mintAccount = await this.connection.getAccountInfo(params.mint);
190
+ if (!mintAccount) {
191
+ throw new Error("Mint account not found");
192
+ }
193
+ const tokenProgramId = mintAccount.owner;
194
+ // Validate that the mint is owned by a supported SPL token program
195
+ if (!tokenProgramId.equals(spl_token_1.TOKEN_PROGRAM_ID) &&
196
+ !tokenProgramId.equals(spl_token_1.TOKEN_2022_PROGRAM_ID)) {
197
+ throw new Error("Mint Account is not owned by a supported SPL token program");
198
+ }
199
+ // Get the token program ID from the fromAccount to ensure we're using the same program
200
+ const fromAccountInfo = await this.connection.getAccountInfo(params.fromAccount);
201
+ if (!fromAccountInfo) {
202
+ throw new Error(`From account not found for address: ${params.fromAccount.toBase58()}. ` +
203
+ "This may indicate an invalid, uninitialized, or missing token account.");
204
+ }
205
+ if (!fromAccountInfo.owner.equals(tokenProgramId)) {
206
+ throw new Error(`From account owner (${fromAccountInfo.owner.toBase58()}) does not match mint owner (${tokenProgramId.toBase58()}). ` +
207
+ "This usually means the fromAccount is not a valid token account for the given mint.");
208
+ }
209
+ const toAccount = await (0, spl_token_1.getAssociatedTokenAddress)(params.mint, tokenAuthority, true, tokenProgramId);
189
210
  // Build the transaction
190
211
  const accounts = {
191
212
  payer: this.provider.wallet.publicKey,
@@ -195,7 +216,7 @@ class SolanaBridgeClient {
195
216
  program: this.programId,
196
217
  fromAccount: params.fromAccount,
197
218
  toAccount: toAccount,
198
- tokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID,
219
+ tokenProgram: tokenProgramId,
199
220
  systemProgram: web3_js_1.SystemProgram.programId,
200
221
  crumbAuthority,
201
222
  tokenAuthority,
@@ -217,7 +238,7 @@ class SolanaBridgeClient {
217
238
  toAccount, // associated token account address
218
239
  authority, // owner of the token account
219
240
  params.mint, // token mint
220
- spl_token_1.TOKEN_2022_PROGRAM_ID);
241
+ tokenProgramId);
221
242
  // Add the instruction to the beginning of the transaction
222
243
  tx.instructions.unshift(createTokenAccountIx);
223
244
  }
@@ -235,6 +256,18 @@ class SolanaBridgeClient {
235
256
  const [stateUpdate] = await this.findBlockStoragePda(params.claim.blockId.toNumber());
236
257
  const [withdrawalNullifier] = await this.findWithdrawalNullifierPda(params.claim.blockId.toNumber(), params.claim.leafIndex.toNumber());
237
258
  const [authority] = await this.findAuthorityPda();
259
+ // Get the token program ID from the fromAccount
260
+ const fromAccountInfo = await this.connection.getAccountInfo(params.fromAccount);
261
+ if (!fromAccountInfo) {
262
+ throw new Error(`From account not found for address: ${params.fromAccount.toBase58()}. ` +
263
+ "This may indicate an invalid, uninitialized, or missing token account.");
264
+ }
265
+ const tokenProgramId = fromAccountInfo.owner;
266
+ // Validate that the account is owned by a supported SPL token program
267
+ if (!tokenProgramId.equals(spl_token_1.TOKEN_PROGRAM_ID) &&
268
+ !tokenProgramId.equals(spl_token_1.TOKEN_2022_PROGRAM_ID)) {
269
+ throw new Error("From Account is not owned by a supported SPL token program");
270
+ }
238
271
  // Build the transaction
239
272
  const tx = await this.program.methods
240
273
  .withdraw(params.claim)
@@ -245,7 +278,7 @@ class SolanaBridgeClient {
245
278
  fromAccount: params.fromAccount,
246
279
  toAccount: params.toAccount,
247
280
  authority,
248
- tokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID,
281
+ tokenProgram: tokenProgramId,
249
282
  systemProgram: web3_js_1.SystemProgram.programId,
250
283
  })
251
284
  .transaction();
@@ -379,13 +412,19 @@ class SolanaBridgeClient {
379
412
  * @returns Associated token account address
380
413
  */
381
414
  async createTokenAccountIfNeeded(mint, owner, payer) {
382
- const associatedTokenAddress = await (0, spl_token_1.getAssociatedTokenAddress)(mint, owner);
415
+ // Get the token program ID from the mint account
416
+ const mintAccount = await this.connection.getAccountInfo(mint);
417
+ if (!mintAccount) {
418
+ throw new Error("Mint account not found");
419
+ }
420
+ const tokenProgramId = mintAccount.owner;
421
+ const associatedTokenAddress = await (0, spl_token_1.getAssociatedTokenAddress)(mint, owner, false, tokenProgramId);
383
422
  try {
384
423
  await this.connection.getTokenAccountBalance(associatedTokenAddress);
385
424
  }
386
425
  catch {
387
426
  // Account doesn't exist, create it
388
- const transaction = new web3_js_1.Transaction().add((0, spl_token_1.createAssociatedTokenAccountInstruction)(payer.publicKey, associatedTokenAddress, owner, mint));
427
+ const transaction = new web3_js_1.Transaction().add((0, spl_token_1.createAssociatedTokenAccountInstruction)(payer.publicKey, associatedTokenAddress, owner, mint, tokenProgramId));
389
428
  // Sign and send the transaction using our helper method
390
429
  await this.signAndSendTransaction(transaction, [payer]);
391
430
  }
@@ -1,5 +1,4 @@
1
1
  import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
- import { Message } from "./common";
3
2
  export declare const protobufPackage = "nord";
4
3
  export declare enum Side {
5
4
  ASK = 0,
@@ -235,6 +234,29 @@ export interface Token {
235
234
  weightBps: number;
236
235
  viewSymbol: string;
237
236
  }
237
+ export interface QuoteSize {
238
+ size: bigint;
239
+ price: bigint;
240
+ }
241
+ export interface OrderLimit {
242
+ price: bigint;
243
+ size: bigint;
244
+ quoteSize: QuoteSize | undefined;
245
+ }
246
+ export interface OrderType {
247
+ side: Side;
248
+ fillMode: FillMode;
249
+ isReduceOnly: boolean;
250
+ }
251
+ export interface TradeOrPlace {
252
+ marketId: number;
253
+ orderType: OrderType | undefined;
254
+ limit: OrderLimit | undefined;
255
+ clientOrderId?: bigint | undefined;
256
+ }
257
+ export interface CancelOrder {
258
+ orderId: bigint;
259
+ }
238
260
  export interface Action {
239
261
  /**
240
262
  * Must be within 60s of the engine's current logical time, which
@@ -296,9 +318,6 @@ export interface Action {
296
318
  } | {
297
319
  $case: "transfer";
298
320
  value: Action_Transfer;
299
- } | {
300
- $case: "message";
301
- value: Message;
302
321
  } | {
303
322
  $case: "addTrigger";
304
323
  value: Action_AddTrigger;
@@ -308,6 +327,9 @@ export interface Action {
308
327
  } | {
309
328
  $case: "takePosition";
310
329
  value: Action_TakePosition;
330
+ } | {
331
+ $case: "transaction";
332
+ value: Transaction;
311
333
  } | undefined;
312
334
  }
313
335
  export interface Action_CreateSession {
@@ -562,6 +584,20 @@ export interface Action_TakePosition {
562
584
  */
563
585
  price?: bigint | undefined;
564
586
  }
587
+ export interface TransactionKind {
588
+ inner?: {
589
+ $case: "tradeOrPlace";
590
+ value: TradeOrPlace;
591
+ } | {
592
+ $case: "cancelOrder";
593
+ value: CancelOrder;
594
+ } | undefined;
595
+ }
596
+ export interface Transaction {
597
+ sessionId: bigint;
598
+ accountId?: bigint | undefined;
599
+ actions: TransactionKind[];
600
+ }
565
601
  export interface Receipt {
566
602
  /**
567
603
  * Action id which was run to produce this receipt.
@@ -693,6 +729,7 @@ export interface Receipt_WithdrawResult {
693
729
  amount: bigint;
694
730
  balance: bigint;
695
731
  accountId: number;
732
+ fee: bigint;
696
733
  userPubkey: Uint8Array;
697
734
  }
698
735
  /** pyth receipts are not user facing, so they can be terse and optional */
@@ -740,6 +777,11 @@ export interface Receipt_TriggerRemoved {
740
777
  export declare const U128: MessageFns<U128>;
741
778
  export declare const Market: MessageFns<Market>;
742
779
  export declare const Token: MessageFns<Token>;
780
+ export declare const QuoteSize: MessageFns<QuoteSize>;
781
+ export declare const OrderLimit: MessageFns<OrderLimit>;
782
+ export declare const OrderType: MessageFns<OrderType>;
783
+ export declare const TradeOrPlace: MessageFns<TradeOrPlace>;
784
+ export declare const CancelOrder: MessageFns<CancelOrder>;
743
785
  export declare const Action: MessageFns<Action>;
744
786
  export declare const Action_CreateSession: MessageFns<Action_CreateSession>;
745
787
  export declare const Action_CreateToken: MessageFns<Action_CreateToken>;
@@ -759,6 +801,8 @@ export declare const Action_Transfer: MessageFns<Action_Transfer>;
759
801
  export declare const Action_AddTrigger: MessageFns<Action_AddTrigger>;
760
802
  export declare const Action_RemoveTrigger: MessageFns<Action_RemoveTrigger>;
761
803
  export declare const Action_TakePosition: MessageFns<Action_TakePosition>;
804
+ export declare const TransactionKind: MessageFns<TransactionKind>;
805
+ export declare const Transaction: MessageFns<Transaction>;
762
806
  export declare const Receipt: MessageFns<Receipt>;
763
807
  export declare const Receipt_Posted: MessageFns<Receipt_Posted>;
764
808
  export declare const Receipt_Trade: MessageFns<Receipt_Trade>;