@routstr/sdk 0.3.4 → 0.3.6

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.
@@ -574,19 +574,50 @@ var CashuSpender = class {
574
574
  apiKeyEntry.baseUrl
575
575
  );
576
576
  if (apiKeyEntryFull && this.balanceManager) {
577
+ try {
578
+ const balanceResult = await this.balanceManager.getTokenBalance(
579
+ apiKeyEntryFull.key,
580
+ apiKeyEntry.baseUrl
581
+ );
582
+ if (balanceResult.isInvalidApiKey) {
583
+ this.storageAdapter.removeApiKey(apiKeyEntry.baseUrl);
584
+ results.push({
585
+ baseUrl: apiKeyEntry.baseUrl,
586
+ success: true
587
+ });
588
+ continue;
589
+ }
590
+ if (balanceResult.amount >= 0) {
591
+ const balanceSat = balanceResult.unit === "msat" ? Math.floor(balanceResult.amount / 1e3) : balanceResult.amount;
592
+ this.storageAdapter.updateApiKeyBalance(
593
+ apiKeyEntry.baseUrl,
594
+ balanceSat
595
+ );
596
+ }
597
+ } catch {
598
+ }
599
+ const refreshedEntry = this.storageAdapter.getApiKey(
600
+ apiKeyEntry.baseUrl
601
+ );
602
+ if (!refreshedEntry) continue;
577
603
  const refundResult = await this.balanceManager.refundApiKey({
578
604
  mintUrl,
579
605
  baseUrl: apiKeyEntry.baseUrl,
580
- apiKey: apiKeyEntryFull.key,
606
+ apiKey: refreshedEntry.key,
581
607
  forceRefund
582
608
  });
583
609
  if (refundResult.success) {
584
610
  this.storageAdapter.removeApiKey(apiKeyEntry.baseUrl);
585
611
  } else {
586
- this.storageAdapter.updateApiKeyBalance(
587
- apiKeyEntry.baseUrl,
588
- apiKeyEntry.amount
612
+ const currentEntry = this.storageAdapter.getApiKey(
613
+ apiKeyEntry.baseUrl
589
614
  );
615
+ if (currentEntry) {
616
+ this.storageAdapter.updateApiKeyBalance(
617
+ apiKeyEntry.baseUrl,
618
+ currentEntry.balance
619
+ );
620
+ }
590
621
  }
591
622
  results.push({
592
623
  baseUrl: apiKeyEntry.baseUrl,
@@ -795,7 +826,8 @@ var BalanceManager = class _BalanceManager {
795
826
  };
796
827
  }
797
828
  if (fetchResult.error === "No balance to refund") {
798
- return { success: false, message: "No balance to refund" };
829
+ this.storageAdapter.removeApiKey(baseUrl);
830
+ return { success: true, message: "No balance to refund, key cleaned up" };
799
831
  }
800
832
  const receiveResult = await this.cashuSpender.receiveToken(
801
833
  fetchResult.token
@@ -3259,7 +3291,10 @@ var hydrateStoreFromDriver = async (store, driver) => {
3259
3291
  driver.getItem(SDK_STORAGE_KEYS.CLIENT_IDS, []),
3260
3292
  driver.getItem(SDK_STORAGE_KEYS.FAILED_PROVIDERS, []),
3261
3293
  driver.getItem(SDK_STORAGE_KEYS.LAST_FAILED, {}),
3262
- driver.getItem(SDK_STORAGE_KEYS.PROVIDERS_ON_COOLDOWN, [])
3294
+ driver.getItem(
3295
+ SDK_STORAGE_KEYS.PROVIDERS_ON_COOLDOWN,
3296
+ []
3297
+ )
3263
3298
  ]);
3264
3299
  const modelsFromAllProviders = Object.fromEntries(
3265
3300
  Object.entries(rawModels).map(([baseUrl, models]) => [
@@ -3327,7 +3362,9 @@ var hydrateStoreFromDriver = async (store, driver) => {
3327
3362
  createdAt: entry.createdAt ?? Date.now(),
3328
3363
  lastUsed: entry.lastUsed ?? null
3329
3364
  }));
3330
- const failedProviders = rawFailedProviders.map((url) => normalizeBaseUrl5(url));
3365
+ const failedProviders = rawFailedProviders.map(
3366
+ (url) => normalizeBaseUrl5(url)
3367
+ );
3331
3368
  const lastFailed = Object.fromEntries(
3332
3369
  Object.entries(rawLastFailed).map(([baseUrl, timestamp]) => [
3333
3370
  normalizeBaseUrl5(baseUrl),