@inversealtruism/cairn-sdk 0.8.0 → 0.8.1

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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CairnError,
3
3
  ContentVerificationError
4
- } from "./chunk-UAPWZZQK.js";
4
+ } from "./chunk-X7J6ECNV.js";
5
5
 
6
6
  // src/content.ts
7
7
  import { payloadHash, canonicalJson, verifyContentBytes } from "@inversealtruism/csd-codec";
@@ -4,7 +4,7 @@ import {
4
4
  UnsupportedMethodError,
5
5
  mapProviderError,
6
6
  mapSubmitResultError
7
- } from "./chunk-UAPWZZQK.js";
7
+ } from "./chunk-X7J6ECNV.js";
8
8
 
9
9
  // src/connect.ts
10
10
  var DEFAULT_PROVIDER_TIMEOUT_MS = 10 * 6e4;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getWallet
3
- } from "./chunk-WWO3FXHG.js";
3
+ } from "./chunk-F3KJPQXM.js";
4
4
 
5
5
  // src/controller.ts
6
6
  var DISCONNECTED = Object.freeze({ status: "disconnected", account: null, error: null });
@@ -1,5 +1,5 @@
1
1
  // src/errors.ts
2
- var SDK_VERSION = "0.8.0";
2
+ var SDK_VERSION = "0.8.1";
3
3
  var DOCS_BASE = "https://cairn-substrate.com/docs/sdk";
4
4
  var CairnError = class extends Error {
5
5
  /** Stable machine code for programmatic branching. */
package/dist/connect.cjs CHANGED
@@ -30,7 +30,7 @@ __export(connect_exports, {
30
30
  module.exports = __toCommonJS(connect_exports);
31
31
 
32
32
  // src/errors.ts
33
- var SDK_VERSION = "0.8.0";
33
+ var SDK_VERSION = "0.8.1";
34
34
  var DOCS_BASE = "https://cairn-substrate.com/docs/sdk";
35
35
  var CairnError = class extends Error {
36
36
  /** Stable machine code for programmatic branching. */
package/dist/connect.js CHANGED
@@ -5,8 +5,8 @@ import {
5
5
  discoverProviders,
6
6
  getWallet,
7
7
  isInstalled
8
- } from "./chunk-WWO3FXHG.js";
9
- import "./chunk-UAPWZZQK.js";
8
+ } from "./chunk-F3KJPQXM.js";
9
+ import "./chunk-X7J6ECNV.js";
10
10
  export {
11
11
  WalletConnection,
12
12
  connect,
package/dist/content.cjs CHANGED
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(content_exports);
26
26
  var import_csd_codec = require("@inversealtruism/csd-codec");
27
27
 
28
28
  // src/errors.ts
29
- var SDK_VERSION = "0.8.0";
29
+ var SDK_VERSION = "0.8.1";
30
30
  var DOCS_BASE = "https://cairn-substrate.com/docs/sdk";
31
31
  var CairnError = class extends Error {
32
32
  /** Stable machine code for programmatic branching. */
package/dist/content.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ContentClient
3
- } from "./chunk-DTPADO7N.js";
4
- import "./chunk-UAPWZZQK.js";
3
+ } from "./chunk-23ATXZKM.js";
4
+ import "./chunk-X7J6ECNV.js";
5
5
  export {
6
6
  ContentClient
7
7
  };
@@ -25,7 +25,7 @@ __export(controller_exports, {
25
25
  module.exports = __toCommonJS(controller_exports);
26
26
 
27
27
  // src/errors.ts
28
- var SDK_VERSION = "0.8.0";
28
+ var SDK_VERSION = "0.8.1";
29
29
  var DOCS_BASE = "https://cairn-substrate.com/docs/sdk";
30
30
  var CairnError = class extends Error {
31
31
  /** Stable machine code for programmatic branching. */
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  CairnController
3
- } from "./chunk-JXBO4LV6.js";
4
- import "./chunk-WWO3FXHG.js";
5
- import "./chunk-UAPWZZQK.js";
3
+ } from "./chunk-QWGR5J5D.js";
4
+ import "./chunk-F3KJPQXM.js";
5
+ import "./chunk-X7J6ECNV.js";
6
6
  export {
7
7
  CairnController
8
8
  };
package/dist/index.cjs CHANGED
@@ -58,7 +58,7 @@ __export(index_exports, {
58
58
  module.exports = __toCommonJS(index_exports);
59
59
 
60
60
  // src/errors.ts
61
- var SDK_VERSION = "0.8.0";
61
+ var SDK_VERSION = "0.8.1";
62
62
  var DOCS_BASE = "https://cairn-substrate.com/docs/sdk";
63
63
  var CairnError = class extends Error {
64
64
  /** Stable machine code for programmatic branching. */
@@ -1172,6 +1172,7 @@ async function connect(opts = {}) {
1172
1172
  // src/fillverify.ts
1173
1173
  var import_csd_client3 = require("@inversealtruism/csd-client");
1174
1174
  var import_csd_codec4 = require("@inversealtruism/csd-codec");
1175
+ var import_csd_crypto3 = require("@inversealtruism/csd-crypto");
1175
1176
  var import_cairnx_core2 = require("@inversealtruism/cairnx-core");
1176
1177
  var ADDR = /^0x[0-9a-f]{40}$/;
1177
1178
  var BELOW_BASE = /^tx below the synced base \((\d+)\)/;
@@ -1212,9 +1213,7 @@ async function provenAuthor(client, provenTx) {
1212
1213
  return null;
1213
1214
  }
1214
1215
  if (String((0, import_csd_codec4.txid)(src)).toLowerCase() !== String(in0.prevTxid).toLowerCase()) return null;
1215
- const out = src.outputs?.[Number(in0.vout)];
1216
- const spk = out?.scriptPubkey ? String(out.scriptPubkey).toLowerCase() : null;
1217
- return spk && ADDR.test(spk) ? spk : null;
1216
+ return (0, import_csd_crypto3.authorOf)(provenTx, src.outputs?.[Number(in0.vout)]?.scriptPubkey);
1218
1217
  }
1219
1218
  async function preverifyOffer(opts) {
1220
1219
  const id = String(opts.offerId).toLowerCase();
@@ -1242,8 +1241,6 @@ async function preverifyOffer(opts) {
1242
1241
  if (String(provenId).toLowerCase() !== id) return { ok: false, trust: "unverified", reason: "the merkle-proven tx doesn't match the offer id" };
1243
1242
  const app = incl.tx.app;
1244
1243
  if (!app || app.type !== "Propose") return { ok: false, trust: "unverified", reason: "the offer tx is not a Propose" };
1245
- if (String(app.domain) !== import_cairnx_core2.DOMAIN)
1246
- return { ok: false, trust: "unverified", reason: `the offer tx is not a ${import_cairnx_core2.DOMAIN} Propose (wrong settlement domain)` };
1247
1244
  let rec;
1248
1245
  try {
1249
1246
  rec = (0, import_cairnx_core2.parseRecord)(app.uri, incl.appPayloadHash);
@@ -1256,14 +1253,12 @@ async function preverifyOffer(opts) {
1256
1253
  const seller = await provenAuthor(opts.client, provenTx);
1257
1254
  if (!seller) return { ok: false, trust: "verified", transient: true, blockHeight, reason: "couldn't prove the offer's on-chain author yet; the chain view may be catching up, try again" };
1258
1255
  const offerRec = rec;
1256
+ const ee = app.expires_epoch;
1257
+ const refusal = (0, import_cairnx_core2.provenOfferRefusal)(offerRec, { domain: String(app.domain), height: blockHeight, expiresEpoch: typeof ee === "bigint" ? ee : Number(ee), seller });
1258
+ if (refusal) return { ok: false, trust: "verified", blockHeight, reason: `CairnX rejects this offer (${refusal}) - a fill would move CSD for nothing` };
1259
1259
  const w = rec.want ?? {};
1260
1260
  const payto = w.payto && ADDR.test(String(w.payto).toLowerCase()) ? String(w.payto).toLowerCase() : seller;
1261
1261
  const terms = (0, import_cairnx_core2.provenOfferTerms)(offerRec, blockHeight);
1262
- if (payto === import_cairnx_core2.TREASURY_ADDR)
1263
- return { ok: false, trust: "verified", blockHeight, reason: "the offer's payment recipient is the protocol treasury - the chain rejects it, and a fill would move CSD for nothing" };
1264
- const provenExpiresEpoch = Number(app.expires_epoch);
1265
- if (!Number.isSafeInteger(provenExpiresEpoch) || (0, import_cairnx_core2.epochOf)(blockHeight) > provenExpiresEpoch)
1266
- return { ok: false, trust: "verified", blockHeight, reason: "the offer was already expired when it was mined - the chain rejects it, and a fill would move CSD for nothing" };
1267
1262
  let outputPlan;
1268
1263
  let sumsMismatch;
1269
1264
  let planReason;
@@ -1320,10 +1315,8 @@ async function preverifyOffer(opts) {
1320
1315
  return { ok: false, trust: "verified", reason: "the served offer is missing seller (the rebate recipient) - pass the resolver's full offer object, or omit servedOffer", ...base };
1321
1316
  if (String(so.seller).toLowerCase() !== seller)
1322
1317
  return { ok: false, trust: "verified", reason: "the served seller doesn't match the offer's on-chain author (a lying resolver may be redirecting your payment)", ...base };
1323
- if ((0, import_cairnx_core2.isTokenWant)(offerRec.want) && (String(so?.want?.ticker) !== String(offerRec.want.ticker) || String(so?.want?.amount) !== String(offerRec.want.amount)))
1324
- return { ok: false, trust: "verified", reason: "the served want ticker/amount don't match the offer's on-chain record (a lying resolver could bait-and-switch the token price)", ...base };
1325
1318
  if ((0, import_cairnx_core2.bindOfferTerms)(opts.servedOffer, terms, { give: true, wantType: true }))
1326
- return { ok: false, trust: "verified", reason: "the served terms don't match the offer's on-chain record (fee, rebate, partial sizing, the give, or the want type - a lying resolver could mis-size or re-route the fill, redirecting or burning your payment)", ...base };
1319
+ return { ok: false, trust: "verified", reason: "the served terms don't match the offer's on-chain record (fee, rebate, partial sizing, the give, or the want's type or token price - a lying resolver could mis-size, re-price or re-route the fill, redirecting or burning your payment)", ...base };
1327
1320
  }
1328
1321
  if (sumsMismatch) return { ok: false, trust: "verified", reason: sumsMismatch, ...base };
1329
1322
  return { ok: true, trust: "verified", ...base };
package/dist/index.d.cts CHANGED
@@ -198,7 +198,7 @@ declare function preverifyOffer(opts: {
198
198
 
199
199
  /** Stable machine-readable error codes (branch on these, not the message text). */
200
200
  type CairnErrorCode = "NOT_INSTALLED" | "USER_REJECTED" | "WALLET_LOCKED" | "UNSUPPORTED_METHOD" | "HTTP_ERROR" | "CONTENT_VERIFICATION" | "CONTENT_NOT_JSON" | "ACCOUNT_CHANGED" | "FIRST_PARTY_ONLY" | "RATE_LIMITED" | "APPROVAL_CLOSED" | "FORBIDDEN" | "INTERNAL" | "GHOST_INPUTS_SKIPPED" | "VERIFY_UNAVAILABLE" | "VERIFY_TAMPER" | "INSUFFICIENT" | "TOO_MANY_INPUTS" | "FEE_TOO_LOW" | "FEE_CAP" | "BAD_FEE" | "ZERO_ADDR_REFUSED" | "BAD_OUTPUTS" | "NO_OUTPUTS" | "BAD_REQUEST" | "OFFER_UNKNOWN" | "FILL_UNSAFE" | "FILL_WRONG_TARGET" | "SOURCE_DIVERGENCE" | "SUBMIT_REJECTED" | "SUBMIT_MAYBE_INFLIGHT" | "SUBMIT_DUPLICATE" | "NOTHING_TO_CONSOLIDATE" | "OFFER_SOURCE_CONFLICT" | "FILL_LEGACY_SUNSET" | "VERIFY_HORIZON" | "VERIFY_UNREPRESENTABLE" | "WALLET_UNAVAILABLE" | "REVIEW_REQUIRED" | "UNKNOWN";
201
- declare const SDK_VERSION = "0.8.0";
201
+ declare const SDK_VERSION = "0.8.1";
202
202
  interface CairnErrorOptions {
203
203
  code?: CairnErrorCode;
204
204
  docsPath?: string;
@@ -218,7 +218,7 @@ declare class CairnError extends Error {
218
218
  /** Relative docs path (under the SDK docs base), if any. */
219
219
  readonly docsPath?: string;
220
220
  /** The cairn-sdk version that produced this error. */
221
- readonly version = "0.8.0";
221
+ readonly version = "0.8.1";
222
222
  /**
223
223
  * Whether a dApp may safely AUTO-retry this failure. `false` for fund-safety refusals and user-intent
224
224
  * declines (the default); `true` only for provably transient infra faults where nothing was signed.
package/dist/index.d.ts CHANGED
@@ -198,7 +198,7 @@ declare function preverifyOffer(opts: {
198
198
 
199
199
  /** Stable machine-readable error codes (branch on these, not the message text). */
200
200
  type CairnErrorCode = "NOT_INSTALLED" | "USER_REJECTED" | "WALLET_LOCKED" | "UNSUPPORTED_METHOD" | "HTTP_ERROR" | "CONTENT_VERIFICATION" | "CONTENT_NOT_JSON" | "ACCOUNT_CHANGED" | "FIRST_PARTY_ONLY" | "RATE_LIMITED" | "APPROVAL_CLOSED" | "FORBIDDEN" | "INTERNAL" | "GHOST_INPUTS_SKIPPED" | "VERIFY_UNAVAILABLE" | "VERIFY_TAMPER" | "INSUFFICIENT" | "TOO_MANY_INPUTS" | "FEE_TOO_LOW" | "FEE_CAP" | "BAD_FEE" | "ZERO_ADDR_REFUSED" | "BAD_OUTPUTS" | "NO_OUTPUTS" | "BAD_REQUEST" | "OFFER_UNKNOWN" | "FILL_UNSAFE" | "FILL_WRONG_TARGET" | "SOURCE_DIVERGENCE" | "SUBMIT_REJECTED" | "SUBMIT_MAYBE_INFLIGHT" | "SUBMIT_DUPLICATE" | "NOTHING_TO_CONSOLIDATE" | "OFFER_SOURCE_CONFLICT" | "FILL_LEGACY_SUNSET" | "VERIFY_HORIZON" | "VERIFY_UNREPRESENTABLE" | "WALLET_UNAVAILABLE" | "REVIEW_REQUIRED" | "UNKNOWN";
201
- declare const SDK_VERSION = "0.8.0";
201
+ declare const SDK_VERSION = "0.8.1";
202
202
  interface CairnErrorOptions {
203
203
  code?: CairnErrorCode;
204
204
  docsPath?: string;
@@ -218,7 +218,7 @@ declare class CairnError extends Error {
218
218
  /** Relative docs path (under the SDK docs base), if any. */
219
219
  readonly docsPath?: string;
220
220
  /** The cairn-sdk version that produced this error. */
221
- readonly version = "0.8.0";
221
+ readonly version = "0.8.1";
222
222
  /**
223
223
  * Whether a dApp may safely AUTO-retry this failure. `false` for fund-safety refusals and user-intent
224
224
  * declines (the default); `true` only for provably transient infra faults where nothing was signed.
package/dist/index.js CHANGED
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-C452UODV.js";
5
5
  import {
6
6
  ContentClient
7
- } from "./chunk-DTPADO7N.js";
7
+ } from "./chunk-23ATXZKM.js";
8
8
  import {
9
9
  IndexerClient
10
10
  } from "./chunk-CI7YODPP.js";
11
11
  import {
12
12
  CairnController
13
- } from "./chunk-JXBO4LV6.js";
13
+ } from "./chunk-QWGR5J5D.js";
14
14
  import {
15
15
  WalletConnection,
16
16
  connect,
@@ -18,7 +18,7 @@ import {
18
18
  discoverProviders,
19
19
  getWallet,
20
20
  isInstalled
21
- } from "./chunk-WWO3FXHG.js";
21
+ } from "./chunk-F3KJPQXM.js";
22
22
  import {
23
23
  CairnError,
24
24
  ContentVerificationError,
@@ -32,7 +32,7 @@ import {
32
32
  errorCode,
33
33
  mapProviderError,
34
34
  mapSubmitResultError
35
- } from "./chunk-UAPWZZQK.js";
35
+ } from "./chunk-X7J6ECNV.js";
36
36
 
37
37
  // src/http.ts
38
38
  var DEFAULT_MAX_BYTES = 16 * 1024 * 1024;
@@ -358,20 +358,19 @@ var NamesClient = class {
358
358
  // src/fillverify.ts
359
359
  import { rpcTxToTx } from "@inversealtruism/csd-client";
360
360
  import { txid, payloadHash } from "@inversealtruism/csd-codec";
361
+ import { authorOf } from "@inversealtruism/csd-crypto";
361
362
  import {
362
- DOMAIN,
363
363
  parseRecord,
364
364
  feeBpsAt,
365
365
  bindOfferTerms,
366
366
  provenOfferTerms,
367
+ provenOfferRefusal,
367
368
  fillOutputPlan,
368
369
  isTokenWant,
369
370
  fillEndorsement,
370
371
  fillIsSafe,
371
372
  requiredFillOutputs,
372
- previewFill,
373
- TREASURY_ADDR,
374
- epochOf
373
+ previewFill
375
374
  } from "@inversealtruism/cairnx-core";
376
375
  var ADDR = /^0x[0-9a-f]{40}$/;
377
376
  var BELOW_BASE = /^tx below the synced base \((\d+)\)/;
@@ -412,9 +411,7 @@ async function provenAuthor(client, provenTx) {
412
411
  return null;
413
412
  }
414
413
  if (String(txid(src)).toLowerCase() !== String(in0.prevTxid).toLowerCase()) return null;
415
- const out = src.outputs?.[Number(in0.vout)];
416
- const spk = out?.scriptPubkey ? String(out.scriptPubkey).toLowerCase() : null;
417
- return spk && ADDR.test(spk) ? spk : null;
414
+ return authorOf(provenTx, src.outputs?.[Number(in0.vout)]?.scriptPubkey);
418
415
  }
419
416
  async function preverifyOffer(opts) {
420
417
  const id = String(opts.offerId).toLowerCase();
@@ -442,8 +439,6 @@ async function preverifyOffer(opts) {
442
439
  if (String(provenId).toLowerCase() !== id) return { ok: false, trust: "unverified", reason: "the merkle-proven tx doesn't match the offer id" };
443
440
  const app = incl.tx.app;
444
441
  if (!app || app.type !== "Propose") return { ok: false, trust: "unverified", reason: "the offer tx is not a Propose" };
445
- if (String(app.domain) !== DOMAIN)
446
- return { ok: false, trust: "unverified", reason: `the offer tx is not a ${DOMAIN} Propose (wrong settlement domain)` };
447
442
  let rec;
448
443
  try {
449
444
  rec = parseRecord(app.uri, incl.appPayloadHash);
@@ -456,14 +451,12 @@ async function preverifyOffer(opts) {
456
451
  const seller = await provenAuthor(opts.client, provenTx);
457
452
  if (!seller) return { ok: false, trust: "verified", transient: true, blockHeight, reason: "couldn't prove the offer's on-chain author yet; the chain view may be catching up, try again" };
458
453
  const offerRec = rec;
454
+ const ee = app.expires_epoch;
455
+ const refusal = provenOfferRefusal(offerRec, { domain: String(app.domain), height: blockHeight, expiresEpoch: typeof ee === "bigint" ? ee : Number(ee), seller });
456
+ if (refusal) return { ok: false, trust: "verified", blockHeight, reason: `CairnX rejects this offer (${refusal}) - a fill would move CSD for nothing` };
459
457
  const w = rec.want ?? {};
460
458
  const payto = w.payto && ADDR.test(String(w.payto).toLowerCase()) ? String(w.payto).toLowerCase() : seller;
461
459
  const terms = provenOfferTerms(offerRec, blockHeight);
462
- if (payto === TREASURY_ADDR)
463
- return { ok: false, trust: "verified", blockHeight, reason: "the offer's payment recipient is the protocol treasury - the chain rejects it, and a fill would move CSD for nothing" };
464
- const provenExpiresEpoch = Number(app.expires_epoch);
465
- if (!Number.isSafeInteger(provenExpiresEpoch) || epochOf(blockHeight) > provenExpiresEpoch)
466
- return { ok: false, trust: "verified", blockHeight, reason: "the offer was already expired when it was mined - the chain rejects it, and a fill would move CSD for nothing" };
467
460
  let outputPlan;
468
461
  let sumsMismatch;
469
462
  let planReason;
@@ -520,10 +513,8 @@ async function preverifyOffer(opts) {
520
513
  return { ok: false, trust: "verified", reason: "the served offer is missing seller (the rebate recipient) - pass the resolver's full offer object, or omit servedOffer", ...base };
521
514
  if (String(so.seller).toLowerCase() !== seller)
522
515
  return { ok: false, trust: "verified", reason: "the served seller doesn't match the offer's on-chain author (a lying resolver may be redirecting your payment)", ...base };
523
- if (isTokenWant(offerRec.want) && (String(so?.want?.ticker) !== String(offerRec.want.ticker) || String(so?.want?.amount) !== String(offerRec.want.amount)))
524
- return { ok: false, trust: "verified", reason: "the served want ticker/amount don't match the offer's on-chain record (a lying resolver could bait-and-switch the token price)", ...base };
525
516
  if (bindOfferTerms(opts.servedOffer, terms, { give: true, wantType: true }))
526
- return { ok: false, trust: "verified", reason: "the served terms don't match the offer's on-chain record (fee, rebate, partial sizing, the give, or the want type - a lying resolver could mis-size or re-route the fill, redirecting or burning your payment)", ...base };
517
+ return { ok: false, trust: "verified", reason: "the served terms don't match the offer's on-chain record (fee, rebate, partial sizing, the give, or the want's type or token price - a lying resolver could mis-size, re-price or re-route the fill, redirecting or burning your payment)", ...base };
527
518
  }
528
519
  if (sumsMismatch) return { ok: false, trust: "verified", reason: sumsMismatch, ...base };
529
520
  return { ok: true, trust: "verified", ...base };
package/dist/react.cjs CHANGED
@@ -26,7 +26,7 @@ __export(react_exports, {
26
26
  module.exports = __toCommonJS(react_exports);
27
27
 
28
28
  // src/errors.ts
29
- var SDK_VERSION = "0.8.0";
29
+ var SDK_VERSION = "0.8.1";
30
30
  var DOCS_BASE = "https://cairn-substrate.com/docs/sdk";
31
31
  var CairnError = class extends Error {
32
32
  /** Stable machine code for programmatic branching. */
package/dist/react.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  CairnController
3
- } from "./chunk-JXBO4LV6.js";
4
- import "./chunk-WWO3FXHG.js";
5
- import "./chunk-UAPWZZQK.js";
3
+ } from "./chunk-QWGR5J5D.js";
4
+ import "./chunk-F3KJPQXM.js";
5
+ import "./chunk-X7J6ECNV.js";
6
6
 
7
7
  // src/react.ts
8
8
  function createCairnHooks(React, controllerOrOpts) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inversealtruism/cairn-sdk",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "The Compute Substrate dApp kit: one cohesive toolkit to connect the Cairn Wallet, read the chain, the indexer and .csd names, verify self-certifying content, and resolve .csd names. Composes the published csd-* primitives.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -49,11 +49,11 @@
49
49
  "README.md"
50
50
  ],
51
51
  "dependencies": {
52
- "@inversealtruism/cairnx-core": "0.2.2",
53
- "@inversealtruism/csd-client": "0.1.19",
52
+ "@inversealtruism/cairnx-core": "0.2.3",
53
+ "@inversealtruism/csd-client": "0.1.20",
54
54
  "@inversealtruism/csd-codec": "0.1.18",
55
55
  "@inversealtruism/csd-crypto": "0.1.20",
56
- "@inversealtruism/csd-light": "0.1.25",
56
+ "@inversealtruism/csd-light": "0.1.26",
57
57
  "@inversealtruism/csd-tx": "0.1.23"
58
58
  },
59
59
  "devDependencies": {