@xyo-network/xl1-protocol 5.2.0 → 5.2.2

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 (21) hide show
  1. package/dist/neutral/modules/network-model/staticRest/layout/admissionShadow.d.ts +181 -0
  2. package/dist/neutral/modules/network-model/staticRest/layout/admissionShadow.d.ts.map +1 -0
  3. package/dist/neutral/modules/network-model/staticRest/layout/chainParams.d.ts +16 -10
  4. package/dist/neutral/modules/network-model/staticRest/layout/chainParams.d.ts.map +1 -1
  5. package/dist/neutral/modules/network-model/staticRest/layout/chainParamsRules.d.ts +15 -0
  6. package/dist/neutral/modules/network-model/staticRest/layout/chainParamsRules.d.ts.map +1 -1
  7. package/dist/neutral/modules/network-model/staticRest/layout/index.d.ts +2 -0
  8. package/dist/neutral/modules/network-model/staticRest/layout/index.d.ts.map +1 -1
  9. package/dist/neutral/modules/network-model/staticRest/layout/slashIndex.d.ts +160 -0
  10. package/dist/neutral/modules/network-model/staticRest/layout/slashIndex.d.ts.map +1 -0
  11. package/dist/neutral/modules/network-model/staticRest/paths/index.d.ts +1 -0
  12. package/dist/neutral/modules/network-model/staticRest/paths/index.d.ts.map +1 -1
  13. package/dist/neutral/modules/network-model/staticRest/paths/slashIndex.d.ts +31 -0
  14. package/dist/neutral/modules/network-model/staticRest/paths/slashIndex.d.ts.map +1 -0
  15. package/dist/neutral/modules/protocol-model/model/RuleActivation.d.ts +1 -1
  16. package/dist/neutral/modules/protocol-model/model/RuleActivation.d.ts.map +1 -1
  17. package/dist/neutral/network-model.mjs +406 -188
  18. package/dist/neutral/network-model.mjs.map +4 -4
  19. package/dist/neutral/protocol-model.mjs +3 -0
  20. package/dist/neutral/protocol-model.mjs.map +2 -2
  21. package/package.json +1 -1
@@ -0,0 +1,181 @@
1
+ import { z } from 'zod';
2
+ /** Schema id for a published admission shadow report. */
3
+ export declare const AdmissionShadowReportSchema: "network.xyo.s3.admission.shadow" & {
4
+ readonly __schema: true;
5
+ };
6
+ /** Type literal for the admission shadow report schema. */
7
+ export type AdmissionShadowReportSchema = typeof AdmissionShadowReportSchema;
8
+ /** What both admission gates concluded about one candidate. */
9
+ export declare const AdmissionShadowAssessmentZod: z.ZodObject<{
10
+ activeStake: z.ZodOptional<z.ZodString>;
11
+ admittedByAllowList: z.ZodBoolean;
12
+ block: z.ZodInt;
13
+ dataHash: z.ZodString;
14
+ eStar: z.ZodOptional<z.ZodInt>;
15
+ eligible: z.ZodOptional<z.ZodBoolean>;
16
+ intentValid: z.ZodOptional<z.ZodBoolean>;
17
+ producer: z.ZodString;
18
+ reason: z.ZodOptional<z.ZodString>;
19
+ resolvable: z.ZodBoolean;
20
+ selfBond: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ /** What both admission gates concluded about one candidate. */
23
+ export type AdmissionShadowAssessment = z.infer<typeof AdmissionShadowAssessmentZod>;
24
+ /**
25
+ * Zod schema for one published round of shadow admission.
26
+ *
27
+ * Published rather than logged because the point of the posture is that anyone can see what
28
+ * enforcement would have done before it does it. An operator convinced by their own logs has
29
+ * convinced nobody.
30
+ *
31
+ * The back-link is what makes the series walkable without listing: a reader takes the head
32
+ * pointer and follows `previous` as far back as it cares to.
33
+ */
34
+ export declare const AdmissionShadowReportZod: z.ZodObject<{
35
+ assessments: z.ZodArray<z.ZodObject<{
36
+ activeStake: z.ZodOptional<z.ZodString>;
37
+ admittedByAllowList: z.ZodBoolean;
38
+ block: z.ZodInt;
39
+ dataHash: z.ZodString;
40
+ eStar: z.ZodOptional<z.ZodInt>;
41
+ eligible: z.ZodOptional<z.ZodBoolean>;
42
+ intentValid: z.ZodOptional<z.ZodBoolean>;
43
+ producer: z.ZodString;
44
+ reason: z.ZodOptional<z.ZodString>;
45
+ resolvable: z.ZodBoolean;
46
+ selfBond: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>>;
48
+ divergent: z.ZodArray<z.ZodObject<{
49
+ activeStake: z.ZodOptional<z.ZodString>;
50
+ admittedByAllowList: z.ZodBoolean;
51
+ block: z.ZodInt;
52
+ dataHash: z.ZodString;
53
+ eStar: z.ZodOptional<z.ZodInt>;
54
+ eligible: z.ZodOptional<z.ZodBoolean>;
55
+ intentValid: z.ZodOptional<z.ZodBoolean>;
56
+ producer: z.ZodString;
57
+ reason: z.ZodOptional<z.ZodString>;
58
+ resolvable: z.ZodBoolean;
59
+ selfBond: z.ZodOptional<z.ZodString>;
60
+ }, z.core.$strip>>;
61
+ head: z.ZodInt;
62
+ mode: z.ZodOptional<z.ZodEnum<{
63
+ shadow: "shadow";
64
+ enforce: "enforce";
65
+ }>>;
66
+ previous: z.ZodOptional<z.ZodInt>;
67
+ schema: z.ZodLiteral<"network.xyo.s3.admission.shadow" & {
68
+ readonly __schema: true;
69
+ }>;
70
+ }, z.core.$strip>;
71
+ /** One published round of shadow admission. */
72
+ export type AdmissionShadowReportDocument = z.infer<typeof AdmissionShadowReportZod>;
73
+ /** Type guard that checks if a value is a valid AdmissionShadowReportDocument. */
74
+ export declare const isAdmissionShadowReport: <T>(value: T) => value is T & {
75
+ assessments: {
76
+ admittedByAllowList: boolean;
77
+ block: number;
78
+ dataHash: string;
79
+ producer: string;
80
+ resolvable: boolean;
81
+ activeStake?: string | undefined;
82
+ eStar?: number | undefined;
83
+ eligible?: boolean | undefined;
84
+ intentValid?: boolean | undefined;
85
+ reason?: string | undefined;
86
+ selfBond?: string | undefined;
87
+ }[];
88
+ divergent: {
89
+ admittedByAllowList: boolean;
90
+ block: number;
91
+ dataHash: string;
92
+ producer: string;
93
+ resolvable: boolean;
94
+ activeStake?: string | undefined;
95
+ eStar?: number | undefined;
96
+ eligible?: boolean | undefined;
97
+ intentValid?: boolean | undefined;
98
+ reason?: string | undefined;
99
+ selfBond?: string | undefined;
100
+ }[];
101
+ head: number;
102
+ schema: "network.xyo.s3.admission.shadow" & {
103
+ readonly __schema: true;
104
+ };
105
+ mode?: "shadow" | "enforce" | undefined;
106
+ previous?: number | undefined;
107
+ };
108
+ /** Converts a value to AdmissionShadowReportDocument, throwing if invalid. */
109
+ export declare const asAdmissionShadowReport: {
110
+ <T>(value: T): (T & {
111
+ assessments: {
112
+ admittedByAllowList: boolean;
113
+ block: number;
114
+ dataHash: string;
115
+ producer: string;
116
+ resolvable: boolean;
117
+ activeStake?: string | undefined;
118
+ eStar?: number | undefined;
119
+ eligible?: boolean | undefined;
120
+ intentValid?: boolean | undefined;
121
+ reason?: string | undefined;
122
+ selfBond?: string | undefined;
123
+ }[];
124
+ divergent: {
125
+ admittedByAllowList: boolean;
126
+ block: number;
127
+ dataHash: string;
128
+ producer: string;
129
+ resolvable: boolean;
130
+ activeStake?: string | undefined;
131
+ eStar?: number | undefined;
132
+ eligible?: boolean | undefined;
133
+ intentValid?: boolean | undefined;
134
+ reason?: string | undefined;
135
+ selfBond?: string | undefined;
136
+ }[];
137
+ head: number;
138
+ schema: "network.xyo.s3.admission.shadow" & {
139
+ readonly __schema: true;
140
+ };
141
+ mode?: "shadow" | "enforce" | undefined;
142
+ previous?: number | undefined;
143
+ }) | undefined;
144
+ <T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
145
+ assessments: {
146
+ admittedByAllowList: boolean;
147
+ block: number;
148
+ dataHash: string;
149
+ producer: string;
150
+ resolvable: boolean;
151
+ activeStake?: string | undefined;
152
+ eStar?: number | undefined;
153
+ eligible?: boolean | undefined;
154
+ intentValid?: boolean | undefined;
155
+ reason?: string | undefined;
156
+ selfBond?: string | undefined;
157
+ }[];
158
+ divergent: {
159
+ admittedByAllowList: boolean;
160
+ block: number;
161
+ dataHash: string;
162
+ producer: string;
163
+ resolvable: boolean;
164
+ activeStake?: string | undefined;
165
+ eStar?: number | undefined;
166
+ eligible?: boolean | undefined;
167
+ intentValid?: boolean | undefined;
168
+ reason?: string | undefined;
169
+ selfBond?: string | undefined;
170
+ }[];
171
+ head: number;
172
+ schema: "network.xyo.s3.admission.shadow" & {
173
+ readonly __schema: true;
174
+ };
175
+ mode?: "shadow" | "enforce" | undefined;
176
+ previous?: number | undefined;
177
+ };
178
+ };
179
+ /** Builds a validated admission shadow report. */
180
+ export declare function createAdmissionShadowReport(head: number, assessments: AdmissionShadowAssessment[], divergent: AdmissionShadowAssessment[], previous?: number, mode?: AdmissionShadowReportDocument['mode']): AdmissionShadowReportDocument;
181
+ //# sourceMappingURL=admissionShadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admissionShadow.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/admissionShadow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,yDAAyD;AACzD,eAAO,MAAM,2BAA2B;;CAAoD,CAAA;AAC5F,2DAA2D;AAC3D,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;iBAuBvC,CAAA;AAEF,+DAA+D;AAC/D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEpF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYnC,CAAA;AAEF,+CAA+C;AAC/C,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF,kFAAkF;AAClF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyC,CAAA;AAC7E,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoE,CAAA;AAExG,kDAAkD;AAClD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,yBAAyB,EAAE,EACxC,SAAS,EAAE,yBAAyB,EAAE,EACtC,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC,GAC3C,6BAA6B,CAI/B"}
@@ -17,6 +17,8 @@ export declare const RuleIdZod: z.ZodEnum<{
17
17
  "eligibility-admission": "eligibility-admission";
18
18
  "attestation-admission": "attestation-admission";
19
19
  "certificate-execution": "certificate-execution";
20
+ "fork-choice-v2": "fork-choice-v2";
21
+ "bridge-value-ceiling": "bridge-value-ceiling";
20
22
  "equivocation.reportable": "equivocation.reportable";
21
23
  "invalid-block.reportable": "invalid-block.reportable";
22
24
  "reward-overmint.reportable": "reward-overmint.reportable";
@@ -49,6 +51,8 @@ export declare const ChainParamsZod: z.ZodObject<{
49
51
  "eligibility-admission": "eligibility-admission";
50
52
  "attestation-admission": "attestation-admission";
51
53
  "certificate-execution": "certificate-execution";
54
+ "fork-choice-v2": "fork-choice-v2";
55
+ "bridge-value-ceiling": "bridge-value-ceiling";
52
56
  "equivocation.reportable": "equivocation.reportable";
53
57
  "invalid-block.reportable": "invalid-block.reportable";
54
58
  "reward-overmint.reportable": "reward-overmint.reportable";
@@ -81,6 +85,8 @@ export declare const ChainParamsZod: z.ZodObject<{
81
85
  "eligibility-admission": "eligibility-admission";
82
86
  "attestation-admission": "attestation-admission";
83
87
  "certificate-execution": "certificate-execution";
88
+ "fork-choice-v2": "fork-choice-v2";
89
+ "bridge-value-ceiling": "bridge-value-ceiling";
84
90
  "equivocation.reportable": "equivocation.reportable";
85
91
  "invalid-block.reportable": "invalid-block.reportable";
86
92
  "reward-overmint.reportable": "reward-overmint.reportable";
@@ -138,7 +144,7 @@ export type ChainParams = z.infer<typeof ChainParamsZod>;
138
144
  export type ChainParamsInput = z.input<typeof ChainParamsZod>;
139
145
  /** Type guard that checks if a value is a valid ChainParams. */
140
146
  export declare const isChainParams: <T>(value: T) => value is T & {
141
- activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
147
+ activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
142
148
  arbiter: string;
143
149
  attestationRewardBps: number;
144
150
  bountyCapAtto: string;
@@ -171,12 +177,12 @@ export declare const isChainParams: <T>(value: T) => value is T & {
171
177
  slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
172
178
  slashQuorumCount: number;
173
179
  version: number;
174
- deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
180
+ deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
175
181
  };
176
182
  /** Converts a value to ChainParams, throwing if invalid. */
177
183
  export declare const asChainParams: {
178
184
  <T>(value: T): (T & {
179
- activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
185
+ activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
180
186
  arbiter: string;
181
187
  attestationRewardBps: number;
182
188
  bountyCapAtto: string;
@@ -209,10 +215,10 @@ export declare const asChainParams: {
209
215
  slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
210
216
  slashQuorumCount: number;
211
217
  version: number;
212
- deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
218
+ deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
213
219
  }) | undefined;
214
220
  <T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
215
- activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
221
+ activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
216
222
  arbiter: string;
217
223
  attestationRewardBps: number;
218
224
  bountyCapAtto: string;
@@ -245,13 +251,13 @@ export declare const asChainParams: {
245
251
  slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
246
252
  slashQuorumCount: number;
247
253
  version: number;
248
- deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
254
+ deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
249
255
  };
250
256
  };
251
257
  /** Non-validating cast to ChainParams. */
252
258
  export declare const toChainParams: {
253
259
  (value: unknown): {
254
- activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
260
+ activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
255
261
  arbiter: string;
256
262
  attestationRewardBps: number;
257
263
  bountyCapAtto: string;
@@ -284,10 +290,10 @@ export declare const toChainParams: {
284
290
  slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
285
291
  slashQuorumCount: number;
286
292
  version: number;
287
- deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
293
+ deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
288
294
  } | undefined;
289
295
  (value: unknown, assert: import("@ariestools/sdk").ZodFactoryConfig): {
290
- activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
296
+ activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
291
297
  arbiter: string;
292
298
  attestationRewardBps: number;
293
299
  bountyCapAtto: string;
@@ -320,7 +326,7 @@ export declare const toChainParams: {
320
326
  slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
321
327
  slashQuorumCount: number;
322
328
  version: number;
323
- deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
329
+ deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
324
330
  };
325
331
  };
326
332
  /** Schema id for the register head pointer. */
@@ -1 +1 @@
1
- {"version":3,"file":"chainParams.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParams.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB;;CAAgD,CAAA;AAC9E,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA;AAExD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAKrC,wCAAwC;AACxC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;EAAkB,CAAA;AAKxC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgEzB,CAAA;AAEF,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAExD,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAE7D,gEAAgE;AAChE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA+B,CAAA;AACzD,4DAA4D;AAC5D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgD,CAAA;AAC1E,0CAA0C;AAC1C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgD,CAAA;AAE1E,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB;;CAAqD,CAAA;AACvF,iDAAiD;AACjD,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAA;AAEhE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAA;AAEF,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEhE,oEAAoE;AACpE,eAAO,MAAM,iBAAiB;;;;;;CAAmC,CAAA;AACjE,gEAAgE;AAChE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;CAAwD,CAAA;AAEtF,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,WAAW,CAEvF;AAED,gDAAgD;AAChD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAIpF"}
1
+ {"version":3,"file":"chainParams.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParams.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB;;CAAgD,CAAA;AAC9E,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA;AAExD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAKrC,wCAAwC;AACxC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EAAkB,CAAA;AAKxC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgEzB,CAAA;AAEF,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAExD,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAE7D,gEAAgE;AAChE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA+B,CAAA;AACzD,4DAA4D;AAC5D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgD,CAAA;AAC1E,0CAA0C;AAC1C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgD,CAAA;AAE1E,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB;;CAAqD,CAAA;AACvF,iDAAiD;AACjD,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAA;AAEhE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAA;AAEF,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEhE,oEAAoE;AACpE,eAAO,MAAM,iBAAiB;;;;;;CAAmC,CAAA;AACjE,gEAAgE;AAChE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;CAAwD,CAAA;AAEtF,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,WAAW,CAEvF;AAED,gDAAgD;AAChD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAIpF"}
@@ -27,10 +27,25 @@ export declare function protocolMinAt(params: ChainParams, height: number): numb
27
27
  * The register is append-only over history: a version may add rules and move future heights, but
28
28
  * never rewrite what was true at a height the chain has already passed. Without that, a rule
29
29
  * could be made retroactive and blocks that were valid when produced would become offenses.
30
+ *
31
+ * The one sanctioned rewrite is re-activation. A rule whose deactivation the chain has passed may
32
+ * return at a new future height, and the spent deactivation is dropped in the same version — the
33
+ * heights between read as unenforced either way, and only-forward moves mean history can never be
34
+ * judged more strictly than it was lived.
30
35
  * @param previous The currently published version, when there is one
31
36
  * @param next The version being published
32
37
  * @param finalizedHeight The current finalized head height
33
38
  * @returns The reasons the version may not be published, empty when it may
34
39
  */
35
40
  export declare function chainParamsSuccessionErrors(previous: ChainParams | undefined, next: ChainParams, finalizedHeight: number): string[];
41
+ /**
42
+ * Checks the relationships a register version's economics must hold on their own (yellow §11.2).
43
+ *
44
+ * Only register-derivable checks live here. The withdrawal-delay inequality needs the staking
45
+ * contract's delay, so it belongs to the governance runbook that sets these numbers, not to a
46
+ * document check every reader can run.
47
+ * @param params The version being judged
48
+ * @returns The reasons the version is internally inconsistent, empty when it is sound
49
+ */
50
+ export declare function chainParamsInvariantErrors(params: ChainParams): string[];
36
51
  //# sourceMappingURL=chainParamsRules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainParamsRules.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParamsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAAE,mBAAmB,EACjC,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAExG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACb,mBAAmB,CAErB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,IAAI,EAAE,WAAW,EACjB,eAAe,EAAE,MAAM,GACtB,MAAM,EAAE,CAqBV"}
1
+ {"version":3,"file":"chainParamsRules.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParamsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAAE,mBAAmB,EACjC,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAExG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACb,mBAAmB,CAErB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,IAAI,EAAE,WAAW,EACjB,eAAe,EAAE,MAAM,GACtB,MAAM,EAAE,CAwCV;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAmBxE"}
@@ -1,3 +1,4 @@
1
+ export * from './admissionShadow.js';
1
2
  export * from './chainContractManifest.js';
2
3
  export * from './chainManifest.js';
3
4
  export * from './chainParams.js';
@@ -5,6 +6,7 @@ export * from './chainParamsRules.js';
5
6
  export * from './evmEventIndex.js';
6
7
  export * from './indexManifest.js';
7
8
  export * from './networkStakeRewardsIndex.js';
9
+ export * from './slashIndex.js';
8
10
  export * from './transactionInclusionIndex.js';
9
11
  export * from './trustedPosture.js';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,160 @@
1
+ import { z } from 'zod';
2
+ /** Schema id for the slash index head pointer. */
3
+ export declare const SlashIndexHeadSchema: "network.xyo.s3.slash.index.head" & {
4
+ readonly __schema: true;
5
+ };
6
+ /** Type literal for the slash index head schema. */
7
+ export type SlashIndexHeadSchema = typeof SlashIndexHeadSchema;
8
+ /** Bumped when the index layout changes, so readers can detect a mismatch. */
9
+ export declare const SLASH_INDEX_VERSION = 1;
10
+ /**
11
+ * Zod schema for the slash index head pointer.
12
+ *
13
+ * Written last in every pass. A reader that sees this pointer can rely on everything it names
14
+ * already being there, which is what makes a crashed pass safe to simply re-run: the pointer only
15
+ * ever advances over work that finished.
16
+ */
17
+ export declare const SlashIndexHeadZod: z.ZodObject<{
18
+ height: z.ZodInt;
19
+ indexVersion: z.ZodInt;
20
+ schema: z.ZodLiteral<"network.xyo.s3.slash.index.head" & {
21
+ readonly __schema: true;
22
+ }>;
23
+ anchor: z.ZodOptional<z.ZodInt>;
24
+ }, z.core.$strip>;
25
+ /** The slash index head pointer. */
26
+ export type SlashIndexHead = z.infer<typeof SlashIndexHeadZod>;
27
+ /** Type guard that checks if a value is a valid SlashIndexHead. */
28
+ export declare const isSlashIndexHead: <T>(value: T) => value is T & {
29
+ height: number;
30
+ indexVersion: number;
31
+ schema: "network.xyo.s3.slash.index.head" & {
32
+ readonly __schema: true;
33
+ };
34
+ anchor?: number | undefined;
35
+ };
36
+ /** Converts a value to SlashIndexHead, throwing if invalid. */
37
+ export declare const asSlashIndexHead: {
38
+ <T>(value: T): (T & {
39
+ height: number;
40
+ indexVersion: number;
41
+ schema: "network.xyo.s3.slash.index.head" & {
42
+ readonly __schema: true;
43
+ };
44
+ anchor?: number | undefined;
45
+ }) | undefined;
46
+ <T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
47
+ height: number;
48
+ indexVersion: number;
49
+ schema: "network.xyo.s3.slash.index.head" & {
50
+ readonly __schema: true;
51
+ };
52
+ anchor?: number | undefined;
53
+ };
54
+ };
55
+ /** Non-validating cast to SlashIndexHead. */
56
+ export declare const toSlashIndexHead: {
57
+ (value: unknown): {
58
+ height: number;
59
+ indexVersion: number;
60
+ schema: "network.xyo.s3.slash.index.head" & {
61
+ readonly __schema: true;
62
+ };
63
+ anchor?: number | undefined;
64
+ } | undefined;
65
+ (value: unknown, assert: import("@ariestools/sdk").ZodFactoryConfig): {
66
+ height: number;
67
+ indexVersion: number;
68
+ schema: "network.xyo.s3.slash.index.head" & {
69
+ readonly __schema: true;
70
+ };
71
+ anchor?: number | undefined;
72
+ };
73
+ };
74
+ /** Schema id for the per-offense aggregate. */
75
+ export declare const SlashIndexKeyRecordSchema: "network.xyo.s3.slash.index.key" & {
76
+ readonly __schema: true;
77
+ };
78
+ /** Type literal for the per-offense aggregate schema. */
79
+ export type SlashIndexKeyRecordSchema = typeof SlashIndexKeyRecordSchema;
80
+ /**
81
+ * Zod schema for everything recorded about one offense.
82
+ *
83
+ * The aggregates are the only discovery surface, because the published read path cannot list
84
+ * objects. That is why they are allowed to be rewritten while everything else is immutable — and
85
+ * why every rewrite only appends, so a pass that runs twice converges instead of losing history.
86
+ */
87
+ export declare const SlashIndexKeyRecordZod: z.ZodObject<{
88
+ accused: z.ZodString;
89
+ adjudication: z.ZodOptional<z.ZodString>;
90
+ block: z.ZodInt;
91
+ challenges: z.ZodArray<z.ZodString>;
92
+ chain: z.ZodString;
93
+ outcome: z.ZodOptional<z.ZodEnum<{
94
+ confirmed: "confirmed";
95
+ refuted: "refuted";
96
+ indeterminate: "indeterminate";
97
+ invalid: "invalid";
98
+ }>>;
99
+ offense: z.ZodEnum<{
100
+ equivocation: "equivocation";
101
+ "invalid-block": "invalid-block";
102
+ "reward-overmint": "reward-overmint";
103
+ "false-anchor": "false-anchor";
104
+ "ineligible-production": "ineligible-production";
105
+ "invalid-slash-request": "invalid-slash-request";
106
+ "false-attestation": "false-attestation";
107
+ }>;
108
+ requests: z.ZodArray<z.ZodString>;
109
+ schema: z.ZodLiteral<"network.xyo.s3.slash.index.key" & {
110
+ readonly __schema: true;
111
+ }>;
112
+ }, z.core.$strip>;
113
+ /** Everything recorded about one offense. */
114
+ export type SlashIndexKeyRecord = z.infer<typeof SlashIndexKeyRecordZod>;
115
+ /** Type guard that checks if a value is a valid SlashIndexKeyRecord. */
116
+ export declare const isSlashIndexKeyRecord: <T>(value: T) => value is T & {
117
+ accused: string;
118
+ block: number;
119
+ challenges: string[];
120
+ chain: string;
121
+ offense: "equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation";
122
+ requests: string[];
123
+ schema: "network.xyo.s3.slash.index.key" & {
124
+ readonly __schema: true;
125
+ };
126
+ adjudication?: string | undefined;
127
+ outcome?: "confirmed" | "refuted" | "indeterminate" | "invalid" | undefined;
128
+ };
129
+ /** Converts a value to SlashIndexKeyRecord, throwing if invalid. */
130
+ export declare const asSlashIndexKeyRecord: {
131
+ <T>(value: T): (T & {
132
+ accused: string;
133
+ block: number;
134
+ challenges: string[];
135
+ chain: string;
136
+ offense: "equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation";
137
+ requests: string[];
138
+ schema: "network.xyo.s3.slash.index.key" & {
139
+ readonly __schema: true;
140
+ };
141
+ adjudication?: string | undefined;
142
+ outcome?: "confirmed" | "refuted" | "indeterminate" | "invalid" | undefined;
143
+ }) | undefined;
144
+ <T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
145
+ accused: string;
146
+ block: number;
147
+ challenges: string[];
148
+ chain: string;
149
+ offense: "equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation";
150
+ requests: string[];
151
+ schema: "network.xyo.s3.slash.index.key" & {
152
+ readonly __schema: true;
153
+ };
154
+ adjudication?: string | undefined;
155
+ outcome?: "confirmed" | "refuted" | "indeterminate" | "invalid" | undefined;
156
+ };
157
+ };
158
+ /** Builds a validated slash index head. */
159
+ export declare function createSlashIndexHead(height: number, anchor?: number): SlashIndexHead;
160
+ //# sourceMappingURL=slashIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/slashIndex.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,kDAAkD;AAClD,eAAO,MAAM,oBAAoB;;CAAoD,CAAA;AACrF,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAIpC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;iBAQ5B,CAAA;AAEF,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE9D,mEAAmE;AACnE,eAAO,MAAM,gBAAgB;;;;;;;CAAkC,CAAA;AAC/D,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;CAAsD,CAAA;AACnF,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;CAAsD,CAAA;AAEnF,+CAA+C;AAC/C,eAAO,MAAM,yBAAyB;;CAAmD,CAAA;AACzF,yDAAyD;AACzD,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBjC,CAAA;AAEF,6CAA6C;AAC7C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAExE,wEAAwE;AACxE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CAAuC,CAAA;AACzE,oEAAoE;AACpE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgE,CAAA;AAElG,2CAA2C;AAC3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAIpF"}
@@ -3,5 +3,6 @@ export * from './evmEventIndex.js';
3
3
  export * from './finalized.js';
4
4
  export * from './indexPaths.js';
5
5
  export * from './networkStakeRewardsIndex.js';
6
+ export * from './slashIndex.js';
6
7
  export * from './transactionInclusionIndex.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,31 @@
1
+ import type { Hash } from '@ariestools/sdk';
2
+ import type { XyoAddress } from '@xyo-network/sdk';
3
+ import type { OffenseCode } from '../../../protocol-model/index.js';
4
+ /** Path of the mutable slash-index head. */
5
+ export declare function slashIndexHeadPath(): string;
6
+ /** Path of the static slash-index manifest. */
7
+ export declare function slashIndexManifestPath(): string;
8
+ /** Path of one immutable recorded slash request. */
9
+ export declare function slashIndexRequestPath(hash: Hash): string;
10
+ /** Path of one immutable recorded slash commitment. */
11
+ export declare function slashIndexCommitPath(hash: Hash): string;
12
+ /** Path of one immutable recorded slash challenge. */
13
+ export declare function slashIndexChallengePath(hash: Hash): string;
14
+ /** Path of one immutable recorded slash adjudication. */
15
+ export declare function slashIndexAdjudicationPath(hash: Hash): string;
16
+ /**
17
+ * Path of the aggregate for one offense.
18
+ *
19
+ * Keyed by the canonical offense identity rather than by any report, so several reports of the
20
+ * same misconduct converge on one object instead of accumulating as separate accusations.
21
+ */
22
+ export declare function slashIndexKeyPath(accused: XyoAddress, offense: OffenseCode, block: number): string;
23
+ /** Path of one producer's offense history. */
24
+ export declare function slashIndexAccusedPath(address: XyoAddress): string;
25
+ /** Path of one reporter's claim history. */
26
+ export declare function slashIndexClaimantPath(address: XyoAddress): string;
27
+ /** Path of one published admission shadow report. */
28
+ export declare function admissionShadowPath(height: number): string;
29
+ /** Path of the mutable pointer to the newest admission shadow report. */
30
+ export declare function admissionShadowHeadPath(): string;
31
+ //# sourceMappingURL=slashIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/paths/slashIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIlD,4CAA4C;AAC5C,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,+CAA+C;AAC/C,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAExD;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEvD;AAED,sDAAsD;AACtD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE1D;AAED,yDAAyD;AACzD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAElG;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEjE;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAElE;AAED,qDAAqD;AACrD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
@@ -10,7 +10,7 @@ import type { OffenseCode } from './OffenseCode.js';
10
10
  * This list lives beside the offense codes rather than with the register, because in-block
11
11
  * validators have to name rules without depending on the register document's shape.
12
12
  */
13
- export declare const RuleIds: readonly ["intent-binding", "anchor-rules", "single-signer", "supersedes-field", "slash-payloads", "eligibility-admission", "attestation-admission", "certificate-execution", ...("equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable")[]];
13
+ export declare const RuleIds: readonly ["intent-binding", "anchor-rules", "single-signer", "supersedes-field", "slash-payloads", "eligibility-admission", "attestation-admission", "certificate-execution", "fork-choice-v2", "bridge-value-ceiling", ...("equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable")[]];
14
14
  /** A rule whose activation height the register records. */
15
15
  export type RuleId = typeof RuleIds[number];
16
16
  /** The rule id gating whether reports naming an offense may be recorded. */
@@ -1 +1 @@
1
- {"version":3,"file":"RuleActivation.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol-model/model/RuleActivation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,0nBAWV,CAAA;AAEV,2DAA2D;AAC3D,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AAE3C,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE7D;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE9D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5C,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,mBAAmB,CAMrB;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtG"}
1
+ {"version":3,"file":"RuleActivation.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol-model/model/RuleActivation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,oqBAcV,CAAA;AAEV,2DAA2D;AAC3D,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AAE3C,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE7D;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE9D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5C,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,mBAAmB,CAMrB;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtG"}