@n1xyz/nord-ts 0.0.1 → 0.0.5

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 (260) hide show
  1. package/README.md +148 -65
  2. package/dist/bridge/client.d.ts +150 -0
  3. package/dist/bridge/client.js +394 -0
  4. package/dist/bridge/const.d.ts +23 -0
  5. package/dist/bridge/const.js +47 -0
  6. package/dist/bridge/index.d.ts +5 -0
  7. package/dist/bridge/index.js +23 -0
  8. package/dist/bridge/types.d.ts +118 -0
  9. package/dist/bridge/types.js +16 -0
  10. package/dist/bridge/utils.d.ts +64 -0
  11. package/dist/bridge/utils.js +131 -0
  12. package/dist/const.d.ts +2 -5
  13. package/dist/const.js +2 -6
  14. package/dist/gen/common.d.ts +6 -1
  15. package/dist/gen/common.js +19 -9
  16. package/dist/gen/nord.d.ts +76 -21
  17. package/dist/gen/nord.js +987 -423
  18. package/dist/idl/bridge.d.ts +2 -0
  19. package/dist/idl/bridge.js +703 -0
  20. package/dist/index.d.ts +5 -2
  21. package/dist/index.js +18 -2
  22. package/dist/nord/{actions.d.ts → api/actions.d.ts} +6 -6
  23. package/dist/nord/{actions.js → api/actions.js} +6 -10
  24. package/dist/nord/api/core.d.ts +49 -0
  25. package/dist/nord/api/core.js +121 -0
  26. package/dist/nord/api/market.d.ts +36 -0
  27. package/dist/nord/api/market.js +98 -0
  28. package/dist/nord/api/metrics.d.ts +67 -0
  29. package/dist/nord/api/metrics.js +132 -0
  30. package/dist/nord/api/queries.d.ts +81 -0
  31. package/dist/nord/api/queries.js +187 -0
  32. package/dist/nord/client/Nord.d.ts +335 -0
  33. package/dist/nord/client/Nord.js +532 -0
  34. package/dist/nord/client/NordUser.d.ts +320 -0
  35. package/dist/nord/client/NordUser.js +697 -0
  36. package/dist/nord/index.d.ts +9 -2
  37. package/dist/nord/index.js +30 -6
  38. package/dist/nord/models/Subscriber.d.ts +37 -0
  39. package/dist/nord/models/Subscriber.js +25 -0
  40. package/dist/nord/utils/NordError.d.ts +35 -0
  41. package/dist/nord/utils/NordError.js +46 -0
  42. package/dist/types.d.ts +143 -86
  43. package/dist/types.js +12 -1
  44. package/dist/utils.d.ts +9 -0
  45. package/dist/utils.js +20 -1
  46. package/dist/websocket/NordWebSocketClient.d.ts +71 -0
  47. package/dist/websocket/NordWebSocketClient.js +343 -0
  48. package/dist/websocket/events.d.ts +19 -0
  49. package/dist/websocket/events.js +2 -0
  50. package/dist/websocket/index.d.ts +2 -0
  51. package/dist/websocket/index.js +5 -0
  52. package/docs/assets/hierarchy.js +1 -0
  53. package/docs/assets/highlight.css +16 -16
  54. package/docs/assets/icons.js +17 -14
  55. package/docs/assets/icons.svg +1 -1
  56. package/docs/assets/main.js +5 -4
  57. package/docs/assets/navigation.js +1 -1
  58. package/docs/assets/search.js +1 -1
  59. package/docs/assets/style.css +1423 -1227
  60. package/docs/classes/Nord.html +189 -43
  61. package/docs/classes/NordError.html +24 -0
  62. package/docs/classes/NordUser.html +120 -35
  63. package/docs/classes/NordWebSocketClient.html +335 -0
  64. package/docs/classes/SolanaBridgeClient.html +86 -0
  65. package/docs/classes/Subscriber.html +10 -6
  66. package/docs/enums/FillMode.html +5 -5
  67. package/docs/enums/KeyType.html +4 -4
  68. package/docs/enums/MetricPeriod.html +9 -0
  69. package/docs/enums/PdaSeedType.html +9 -0
  70. package/docs/enums/PeakTpsPeriodUnit.html +7 -7
  71. package/docs/enums/Side.html +3 -3
  72. package/docs/enums/WebSocketMessageType.html +7 -0
  73. package/docs/functions/actionQueryRollman.html +6 -0
  74. package/docs/functions/actionsQueryRollman.html +6 -0
  75. package/docs/functions/aggregateMetrics-1.html +7 -0
  76. package/docs/functions/assert.html +1 -1
  77. package/docs/functions/bigIntToProtoU128.html +3 -3
  78. package/docs/functions/blockQueryRollman.html +6 -0
  79. package/docs/functions/blockSummaryQueryRollman.html +6 -0
  80. package/docs/functions/bridgeToBN.html +5 -0
  81. package/docs/functions/bufferToHex.html +4 -0
  82. package/docs/functions/cancelOrder.html +1 -0
  83. package/docs/functions/checkPubKeyLength.html +1 -1
  84. package/docs/functions/checkedFetch.html +4 -4
  85. package/docs/functions/createSession.html +1 -0
  86. package/docs/functions/decodeLengthDelimited.html +7 -6
  87. package/docs/functions/encodeLengthDelimited.html +4 -4
  88. package/docs/functions/fillModeToProtoFillMode.html +4 -4
  89. package/docs/functions/findMarket.html +1 -1
  90. package/docs/functions/findPda.html +6 -0
  91. package/docs/functions/findToken.html +1 -1
  92. package/docs/functions/fromBN.html +5 -0
  93. package/docs/functions/getAccount.html +6 -0
  94. package/docs/functions/getActionNonce.html +5 -0
  95. package/docs/functions/getCurrentTps.html +6 -0
  96. package/docs/functions/getInfo.html +5 -0
  97. package/docs/functions/getMedianLatency.html +6 -0
  98. package/docs/functions/getOrderbook.html +6 -0
  99. package/docs/functions/getPeakTps.html +6 -0
  100. package/docs/functions/getTimestamp.html +5 -0
  101. package/docs/functions/getTotalTransactions.html +5 -0
  102. package/docs/functions/getTrades.html +6 -0
  103. package/docs/functions/getUserAccountIds.html +6 -0
  104. package/docs/functions/hexToBuffer.html +4 -0
  105. package/docs/functions/initWebSocketClient.html +12 -0
  106. package/docs/functions/keypairFromPrivateKey.html +4 -0
  107. package/docs/functions/makeSigningFunction.html +4 -0
  108. package/docs/functions/makeWalletSignFn.html +5 -5
  109. package/docs/functions/marketsStats.html +5 -0
  110. package/docs/functions/optExpect.html +4 -4
  111. package/docs/functions/optMap.html +5 -5
  112. package/docs/functions/optUnwrap.html +2 -2
  113. package/docs/functions/panic.html +1 -1
  114. package/docs/functions/placeOrder.html +1 -0
  115. package/docs/functions/queryAction.html +6 -0
  116. package/docs/functions/queryBlock.html +6 -0
  117. package/docs/functions/queryLastNBlocks.html +5 -0
  118. package/docs/functions/queryPrometheus.html +6 -0
  119. package/docs/functions/queryRecentActions.html +6 -0
  120. package/docs/functions/queryRecentBlocks.html +6 -0
  121. package/docs/functions/revokeSession.html +1 -0
  122. package/docs/functions/shortenPublicKey.html +5 -0
  123. package/docs/functions/signAction.html +2 -2
  124. package/docs/functions/toBN.html +5 -0
  125. package/docs/functions/toScaledU128.html +5 -5
  126. package/docs/functions/toScaledU64.html +5 -5
  127. package/docs/functions/transfer.html +1 -0
  128. package/docs/functions/withdraw.html +1 -0
  129. package/docs/hierarchy.html +1 -0
  130. package/docs/index.html +39 -20
  131. package/docs/interfaces/Account.html +8 -8
  132. package/docs/interfaces/ActionInfo.html +8 -8
  133. package/docs/interfaces/ActionNonceResponse.html +3 -0
  134. package/docs/interfaces/ActionQuery.html +4 -4
  135. package/docs/interfaces/ActionResponse.html +8 -8
  136. package/docs/interfaces/ActionsExtendedInfo.html +10 -10
  137. package/docs/interfaces/ActionsQuery.html +5 -5
  138. package/docs/interfaces/ActionsResponse.html +6 -6
  139. package/docs/interfaces/AggregateMetrics.html +12 -12
  140. package/docs/interfaces/BlockFacts.html +10 -0
  141. package/docs/interfaces/BlockQuery.html +6 -6
  142. package/docs/interfaces/BlockResponse.html +6 -6
  143. package/docs/interfaces/BlockSummary.html +8 -8
  144. package/docs/interfaces/BlockSummaryResponse.html +6 -6
  145. package/docs/interfaces/DeltaEvent.html +6 -6
  146. package/docs/interfaces/DepositSplParams.html +10 -0
  147. package/docs/interfaces/Info.html +3 -3
  148. package/docs/interfaces/Market.html +8 -6
  149. package/docs/interfaces/MarketStats.html +7 -7
  150. package/docs/interfaces/MarketsStatsResponse.html +2 -2
  151. package/docs/interfaces/NordConfig.html +14 -5
  152. package/docs/interfaces/NordWebSocketClientEvents.html +4 -0
  153. package/docs/interfaces/NordWebSocketEvents.html +8 -0
  154. package/docs/interfaces/Order.html +6 -6
  155. package/docs/interfaces/OrderInfo.html +6 -6
  156. package/docs/interfaces/OrderbookEntry.html +4 -0
  157. package/docs/interfaces/OrderbookQuery.html +6 -0
  158. package/docs/interfaces/OrderbookResponse.html +6 -10
  159. package/docs/interfaces/OrderbookSubscription.html +159 -0
  160. package/docs/interfaces/PerpMarketStats.html +5 -5
  161. package/docs/interfaces/RollmanActionExtendedInfo.html +4 -4
  162. package/docs/interfaces/RollmanActionInfo.html +4 -4
  163. package/docs/interfaces/RollmanActionResponse.html +4 -4
  164. package/docs/interfaces/RollmanActionsResponse.html +2 -2
  165. package/docs/interfaces/RollmanBlockResponse.html +3 -3
  166. package/docs/interfaces/SPLTokenInfo.html +10 -0
  167. package/docs/interfaces/SolanaBridgeConfig.html +10 -0
  168. package/docs/interfaces/StateFacts.html +10 -0
  169. package/docs/interfaces/SubscriberConfig.html +3 -3
  170. package/docs/interfaces/TimestampResponse.html +3 -0
  171. package/docs/interfaces/Token.html +5 -5
  172. package/docs/interfaces/TokenInfo.html +5 -0
  173. package/docs/interfaces/Trade.html +5 -5
  174. package/docs/interfaces/TradeSubscription.html +159 -0
  175. package/docs/interfaces/Trades.html +5 -5
  176. package/docs/interfaces/TradesQuery.html +6 -0
  177. package/docs/interfaces/TradesResponse.html +7 -12
  178. package/docs/interfaces/TransferParams.html +8 -0
  179. package/docs/interfaces/UserAccountIdsQuery.html +3 -0
  180. package/docs/interfaces/UserAccountIdsResponse.html +3 -0
  181. package/docs/interfaces/WebSocketDeltaUpdate.html +9 -0
  182. package/docs/interfaces/WebSocketSubscription.html +4 -0
  183. package/docs/interfaces/WebSocketTradeUpdate.html +6 -0
  184. package/docs/interfaces/WebSocketUserUpdate.html +6 -0
  185. package/docs/interfaces/WithdrawalClaim.html +14 -0
  186. package/docs/interfaces/WithdrawalParams.html +8 -0
  187. package/docs/modules.html +1 -77
  188. package/docs/types/BigIntValue.html +2 -2
  189. package/docs/types/WebSocketMessage.html +1 -0
  190. package/docs/variables/DEBUG_KEYS.html +1 -1
  191. package/docs/variables/DEFAULT_FUNDING_AMOUNTS.html +1 -1
  192. package/docs/variables/DEV_TOKEN_INFOS.html +1 -1
  193. package/docs/variables/DEV_URL.html +1 -1
  194. package/docs/variables/MAX_BUFFER_LEN.html +1 -1
  195. package/docs/variables/SESSION_TTL.html +1 -1
  196. package/docs/variables/WEBSERVER_DEV_URL.html +1 -1
  197. package/docs/variables/ZERO_DECIMAL.html +1 -1
  198. package/docs/variables/_private.html +2 -0
  199. package/eslint.config.mjs +66 -0
  200. package/package.json +20 -23
  201. package/src/bridge/client.ts +487 -0
  202. package/src/bridge/const.ts +53 -0
  203. package/src/bridge/index.ts +7 -0
  204. package/src/bridge/types.ts +127 -0
  205. package/src/bridge/utils.ts +140 -0
  206. package/src/const.ts +4 -9
  207. package/src/gen/common.ts +27 -10
  208. package/src/gen/nord.ts +1045 -487
  209. package/src/idl/bridge.ts +702 -0
  210. package/src/index.ts +21 -2
  211. package/src/nord/{actions.ts → api/actions.ts} +12 -16
  212. package/src/nord/api/core.ts +130 -0
  213. package/src/nord/api/market.ts +125 -0
  214. package/src/nord/api/metrics.ts +154 -0
  215. package/src/nord/api/queries.ts +236 -0
  216. package/src/nord/client/Nord.ts +652 -0
  217. package/src/nord/client/NordUser.ts +1101 -0
  218. package/src/nord/index.ts +16 -2
  219. package/src/nord/models/Subscriber.ts +56 -0
  220. package/src/nord/utils/NordError.ts +72 -0
  221. package/src/types.ts +163 -92
  222. package/src/utils.ts +22 -1
  223. package/src/websocket/NordWebSocketClient.ts +432 -0
  224. package/src/websocket/events.ts +31 -0
  225. package/src/websocket/index.ts +2 -0
  226. package/tsconfig.eslint.json +12 -0
  227. package/.eslintignore +0 -1
  228. package/.eslintrc.js +0 -20
  229. package/dist/abis/ERC20_ABI.d.ts +0 -39
  230. package/dist/abis/ERC20_ABI.js +0 -313
  231. package/dist/abis/NORD_GETTERS_FACET_ABI.d.ts +0 -34
  232. package/dist/abis/NORD_GETTERS_FACET_ABI.js +0 -195
  233. package/dist/abis/NORD_RAMP_FACET_ABI.d.ts +0 -35
  234. package/dist/abis/NORD_RAMP_FACET_ABI.js +0 -144
  235. package/dist/abis/index.d.ts +0 -3
  236. package/dist/abis/index.js +0 -9
  237. package/dist/nord/Nord.d.ts +0 -76
  238. package/dist/nord/Nord.js +0 -376
  239. package/dist/nord/NordImpl.d.ts +0 -7
  240. package/dist/nord/NordImpl.js +0 -6
  241. package/dist/nord/NordUser.d.ts +0 -77
  242. package/dist/nord/NordUser.js +0 -249
  243. package/docs/functions/createWebSocketSubscription.html +0 -12
  244. package/docs/interfaces/ERC20TokenInfo.html +0 -5
  245. package/docs/interfaces/OrderbookOrder.html +0 -6
  246. package/docs/interfaces/TradeInfo.html +0 -20
  247. package/docs/interfaces/TradesQueryParams.html +0 -10
  248. package/docs/variables/DEV_CONTRACT_ADDRESS.html +0 -1
  249. package/docs/variables/ERC20_ABI.html +0 -1
  250. package/docs/variables/EVM_DEV_URL.html +0 -1
  251. package/docs/variables/FAUCET_PRIVATE_ADDRESS.html +0 -1
  252. package/docs/variables/NORD_GETTERS_FACET_ABI.html +0 -1
  253. package/docs/variables/NORD_RAMP_FACET_ABI.html +0 -1
  254. package/src/abis/ERC20_ABI.ts +0 -310
  255. package/src/abis/NORD_GETTERS_FACET_ABI.ts +0 -192
  256. package/src/abis/NORD_RAMP_FACET_ABI.ts +0 -141
  257. package/src/abis/index.ts +0 -3
  258. package/src/nord/Nord.ts +0 -504
  259. package/src/nord/NordImpl.ts +0 -8
  260. package/src/nord/NordUser.ts +0 -469
package/README.md CHANGED
@@ -1,110 +1,193 @@
1
1
  # nord-ts
2
2
 
3
- This package provides an interface to interact with the Nord exchange. Functionality includes generating Action messages, signing with `Ed25119` and sending payloads. There are also various util functions and interfaces provided.
3
+ This package provides an interface to interact with the Nord exchange. The core components are `Nord` and `NordUser` classes which enable market data access, trading operations, and account management.
4
4
 
5
5
  ## Installation
6
6
 
7
- ### npm
8
-
9
7
  ```bash
8
+ # npm
10
9
  npm install nord-ts
11
- ```
12
-
13
- ### yarn
14
10
 
15
- ```bash
11
+ # yarn
16
12
  yarn add nord-ts
17
13
  ```
18
14
 
19
- ## Features
15
+ ## Key Components
16
+
17
+ ### Nord
18
+
19
+ The `Nord` class is the main entry point for interacting with the Nord exchange:
20
20
 
21
- - create a new client with a new user and a new session ( `createClient` )
22
- - generate Action messages ( `deposit` | `withdraw` | `placeOrder` | `cancelOrderById` )
23
- - Cryptographic support for `Ed25119` key types.
24
- - Message signing and transmission capabilities.
25
- - Data serialization and deserialization for protobuf.
21
+ - Provides market data access (orderbooks, trades, etc.)
22
+ - Manages WebSocket connections for real-time updates
23
+ - Offers utility methods for timestamp and nonce generation
26
24
 
27
- ## Usage
25
+ ### NordUser
28
26
 
29
- ### Basic Examples
27
+ The `NordUser` class represents a user account on the Nord exchange:
30
28
 
31
- #### Client
29
+ - Handles authentication and session management
30
+ - Provides trading functionality (place/cancel orders)
31
+ - Manages deposits and withdrawals
32
+ - Tracks user balances, positions, and orders
33
+
34
+ ## Usage Examples
35
+
36
+ ### Initializing Nord
32
37
 
33
38
  ```typescript
34
- import { Nord, types } from "nord-ts";
39
+ import { Nord } from "nord-ts";
35
40
 
36
- const c = await Nord.createClient({
37
- url: 'http://localhost:3000',
38
- privateKey: /* secp256k1 sec1 compressed secret key */,
41
+ // Create a Nord instance
42
+ const nord = new Nord({
43
+ webServerUrl: 'https://api.nord.exchange',
44
+ solanaProgramId: 'your_solana_program_id',
45
+ solanaUrl: 'https://api.mainnet-beta.solana.com',
39
46
  });
40
47
 
41
- const tokenId = 0;
42
- try {
43
- await c.deposit(tokenId, 10000000);
44
- } catch (e) {
45
- console.log(`couldn't do deposit, reason: ${e}`)
46
- }
48
+ // Initialize and fetch market data
49
+ await nord.fetchNordInfo();
50
+ ```
51
+
52
+ ### Creating a User from Private Key
53
+
54
+ ```typescript
55
+ import { Nord, NordUser } from "nord-ts";
56
+ import { Connection } from "@solana/web3.js";
57
+
58
+ // Create Nord instance
59
+ const nord = new Nord({
60
+ webServerUrl: 'https://api.nord.exchange',
61
+ solanaProgramId: 'your_solana_program_id',
62
+ solanaUrl: 'https://api.mainnet-beta.solana.com',
63
+ });
64
+
65
+ // Optional Solana connection
66
+ const connection = new Connection('https://api.mainnet-beta.solana.com');
67
+
68
+ // Create user from private key
69
+ const user = NordUser.fromPrivateKey(
70
+ nord,
71
+ 'your_private_key', // Can be string or Uint8Array
72
+ connection // Optional
73
+ );
74
+
75
+ // Fetch user account information
76
+ await user.updateAccountId();
77
+ await user.fetchInfo();
78
+ ```
79
+
80
+ ### Trading Operations
81
+
82
+ ```typescript
83
+ import { Nord, NordUser, Side, FillMode } from "nord-ts";
84
+
85
+ // Assuming nord and user are already initialized
47
86
 
87
+ // Place a limit order
48
88
  try {
49
- await c.withdraw(tokenId, 100);
50
- } catch (e) {
51
- console.log(`couldn't do withdraw, reason: ${e}`)
89
+ const orderId = await user.placeOrder({
90
+ marketId: 0, // BTC/USDC market
91
+ side: Side.Bid, // Buy
92
+ fillMode: FillMode.Limit,
93
+ isReduceOnly: false,
94
+ size: 0.1, // 0.1 BTC
95
+ price: 50000, // $50,000 per BTC
96
+ });
97
+
98
+ console.log(`Order placed with ID: ${orderId}`);
99
+
100
+ // Cancel the order
101
+ await user.cancelOrder(orderId);
102
+ } catch (error) {
103
+ console.error(`Trading error: ${error}`);
52
104
  }
105
+ ```
106
+
107
+ ### Deposits and Withdrawals
108
+
109
+ ```typescript
110
+ import { Nord, NordUser } from "nord-ts";
111
+
112
+ // Assuming nord and user are already initialized
53
113
 
54
- const marketId = 0;
55
- const size = 1;
56
- const price = 1;
57
- const isReduceOnly = false;
58
- let orderID: number = 0;
114
+ // Withdraw tokens
59
115
  try {
60
- orderId = await c.placeOrder(
61
- marketId,
62
- Side.Ask,
63
- FillMode.Limit,
64
- isReduceOnly,
65
- size,
66
- price
67
- );
68
- } catch (e) {
69
- console.log(`couldn't do placeOrder, reason: ${e}`)
116
+ const tokenId = 0; // USDC
117
+ const amount = 100; // 100 USDC
118
+
119
+ await user.withdraw(tokenId, amount);
120
+ console.log(`Successfully withdrew ${amount} of token ID ${tokenId}`);
121
+ } catch (error) {
122
+ console.error(`Withdrawal error: ${error}`);
70
123
  }
71
124
 
125
+ // For Solana SPL tokens
72
126
  try {
73
- await c.cancelOrder(
74
- marketId,
75
- orderId
76
- );
77
- } catch (e) {
78
- console.log(`couldn't do cancelOrder, reason: ${e}`)
127
+ const tokenId = 1; // SOL
128
+ const amount = 1; // 1 SOL
129
+
130
+ const txId = await user.depositSpl(amount, tokenId);
131
+ console.log(`Deposit transaction ID: ${txId}`);
132
+ } catch (error) {
133
+ console.error(`Deposit error: ${error}`);
79
134
  }
80
135
  ```
81
136
 
82
- #### Subscriber
137
+ ### Market Data
83
138
 
84
139
  ```typescript
85
- import { Subscriber } from "./nord";
140
+ import { Nord } from "nord-ts";
141
+
142
+ // Assuming nord is already initialized
86
143
 
87
- const STREAM_URL =
88
- "ws://localhost:3000/ws/trades@BTCUSDC&deltas@BTCUSDC&user@0";
144
+ // Get orderbook for a market
145
+ const orderbook = await nord.getOrderbook({ marketId: 0 });
146
+ console.log('Bids:', orderbook.bids);
147
+ console.log('Asks:', orderbook.asks);
89
148
 
90
- const s = new Subscriber({
91
- streamURL: STREAM_URL,
92
- maxBufferLen: 100,
149
+ // Get recent trades
150
+ const trades = await nord.getTrades({ marketId: 0, limit: 10 });
151
+ console.log('Recent trades:', trades.trades);
152
+
153
+ // Subscribe to real-time orderbook updates
154
+ const orderbookSub = nord.subscribeOrderbook('BTC/USDC');
155
+ orderbookSub.on('update', (data) => {
156
+ console.log('Orderbook update:', data);
93
157
  });
94
- s.subsribe();
95
158
  ```
96
159
 
97
- ## Development
160
+ ### Account Information
98
161
 
99
- ### Install dependencies
100
162
 
101
- ```bash
102
- yarn
163
+ ```typescript
164
+ import { Nord, NordUser } from "nord-ts";
165
+
166
+ // Assuming nord and user are already initialized
167
+
168
+ // Get account information
169
+ const accountInfo = await user.fetchInfo();
170
+
171
+ // Access user balances
172
+ console.log('Balances:', user.balances);
173
+
174
+ // Access user positions
175
+ console.log('Positions:', user.positions);
176
+
177
+ // Access user orders
178
+ console.log('Orders:', user.orders);
103
179
  ```
104
180
 
105
- ### Generate proto files
181
+ ## Development
106
182
 
107
- ````bash
183
+ ```bash
184
+ # Install dependencies
185
+ yarn
186
+
187
+ # Build the package
108
188
  yarn build
109
189
  ```
110
- ````
190
+
191
+ ## Documentation
192
+
193
+ For more detailed documentation, please refer to the source code and inline comments in the `Nord` and `NordUser` classes.
@@ -0,0 +1,150 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { AnchorProvider } from "@coral-xyz/anchor";
3
+ import { Connection, Keypair, PublicKey } from "@solana/web3.js";
4
+ import { BlockFacts, DepositSplParams, PdaSeedType, SolanaBridgeConfig, WithdrawalParams } from "./types";
5
+ /**
6
+ * Solana Bridge Client for interacting with the bridge program
7
+ */
8
+ export declare class SolanaBridgeClient {
9
+ /** Anchor program instance */
10
+ program: any;
11
+ /** Solana connection */
12
+ connection: Connection;
13
+ /** Program ID */
14
+ programId: PublicKey;
15
+ /** Configuration */
16
+ config: SolanaBridgeConfig;
17
+ /** Anchor provider */
18
+ provider: AnchorProvider;
19
+ /**
20
+ * Create a new Solana Bridge Client
21
+ *
22
+ * @param config Bridge configuration
23
+ * @param wallet Anchor wallet for signing transactions
24
+ */
25
+ constructor(config: SolanaBridgeConfig, wallet: anchor.Wallet);
26
+ /**
27
+ * Derive a PDA (Program Derived Address) for the given seeds
28
+ *
29
+ * @param type PDA seed type
30
+ * @param seeds Additional seeds
31
+ * @returns [PDA, bump]
32
+ */
33
+ findPda(type: PdaSeedType, ...seeds: (Buffer | PublicKey | string | number)[]): Promise<[PublicKey, number]>;
34
+ /**
35
+ * Find the contract storage PDA
36
+ *
37
+ * @returns [PDA, bump]
38
+ */
39
+ findContractStoragePda(): Promise<[PublicKey, number]>;
40
+ /**
41
+ * Find the asset whitelisted PDA for a token mint
42
+ *
43
+ * @param mint Token mint address
44
+ * @returns [PDA, bump]
45
+ */
46
+ findAssetWhitelistedPda(mint: PublicKey): Promise<[PublicKey, number]>;
47
+ /**
48
+ * Find the deposit storage PDA for a deposit index
49
+ *
50
+ * @param depositIndex Deposit index
51
+ * @returns [PDA, bump]
52
+ */
53
+ findDepositStoragePda(depositIndex: number): Promise<[PublicKey, number]>;
54
+ /**
55
+ * Find the block storage PDA for a block ID
56
+ *
57
+ * @param blockId Block ID
58
+ * @returns [PDA, bump]
59
+ */
60
+ findBlockStoragePda(blockId: number): Promise<[PublicKey, number]>;
61
+ /**
62
+ * Find the withdrawal nullifier PDA
63
+ *
64
+ * @param blockId Block ID
65
+ * @param leafIndex Leaf index
66
+ * @returns [PDA, bump]
67
+ */
68
+ findWithdrawalNullifierPda(blockId: number, leafIndex: number): Promise<[PublicKey, number]>;
69
+ /**
70
+ * Find the authority PDA
71
+ *
72
+ * @returns [PDA, bump]
73
+ */
74
+ findAuthorityPda(): Promise<[PublicKey, number]>;
75
+ /**
76
+ * Helper method to sign and send a transaction
77
+ *
78
+ * @param transaction Transaction to sign and send
79
+ * @param signers Additional signers (beyond the provider's wallet)
80
+ * @returns Transaction signature
81
+ */
82
+ private signAndSendTransaction;
83
+ /**
84
+ * Deposit SPL tokens to the bridge
85
+ *
86
+ * @param params Deposit parameters
87
+ * @param signer Signer keypair
88
+ * @returns Transaction signature
89
+ */
90
+ depositSpl(params: DepositSplParams): Promise<string>;
91
+ /**
92
+ * Withdraw tokens from the bridge
93
+ *
94
+ * @param params Withdrawal parameters
95
+ * @param signer Signer keypair
96
+ * @returns Transaction signature
97
+ */
98
+ withdraw(params: WithdrawalParams, signer: Keypair): Promise<string>;
99
+ /**
100
+ * Whitelist an asset (token) for use with the bridge
101
+ *
102
+ * @param mint Token mint address
103
+ * @param signer Operator keypair
104
+ * @returns Transaction signature
105
+ */
106
+ whitelistAsset(mint: PublicKey, signer: Keypair): Promise<string>;
107
+ /**
108
+ * Propose a new block
109
+ *
110
+ * @param facts Block facts
111
+ * @param signer Operator keypair
112
+ * @returns Transaction signature
113
+ */
114
+ proposeBlock(facts: BlockFacts, signer: Keypair): Promise<string>;
115
+ /**
116
+ * Finalize a block
117
+ *
118
+ * @param blockId Block ID
119
+ * @param stateUpdateId State update ID
120
+ * @param signer Payer keypair
121
+ * @returns Transaction signature
122
+ */
123
+ finalizeBlock(blockId: number, stateUpdateId: number, signer: Keypair): Promise<string>;
124
+ /**
125
+ * Finalize a DA fact
126
+ *
127
+ * @param fact DA fact (32-byte array)
128
+ * @param signer Payer keypair
129
+ * @returns Transaction signature
130
+ */
131
+ finalizeDaFact(fact: Buffer, signer: Keypair): Promise<string>;
132
+ /**
133
+ * Initialize the bridge contract
134
+ *
135
+ * @param operator Operator public key
136
+ * @param initialAppStateCommitment Initial app state commitment (32-byte array)
137
+ * @param signer Payer keypair
138
+ * @returns Transaction signature
139
+ */
140
+ initialize(operator: PublicKey, initialAppStateCommitment: Buffer, signer: Keypair): Promise<string>;
141
+ /**
142
+ * Create an associated token account if it doesn't exist
143
+ *
144
+ * @param mint Token mint
145
+ * @param owner Account owner
146
+ * @param payer Transaction payer
147
+ * @returns Associated token account address
148
+ */
149
+ createTokenAccountIfNeeded(mint: PublicKey, owner: PublicKey, payer: Keypair): Promise<PublicKey>;
150
+ }