@usesigil/kit 0.8.0 → 0.10.0

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.
Files changed (89) hide show
  1. package/README.md +158 -145
  2. package/dist/alt-config.d.ts +4 -2
  3. package/dist/alt-config.d.ts.map +1 -1
  4. package/dist/alt-config.js +4 -2
  5. package/dist/alt-config.js.map +1 -1
  6. package/dist/alt-loader.d.ts.map +1 -1
  7. package/dist/alt-loader.js +2 -1
  8. package/dist/alt-loader.js.map +1 -1
  9. package/dist/balance-tracker.d.ts +7 -0
  10. package/dist/balance-tracker.d.ts.map +1 -1
  11. package/dist/balance-tracker.js +26 -9
  12. package/dist/balance-tracker.js.map +1 -1
  13. package/dist/create-vault.d.ts +40 -3
  14. package/dist/create-vault.d.ts.map +1 -1
  15. package/dist/create-vault.js +45 -7
  16. package/dist/create-vault.js.map +1 -1
  17. package/dist/dashboard/discover.d.ts.map +1 -1
  18. package/dist/dashboard/discover.js +2 -1
  19. package/dist/dashboard/discover.js.map +1 -1
  20. package/dist/dashboard/from-json.d.ts +1 -0
  21. package/dist/dashboard/from-json.d.ts.map +1 -1
  22. package/dist/dashboard/from-json.js +3 -1
  23. package/dist/dashboard/from-json.js.map +1 -1
  24. package/dist/dashboard/mutations.d.ts.map +1 -1
  25. package/dist/dashboard/mutations.js +2 -1
  26. package/dist/dashboard/mutations.js.map +1 -1
  27. package/dist/dashboard/reads.d.ts.map +1 -1
  28. package/dist/dashboard/reads.js +5 -4
  29. package/dist/dashboard/reads.js.map +1 -1
  30. package/dist/errors/public.d.ts +24 -0
  31. package/dist/errors/public.d.ts.map +1 -0
  32. package/dist/errors/public.js +30 -0
  33. package/dist/errors/public.js.map +1 -0
  34. package/dist/errors/walk.d.ts +8 -0
  35. package/dist/errors/walk.d.ts.map +1 -1
  36. package/dist/errors/walk.js +12 -1
  37. package/dist/errors/walk.js.map +1 -1
  38. package/dist/helpers/ata.d.ts +73 -0
  39. package/dist/helpers/ata.d.ts.map +1 -0
  40. package/dist/helpers/ata.js +107 -0
  41. package/dist/helpers/ata.js.map +1 -0
  42. package/dist/helpers/parse-usd.d.ts +43 -0
  43. package/dist/helpers/parse-usd.d.ts.map +1 -0
  44. package/dist/helpers/parse-usd.js +81 -0
  45. package/dist/helpers/parse-usd.js.map +1 -0
  46. package/dist/helpers/validate-cap-aggregate.d.ts +41 -0
  47. package/dist/helpers/validate-cap-aggregate.d.ts.map +1 -0
  48. package/dist/helpers/validate-cap-aggregate.js +61 -0
  49. package/dist/helpers/validate-cap-aggregate.js.map +1 -0
  50. package/dist/index.d.ts +12 -5
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +36 -5
  53. package/dist/index.js.map +1 -1
  54. package/dist/integrations/compose-errors.d.ts.map +1 -1
  55. package/dist/integrations/compose-errors.js +15 -1
  56. package/dist/integrations/compose-errors.js.map +1 -1
  57. package/dist/logger.d.ts +77 -0
  58. package/dist/logger.d.ts.map +1 -0
  59. package/dist/logger.js +153 -0
  60. package/dist/logger.js.map +1 -0
  61. package/dist/math-utils.d.ts +5 -0
  62. package/dist/math-utils.d.ts.map +1 -1
  63. package/dist/math-utils.js +7 -0
  64. package/dist/math-utils.js.map +1 -1
  65. package/dist/presets.d.ts +73 -6
  66. package/dist/presets.d.ts.map +1 -1
  67. package/dist/presets.js +75 -6
  68. package/dist/presets.js.map +1 -1
  69. package/dist/priority-fees.d.ts +3 -0
  70. package/dist/priority-fees.d.ts.map +1 -1
  71. package/dist/priority-fees.js +14 -37
  72. package/dist/priority-fees.js.map +1 -1
  73. package/dist/seal.d.ts +85 -6
  74. package/dist/seal.d.ts.map +1 -1
  75. package/dist/seal.js +199 -9
  76. package/dist/seal.js.map +1 -1
  77. package/dist/shield.d.ts.map +1 -1
  78. package/dist/shield.js +10 -9
  79. package/dist/shield.js.map +1 -1
  80. package/dist/tee/verify.d.ts.map +1 -1
  81. package/dist/tee/verify.js +11 -10
  82. package/dist/tee/verify.js.map +1 -1
  83. package/dist/transaction-executor.d.ts.map +1 -1
  84. package/dist/transaction-executor.js +3 -2
  85. package/dist/transaction-executor.js.map +1 -1
  86. package/dist/x402/shielded-fetch.d.ts.map +1 -1
  87. package/dist/x402/shielded-fetch.js +7 -4
  88. package/dist/x402/shielded-fetch.js.map +1 -1
  89. package/package.json +6 -2
package/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # @usesigil/kit
2
2
 
3
- Kit-native TypeScript SDK for Sigil — on-chain spending limits and permission policies for AI agent wallets on Solana.
3
+ Kit-native TypeScript SDK for **Sigil** — on-chain spending limits, permission policies, and audit trails for AI-agent wallets on Solana.
4
4
 
5
- Sigil wraps arbitrary DeFi instructions with security guardrails. Your agents trade through Jupiter, Flash Trade, Drift, or any Solana protocol while vault policies enforce spending caps, permission bitmasks, and protocol allowlists.
5
+ > **Sigil is a security wrapper, not a DeFi SDK.** Your agents keep using Jupiter, Flash Trade, Drift, or any Solana protocol. Sigil wraps the instructions they produce with a validate-and-authorize gate, enforces the policies the vault owner configured, and records the outcome — all without touching the underlying DeFi logic.
6
+
7
+ ---
6
8
 
7
9
  ## Install
8
10
 
@@ -12,203 +14,214 @@ npm install @usesigil/kit @solana/kit
12
14
 
13
15
  `@solana/kit ^6.2.0` is a peer dependency. Node >= 18.
14
16
 
17
+ ---
18
+
19
+ ## Mental model
20
+
21
+ Sigil separates **authority** (owner) from **execution** (agents), enforced at the Solana transaction boundary rather than only in application code.
22
+
23
+ ```
24
+ ┌──────────────────────────────────────────────────────────────────┐
25
+ │ OWNER (human or DAO) │
26
+ │ - Creates vault, sets policy (caps / timelock / allowlist) │
27
+ │ - Registers agent signing keys │
28
+ │ - Withdraws funds, freezes vault, revokes agents │
29
+ │ - Cannot be impersonated by any agent │
30
+ └──────────────────────────┬───────────────────────────────────────┘
31
+ │ owner-signed transactions
32
+
33
+ ┌──────────────────────────────────────────────────────────────────┐
34
+ │ SIGIL ON-CHAIN PROGRAM │
35
+ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
36
+ │ │ AgentVault │ │ PolicyConfig │ │ SpendTracker │ │
37
+ │ │ (funds) │ │ (limits) │ │ (rolling 24 h) │ │
38
+ │ └──────────────┘ └──────────────┘ └─────────────────────┘ │
39
+ │ │
40
+ │ Every spending tx is `[validate, <DeFi ix>, finalize]`. │
41
+ │ The sandwich cannot be decomposed — all succeed or all revert. │
42
+ └──────────────────────────┬───────────────────────────────────────┘
43
+ │ validated tx
44
+
45
+ ┌──────────────────────────────────────────────────────────────────┐
46
+ │ DeFi protocols (Jupiter, Flash Trade, Drift, …) │
47
+ │ Sigil does not touch this layer — no protocol SDK needed. │
48
+ └──────────────────────────────────────────────────────────────────┘
49
+ ```
50
+
51
+ Nothing an agent does can bypass the on-chain gate. If the validate instruction rejects — cap exceeded, protocol not allowed, agent paused — the entire transaction reverts before any funds move.
52
+
53
+ ---
54
+
15
55
  ## Quickstart
16
56
 
17
- ```typescript
57
+ Provision a vault and execute your first agent-authorized swap:
58
+
59
+ ```ts
18
60
  import {
19
- SigilClient,
20
61
  createAndSendVault,
21
- ActionType,
22
- toAgentError,
23
- formatUsd,
24
- USDC_MINT_DEVNET,
62
+ SigilClient,
63
+ SAFETY_PRESETS,
64
+ parseUsd,
65
+ createConsoleLogger,
25
66
  } from "@usesigil/kit";
26
- import { address, createSolanaRpc } from "@solana/kit";
27
67
 
28
- // 1. Create a vault (owner operation — run once)
29
- const rpc = createSolanaRpc("https://api.devnet.solana.com");
30
- const vault = await createAndSendVault({
31
- rpc,
68
+ // 1. Owner provisions the vault on devnet.
69
+ const { vaultAddress } = await createAndSendVault({
70
+ rpc, // Rpc<SolanaRpcApi> from @solana/kit
32
71
  network: "devnet",
33
- owner, // TransactionSigner (vault authority)
34
- agent, // TransactionSigner (AI agent key)
35
- dailySpendingCapUsd: 500_000_000n, // $500 in USDC base units
72
+ owner: ownerSigner, // TransactionSigner
73
+ agent: agentSigner, // TransactionSigner separate key from owner
74
+ // Required safety posture (v0.9.0 — no silent defaults):
75
+ ...SAFETY_PRESETS.development,
36
76
  });
37
- console.log(`Vault created: ${vault.vaultAddress}`);
38
77
 
39
- // 2. Wrap a Jupiter swap (agent operation per trade)
40
- const client = new SigilClient({
78
+ // 2. Agent opens an async client with genesis-hash verification.
79
+ const client = await SigilClient.create({
41
80
  rpc,
42
- vault: vault.vaultAddress,
43
- agent,
81
+ vault: vaultAddress,
82
+ agent: agentSigner,
44
83
  network: "devnet",
84
+ logger: createConsoleLogger(), // opt in to structured warnings
45
85
  });
46
86
 
47
- const jupiterInstructions = /* from Jupiter /swap-instructions API */;
87
+ // 3. Wrap arbitrary DeFi instructions from Jupiter, SAK, MCP, etc.
88
+ const jupiterInstructions = await buildJupiterSwap(/* your call */);
48
89
  const { signature } = await client.executeAndConfirm(jupiterInstructions, {
49
90
  tokenMint: USDC_MINT_DEVNET,
50
- amount: 100_000_000n, // $100 USDC
51
- actionType: ActionType.Swap,
52
- protocolAltAddresses: jupiterResponse.addressLookupTableAddresses,
91
+ amount: parseUsd("$10"), // strict parser → 10_000_000n base units
53
92
  });
54
-
55
- // 3. Check P&L
56
- const pnl = await client.getPnL();
57
- console.log(`P&L: ${formatUsd(pnl.pnl)}`);
58
93
  ```
59
94
 
60
- See [`examples/jupiter-swap.ts`](./examples/jupiter-swap.ts) for a complete, runnable example with Jupiter API calls, instruction parsing, ALT extraction, and error handling.
61
-
62
- ## Architecture
95
+ The agent's signing key is never enough on its own Sigil's validate instruction in the same transaction has to authorize the spend, and the finalize instruction has to record it. A leaked agent key cannot exceed the owner-configured daily cap or transfer to a non-allowed destination.
63
96
 
64
- ```
65
- Transaction = [validate_and_authorize, ...defiInstructions, finalize_session]
66
- ```
97
+ ---
67
98
 
68
- Sigil wraps arbitrary DeFi instructions from any source (Jupiter API, Solana Agent Kit, MCP servers) and sandwiches them with on-chain security checks. All instructions succeed or all revert atomically. The SDK handles instruction composition, ATA rewriting, ALT compression, and pre-flight validation.
99
+ ## Security boundary
69
100
 
70
- ## API Overview
101
+ **What the on-chain program enforces:**
102
+ - Daily and per-transaction spending caps (`dailySpendingCapUsd`, `maxTransactionSizeUsd`)
103
+ - Per-agent spending limits (`spendingLimitUsd`)
104
+ - Protocol allowlist / denylist (`protocols`, `protocolMode`)
105
+ - Slippage tolerance on Jupiter swaps (`maxSlippageBps`)
106
+ - Session expiry, position counters, leverage limits
107
+ - Owner timelock on policy changes (`timelockDuration`)
71
108
 
72
- ### Core Create vaults, wrap instructions, execute
109
+ **What the SDK enforces pre-submission:**
110
+ - Agent capability check (2-bit enum: Disabled / Observer / Operator)
111
+ - Genesis-hash assertion on `SigilClient.create()` — prevents cluster mismatch
112
+ - Strict USD parsing (`parseUsd`) — no `parseFloat` rounding
113
+ - Aggregate cap guard — sum of per-agent caps ≤ vault cap
114
+ - SPL token-operation detection — blocks non-whitelisted transfer patterns
73
115
 
74
- | Export | Description |
75
- |--------|-------------|
76
- | `SigilClient` | Stateful clientholds vault/agent/network, manages caches. Recommended for production. |
77
- | `wrap()` | Stateless wrapping functiontakes DeFi instructions, returns a composed transaction. |
78
- | `createVault()` | Build vault creation instructions (caller signs and sends). |
79
- | `createAndSendVault()` | One-call vault creation — build, sign, send, confirm. |
80
- | `buildOwnerTransaction()` | Compose owner-only transactions (policy updates, agent management). |
81
- | `withVault()` | Policy-guided vault creation — policies in, wrapped client out. |
116
+ **What the SDK does NOT attempt:**
117
+ - Key custody — bring your own `TransactionSigner` (Turnkey, Crossmint, Privy, or a local keypair)
118
+ - Transaction simulation outcome trustsimulation is a hint, not a guarantee; on-chain enforcement is the source of truth
119
+ - Replay prevention outside a sessionagents must start a new session per transaction
82
120
 
83
- ### State Query vaults, budgets, spending
121
+ If a piece of SDK logic is wrong, the worst a consumer loses is some UX clarity — the on-chain program still rejects the bad transaction. The boundary is deliberate.
84
122
 
85
- | Export | Description |
86
- |--------|-------------|
87
- | `resolveVaultState()` | Fetch complete vault state (accounts, policy, tracker, overlay, constraints). |
88
- | `resolveVaultBudget()` | Per-agent budget: rolling 24h spend, cap, remaining headroom. |
89
- | `getSpendingHistory()` | 144-epoch circular buffer to chart-ready time series. |
90
- | `findVaultsByOwner()` | Enumerate all vaults owned by an address. |
91
- | `resolveVaultStateForOwner()` | Vault state with pending policy/constraint updates for dashboards. |
123
+ ---
92
124
 
93
- ### Analytics — Security checks, agent metrics, portfolio
125
+ ## Configuration presets
94
126
 
95
- | Export | Description |
96
- |--------|-------------|
97
- | `getSecurityPosture()` | 13-point security assessment with pass/fail, severity, remediation. |
98
- | `getVaultHealth()` | Risk score, liquidity, utilization. |
99
- | `getAgentProfile()` | Single agent stats — spend, tx count, errors. |
100
- | `getAgentLeaderboard()` | Top agents by spend or profit. |
101
- | `getPortfolioOverview()` | Cross-vault summary for multi-vault operators. |
102
- | `getAuditTrail()` | Chronological audit log filtered by category, actor, or time range. |
103
- | `getSpendingVelocity()` | Rate of spend over configurable time windows. |
127
+ ### Use-case presets (`VAULT_PRESETS`)
104
128
 
105
- 7 analytics modules with 42 functions total see source for the full list.
129
+ Starting templates for specific agent roles. Each sets capability, allowlist, slippage, and caps appropriate for the use case:
106
130
 
107
- ### SafetyPre-flight checks, error handling
131
+ - `jupiter-swap-bot`Jupiter only, conservative caps ($500/day, $100/tx)
132
+ - `perps-trader` — Jupiter + Flash Trade, 10× leverage, $5,000/day
133
+ - `lending-optimizer` — Jupiter Lend + Kamino, 1% slippage, $2,000/day
134
+ - `full-access` — every protocol allowed, $10,000/day, 20× leverage
108
135
 
109
- | Export | Description |
110
- |--------|-------------|
111
- | `shield()` | Client-side policy gate — evaluate instructions before signing. |
112
- | `simulateBeforeSend()` | RPC simulation with error extraction. |
113
- | `detectDrainAttempt()` | Heuristic drain detection from balance deltas. |
114
- | `toAgentError()` | Convert any error to structured `AgentError` with category, retryable flag, and recovery actions. |
136
+ ### Safety presets (`SAFETY_PRESETS`) — v0.9.0
115
137
 
116
- ### Formatting Display helpers (11 functions)
138
+ Orthogonal to the use-case presets. Picks safe defaults for timelock and caps without prescribing a use case:
117
139
 
118
- | Export | Description |
119
- |--------|-------------|
120
- | `formatUsd()` | `$1,234.56` with full precision |
121
- | `formatUsdCompact()` | `$1.2M`, `$500K` |
122
- | `formatPercent()` | `12.34%` |
123
- | `formatDuration()` | `1d 2h 3m` |
124
- | `formatAddress()` | `4ZeV...wrHL` |
125
- | `formatTokenAmount()` | `1,000.000000 USDC` |
140
+ - `development` 30-min timelock, $100/agent, $500/day. Safe for devnet / CI.
141
+ - `production` — 24-hour timelock, caps explicitly `null`. You must supply real values via `applySafetyPreset("production", { ... })` — the SDK will throw if you try to use an unfilled production preset with `createVault`.
126
142
 
127
- Plus: `formatUsdSigned`, `formatPercentSigned`, `formatRelativeTime`, `formatTimeUntil`, `formatTokenAmountCompact`.
143
+ Compose them:
128
144
 
129
- ### Presets — Vault templates
145
+ ```ts
146
+ import { createVault, VAULT_PRESETS, applySafetyPreset } from "@usesigil/kit";
130
147
 
131
- 4 pre-configured vault templates for common use cases:
148
+ const presetFields = VAULT_PRESETS["jupiter-swap-bot"];
149
+ const safety = applySafetyPreset("production", {
150
+ spendingLimitUsd: 1_000_000_000n, // $1,000 per agent
151
+ dailySpendingCapUsd: 10_000_000_000n, // $10,000 vault-wide
152
+ });
153
+ await createVault({
154
+ rpc, network: "mainnet", owner, agent,
155
+ ...presetFields,
156
+ ...safety,
157
+ });
158
+ ```
132
159
 
133
- | Preset | Permissions | Daily Cap | Slippage |
134
- |--------|------------|-----------|----------|
135
- | `jupiter-swap-bot` | Swap only | $500 | 2% |
136
- | `perps-trader` | Perps + Swap | $5,000 | 5% |
137
- | `lending-optimizer` | Deposit/Withdraw | $2,000 | 1% |
138
- | `full-access` | All 21 actions | $10,000 | 5% |
160
+ ---
139
161
 
140
- ```typescript
141
- import { getPreset, presetToCreateVaultFields } from "@usesigil/kit";
162
+ ## Jupiter integration
142
163
 
143
- const preset = getPreset("jupiter-swap-bot");
144
- const fields = presetToCreateVaultFields(preset);
145
- ```
164
+ `@usesigil/kit` does not wrap Jupiter. Use the official [`@jup-ag/api`](https://www.npmjs.com/package/@jup-ag/api) client to build swap instructions, then pipe the `Instruction[]` through `seal()`:
146
165
 
147
- ### HTTP 402 Payments (x402)
166
+ ```ts
167
+ import { createJupiterApiClient } from "@jup-ag/api";
168
+ import { seal } from "@usesigil/kit";
148
169
 
149
- Sigil supports the [x402 standard](https://www.x402.org/) for automatic HTTP 402 payment negotiation on Solana. Use `shieldedFetch()` to handle payment-required responses transparently — spending limits and vault policies are enforced on every payment.
170
+ const jupiter = createJupiterApiClient();
171
+ const { swapTransaction, addressLookupTableAddresses } = await jupiter.swapPost(
172
+ { quoteResponse, userPublicKey: vault },
173
+ );
150
174
 
151
- ```typescript
152
- import { shieldedFetch, createShieldedFetch } from "@usesigil/kit/x402";
175
+ // Extract instructions from the serialized swapTransaction (helper omitted
176
+ // for brevity decode with @solana/kit's `getCompiledTransactionMessageDecoder`
177
+ // then convert each CompiledInstruction to the Kit Instruction shape).
178
+ const jupiterIxs: Instruction[] = decodeSwapInstructions(swapTransaction);
153
179
 
154
- // One-shot: fetch a paywalled URL, auto-negotiate payment
155
- const response = await shieldedFetch(url, {
156
- vault, agent, rpc, network: "devnet",
157
- maxPaymentUsd: 1_000_000n, // $1 max per request
180
+ const sealed = await seal({
181
+ rpc, network: "devnet",
182
+ vault, agent: agentSigner,
183
+ instructions: jupiterIxs,
184
+ tokenMint: USDC_MINT_DEVNET,
185
+ amount: 10_000_000n, // $10 in base units
186
+ protocolAltAddresses: addressLookupTableAddresses, // rotate per-route
158
187
  });
159
-
160
- if (response.x402?.paid) {
161
- console.log(`Paid ${response.x402.amount} to ${response.x402.payTo}`);
162
- }
163
-
164
- // Reusable: create a pre-configured fetch function
165
- const fetch402 = createShieldedFetch({ vault, agent, rpc, network: "devnet" });
166
- const res = await fetch402("https://api.example.com/premium-data");
167
188
  ```
168
189
 
169
- The x402 subpath exports codec functions (header parsing), payment selectors, nonce tracking, amount validation, and 5 typed error classes (`X402ParseError`, `X402PaymentError`, `X402UnsupportedError`, `X402DestinationBlockedError`, `X402ReplayError`). See [INSTRUCTIONS.md](../docs/INSTRUCTIONS.md) for the full 12-step `shieldedFetch()` flow.
170
-
171
- ## Error Handling
190
+ Any Jupiter-supported protocol flows through the same path; Sigil treats the instructions opaquely and enforces policy on the account touches Jupiter actually makes.
172
191
 
173
- All errors from `wrap()` and `executeAndConfirm()` convert to structured `AgentError`:
192
+ ---
174
193
 
175
- ```typescript
176
- import { toAgentError } from "@usesigil/kit";
177
-
178
- try {
179
- await client.executeAndConfirm(instructions, opts);
180
- } catch (err) {
181
- const e = toAgentError(err);
182
- console.log(e.category); // "PERMISSION" | "SPENDING_CAP" | "INPUT_VALIDATION" | ...
183
- console.log(e.retryable); // boolean
184
- console.log(e.recovery_actions); // [{ action, description, tool? }]
185
- }
186
- ```
194
+ ## Subpath imports
187
195
 
188
- 10 error categories with recovery guidance. 71 on-chain error codes (6000-6070) mapped.
196
+ | Import | Use for |
197
+ |--------|---------|
198
+ | `@usesigil/kit` | Main API: `seal`, `SigilClient`, `createVault`, analytics, presets |
199
+ | `@usesigil/kit/errors` | The 49 `SIGIL_ERROR__*` code constants for `catch`-block narrowing |
200
+ | `@usesigil/kit/dashboard` | `OwnerClient` for vault management (reads + owner mutations) |
201
+ | `@usesigil/kit/x402` | HTTP 402 Payment Required helpers (`shieldedFetch`, payment parsing) |
202
+ | `@usesigil/kit/testing` | Mock RPCs and fixtures for unit tests |
203
+ | `@usesigil/kit/testing/devnet` | Devnet test harness (browser-incompatible — Node only) |
189
204
 
190
- ## Testing
191
-
192
- ```typescript
193
- // Browser-safe mocks (no node:fs, no @solana/web3.js)
194
- import { createMockRpc, createMockVaultState } from "@usesigil/kit/testing";
195
-
196
- // Real devnet helpers (Node-only)
197
- import { provisionVault, createDevnetRpc } from "@usesigil/kit/testing/devnet";
198
- ```
205
+ ---
199
206
 
200
- `@usesigil/kit/testing` provides mock factories for unit tests. `@usesigil/kit/testing/devnet` provides real devnet helpers (vault provisioning, funded agents, USDC airdrops). The devnet subpath imports `node:fs` and `@solana/web3.js` — keep it out of browser bundles.
207
+ ## v0.8 v0.9 migration
201
208
 
202
- ## Examples
209
+ v0.9.0 is a breaking release. The headline changes:
203
210
 
204
- - [`examples/jupiter-swap.ts`](./examples/jupiter-swap.ts) Complete Jupiter V6 swap via Sigil with error handling and P&L tracking
211
+ 1. **`createVault` now requires three fields** that previously had silent defaults: `spendingLimitUsd`, `dailySpendingCapUsd`, `timelockDuration`. Set them explicitly or spread `SAFETY_PRESETS.development` / `applySafetyPreset("production", {...})`.
212
+ 2. **`SigilClient.create(config)` is the new preferred entry point** — it asserts the RPC's genesis hash matches the configured network. `new SigilClient(config)` is deprecated (removal in Sprint 2) and logs a warning.
213
+ 3. **49 `SIGIL_ERROR__*` constants moved from the root barrel** to the `./errors` subpath. Update imports:
214
+ ```diff
215
+ - import { SIGIL_ERROR__SDK__CAP_EXCEEDED } from "@usesigil/kit";
216
+ + import { SIGIL_ERROR__SDK__CAP_EXCEEDED } from "@usesigil/kit/errors";
217
+ ```
218
+ 4. **Root barrel lost ~325 exports** (Codama instruction builders, event/struct types, hex error constants). Consumers who imported generated internals should migrate to `seal()` / `createVault()` / `OwnerClient`. Account decoders stay at root.
219
+ 5. **Structured logger replaces `console.warn`** inside the SDK. Pass `logger: createConsoleLogger()` to `SigilClient.create()` (or your preferred logger matching the `SigilLogger` interface) to receive diagnostic output.
205
220
 
206
- ## Links
221
+ See `CHANGELOG.md` and the upgrade checklist for every grep you need to run.
207
222
 
208
- - [GitHub](https://github.com/Sigil-Trade/sigil)
209
- - [npm](https://www.npmjs.com/package/@usesigil/kit)
210
- - [Issues](https://github.com/Sigil-Trade/sigil/issues)
223
+ ---
211
224
 
212
225
  ## License
213
226
 
214
- Apache-2.0
227
+ Apache-2.0. Copyright 2024-2026 Kaleb Rupe.
@@ -29,10 +29,12 @@ export declare const EXPECTED_ALT_CONTENTS_DEVNET: Address[];
29
29
  /**
30
30
  * Expected contents of the mainnet Sigil ALT.
31
31
  * Uses mainnet mints; treasury is the same across networks.
32
- * TODO: Add TREASURY_USDC_ATA_MAINNET and TREASURY_USDT_ATA_MAINNET
33
- * after deploying and extending the mainnet ALT. Derive from:
32
+ *
33
+ * Pre-mainnet task: extend this array with TREASURY_USDC_ATA_MAINNET and
34
+ * TREASURY_USDT_ATA_MAINNET after deploying the mainnet ALT. Derive via:
34
35
  * getAssociatedTokenAddress(USDC_MINT_MAINNET, PROTOCOL_TREASURY, true)
35
36
  * getAssociatedTokenAddress(USDT_MINT_MAINNET, PROTOCOL_TREASURY, true)
37
+ * Tracked alongside mainnet deployment checklist (D3 — upgrade authority transfer).
36
38
  */
37
39
  export declare const EXPECTED_ALT_CONTENTS_MAINNET: Address[];
38
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"alt-config.d.ts","sourceRoot":"","sources":["../src/alt-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAW1C,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,EACuB,OAAO,CAAC;AAE5D,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,EAAyC,OAAO,CAAC;AAU/E;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAQ5D;AAYD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,OAAO,EAQjD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,EAAE,OAAO,EAMlD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAIlE"}
1
+ {"version":3,"file":"alt-config.d.ts","sourceRoot":"","sources":["../src/alt-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAW1C,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,EACuB,OAAO,CAAC;AAE5D,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,EAAyC,OAAO,CAAC;AAU/E;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAQ5D;AAYD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,OAAO,EAQjD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,EAAE,OAAO,EAMlD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAIlE"}
@@ -54,10 +54,12 @@ export const EXPECTED_ALT_CONTENTS_DEVNET = [
54
54
  /**
55
55
  * Expected contents of the mainnet Sigil ALT.
56
56
  * Uses mainnet mints; treasury is the same across networks.
57
- * TODO: Add TREASURY_USDC_ATA_MAINNET and TREASURY_USDT_ATA_MAINNET
58
- * after deploying and extending the mainnet ALT. Derive from:
57
+ *
58
+ * Pre-mainnet task: extend this array with TREASURY_USDC_ATA_MAINNET and
59
+ * TREASURY_USDT_ATA_MAINNET after deploying the mainnet ALT. Derive via:
59
60
  * getAssociatedTokenAddress(USDC_MINT_MAINNET, PROTOCOL_TREASURY, true)
60
61
  * getAssociatedTokenAddress(USDT_MINT_MAINNET, PROTOCOL_TREASURY, true)
62
+ * Tracked alongside mainnet deployment checklist (D3 — upgrade authority transfer).
61
63
  */
62
64
  export const EXPECTED_ALT_CONTENTS_MAINNET = [
63
65
  USDC_MINT_MAINNET,
@@ -1 +1 @@
1
- {"version":3,"file":"alt-config.js","sourceRoot":"","sources":["../src/alt-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAE/E,sGAAsG;AACtG,MAAM,CAAC,MAAM,gBAAgB,GAC3B,8CAAyD,CAAC;AAE5D,qDAAqD;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,kCAA6C,CAAC;AAE/E,0DAA0D;AAC1D,MAAM,mBAAmB,GACvB,6CAAwD,CAAC;AAC3D,MAAM,YAAY,GAAG,6CAAwD,CAAC;AAE9E,iFAAiF;AACjF,MAAM,eAAe,GAAG,kCAA6C,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC;IAClD,IAAI,iBAAiB,KAAK,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAEhF,qFAAqF;AACrF,MAAM,wBAAwB,GAC5B,8CAAyD,CAAC;AAE5D,qFAAqF;AACrF,MAAM,wBAAwB,GAC5B,8CAAyD,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAc;IACrD,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,YAAY;IACZ,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAc;IACtD,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,YAAY;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,6BAA6B,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"alt-config.js","sourceRoot":"","sources":["../src/alt-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAE/E,sGAAsG;AACtG,MAAM,CAAC,MAAM,gBAAgB,GAC3B,8CAAyD,CAAC;AAE5D,qDAAqD;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,kCAA6C,CAAC;AAE/E,0DAA0D;AAC1D,MAAM,mBAAmB,GACvB,6CAAwD,CAAC;AAC3D,MAAM,YAAY,GAAG,6CAAwD,CAAC;AAE9E,iFAAiF;AACjF,MAAM,eAAe,GAAG,kCAA6C,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC;IAClD,IAAI,iBAAiB,KAAK,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAEhF,qFAAqF;AACrF,MAAM,wBAAwB,GAC5B,8CAAyD,CAAC;AAE5D,qFAAqF;AACrF,MAAM,wBAAwB,GAC5B,8CAAyD,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAc;IACrD,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,YAAY;IACZ,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAc;IACtD,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,YAAY;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,6BAA6B,CAAC;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"alt-loader.d.ts","sourceRoot":"","sources":["../src/alt-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,kBAAkB,CAAC;AAa1B,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAK5C;;;;;OAKG;IACG,OAAO,CACX,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,YAAY,EAAE,OAAO,EAAE,GACtB,OAAO,CAAC,6BAA6B,CAAC;IAyDzC;;;OAGG;IACH,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,SAAS;IAM9D,gCAAgC;IAChC,UAAU,IAAI,IAAI;CAGnB;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EACjB,YAAY,CAAC,EAAE,OAAO,EAAE,GACvB,OAAO,EAAE,CAoBX;AAID;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,6BAA6B,EACvC,eAAe,EAAE,OAAO,EACxB,gBAAgB,EAAE,OAAO,EAAE,GAC1B,IAAI,CAyBN"}
1
+ {"version":3,"file":"alt-loader.d.ts","sourceRoot":"","sources":["../src/alt-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,kBAAkB,CAAC;AAc1B,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAK5C;;;;;OAKG;IACG,OAAO,CACX,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,YAAY,EAAE,OAAO,EAAE,GACtB,OAAO,CAAC,6BAA6B,CAAC;IAyDzC;;;OAGG;IACH,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,SAAS;IAM9D,gCAAgC;IAChC,UAAU,IAAI,IAAI;CAGnB;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EACjB,YAAY,CAAC,EAAE,OAAO,EAAE,GACvB,OAAO,EAAE,CAoBX;AAID;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,6BAA6B,EACvC,eAAe,EAAE,OAAO,EACxB,gBAAgB,EAAE,OAAO,EAAE,GAC1B,IAAI,CAyBN"}
@@ -8,6 +8,7 @@
8
8
  * - Deduplication when merging Sigil + protocol ALTs
9
9
  */
10
10
  import { fetchAddressesForLookupTables, } from "./kit-adapter.js";
11
+ import { getSigilModuleLogger } from "./logger.js";
11
12
  import { SigilSdkDomainError } from "./errors/sdk.js";
12
13
  import { SIGIL_ERROR__SDK__ALT_INTEGRITY } from "./errors/codes.js";
13
14
  // ─── AltCache ─────────────────────────────────────────────────────────────────
@@ -69,7 +70,7 @@ export class AltCache {
69
70
  catch (e) {
70
71
  // S-4: Graceful degradation — return whatever we have from cache
71
72
  // The composer works without ALTs; transactions just may be larger
72
- console.warn("[AltCache] ALT fetch failed, proceeding without:", e instanceof Error ? e.message : e);
73
+ getSigilModuleLogger().warn("[AltCache] ALT fetch failed, proceeding without", { error: e instanceof Error ? e.message : String(e) });
73
74
  }
74
75
  }
75
76
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"alt-loader.js","sourceRoot":"","sources":["../src/alt-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alt-loader.js","sourceRoot":"","sources":["../src/alt-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,6BAA6B,GAE9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEpE,iFAAiF;AAEjF,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,YAAY;AAO5C,MAAM,OAAO,QAAQ;IACX,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;IAClC,KAAK,CAAS;IACd,OAAO,CAAS;IAEjC,YAAY,KAAc,EAAE,OAAgB;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,cAAc,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,GAAsB,EACtB,YAAuB;QAEvB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAkC,EAAE,CAAC;QAEjD,2BAA2B;QAC3B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAc,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBACnC,oBAAoB;gBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,6BAA6B,CACjD,QAAQ,EACR,GAA0D,CAC3D,CAAC;gBAEF,qCAAqC;gBACrC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3D,MAAM,UAAU,GAAe;wBAC7B,IAAI,EAAE,EAAE,CAAC,OAAkB,CAAC,EAAE,SAAS,EAAE;wBACzC,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK;qBAC5B,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACtC,CAAC;gBAED,iEAAiE;gBACjE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;oBAC9C,IAAI,MAAM,KAAK,SAAS;wBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;wBAC/C,MAAM;gBACb,CAAC;gBAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,iEAAiE;gBACjE,mEAAmE;gBACnE,oBAAoB,EAAE,CAAC,IAAI,CACzB,iDAAiD,EACjD,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACtD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,UAAmB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAoB,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC;QAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,gCAAgC;IAChC,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAiB,EACjB,YAAwB;IAExB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,kBAAkB;IAClB,IAAI,CAAC,GAAG,CAAC,QAAkB,CAAC,CAAC;IAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtB,mDAAmD;IACnD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,GAAa,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAuC,EACvC,eAAwB,EACxB,gBAA2B;IAE3B,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,sEAAsE;QACtE,sEAAsE;QACtE,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAW,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAkB,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAC3B,+BAA+B,EAC/B,aAAa,eAAe,eAAe,OAAO,CAAC,MAAM,yBAAyB;YAChF,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACzB,2DAA2D,EAC7D,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -96,6 +96,13 @@ export declare class BalanceSnapshotStore {
96
96
  get size(): number;
97
97
  clear(): void;
98
98
  toJSON(): string;
99
+ /**
100
+ * Reconstruct a BalanceSnapshotStore from its JSON serialization.
101
+ *
102
+ * F12 fix (type-design-analyzer): wraps BigInt() calls in try/catch so
103
+ * corrupted JSON surfaces a domain-relevant error instead of raw
104
+ * SyntaxError from BigInt("not-a-number").
105
+ */
99
106
  static fromJSON(json: string): BalanceSnapshotStore;
100
107
  }
101
108
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"balance-tracker.d.ts","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5D,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,KAAK,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,kBAAkB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD,GAAG,QAAQ,CAiBX;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAgBD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BzB;AAID;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,iBAAiB,CAAgB;gBAE7B,UAAU,SAAM;IAI5B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAkB3D,WAAW,IAAI,eAAe,GAAG,IAAI;IAIrC,QAAQ,IAAI,eAAe,GAAG,IAAI;IAMlC,SAAS,IAAI,eAAe,GAAG,IAAI;IAMnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,MAAM;IAmBhB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;CA0BpD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,OAAwB,GAChC,UAAU,CAwBZ"}
1
+ {"version":3,"file":"balance-tracker.d.ts","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAQ5D,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,KAAK,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,kBAAkB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD,GAAG,QAAQ,CAiBX;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAgBD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BzB;AAID;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,iBAAiB,CAAgB;gBAE7B,UAAU,SAAM;IAI5B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAkB3D,WAAW,IAAI,eAAe,GAAG,IAAI;IAIrC,QAAQ,IAAI,eAAe,GAAG,IAAI;IAMlC,SAAS,IAAI,eAAe,GAAG,IAAI;IAMnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,MAAM;IAmBhB;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;CAsCpD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,OAAwB,GAChC,UAAU,CAwBZ"}
@@ -6,9 +6,10 @@
6
6
  * - `BalanceSnapshotStore` + `getBalancePnL()`: Session-scoped P&L from balance snapshots (for charts)
7
7
  */
8
8
  import { isStablecoinMint } from "./types.js";
9
+ import { computePnlPercent } from "./math-utils.js";
9
10
  import { resolveVaultStateForOwner } from "./state-resolver.js";
10
11
  import { resolveToken } from "./tokens.js";
11
- import { computeUtilizationPercent } from "./math-utils.js";
12
+ import { getSigilModuleLogger } from "./logger.js";
12
13
  // ─── On-chain P&L (lifetime) ────────────────────────────────────────────────
13
14
  /**
14
15
  * Pure P&L computation from an already-resolved vault state. No RPC.
@@ -23,7 +24,7 @@ export function getVaultPnLFromState(state) {
23
24
  const currentBalance = state.stablecoinBalances.usdc + state.stablecoinBalances.usdt;
24
25
  const netInvestment = totalDeposited - totalWithdrawn;
25
26
  const pnl = currentBalance - netInvestment;
26
- const pnlPercent = computeUtilizationPercent(pnl, netInvestment);
27
+ const pnlPercent = computePnlPercent(pnl, netInvestment);
27
28
  return {
28
29
  totalDeposited,
29
30
  totalWithdrawn,
@@ -146,26 +147,42 @@ export class BalanceSnapshotStore {
146
147
  maxEntries: this.maxEntries,
147
148
  });
148
149
  }
150
+ /**
151
+ * Reconstruct a BalanceSnapshotStore from its JSON serialization.
152
+ *
153
+ * F12 fix (type-design-analyzer): wraps BigInt() calls in try/catch so
154
+ * corrupted JSON surfaces a domain-relevant error instead of raw
155
+ * SyntaxError from BigInt("not-a-number").
156
+ */
149
157
  static fromJSON(json) {
150
158
  const data = JSON.parse(json);
151
159
  const maxEntries = Number.isInteger(data.maxEntries)
152
160
  ? data.maxEntries
153
161
  : 144;
154
162
  const store = new BalanceSnapshotStore(maxEntries);
163
+ const safeBigInt = (val, field) => {
164
+ try {
165
+ return BigInt(val);
166
+ }
167
+ catch {
168
+ getSigilModuleLogger().warn(`[@usesigil/kit/BalanceSnapshotStore.fromJSON] Failed to parse bigint for "${field}": ${String(val).slice(0, 50)} — using 0n`);
169
+ return 0n;
170
+ }
171
+ };
155
172
  if (data.baseline) {
156
173
  store.baseline = {
157
- timestamp: BigInt(data.baseline.timestamp),
174
+ timestamp: safeBigInt(data.baseline.timestamp, "baseline.timestamp"),
158
175
  balances: data.baseline.balances.map((b) => ({
159
176
  ...b,
160
- balance: BigInt(b.balance),
177
+ balance: safeBigInt(b.balance, "baseline.balance"),
161
178
  })),
162
179
  };
163
180
  }
164
- for (const snap of data.snapshots) {
165
- const ts = BigInt(snap.timestamp);
166
- const bals = snap.balances.map((b) => ({
181
+ for (const snap of data.snapshots ?? []) {
182
+ const ts = safeBigInt(snap.timestamp, "snapshot.timestamp");
183
+ const bals = (snap.balances ?? []).map((b) => ({
167
184
  ...b,
168
- balance: BigInt(b.balance),
185
+ balance: safeBigInt(b.balance, "snapshot.balance"),
169
186
  }));
170
187
  store.snapshots.set(ts, bals);
171
188
  store.orderedTimestamps.push(ts);
@@ -194,7 +211,7 @@ export function getBalancePnL(store, network = "mainnet-beta") {
194
211
  const startBalance = sumStablecoins(baseline.balances);
195
212
  const currentBalance = sumStablecoins(latest.balances);
196
213
  const delta = currentBalance - startBalance;
197
- const percentChange = computeUtilizationPercent(delta, startBalance);
214
+ const percentChange = computePnlPercent(delta, startBalance);
198
215
  return { startBalance, currentBalance, delta, percentChange };
199
216
  }
200
217
  //# sourceMappingURL=balance-tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"balance-tracker.js","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"balance-tracker.js","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"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"}