@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.
- package/.prettierignore +1 -0
- package/README.md +9 -6
- package/codebase.md +18886 -0
- package/dist/bridge/client.d.ts +8 -7
- package/dist/bridge/client.js +38 -37
- package/dist/bridge/index.d.ts +1 -2
- package/dist/bridge/index.js +2 -2
- package/dist/bridge/types.d.ts +5 -3
- package/dist/bridge/types.js +3 -1
- package/dist/gen/common.js +1 -1
- package/dist/gen/nord.d.ts +74 -25
- package/dist/gen/nord.js +498 -78
- package/dist/idl/bridge.json +1493 -0
- package/dist/idl/index.d.ts +585 -0
- package/dist/idl/index.js +8 -0
- package/dist/nord/api/core.js +7 -5
- package/dist/nord/api/metrics.js +7 -4
- package/dist/nord/client/Nord.d.ts +19 -5
- package/dist/nord/client/Nord.js +50 -23
- package/dist/nord/client/NordUser.js +17 -15
- package/dist/types.d.ts +3 -3
- package/dist/websocket/NordWebSocketClient.js +0 -2
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/Nord.html +99 -100
- package/docs/classes/NordError.html +6 -6
- package/docs/classes/NordUser.html +48 -53
- package/docs/classes/NordWebSocketClient.html +6 -11
- package/docs/classes/SolanaBridgeClient.html +32 -27
- package/docs/classes/Subscriber.html +3 -3
- package/docs/enums/FillMode.html +2 -2
- package/docs/enums/KeyType.html +2 -2
- package/docs/enums/MetricPeriod.html +2 -2
- package/docs/enums/PdaSeedType.html +5 -3
- package/docs/enums/PeakTpsPeriodUnit.html +2 -2
- package/docs/enums/Side.html +2 -2
- package/docs/enums/WebSocketMessageType.html +3 -3
- package/docs/functions/actionQueryRollman.html +1 -1
- package/docs/functions/actionsQueryRollman.html +1 -1
- package/docs/functions/aggregateMetrics-1.html +1 -1
- package/docs/functions/assert.html +1 -1
- package/docs/functions/bigIntToProtoU128.html +1 -1
- package/docs/functions/bridgeToBN.html +1 -1
- package/docs/functions/bufferToHex.html +1 -1
- package/docs/functions/cancelOrder.html +1 -1
- package/docs/functions/checkPubKeyLength.html +1 -1
- package/docs/functions/checkedFetch.html +1 -1
- package/docs/functions/createSession.html +1 -1
- package/docs/functions/decodeLengthDelimited.html +1 -1
- package/docs/functions/encodeLengthDelimited.html +1 -1
- package/docs/functions/fillModeToProtoFillMode.html +1 -1
- package/docs/functions/findMarket.html +1 -1
- package/docs/functions/findPda.html +1 -1
- package/docs/functions/findToken.html +1 -1
- package/docs/functions/fromBN.html +1 -1
- package/docs/functions/getAccount.html +1 -1
- package/docs/functions/getActionNonce.html +1 -1
- package/docs/functions/getCurrentTps.html +1 -1
- package/docs/functions/getInfo.html +1 -1
- package/docs/functions/{queryLastNBlocks.html → getLastActionId.html} +3 -3
- package/docs/functions/getMedianLatency.html +1 -1
- package/docs/functions/getOrderbook.html +1 -1
- package/docs/functions/getPeakTps.html +1 -1
- package/docs/functions/getTimestamp.html +1 -1
- package/docs/functions/getTotalTransactions.html +1 -1
- package/docs/functions/getTrades.html +1 -1
- package/docs/functions/getUserAccountIds.html +1 -1
- package/docs/functions/hexToBuffer.html +1 -1
- package/docs/functions/initWebSocketClient.html +9 -9
- package/docs/functions/keypairFromPrivateKey.html +1 -1
- package/docs/functions/makeSigningFunction.html +1 -1
- package/docs/functions/makeWalletSignFn.html +1 -1
- package/docs/functions/marketsStats.html +1 -1
- package/docs/functions/optExpect.html +1 -1
- package/docs/functions/optMap.html +1 -1
- package/docs/functions/optUnwrap.html +1 -1
- package/docs/functions/panic.html +1 -1
- package/docs/functions/placeOrder.html +1 -1
- package/docs/functions/queryAction.html +1 -1
- package/docs/functions/queryPrometheus.html +1 -1
- package/docs/functions/queryRecentActions.html +4 -3
- package/docs/functions/revokeSession.html +1 -1
- package/docs/functions/shortenPublicKey.html +1 -1
- package/docs/functions/signAction.html +1 -1
- package/docs/functions/toBN.html +1 -1
- package/docs/functions/toScaledU128.html +1 -1
- package/docs/functions/toScaledU64.html +1 -1
- package/docs/functions/transfer.html +1 -1
- package/docs/functions/withdraw.html +1 -1
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +2 -2
- package/docs/interfaces/Account.html +2 -2
- package/docs/interfaces/ActionInfo.html +2 -2
- package/docs/interfaces/ActionNonceResponse.html +2 -2
- package/docs/interfaces/ActionQuery.html +2 -2
- package/docs/interfaces/ActionResponse.html +2 -2
- package/docs/interfaces/ActionsExtendedInfo.html +2 -2
- package/docs/interfaces/ActionsQuery.html +2 -2
- package/docs/interfaces/ActionsResponse.html +2 -2
- package/docs/interfaces/AggregateMetrics.html +2 -2
- package/docs/interfaces/BlockFacts.html +5 -5
- package/docs/interfaces/BlockQuery.html +2 -2
- package/docs/interfaces/BlockResponse.html +2 -2
- package/docs/interfaces/BlockSummary.html +2 -2
- package/docs/interfaces/BlockSummaryResponse.html +2 -2
- package/docs/interfaces/DeltaEvent.html +2 -2
- package/docs/interfaces/DepositSplParams.html +4 -6
- package/docs/interfaces/Info.html +2 -2
- package/docs/interfaces/Market.html +2 -2
- package/docs/interfaces/MarketStats.html +2 -2
- package/docs/interfaces/MarketsStatsResponse.html +2 -2
- package/docs/interfaces/NordConfig.html +19 -9
- package/docs/interfaces/NordWebSocketClientEvents.html +2 -2
- package/docs/interfaces/NordWebSocketEvents.html +3 -3
- package/docs/interfaces/Order.html +2 -2
- package/docs/interfaces/OrderInfo.html +2 -2
- package/docs/interfaces/OrderbookEntry.html +2 -2
- package/docs/interfaces/OrderbookQuery.html +2 -2
- package/docs/interfaces/OrderbookResponse.html +2 -2
- package/docs/interfaces/OrderbookSubscription.html +5 -5
- package/docs/interfaces/PerpMarketStats.html +2 -2
- package/docs/interfaces/RollmanActionExtendedInfo.html +2 -2
- package/docs/interfaces/RollmanActionInfo.html +2 -2
- package/docs/interfaces/RollmanActionResponse.html +2 -2
- package/docs/interfaces/RollmanActionsResponse.html +2 -2
- package/docs/interfaces/RollmanBlockResponse.html +2 -2
- package/docs/interfaces/SPLTokenInfo.html +5 -5
- package/docs/interfaces/SolanaBridgeConfig.html +8 -6
- package/docs/interfaces/StateFacts.html +5 -5
- package/docs/interfaces/SubscriberConfig.html +2 -2
- package/docs/interfaces/TimestampResponse.html +2 -2
- package/docs/interfaces/Token.html +2 -2
- package/docs/interfaces/TokenInfo.html +3 -2
- package/docs/interfaces/Trade.html +2 -2
- package/docs/interfaces/TradeSubscription.html +5 -5
- package/docs/interfaces/Trades.html +2 -2
- package/docs/interfaces/TradesQuery.html +2 -2
- package/docs/interfaces/TradesResponse.html +2 -2
- package/docs/interfaces/TransferParams.html +4 -4
- package/docs/interfaces/UserAccountIdsQuery.html +2 -2
- package/docs/interfaces/UserAccountIdsResponse.html +2 -2
- package/docs/interfaces/WebSocketAccountUpdate.html +6 -0
- package/docs/interfaces/WebSocketDeltaUpdate.html +3 -3
- package/docs/interfaces/WebSocketSubscription.html +3 -3
- package/docs/interfaces/WebSocketTradeUpdate.html +3 -3
- package/docs/interfaces/WithdrawalClaim.html +7 -7
- package/docs/interfaces/WithdrawalParams.html +4 -4
- package/docs/modules.html +1 -1
- package/docs/types/BigIntValue.html +1 -1
- package/docs/types/SubscriptionPattern.html +4 -0
- package/docs/types/SubscriptionType.html +2 -0
- package/docs/types/WebSocketMessage.html +1 -1
- package/docs/variables/DEBUG_KEYS.html +1 -1
- package/docs/variables/DEFAULT_FUNDING_AMOUNTS.html +1 -1
- package/docs/variables/DEV_TOKEN_INFOS.html +1 -1
- package/docs/variables/DEV_URL.html +1 -1
- package/docs/variables/MAX_BUFFER_LEN.html +1 -1
- package/docs/variables/SESSION_TTL.html +1 -1
- package/docs/variables/WEBSERVER_DEV_URL.html +1 -1
- package/docs/variables/ZERO_DECIMAL.html +1 -1
- package/docs/variables/_private.html +1 -1
- package/idl-generate.sh +4 -0
- package/package.json +6 -3
- package/src/bridge/client.ts +54 -43
- package/src/bridge/index.ts +1 -2
- package/src/bridge/types.ts +5 -3
- package/src/gen/common.ts +1 -1
- package/src/gen/nord.ts +567 -75
- package/src/idl/bridge.json +1493 -0
- package/src/idl/index.ts +2 -0
- package/src/nord/api/core.ts +1 -3
- package/src/nord/api/metrics.ts +2 -0
- package/src/nord/client/Nord.ts +49 -13
- package/src/nord/client/NordUser.ts +50 -58
- package/src/types.ts +2 -2
- package/src/websocket/NordWebSocketClient.ts +0 -2
- package/tsconfig.json +1 -1
- package/dist/idl/bridge.d.ts +0 -2
- package/dist/idl/bridge.js +0 -930
- package/docs/functions/blockQueryRollman.html +0 -6
- package/docs/functions/blockSummaryQueryRollman.html +0 -6
- package/docs/functions/queryBlock.html +0 -6
- package/docs/functions/queryRecentBlocks.html +0 -6
- package/docs/interfaces/WebSocketUserUpdate.html +0 -6
- 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
|
-
/**
|
|
29
|
-
readonly
|
|
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.
|
|
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(
|
|
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.
|
|
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
|
*
|
package/dist/nord/client/Nord.js
CHANGED
|
@@ -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.
|
|
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(
|
|
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 (!
|
|
68
|
-
throw new NordError_1.NordError("
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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 !==
|
|
309
|
-
throw new NordError_1.NordError(
|
|
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 !==
|
|
338
|
-
throw new NordError_1.NordError(
|
|
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(
|
|
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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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
|
|
208
|
-
return
|
|
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
|
|
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 =
|
|
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
|
-
/**
|
|
35
|
-
|
|
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");
|
package/docs/assets/hierarchy.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.hierarchyData = "
|
|
1
|
+
window.hierarchyData = "eJx9kDEPwiAQhf/LzVQFo9GuxtXFwcF0QLimpBQSOF0a/rtgY6fqcpfcvZfv5Y0QvKcI9Z2L47ZhELC1qMh4l48jcL7hZTs5INRw8UHf8HH1qkc6WYOOgEFvnIaaiwODZ7BZpqyMEeN6Qb7qaLDZ85FkKUVdFX81HRKDEuQ/8vzKI85gsdt/wcYRhlaqZfbk+5lgNpdnZ6wO6EoxuYImpfQGUItlFg=="
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "
|
|
1
|
+
window.navigationData = "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"
|
package/docs/assets/search.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "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";
|
|
1
|
+
window.searchData = "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";
|