@capxul/sdk 4.20.0-beta.4 → 4.20.0-beta.5

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,5 +1,5 @@
1
- import { h as CapxulResult } from "../OAuthBearerAuthClient-C-ip-z8M.mjs";
2
- import { er as TelemetryEvent, f as CapxulClient, i as ObservationAdapter, n as ProductionSignerControls, nr as TelemetryIdentifyInput, pr as IdentityTransition, t as CapxulClientInput, tr as TelemetryGroupInput } from "../production-CJwxgI8u.mjs";
1
+ import { h as CapxulResult } from "../OAuthBearerAuthClient-BAxoi3SD.mjs";
2
+ import { ar as TelemetryIdentifyInput, f as CapxulClient, gr as IdentityTransition, i as ObservationAdapter, ir as TelemetryGroupInput, n as ProductionSignerControls, rr as TelemetryEvent, t as CapxulClientInput } from "../production-DAhaxUik.mjs";
3
3
  import { Effect, Layer } from "effect";
4
4
  //#region src/testing/production-client.d.ts
5
5
  /** Create the one production client with per-client controls at its signing boundaries. */
@@ -1,5 +1,5 @@
1
- import { D as fromWei, P as redactTelemetryEvent, a as smartAccountErrorFromCapxul, c as identityErrorFromCapxul, i as assembleCapxulClient, l as convexCallErrorFromCapxul, n as createCapxulClientWithSignerControls, o as accountReadErrorFromCapxul, s as wireChainId, u as bootstrapErrorFromCapxul, v as toWei } from "../production-BMfmzwHq.mjs";
2
- import { B as toAuthUserId, F as toAccountId, G as toDurationMs, H as toChainId, I as toAddress, J as toEpochSeconds, K as toEmail, L as toAllowedOrigin, R as toAppId, U as toCountryCode, X as toJwtToken, Y as toHandle, Z as toKycTier, ct as validateHandle, d as authClientPortFromPromiseAdapter, ft as CapxulError, it as toSessionToken, mt as Errors, n as readClockNow, nt as toPublishableKey, q as toEpochMs, r as InMemoryAuthCacheAdapter, y as deriveCapxulSafeAddress } from "../OAuthBearerAuthClient-DWkofxdZ.mjs";
1
+ import { L as accountFromAccountPositions, N as redactTelemetryEvent, V as assetAmountFromRaw, a as smartAccountErrorFromCapxul, c as identityErrorFromCapxul, i as assembleCapxulClient, l as convexCallErrorFromCapxul, n as createCapxulClientWithSignerControls, o as accountReadErrorFromCapxul, s as wireChainId, u as bootstrapErrorFromCapxul, v as toWei } from "../production-q0kwUWcj.mjs";
2
+ import { I as toAccountId, J as toEpochMs, K as toDurationMs, L as toAddress, Q as toKycTier, R as toAllowedOrigin, U as toChainId, V as toAuthUserId, W as toCountryCode, X as toHandle, Y as toEpochSeconds, Z as toJwtToken, at as toSessionToken, b as CONFIGURED_MONEY_ASSETS, ct as toWeiAmount, d as authClientPortFromPromiseAdapter, ht as Errors, lt as validateHandle, n as readClockNow, pt as CapxulError, q as toEmail, r as InMemoryAuthCacheAdapter, rt as toPublishableKey, y as deriveCapxulSafeAddress, z as toAppId } from "../OAuthBearerAuthClient-BqQz-bnO.mjs";
3
3
  import { keccak256 } from "viem";
4
4
  import { Effect, Result, Semaphore } from "effect";
5
5
  import { getFunctionName } from "convex/server";
@@ -101,6 +101,11 @@ function armSignerFaults(plan = {}) {
101
101
  }
102
102
  //#endregion
103
103
  //#region src/testing/account/InMemoryAccountReadAdapter.ts
104
+ function fixtureAsset(symbol) {
105
+ const asset = CONFIGURED_MONEY_ASSETS.find((row) => row.symbol === symbol);
106
+ if (asset === void 0) throw new Error(`no configured settlement asset ${symbol}`);
107
+ return asset;
108
+ }
104
109
  var InMemoryAccountReadAdapter = class {
105
110
  #deps;
106
111
  #rawBalance;
@@ -108,25 +113,28 @@ var InMemoryAccountReadAdapter = class {
108
113
  this.#deps = deps;
109
114
  this.#rawBalance = deps.rawBalance ?? "0";
110
115
  }
116
+ #asset() {
117
+ return fixtureAsset(this.#deps.assetSymbol ?? "USDC");
118
+ }
111
119
  readBalance(_input) {
112
120
  const scriptedFailure = this.#deps.failures?.readBalance;
113
121
  if (scriptedFailure !== void 0) return Effect.fail(accountReadErrorFromCapxul("readBalance", scriptedFailure));
114
122
  if (this.#deps.account !== void 0) return Effect.succeed(cloneAccount(this.#deps.account));
115
- const decimals = this.#deps.decimals ?? 6;
116
- const currency = this.#deps.currency ?? "USD";
117
- const money = fromWei(this.#rawBalance, decimals, currency);
118
- return Effect.succeed({
119
- id: toAccountId(this.#deps.accountId ?? "account_01TEST000000000000000000"),
120
- balance: money,
121
- available: money
122
- });
123
+ const asset = this.#asset();
124
+ const balance = assetAmountFromRaw(toWeiAmount(this.#rawBalance), asset).value;
125
+ return Effect.succeed(accountFromAccountPositions(toAccountId(this.#deps.accountId ?? "account_01TEST000000000000000000"), [{
126
+ asset: asset.assetId,
127
+ symbol: asset.symbol,
128
+ decimals: asset.decimals,
129
+ balance,
130
+ available: balance
131
+ }]));
123
132
  }
124
133
  fundFromFaucet(input) {
125
134
  const scriptedFailure = this.#deps.failures?.fundFromFaucet;
126
135
  if (scriptedFailure !== void 0) return Effect.fail(accountReadErrorFromCapxul("fundFromFaucet", scriptedFailure));
127
- const expectedDecimals = this.#deps.decimals ?? 6;
128
- const expectedCurrency = this.#deps.currency ?? "USD";
129
- if (input.amount.decimals !== expectedDecimals || String(input.amount.currency) !== expectedCurrency) return Effect.fail(accountReadErrorFromCapxul("fundFromFaucet", Errors.invalidInput("amount", "decimals/currency must match adapter config")));
136
+ const asset = this.#asset();
137
+ if (input.amount.decimals !== asset.decimals || asset.peg !== null && String(input.amount.currency) !== asset.peg) return Effect.fail(accountReadErrorFromCapxul("fundFromFaucet", Errors.invalidInput("amount", "decimals/currency must match adapter config")));
130
138
  const minted = BigInt(toWei(input.amount));
131
139
  this.#rawBalance = (BigInt(this.#rawBalance) + minted).toString();
132
140
  return Effect.succeed({ txHash: "0x" + "f".repeat(64) });
@@ -135,6 +143,7 @@ var InMemoryAccountReadAdapter = class {
135
143
  function cloneAccount(account) {
136
144
  return {
137
145
  id: account.id,
146
+ balances: account.balances.map((position) => ({ ...position })),
138
147
  balance: { ...account.balance },
139
148
  available: { ...account.available }
140
149
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capxul/sdk",
3
- "version": "4.20.0-beta.4",
3
+ "version": "4.20.0-beta.5",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Xelmar-tech/infrastructure.git",
@@ -43,17 +43,18 @@
43
43
  "@vitest/coverage-v8": "4.1.11",
44
44
  "fast-check": "^3.23.2",
45
45
  "permissionless": "0.3.4",
46
+ "playwright": "1.59.1",
46
47
  "posthog-js": "^1.418.10",
47
48
  "typescript": "npm:@typescript/typescript6@6.0.2",
48
49
  "vite": "npm:@voidzero-dev/vite-plus-core@0.3.0",
49
50
  "vite-plus": "0.3.0",
50
51
  "vitest": "4.1.11",
51
52
  "@capxul/config": "0.3.0",
52
- "@capxul/types": "0.3.0",
53
- "@capxul/observability": "4.20.0-beta.4",
54
- "@capxul/typescript-config": "0.0.0",
55
53
  "@capxul/errors": "0.3.0",
56
- "@capxul/wire": "0.8.0-beta.0"
54
+ "@capxul/typescript-config": "0.0.0",
55
+ "@capxul/observability": "4.20.0-beta.5",
56
+ "@capxul/wire": "0.8.0-beta.0",
57
+ "@capxul/types": "0.3.0"
57
58
  },
58
59
  "_permissionlessPinReason": "permissionless.toSafeSmartAccount is pinned to 0.3.4 for live Safe deployment E2E. Counterfactual address fixtures captured 2026-05-17 in packages/backend/convex/_shared/__tests__/counterfactual.test.ts and packages/config/tests/safe.test.ts must be re-verified before upgrading.",
59
60
  "scripts": {