@usesigil/kit 0.8.1 → 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.
- package/README.md +157 -184
- package/dist/alt-config.d.ts +4 -2
- package/dist/alt-config.d.ts.map +1 -1
- package/dist/alt-config.js +4 -2
- package/dist/alt-config.js.map +1 -1
- package/dist/alt-loader.d.ts.map +1 -1
- package/dist/alt-loader.js +2 -1
- package/dist/alt-loader.js.map +1 -1
- package/dist/balance-tracker.d.ts.map +1 -1
- package/dist/balance-tracker.js +2 -1
- package/dist/balance-tracker.js.map +1 -1
- package/dist/create-vault.d.ts +40 -3
- package/dist/create-vault.d.ts.map +1 -1
- package/dist/create-vault.js +45 -7
- package/dist/create-vault.js.map +1 -1
- package/dist/dashboard/discover.d.ts.map +1 -1
- package/dist/dashboard/discover.js +2 -1
- package/dist/dashboard/discover.js.map +1 -1
- package/dist/dashboard/from-json.d.ts +1 -0
- package/dist/dashboard/from-json.d.ts.map +1 -1
- package/dist/dashboard/from-json.js +3 -1
- package/dist/dashboard/from-json.js.map +1 -1
- package/dist/dashboard/mutations.d.ts.map +1 -1
- package/dist/dashboard/mutations.js +2 -1
- package/dist/dashboard/mutations.js.map +1 -1
- package/dist/dashboard/reads.d.ts.map +1 -1
- package/dist/dashboard/reads.js +5 -4
- package/dist/dashboard/reads.js.map +1 -1
- package/dist/errors/public.d.ts +24 -0
- package/dist/errors/public.d.ts.map +1 -0
- package/dist/errors/public.js +30 -0
- package/dist/errors/public.js.map +1 -0
- package/dist/errors/walk.d.ts.map +1 -1
- package/dist/errors/walk.js +2 -1
- package/dist/errors/walk.js.map +1 -1
- package/dist/helpers/ata.d.ts +73 -0
- package/dist/helpers/ata.d.ts.map +1 -0
- package/dist/helpers/ata.js +107 -0
- package/dist/helpers/ata.js.map +1 -0
- package/dist/helpers/parse-usd.d.ts +43 -0
- package/dist/helpers/parse-usd.d.ts.map +1 -0
- package/dist/helpers/parse-usd.js +81 -0
- package/dist/helpers/parse-usd.js.map +1 -0
- package/dist/helpers/validate-cap-aggregate.d.ts +41 -0
- package/dist/helpers/validate-cap-aggregate.d.ts.map +1 -0
- package/dist/helpers/validate-cap-aggregate.js +61 -0
- package/dist/helpers/validate-cap-aggregate.js.map +1 -0
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +77 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +153 -0
- package/dist/logger.js.map +1 -0
- package/dist/presets.d.ts +73 -6
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +75 -6
- package/dist/presets.js.map +1 -1
- package/dist/priority-fees.d.ts.map +1 -1
- package/dist/priority-fees.js +3 -2
- package/dist/priority-fees.js.map +1 -1
- package/dist/seal.d.ts +85 -6
- package/dist/seal.d.ts.map +1 -1
- package/dist/seal.js +199 -9
- package/dist/seal.js.map +1 -1
- package/dist/shield.d.ts.map +1 -1
- package/dist/shield.js +8 -7
- package/dist/shield.js.map +1 -1
- package/dist/tee/verify.d.ts.map +1 -1
- package/dist/tee/verify.js +6 -5
- package/dist/tee/verify.js.map +1 -1
- package/dist/transaction-executor.d.ts.map +1 -1
- package/dist/transaction-executor.js +3 -2
- package/dist/transaction-executor.js.map +1 -1
- package/dist/x402/shielded-fetch.d.ts.map +1 -1
- package/dist/x402/shielded-fetch.js +7 -4
- package/dist/x402/shielded-fetch.js.map +1 -1
- 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
|
|
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
|
|
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,243 +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
|
-
|
|
57
|
+
Provision a vault and execute your first agent-authorized swap:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
18
60
|
import {
|
|
19
|
-
SigilClient,
|
|
20
61
|
createAndSendVault,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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.
|
|
29
|
-
const
|
|
30
|
-
|
|
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,
|
|
34
|
-
agent,
|
|
35
|
-
|
|
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.
|
|
40
|
-
const client =
|
|
78
|
+
// 2. Agent opens an async client with genesis-hash verification.
|
|
79
|
+
const client = await SigilClient.create({
|
|
41
80
|
rpc,
|
|
42
|
-
vault:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
## Architecture
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
Transaction = [validate_and_authorize, ...defiInstructions, finalize_session]
|
|
66
|
-
```
|
|
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.
|
|
67
96
|
|
|
68
|
-
|
|
97
|
+
---
|
|
69
98
|
|
|
70
|
-
##
|
|
99
|
+
## Security boundary
|
|
71
100
|
|
|
72
|
-
|
|
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`)
|
|
73
108
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
| `buildOwnerTransaction()` | Compose owner-only transactions (policy updates, agent management). |
|
|
81
|
-
| `withVault()` | Policy-guided vault creation — policies in, wrapped client out. |
|
|
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
|
|
82
115
|
|
|
83
|
-
|
|
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 trust — simulation is a hint, not a guarantee; on-chain enforcement is the source of truth
|
|
119
|
+
- Replay prevention outside a session — agents must start a new session per transaction
|
|
84
120
|
|
|
85
|
-
|
|
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. |
|
|
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.
|
|
92
122
|
|
|
93
|
-
|
|
123
|
+
---
|
|
94
124
|
|
|
95
|
-
|
|
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. |
|
|
125
|
+
## Configuration presets
|
|
104
126
|
|
|
105
|
-
|
|
127
|
+
### Use-case presets (`VAULT_PRESETS`)
|
|
106
128
|
|
|
107
|
-
|
|
129
|
+
Starting templates for specific agent roles. Each sets capability, allowlist, slippage, and caps appropriate for the use case:
|
|
108
130
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
| `detectDrainAttempt()` | Heuristic drain detection from balance deltas. |
|
|
114
|
-
| `toAgentError()` | Convert any error to structured `AgentError` with category, retryable flag, and recovery actions. |
|
|
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
|
|
115
135
|
|
|
116
|
-
###
|
|
136
|
+
### Safety presets (`SAFETY_PRESETS`) — v0.9.0
|
|
117
137
|
|
|
118
|
-
|
|
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` |
|
|
138
|
+
Orthogonal to the use-case presets. Picks safe defaults for timelock and caps without prescribing a use case:
|
|
126
139
|
|
|
127
|
-
|
|
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`.
|
|
128
142
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
4 pre-configured vault templates for common use cases:
|
|
132
|
-
|
|
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% |
|
|
139
|
-
|
|
140
|
-
```typescript
|
|
141
|
-
import { getPreset, presetToCreateVaultFields } from "@usesigil/kit";
|
|
142
|
-
|
|
143
|
-
const preset = getPreset("jupiter-swap-bot");
|
|
144
|
-
const fields = presetToCreateVaultFields(preset);
|
|
145
|
-
```
|
|
143
|
+
Compose them:
|
|
146
144
|
|
|
147
|
-
|
|
145
|
+
```ts
|
|
146
|
+
import { createVault, VAULT_PRESETS, applySafetyPreset } from "@usesigil/kit";
|
|
148
147
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
rpc,
|
|
159
|
-
network: "devnet",
|
|
160
|
-
maxPaymentUsd: 1_000_000n, // $1 max per request
|
|
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,
|
|
161
157
|
});
|
|
162
|
-
|
|
163
|
-
if (response.x402?.paid) {
|
|
164
|
-
console.log(`Paid ${response.x402.amount} to ${response.x402.payTo}`);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Reusable: create a pre-configured fetch function
|
|
168
|
-
const fetch402 = createShieldedFetch({ vault, agent, rpc, network: "devnet" });
|
|
169
|
-
const res = await fetch402("https://api.example.com/premium-data");
|
|
170
158
|
```
|
|
171
159
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
## Branded Types
|
|
175
|
-
|
|
176
|
-
All USD amounts, capability tiers, and slot numbers are branded bigint types that prevent accidental misuse at compile time:
|
|
177
|
-
|
|
178
|
-
```typescript
|
|
179
|
-
import {
|
|
180
|
-
usd,
|
|
181
|
-
capability,
|
|
182
|
-
slot,
|
|
183
|
-
type UsdBaseUnits,
|
|
184
|
-
type CapabilityTier,
|
|
185
|
-
} from "@usesigil/kit";
|
|
186
|
-
|
|
187
|
-
const cap: UsdBaseUnits = usd(500_000_000n); // $500
|
|
188
|
-
const tier: CapabilityTier = capability(2n); // Operator
|
|
160
|
+
---
|
|
189
161
|
|
|
190
|
-
|
|
191
|
-
// addAgent(agent, cap, tier); // cap and tier swapped → compile error
|
|
192
|
-
addAgent(agent, tier, cap); // correct order → compiles
|
|
193
|
-
```
|
|
162
|
+
## Jupiter integration
|
|
194
163
|
|
|
195
|
-
|
|
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()`:
|
|
196
165
|
|
|
197
|
-
|
|
166
|
+
```ts
|
|
167
|
+
import { createJupiterApiClient } from "@jup-ag/api";
|
|
168
|
+
import { seal } from "@usesigil/kit";
|
|
198
169
|
|
|
199
|
-
|
|
170
|
+
const jupiter = createJupiterApiClient();
|
|
171
|
+
const { swapTransaction, addressLookupTableAddresses } = await jupiter.swapPost(
|
|
172
|
+
{ quoteResponse, userPublicKey: vault },
|
|
173
|
+
);
|
|
200
174
|
|
|
201
|
-
|
|
202
|
-
|
|
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);
|
|
203
179
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
|
187
|
+
});
|
|
207
188
|
```
|
|
208
189
|
|
|
209
|
-
|
|
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.
|
|
210
191
|
|
|
211
|
-
|
|
192
|
+
---
|
|
212
193
|
|
|
213
|
-
|
|
194
|
+
## Subpath imports
|
|
214
195
|
|
|
215
|
-
|
|
216
|
-
|
|
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) |
|
|
217
204
|
|
|
218
|
-
|
|
219
|
-
await client.executeAndConfirm(instructions, opts);
|
|
220
|
-
} catch (err) {
|
|
221
|
-
const e = toAgentError(err);
|
|
222
|
-
console.log(e.category); // "PERMISSION" | "SPENDING_CAP" | "INPUT_VALIDATION" | ...
|
|
223
|
-
console.log(e.retryable); // boolean
|
|
224
|
-
console.log(e.recovery_actions); // [{ action, description, tool? }]
|
|
225
|
-
}
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
10 error categories with recovery guidance. 71 on-chain error codes (6000-6070) mapped.
|
|
229
|
-
|
|
230
|
-
## Testing
|
|
231
|
-
|
|
232
|
-
```typescript
|
|
233
|
-
// Browser-safe mocks (no node:fs, no @solana/web3.js)
|
|
234
|
-
import { createMockRpc, createMockVaultState } from "@usesigil/kit/testing";
|
|
235
|
-
|
|
236
|
-
// Real devnet helpers (Node-only)
|
|
237
|
-
import { provisionVault, createDevnetRpc } from "@usesigil/kit/testing/devnet";
|
|
238
|
-
```
|
|
205
|
+
---
|
|
239
206
|
|
|
240
|
-
|
|
207
|
+
## v0.8 → v0.9 migration
|
|
241
208
|
|
|
242
|
-
|
|
209
|
+
v0.9.0 is a breaking release. The headline changes:
|
|
243
210
|
|
|
244
|
-
|
|
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.
|
|
245
220
|
|
|
246
|
-
|
|
221
|
+
See `CHANGELOG.md` and the upgrade checklist for every grep you need to run.
|
|
247
222
|
|
|
248
|
-
|
|
249
|
-
- [npm](https://www.npmjs.com/package/@usesigil/kit)
|
|
250
|
-
- [Issues](https://github.com/Sigil-Trade/sigil/issues)
|
|
223
|
+
---
|
|
251
224
|
|
|
252
225
|
## License
|
|
253
226
|
|
|
254
|
-
Apache-2.0
|
|
227
|
+
Apache-2.0. Copyright 2024-2026 Kaleb Rupe.
|
package/dist/alt-config.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
33
|
-
*
|
|
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
|
/**
|
package/dist/alt-config.d.ts.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/alt-config.js
CHANGED
|
@@ -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
|
-
*
|
|
58
|
-
*
|
|
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,
|
package/dist/alt-config.js.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/alt-loader.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/alt-loader.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/dist/alt-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,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,
|
|
1
|
+
{"version":3,"file":"alt-loader.js","sourceRoot":"","sources":["../src/alt-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/balance-tracker.js
CHANGED
|
@@ -9,6 +9,7 @@ import { isStablecoinMint } from "./types.js";
|
|
|
9
9
|
import { computePnlPercent } from "./math-utils.js";
|
|
10
10
|
import { resolveVaultStateForOwner } from "./state-resolver.js";
|
|
11
11
|
import { resolveToken } from "./tokens.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.
|
|
@@ -164,7 +165,7 @@ export class BalanceSnapshotStore {
|
|
|
164
165
|
return BigInt(val);
|
|
165
166
|
}
|
|
166
167
|
catch {
|
|
167
|
-
|
|
168
|
+
getSigilModuleLogger().warn(`[@usesigil/kit/BalanceSnapshotStore.fromJSON] Failed to parse bigint for "${field}": ${String(val).slice(0, 50)} — using 0n`);
|
|
168
169
|
return 0n;
|
|
169
170
|
}
|
|
170
171
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance-tracker.js","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,gBAAgB,EAAgB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"balance-tracker.js","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"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"}
|