@chainstream-io/sdk 2.0.6 → 2.0.8

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/dist/index.cjs CHANGED
@@ -81,11 +81,13 @@ __export(index_exports, {
81
81
  WsMetricType: () => WsMetricType,
82
82
  WsRankingType: () => WsRankingType,
83
83
  WsTokenActivityType: () => WsTokenActivityType,
84
+ buildSignMessage: () => buildSignMessage,
84
85
  calculatePnl: () => calculatePnl,
85
86
  claimRedpacket: () => claimRedpacket,
86
87
  createEndpoint: () => createEndpoint,
87
88
  createRedpacket: () => createRedpacket,
88
89
  createToken: () => createToken,
90
+ createWalletAuthHeaders: () => createWalletAuthHeaders,
89
91
  deleteEndpoint: () => deleteEndpoint,
90
92
  get: () => get,
91
93
  getActivities: () => getActivities,
@@ -189,6 +191,29 @@ var import_event_source_polyfill = require("event-source-polyfill");
189
191
  // src/openapi-client/chainstreamApiClient.ts
190
192
  var import_axios = __toESM(require("axios"), 1);
191
193
  var import_axios_retry = __toESM(require("axios-retry"), 1);
194
+
195
+ // src/wallet-auth.ts
196
+ var import_crypto = require("crypto");
197
+ var SIGNATURE_PREFIX = "chainstream";
198
+ function buildSignMessage(chain, address, timestamp, nonce) {
199
+ return `${SIGNATURE_PREFIX}:${chain}:${address}:${timestamp}:${nonce}`;
200
+ }
201
+ async function createWalletAuthHeaders(signer) {
202
+ const timestamp = Math.floor(Date.now() / 1e3).toString();
203
+ const nonce = (0, import_crypto.randomBytes)(16).toString("hex");
204
+ const message = buildSignMessage(signer.chain, signer.address, timestamp, nonce);
205
+ const signature = await signer.signMessage(message);
206
+ return {
207
+ "X-Wallet-Address": signer.address,
208
+ "X-Wallet-Chain": signer.chain,
209
+ "X-Wallet-Signature": signature,
210
+ "X-Wallet-Timestamp": timestamp,
211
+ "X-Wallet-Nonce": nonce
212
+ };
213
+ }
214
+
215
+ // src/openapi-client/chainstreamApiClient.ts
216
+ var axiosRetry = typeof import_axios_retry.default === "function" ? import_axios_retry.default : import_axios_retry.default.default;
192
217
  var axiosInstance;
193
218
  var currentOptions = void 0;
194
219
  var configure = (options) => {
@@ -200,12 +225,19 @@ var configure = (options) => {
200
225
  axiosInstance = import_axios.default.create({
201
226
  baseURL
202
227
  });
203
- (0, import_axios_retry.default)(axiosInstance, {
228
+ axiosRetry(axiosInstance, {
204
229
  retryDelay: import_axios_retry.exponentialDelay
205
230
  });
206
231
  axiosInstance.interceptors.request.use(async (config) => {
207
- const token = typeof options.accessToken === "string" ? options.accessToken : await options.accessToken.getToken();
208
- config.headers.Authorization = `Bearer ${token}`;
232
+ if (options.walletSigner) {
233
+ const walletHeaders = await createWalletAuthHeaders(options.walletSigner);
234
+ Object.entries(walletHeaders).forEach(([key, value]) => {
235
+ config.headers[key] = value;
236
+ });
237
+ } else if (options.accessToken) {
238
+ const token = typeof options.accessToken === "string" ? options.accessToken : await options.accessToken.getToken();
239
+ config.headers.Authorization = `Bearer ${token}`;
240
+ }
209
241
  config.headers["Content-Type"] = "application/json";
210
242
  if (options.source) {
211
243
  config.headers["X-Source"] = options.source;
@@ -2521,7 +2553,8 @@ var ChainStreamClient = class {
2521
2553
  const streamUrl = options.streamUrl ?? "wss://realtime-dex.chainstream.io/connection/websocket";
2522
2554
  this.requestCtx = { baseUrl, streamUrl, accessToken };
2523
2555
  configure({
2524
- accessToken,
2556
+ accessToken: options.walletSigner ? void 0 : accessToken,
2557
+ walletSigner: options.walletSigner,
2525
2558
  basePath: baseUrl,
2526
2559
  debugging: options.debug
2527
2560
  });
@@ -3061,11 +3094,13 @@ var QuoteDex = {
3061
3094
  WsMetricType,
3062
3095
  WsRankingType,
3063
3096
  WsTokenActivityType,
3097
+ buildSignMessage,
3064
3098
  calculatePnl,
3065
3099
  claimRedpacket,
3066
3100
  createEndpoint,
3067
3101
  createRedpacket,
3068
3102
  createToken,
3103
+ createWalletAuthHeaders,
3069
3104
  deleteEndpoint,
3070
3105
  get,
3071
3106
  getActivities,