@elisym/sdk 0.10.1 → 0.10.2

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.
@@ -52,7 +52,11 @@ declare function resolveAssetFromPaymentRequest(request: {
52
52
  * call-sites safe).
53
53
  */
54
54
  declare function parseAssetAmount(asset: Asset, human: string): bigint;
55
- /** Format raw subunits back to `"<whole>.<frac> <SYMBOL>"`. Keeps all `decimals` digits. */
55
+ /**
56
+ * Format raw subunits back to `"<value> <SYMBOL>"`. Trailing zeros and a bare
57
+ * trailing dot are stripped, so 0.01 USDC renders as `"0.01 USDC"` rather than
58
+ * `"0.010000 USDC"`.
59
+ */
56
60
  declare function formatAssetAmount(asset: Asset, raw: bigint): string;
57
61
 
58
62
  export { type Asset as A, type Chain as C, KNOWN_ASSETS as K, NATIVE_SOL as N, USDC_SOLANA_DEVNET as U, assetByKey as a, assetKey as b, resolveKnownAsset as c, formatAssetAmount as f, parseAssetAmount as p, resolveAssetFromPaymentRequest as r };
@@ -52,7 +52,11 @@ declare function resolveAssetFromPaymentRequest(request: {
52
52
  * call-sites safe).
53
53
  */
54
54
  declare function parseAssetAmount(asset: Asset, human: string): bigint;
55
- /** Format raw subunits back to `"<whole>.<frac> <SYMBOL>"`. Keeps all `decimals` digits. */
55
+ /**
56
+ * Format raw subunits back to `"<value> <SYMBOL>"`. Trailing zeros and a bare
57
+ * trailing dot are stripped, so 0.01 USDC renders as `"0.01 USDC"` rather than
58
+ * `"0.010000 USDC"`.
59
+ */
56
60
  declare function formatAssetAmount(asset: Asset, raw: bigint): string;
57
61
 
58
62
  export { type Asset as A, type Chain as C, KNOWN_ASSETS as K, NATIVE_SOL as N, USDC_SOLANA_DEVNET as U, assetByKey as a, assetKey as b, resolveKnownAsset as c, formatAssetAmount as f, parseAssetAmount as p, resolveAssetFromPaymentRequest as r };
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  var system = require('@solana-program/system');
4
4
  var token = require('@solana-program/token');
5
5
  var kit = require('@solana/kit');
6
- var Decimal2 = require('decimal.js-light');
6
+ var Decimal3 = require('decimal.js-light');
7
7
  var zod = require('zod');
8
8
  var nostrTools = require('nostr-tools');
9
9
  var nip44 = require('nostr-tools/nip44');
@@ -28,7 +28,7 @@ function _interopNamespace(e) {
28
28
  return Object.freeze(n);
29
29
  }
30
30
 
31
- var Decimal2__default = /*#__PURE__*/_interopDefault(Decimal2);
31
+ var Decimal3__default = /*#__PURE__*/_interopDefault(Decimal3);
32
32
  var nip44__namespace = /*#__PURE__*/_interopNamespace(nip44);
33
33
 
34
34
  // src/constants.ts
@@ -176,8 +176,6 @@ async function getProtocolConfig(rpc, programId, options) {
176
176
  );
177
177
  }
178
178
  }
179
-
180
- // src/payment/assets.ts
181
179
  var NATIVE_SOL = {
182
180
  chain: "solana",
183
181
  token: "sol",
@@ -258,16 +256,10 @@ function parseAssetAmount(asset, human) {
258
256
  }
259
257
  return raw;
260
258
  }
259
+ var FormatDecimal = Decimal3__default.default.clone({ toExpNeg: -100, toExpPos: 100, precision: 50 });
261
260
  function formatAssetAmount(asset, raw) {
262
- const sign = raw < 0n ? "-" : "";
263
- const abs = raw < 0n ? -raw : raw;
264
- const unit = 10n ** BigInt(asset.decimals);
265
- const whole = abs / unit;
266
- const frac = abs % unit;
267
- if (asset.decimals === 0) {
268
- return `${sign}${whole} ${asset.symbol}`;
269
- }
270
- return `${sign}${whole}.${frac.toString().padStart(asset.decimals, "0")} ${asset.symbol}`;
261
+ const value = new FormatDecimal(raw.toString()).div(new FormatDecimal(10).pow(asset.decimals));
262
+ return `${value.toString()} ${asset.symbol}`;
271
263
  }
272
264
  var BPS_DENOMINATOR = 1e4;
273
265
  function assertLamports(value, field) {
@@ -285,7 +277,7 @@ function calculateProtocolFee(amount, feeBps) {
285
277
  if (amount === 0 || feeBps === 0) {
286
278
  return 0;
287
279
  }
288
- return new Decimal2__default.default(amount).mul(feeBps).div(BPS_DENOMINATOR).toDecimalPlaces(0, Decimal2__default.default.ROUND_CEIL).toNumber();
280
+ return new Decimal3__default.default(amount).mul(feeBps).div(BPS_DENOMINATOR).toDecimalPlaces(0, Decimal3__default.default.ROUND_CEIL).toNumber();
289
281
  }
290
282
  function validateExpiry(createdAt, expirySecs) {
291
283
  if (!Number.isInteger(createdAt) || createdAt <= 0) {
@@ -2916,7 +2908,7 @@ var GlobalConfigSchema = zod.z.object({
2916
2908
  session_spend_limits: zod.z.array(SessionSpendLimitEntrySchema).max(16).optional()
2917
2909
  }).strict();
2918
2910
  function formatSol(lamports) {
2919
- const sol = new Decimal2__default.default(lamports).div(LAMPORTS_PER_SOL);
2911
+ const sol = new Decimal3__default.default(lamports).div(LAMPORTS_PER_SOL);
2920
2912
  if (sol.gte(1e6)) {
2921
2913
  return `${sol.idiv(1e6)}m SOL`;
2922
2914
  }
@@ -2930,12 +2922,12 @@ function compactSol(sol) {
2930
2922
  return "0";
2931
2923
  }
2932
2924
  if (sol.gte(1e3)) {
2933
- return sol.toDecimalPlaces(0, Decimal2__default.default.ROUND_FLOOR).toString();
2925
+ return sol.toDecimalPlaces(0, Decimal3__default.default.ROUND_FLOOR).toString();
2934
2926
  }
2935
2927
  const maxFrac = 9;
2936
2928
  for (let d = 1; d <= maxFrac; d++) {
2937
2929
  const s = sol.toFixed(d);
2938
- if (new Decimal2__default.default(s).eq(sol)) {
2930
+ if (new Decimal3__default.default(s).eq(sol)) {
2939
2931
  return s.replace(/0+$/, "").replace(/\.$/, "");
2940
2932
  }
2941
2933
  }