@zanii/insurance 0.1.1 → 0.1.3

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 CHANGED
@@ -52,3 +52,7 @@ looks safer than it is — thin or stale history is flagged, not rewarded, and a
52
52
  underwriter must treat uncovered activity as unknown risk. Cryptography verifies
53
53
  attestations, not reality: a proven incident receipt shows what was recorded, not
54
54
  everything that happened.
55
+
56
+ ## Changelog
57
+
58
+ - **0.1.3** — Products on proven facts: parametric `triggerFact` / `parametricTriggered`, `riskLevelMix` and `usageBasedPremium` at the insurer's rates, `lossRun`, `reinsuranceBordereau`, `subrogationPack` (third parties from two-party and team receipts), recurring `warrantyCompliance`, `accumulation` on shared models or providers, `productLiabilityEvidence` and signed per-transaction `embeddedCover` notes. Facts and arithmetic; the insurer prices.
package/dist/index.d.ts CHANGED
@@ -149,4 +149,5 @@ export interface ClaimAssessment {
149
149
  * incidents without valid evidence land in `unproven`.
150
150
  */
151
151
  export declare function assessClaim(claim: Claim | undefined, policy: Policy, evidence?: Record<string, IncidentEvidence>): ClaimAssessment;
152
+ export * from './products.js';
152
153
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -244,4 +244,5 @@ export function assessClaim(claim, policy, evidence = {}) {
244
244
  }
245
245
  return { ok: reasons.length === 0, reasons, proven, unproven };
246
246
  }
247
+ export * from './products.js';
247
248
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Insurance products on proven facts: parametric triggers, usage-based premiums from the
3
+ * risk mix of actions, loss runs, reinsurance bordereaux, subrogation packs, warranty
4
+ * checks, accumulation by shared model or provider, product-liability evidence and per-
5
+ * transaction cover. Zanii states facts and computes with the insurer's rates; the insurer
6
+ * prices. Integer minor units throughout.
7
+ */
8
+ import { type SignedObject } from '@zanii/core';
9
+ import { type Money } from '@zanii/payments';
10
+ import { type Claim, type Policy } from './index.js';
11
+ type Receipt = {
12
+ target?: string;
13
+ risk?: string;
14
+ ts?: string;
15
+ agent_id?: string;
16
+ body?: {
17
+ target?: string;
18
+ ts?: string;
19
+ };
20
+ type?: string;
21
+ [k: string]: unknown;
22
+ };
23
+ export type TriggerFact = SignedObject<{
24
+ v: 1;
25
+ type: 'insurance.trigger';
26
+ policy: string;
27
+ event: string;
28
+ value: string;
29
+ ts: string;
30
+ }>;
31
+ /** A trusted source attests the event a parametric cover pays on (an outage, a verified equivocation, a weather index). */
32
+ export declare function triggerFact(input: {
33
+ policy: string;
34
+ event: string;
35
+ value: string;
36
+ ts?: string;
37
+ }, sourcePrivateKey: Uint8Array): TriggerFact;
38
+ /** Pays automatically: a trusted source signed the trigger event for this policy, inside its period. */
39
+ export declare function parametricTriggered(policy: Policy, fact: TriggerFact, trigger: {
40
+ event: string;
41
+ value: string;
42
+ trustedSources: string[];
43
+ }): {
44
+ pay: boolean;
45
+ reasons: string[];
46
+ amount: Money | null;
47
+ };
48
+ /** How the insured agent's actions split across risk levels, and how many carry no label. */
49
+ export declare function riskLevelMix(receipts: Receipt[]): {
50
+ actions: number;
51
+ mix: Record<string, number>;
52
+ unlabelledShare: number;
53
+ };
54
+ /**
55
+ * A premium from verified activity at the insurer's per-action rates. Unlabelled actions
56
+ * are charged at the rate the insurer sets for them (usually the high rate).
57
+ */
58
+ export declare function usageBasedPremium(receipts: Receipt[], rates: {
59
+ currency: string;
60
+ low: number;
61
+ medium: number;
62
+ high: number;
63
+ critical: number;
64
+ unlabelled: number;
65
+ }): {
66
+ premium: Money;
67
+ lines: {
68
+ level: string;
69
+ actions: number;
70
+ rate_minor: number;
71
+ }[];
72
+ basis: string;
73
+ };
74
+ /** Claims and payments per period, for renewal. */
75
+ export declare function lossRun(entries: Array<{
76
+ claim: Claim;
77
+ paid_minor?: string;
78
+ }>): {
79
+ year: string;
80
+ claims: number;
81
+ paid_minor: string;
82
+ }[];
83
+ /** The portfolio listing a reinsurer expects: one row per policy, plus totals. */
84
+ export declare function reinsuranceBordereau(policies: Policy[]): {
85
+ rows: {
86
+ policy: string;
87
+ subject: string;
88
+ start: string;
89
+ end: string;
90
+ limit_minor: string;
91
+ premium_minor: string;
92
+ currency: string;
93
+ scopes: string[];
94
+ }[];
95
+ totals: {
96
+ policies: number;
97
+ limit_minor: string;
98
+ premium_minor: string;
99
+ };
100
+ };
101
+ /** For recovery: the other agents involved in the incidents (from two-party and team receipts). */
102
+ export declare function subrogationPack(claim: Claim, incidentReceipts: Receipt[], insured: string): {
103
+ claim: string;
104
+ thirdParties: string[];
105
+ incidents: {
106
+ target: string;
107
+ ts: string;
108
+ hash: string;
109
+ }[];
110
+ };
111
+ /** Warranties as evidence that must recur (e.g. a red-team report every 30 days, sealed keys at start). */
112
+ export declare function warrantyCompliance(warranties: Array<{
113
+ id: string;
114
+ target: string;
115
+ everyDays: number;
116
+ }>, receipts: Receipt[], period: {
117
+ start: string;
118
+ end: string;
119
+ }): {
120
+ id: string;
121
+ evidence: number;
122
+ maxGapDays: number;
123
+ met: boolean;
124
+ }[];
125
+ /**
126
+ * Accumulation: the share of total limits that rests on one shared dependency (a model, a
127
+ * cloud, a provider). A correlated failure there hits every policy at once.
128
+ */
129
+ export declare function accumulation(policies: Array<{
130
+ policy: Policy;
131
+ dependencies: string[];
132
+ }>, threshold?: number): {
133
+ dependency: string;
134
+ limit_minor: string;
135
+ share: number;
136
+ concentrated: boolean;
137
+ }[];
138
+ /** Evidence for a product-liability claim: which version and attested build ran, what it did, in order. */
139
+ export declare function productLiabilityEvidence(input: {
140
+ product: string;
141
+ version: string;
142
+ attestationHash?: string;
143
+ incidents: Receipt[];
144
+ }): {
145
+ product: string;
146
+ version: string;
147
+ attestation: string | null;
148
+ timeline: {
149
+ ts: string;
150
+ target: string;
151
+ risk: string | null;
152
+ hash: string;
153
+ }[];
154
+ };
155
+ export type CoverNote = SignedObject<{
156
+ v: 1;
157
+ type: 'insurance.cover_note';
158
+ transaction: string;
159
+ covered: Money;
160
+ premium: Money;
161
+ risk: string;
162
+ ts: string;
163
+ }>;
164
+ /** Cover for one transaction at checkout: premium = amount x the insurer's rate for its risk (basis points), signed by the insurer. */
165
+ export declare function embeddedCover(tx: {
166
+ id: string;
167
+ amount: Money;
168
+ risk: 'low' | 'medium' | 'high' | 'critical';
169
+ }, rate_bps: Record<string, number>, insurerPrivateKey: Uint8Array, ts?: string): CoverNote;
170
+ export {};
171
+ //# sourceMappingURL=products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Insurance products on proven facts: parametric triggers, usage-based premiums from the
3
+ * risk mix of actions, loss runs, reinsurance bordereaux, subrogation packs, warranty
4
+ * checks, accumulation by shared model or provider, product-liability evidence and per-
5
+ * transaction cover. Zanii states facts and computes with the insurer's rates; the insurer
6
+ * prices. Integer minor units throughout.
7
+ */
8
+ import { jcsHash, participantsOf, scopeCovers, signObject, verifySignedObject } from '@zanii/core';
9
+ import { formatMoney } from '@zanii/payments';
10
+ import { policyHash } from './index.js';
11
+ const money = (minor, currency) => ({ currency, minor: minor.toString(), display: `${formatMoney(minor, currency)} ${currency}` });
12
+ const targetOf = (r) => r.target ?? r.body?.target ?? '';
13
+ const tsOf = (r) => r.ts ?? r.body?.ts ?? '';
14
+ /** A trusted source attests the event a parametric cover pays on (an outage, a verified equivocation, a weather index). */
15
+ export function triggerFact(input, sourcePrivateKey) {
16
+ return signObject({ v: 1, type: 'insurance.trigger', ...input, ts: input.ts ?? new Date().toISOString() }, sourcePrivateKey);
17
+ }
18
+ /** Pays automatically: a trusted source signed the trigger event for this policy, inside its period. */
19
+ export function parametricTriggered(policy, fact, trigger) {
20
+ const reasons = [];
21
+ if (!verifySignedObject(fact) || !trigger.trustedSources.includes(fact.signer))
22
+ reasons.push('trigger is not from a trusted source');
23
+ if (fact.policy !== policyHash(policy))
24
+ reasons.push('trigger is for another policy');
25
+ if (fact.event !== trigger.event || fact.value !== trigger.value)
26
+ reasons.push(`expected ${trigger.event}=${trigger.value}`);
27
+ if (fact.ts < policy.body.period.start || fact.ts > policy.body.period.end)
28
+ reasons.push('trigger is outside the policy period');
29
+ return { pay: reasons.length === 0, reasons, amount: reasons.length ? null : policy.body.coverage_limit };
30
+ }
31
+ /** How the insured agent's actions split across risk levels, and how many carry no label. */
32
+ export function riskLevelMix(receipts) {
33
+ const mix = { low: 0, medium: 0, high: 0, critical: 0, unlabelled: 0 };
34
+ for (const r of receipts)
35
+ mix[typeof r.risk === 'string' && r.risk in mix ? r.risk : 'unlabelled']++;
36
+ return { actions: receipts.length, mix, unlabelledShare: receipts.length ? mix.unlabelled / receipts.length : 0 };
37
+ }
38
+ /**
39
+ * A premium from verified activity at the insurer's per-action rates. Unlabelled actions
40
+ * are charged at the rate the insurer sets for them (usually the high rate).
41
+ */
42
+ export function usageBasedPremium(receipts, rates) {
43
+ const { mix } = riskLevelMix(receipts);
44
+ let total = 0n;
45
+ const lines = [];
46
+ for (const level of ['low', 'medium', 'high', 'critical', 'unlabelled']) {
47
+ const rate = rates[level];
48
+ if (!Number.isSafeInteger(rate) || rate < 0)
49
+ throw new Error(`insurance: rate for ${level} must be a non-negative integer (minor units)`);
50
+ total += BigInt(rate) * BigInt(mix[level]);
51
+ lines.push({ level, actions: mix[level], rate_minor: rate });
52
+ }
53
+ return { premium: money(total, rates.currency), lines, basis: jcsHash(receipts.map((r) => jcsHash(r))) };
54
+ }
55
+ /** Claims and payments per period, for renewal. */
56
+ export function lossRun(entries) {
57
+ const byYear = {};
58
+ for (const e of entries) {
59
+ const y = e.claim.body.ts.slice(0, 4);
60
+ const s = (byYear[y] ??= { claims: 0, paid_minor: 0n });
61
+ s.claims++;
62
+ s.paid_minor += BigInt(e.paid_minor ?? '0');
63
+ }
64
+ return Object.entries(byYear).sort(([a], [b]) => a.localeCompare(b)).map(([year, s]) => ({ year, claims: s.claims, paid_minor: s.paid_minor.toString() }));
65
+ }
66
+ /** The portfolio listing a reinsurer expects: one row per policy, plus totals. */
67
+ export function reinsuranceBordereau(policies) {
68
+ const rows = policies.map((p) => ({ policy: policyHash(p), subject: p.body.subject, start: p.body.period.start, end: p.body.period.end, limit_minor: p.body.coverage_limit.minor, premium_minor: p.body.premium.minor, currency: p.body.premium.currency, scopes: p.body.covered_scopes }));
69
+ const sum = (k) => rows.reduce((s, r) => s + BigInt(r[k]), 0n).toString();
70
+ return { rows, totals: { policies: rows.length, limit_minor: sum('limit_minor'), premium_minor: sum('premium_minor') } };
71
+ }
72
+ /** For recovery: the other agents involved in the incidents (from two-party and team receipts). */
73
+ export function subrogationPack(claim, incidentReceipts, insured) {
74
+ const others = new Set();
75
+ for (const r of incidentReceipts)
76
+ for (const p of participantsOf(r))
77
+ if (p !== insured)
78
+ others.add(p);
79
+ return { claim: jcsHash(claim), thirdParties: [...others], incidents: incidentReceipts.map((r) => ({ target: targetOf(r), ts: tsOf(r), hash: jcsHash(r) })) };
80
+ }
81
+ /** Warranties as evidence that must recur (e.g. a red-team report every 30 days, sealed keys at start). */
82
+ export function warrantyCompliance(warranties, receipts, period) {
83
+ return warranties.map((w) => {
84
+ const times = receipts.filter((r) => scopeCovers(w.target, targetOf(r)) && tsOf(r) >= period.start && tsOf(r) <= period.end).map(tsOf).sort();
85
+ const points = [period.start, ...times, period.end];
86
+ let maxGap = 0;
87
+ for (let i = 1; i < points.length; i++)
88
+ maxGap = Math.max(maxGap, (Date.parse(points[i]) - Date.parse(points[i - 1])) / 86_400_000);
89
+ return { id: w.id, evidence: times.length, maxGapDays: Math.round(maxGap), met: times.length > 0 && maxGap <= w.everyDays };
90
+ });
91
+ }
92
+ /**
93
+ * Accumulation: the share of total limits that rests on one shared dependency (a model, a
94
+ * cloud, a provider). A correlated failure there hits every policy at once.
95
+ */
96
+ export function accumulation(policies, threshold = 0.25) {
97
+ const total = policies.reduce((s, p) => s + BigInt(p.policy.body.coverage_limit.minor), 0n);
98
+ const by = new Map();
99
+ for (const p of policies)
100
+ for (const d of p.dependencies)
101
+ by.set(d, (by.get(d) ?? 0n) + BigInt(p.policy.body.coverage_limit.minor));
102
+ return [...by].map(([dependency, limit]) => {
103
+ const share = total ? Number((limit * 10000n) / total) / 10000 : 0;
104
+ return { dependency, limit_minor: limit.toString(), share, concentrated: share >= threshold };
105
+ }).sort((a, b) => b.share - a.share);
106
+ }
107
+ /** Evidence for a product-liability claim: which version and attested build ran, what it did, in order. */
108
+ export function productLiabilityEvidence(input) {
109
+ return {
110
+ product: input.product, version: input.version, attestation: input.attestationHash ?? null,
111
+ timeline: [...input.incidents].sort((a, b) => tsOf(a).localeCompare(tsOf(b))).map((r) => ({ ts: tsOf(r), target: targetOf(r), risk: r.risk ?? null, hash: jcsHash(r) })),
112
+ };
113
+ }
114
+ /** Cover for one transaction at checkout: premium = amount x the insurer's rate for its risk (basis points), signed by the insurer. */
115
+ export function embeddedCover(tx, rate_bps, insurerPrivateKey, ts = new Date().toISOString()) {
116
+ const bps = rate_bps[tx.risk];
117
+ if (bps === undefined || !Number.isSafeInteger(bps) || bps < 0)
118
+ throw new Error(`insurance: no rate for ${tx.risk}`);
119
+ const premium = (BigInt(tx.amount.minor) * BigInt(bps)) / 10000n;
120
+ return signObject({ v: 1, type: 'insurance.cover_note', transaction: tx.id, covered: tx.amount, premium: money(premium, tx.amount.currency), risk: tx.risk, ts }, insurerPrivateKey);
121
+ }
122
+ //# sourceMappingURL=products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zanii/insurance",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Machine-verifiable underwriting for agent liability - risk FACTS from the ledger's own un-inflatable aggregate (never a score), a co-signed policy, and claims that resolve against Merkle-proven receipts instead of disputes. Zanii states facts; insurers price. Ledger silence is unknown, not good.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://ledger.zanii.agency",
@@ -33,9 +33,9 @@
33
33
  "dependencies": {
34
34
  "@noble/curves": "^1.8.1",
35
35
  "@noble/hashes": "^1.7.1",
36
- "@zanii/core": "^0.4.0",
37
- "@zanii/a2a-directory": "^0.1.1",
38
- "@zanii/payments": "^0.2.0"
36
+ "@zanii/core": "^0.5.4",
37
+ "@zanii/a2a-directory": "^0.1.3",
38
+ "@zanii/payments": "^0.2.1"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsc -p tsconfig.build.json",
package/src/index.ts CHANGED
@@ -386,3 +386,4 @@ export function assessClaim(
386
386
 
387
387
  return { ok: reasons.length === 0, reasons, proven, unproven };
388
388
  }
389
+ export * from './products.js';
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Insurance products on proven facts: parametric triggers, usage-based premiums from the
3
+ * risk mix of actions, loss runs, reinsurance bordereaux, subrogation packs, warranty
4
+ * checks, accumulation by shared model or provider, product-liability evidence and per-
5
+ * transaction cover. Zanii states facts and computes with the insurer's rates; the insurer
6
+ * prices. Integer minor units throughout.
7
+ */
8
+ import { jcsHash, participantsOf, scopeCovers, signObject, verifySignedObject, type SignedObject } from '@zanii/core';
9
+ import { formatMoney, type Money } from '@zanii/payments';
10
+ import { policyHash, type Claim, type Policy } from './index.js';
11
+
12
+ type Receipt = { target?: string; risk?: string; ts?: string; agent_id?: string; body?: { target?: string; ts?: string }; type?: string; [k: string]: unknown };
13
+ const money = (minor: bigint, currency: string): Money => ({ currency, minor: minor.toString(), display: `${formatMoney(minor, currency)} ${currency}` });
14
+ const targetOf = (r: Receipt) => r.target ?? r.body?.target ?? '';
15
+ const tsOf = (r: Receipt) => r.ts ?? r.body?.ts ?? '';
16
+
17
+ export type TriggerFact = SignedObject<{ v: 1; type: 'insurance.trigger'; policy: string; event: string; value: string; ts: string }>;
18
+
19
+ /** A trusted source attests the event a parametric cover pays on (an outage, a verified equivocation, a weather index). */
20
+ export function triggerFact(input: { policy: string; event: string; value: string; ts?: string }, sourcePrivateKey: Uint8Array): TriggerFact {
21
+ return signObject({ v: 1 as const, type: 'insurance.trigger' as const, ...input, ts: input.ts ?? new Date().toISOString() }, sourcePrivateKey);
22
+ }
23
+
24
+ /** Pays automatically: a trusted source signed the trigger event for this policy, inside its period. */
25
+ export function parametricTriggered(policy: Policy, fact: TriggerFact, trigger: { event: string; value: string; trustedSources: string[] }) {
26
+ const reasons: string[] = [];
27
+ if (!verifySignedObject(fact) || !trigger.trustedSources.includes(fact.signer)) reasons.push('trigger is not from a trusted source');
28
+ if (fact.policy !== policyHash(policy)) reasons.push('trigger is for another policy');
29
+ if (fact.event !== trigger.event || fact.value !== trigger.value) reasons.push(`expected ${trigger.event}=${trigger.value}`);
30
+ if (fact.ts < policy.body.period.start || fact.ts > policy.body.period.end) reasons.push('trigger is outside the policy period');
31
+ return { pay: reasons.length === 0, reasons, amount: reasons.length ? null : policy.body.coverage_limit };
32
+ }
33
+
34
+ /** How the insured agent's actions split across risk levels, and how many carry no label. */
35
+ export function riskLevelMix(receipts: Receipt[]) {
36
+ const mix: Record<string, number> = { low: 0, medium: 0, high: 0, critical: 0, unlabelled: 0 };
37
+ for (const r of receipts) mix[typeof r.risk === 'string' && r.risk in mix ? r.risk : 'unlabelled']!++;
38
+ return { actions: receipts.length, mix, unlabelledShare: receipts.length ? mix.unlabelled! / receipts.length : 0 };
39
+ }
40
+
41
+ /**
42
+ * A premium from verified activity at the insurer's per-action rates. Unlabelled actions
43
+ * are charged at the rate the insurer sets for them (usually the high rate).
44
+ */
45
+ export function usageBasedPremium(receipts: Receipt[], rates: { currency: string; low: number; medium: number; high: number; critical: number; unlabelled: number }) {
46
+ const { mix } = riskLevelMix(receipts);
47
+ let total = 0n;
48
+ const lines: Array<{ level: string; actions: number; rate_minor: number }> = [];
49
+ for (const level of ['low', 'medium', 'high', 'critical', 'unlabelled'] as const) {
50
+ const rate = rates[level];
51
+ if (!Number.isSafeInteger(rate) || rate < 0) throw new Error(`insurance: rate for ${level} must be a non-negative integer (minor units)`);
52
+ total += BigInt(rate) * BigInt(mix[level]!);
53
+ lines.push({ level, actions: mix[level]!, rate_minor: rate });
54
+ }
55
+ return { premium: money(total, rates.currency), lines, basis: jcsHash(receipts.map((r) => jcsHash(r as never))) };
56
+ }
57
+
58
+ /** Claims and payments per period, for renewal. */
59
+ export function lossRun(entries: Array<{ claim: Claim; paid_minor?: string }>) {
60
+ const byYear: Record<string, { claims: number; paid_minor: bigint }> = {};
61
+ for (const e of entries) {
62
+ const y = e.claim.body.ts.slice(0, 4);
63
+ const s = (byYear[y] ??= { claims: 0, paid_minor: 0n });
64
+ s.claims++;
65
+ s.paid_minor += BigInt(e.paid_minor ?? '0');
66
+ }
67
+ return Object.entries(byYear).sort(([a], [b]) => a.localeCompare(b)).map(([year, s]) => ({ year, claims: s.claims, paid_minor: s.paid_minor.toString() }));
68
+ }
69
+
70
+ /** The portfolio listing a reinsurer expects: one row per policy, plus totals. */
71
+ export function reinsuranceBordereau(policies: Policy[]) {
72
+ const rows = policies.map((p) => ({ policy: policyHash(p), subject: p.body.subject, start: p.body.period.start, end: p.body.period.end, limit_minor: p.body.coverage_limit.minor, premium_minor: p.body.premium.minor, currency: p.body.premium.currency, scopes: p.body.covered_scopes }));
73
+ const sum = (k: 'limit_minor' | 'premium_minor') => rows.reduce((s, r) => s + BigInt(r[k]), 0n).toString();
74
+ return { rows, totals: { policies: rows.length, limit_minor: sum('limit_minor'), premium_minor: sum('premium_minor') } };
75
+ }
76
+
77
+ /** For recovery: the other agents involved in the incidents (from two-party and team receipts). */
78
+ export function subrogationPack(claim: Claim, incidentReceipts: Receipt[], insured: string) {
79
+ const others = new Set<string>();
80
+ for (const r of incidentReceipts) for (const p of participantsOf(r as never)) if (p !== insured) others.add(p);
81
+ return { claim: jcsHash(claim as never), thirdParties: [...others], incidents: incidentReceipts.map((r) => ({ target: targetOf(r), ts: tsOf(r), hash: jcsHash(r as never) })) };
82
+ }
83
+
84
+ /** Warranties as evidence that must recur (e.g. a red-team report every 30 days, sealed keys at start). */
85
+ export function warrantyCompliance(warranties: Array<{ id: string; target: string; everyDays: number }>, receipts: Receipt[], period: { start: string; end: string }) {
86
+ return warranties.map((w) => {
87
+ const times = receipts.filter((r) => scopeCovers(w.target, targetOf(r)) && tsOf(r) >= period.start && tsOf(r) <= period.end).map(tsOf).sort();
88
+ const points = [period.start, ...times, period.end];
89
+ let maxGap = 0;
90
+ for (let i = 1; i < points.length; i++) maxGap = Math.max(maxGap, (Date.parse(points[i]!) - Date.parse(points[i - 1]!)) / 86_400_000);
91
+ return { id: w.id, evidence: times.length, maxGapDays: Math.round(maxGap), met: times.length > 0 && maxGap <= w.everyDays };
92
+ });
93
+ }
94
+
95
+ /**
96
+ * Accumulation: the share of total limits that rests on one shared dependency (a model, a
97
+ * cloud, a provider). A correlated failure there hits every policy at once.
98
+ */
99
+ export function accumulation(policies: Array<{ policy: Policy; dependencies: string[] }>, threshold = 0.25) {
100
+ const total = policies.reduce((s, p) => s + BigInt(p.policy.body.coverage_limit.minor), 0n);
101
+ const by = new Map<string, bigint>();
102
+ for (const p of policies) for (const d of p.dependencies) by.set(d, (by.get(d) ?? 0n) + BigInt(p.policy.body.coverage_limit.minor));
103
+ return [...by].map(([dependency, limit]) => {
104
+ const share = total ? Number((limit * 10000n) / total) / 10000 : 0;
105
+ return { dependency, limit_minor: limit.toString(), share, concentrated: share >= threshold };
106
+ }).sort((a, b) => b.share - a.share);
107
+ }
108
+
109
+ /** Evidence for a product-liability claim: which version and attested build ran, what it did, in order. */
110
+ export function productLiabilityEvidence(input: { product: string; version: string; attestationHash?: string; incidents: Receipt[] }) {
111
+ return {
112
+ product: input.product, version: input.version, attestation: input.attestationHash ?? null,
113
+ timeline: [...input.incidents].sort((a, b) => tsOf(a).localeCompare(tsOf(b))).map((r) => ({ ts: tsOf(r), target: targetOf(r), risk: r.risk ?? null, hash: jcsHash(r as never) })),
114
+ };
115
+ }
116
+
117
+ export type CoverNote = SignedObject<{ v: 1; type: 'insurance.cover_note'; transaction: string; covered: Money; premium: Money; risk: string; ts: string }>;
118
+
119
+ /** Cover for one transaction at checkout: premium = amount x the insurer's rate for its risk (basis points), signed by the insurer. */
120
+ export function embeddedCover(tx: { id: string; amount: Money; risk: 'low' | 'medium' | 'high' | 'critical' }, rate_bps: Record<string, number>, insurerPrivateKey: Uint8Array, ts = new Date().toISOString()): CoverNote {
121
+ const bps = rate_bps[tx.risk];
122
+ if (bps === undefined || !Number.isSafeInteger(bps) || bps < 0) throw new Error(`insurance: no rate for ${tx.risk}`);
123
+ const premium = (BigInt(tx.amount.minor) * BigInt(bps)) / 10_000n;
124
+ return signObject({ v: 1 as const, type: 'insurance.cover_note' as const, transaction: tx.id, covered: tx.amount, premium: money(premium, tx.amount.currency), risk: tx.risk, ts }, insurerPrivateKey);
125
+ }