@callcium/sdk 0.9.0 → 0.11.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/dist/index.d.ts CHANGED
@@ -110,7 +110,7 @@ type CalldataNavigationVariant<C extends NavigationViolationCode> = {
110
110
  * A union of per-code variants, narrowable with `Extract<Violation, { code: "..." }>`.
111
111
  */
112
112
  type CalldataNavigationViolation = CalldataNavigationVariant<"CALLDATA_OUT_OF_BOUNDS"> | CalldataNavigationVariant<"ARRAY_INDEX_OUT_OF_BOUNDS">;
113
- /** A quantified array exceeded `Limits.MAX_QUANTIFIED_ARRAY_LENGTH`. */
113
+ /** A quantified array exceeded `PolicyFormat.MAX_QUANTIFIED_ARRAY_LENGTH`. */
114
114
  type QuantifierLimitExceededViolation = {
115
115
  code: "QUANTIFIER_LIMIT_EXCEEDED";
116
116
  group: number;
@@ -120,7 +120,7 @@ type QuantifierLimitExceededViolation = {
120
120
  resolvedValue: Hex;
121
121
  };
122
122
  /**
123
- * A resolved word is not the canonical encoding of its declared type (spec §7.4).
123
+ * A resolved word is not the canonical encoding of its declared type.
124
124
  *
125
125
  * `resolvedValue` is the raw 32-byte word as it appeared in calldata, before any masking.
126
126
  */
@@ -226,109 +226,25 @@ type DecodedPolicy = {
226
226
  type IssueSeverity = "info" | "warning" | "error";
227
227
  /** Category of a validation issue. */
228
228
  type IssueCategory = "typeMismatch" | "contradiction" | "redundancy" | "vacuity" | "compatibility";
229
+ /**
230
+ * Machine-readable code for a policy validation issue.
231
+ *
232
+ * Each code names one finding of the semantic validator and matches the constant of the same
233
+ * name in the Solidity `IssueCode` library.
234
+ */
235
+ type IssueCode = "VALUE_OP_ON_DYNAMIC" | "VALUE_OP_ON_COMPOSITE" | "NUMERIC_OP_ON_NON_NUMERIC" | "BITMASK_ON_INVALID" | "IN_ON_BOOL" | "LENGTH_ON_STATIC" | "CONTEXT_TYPE_MISMATCH" | "UNKNOWN_OPERATOR" | "NON_CANONICAL_OPERAND" | "UNNAVIGABLE_PATH" | "NESTED_QUANTIFIER" | "HINT_MISMATCH" | "EQ_NEQ_CONTRADICTION" | "CONFLICTING_EQUALITY" | "OUT_OF_PHYSICAL_BOUNDS" | "IMPOSSIBLE_GT" | "IMPOSSIBLE_LT" | "BOUNDS_EXCLUDE_EQUALITY" | "IMPOSSIBLE_RANGE" | "SET_EXCLUDES_EQUALITY" | "EMPTY_SET_INTERSECTION" | "SET_FULLY_EXCLUDED" | "LENGTH_EQ_NEQ_CONTRADICTION" | "CONFLICTING_LENGTH" | "BOUNDS_EXCLUDE_LENGTH" | "IMPOSSIBLE_LENGTH_RANGE" | "OUT_OF_PHYSICAL_LENGTH_BOUNDS" | "IMPOSSIBLE_LENGTH_GT" | "IMPOSSIBLE_LENGTH_LT" | "BITMASK_CONTRADICTION" | "BITMASK_ANY_IMPOSSIBLE" | "UNSORTED_IN_SET" | "EMPTY_GROUP" | "DOMINATED_BOUND" | "REDUNDANT_BOUND" | "SET_REDUCTION" | "SET_REDUNDANCY" | "SET_PARTIALLY_EXCLUDED" | "DOMINATED_LENGTH_BOUND" | "REDUNDANT_LENGTH_BOUND" | "REDUNDANT_BITMASK" | "DUPLICATE_CONSTRAINT" | "FUSIBLE_RANGE" | "FUSIBLE_LENGTH_RANGE" | "VACUOUS_GTE" | "VACUOUS_LTE" | "VACUOUS_LENGTH_GTE" | "VACUOUS_LENGTH_LTE" | "VACUOUS_NEGATED_RANGE" | "VACUOUS_NEGATED_LENGTH_RANGE" | "PATH_DEPTH_EXCEEDED" | "QUANTIFIER_OVER_STATIC_LIMIT" | "UNKNOWN_CONTEXT_PROPERTY" | "NEGATION_UNDER_ANY";
229
236
  /** A single validation issue found during policy analysis. */
230
237
  type Issue = {
231
238
  severity: IssueSeverity;
232
239
  category: IssueCategory;
233
240
  groupIndex: number;
234
241
  constraintIndex: number;
235
- code: string;
242
+ code: IssueCode;
236
243
  value1: Hex;
237
244
  value2: Hex;
238
245
  message: string;
239
246
  };
240
247
  //#endregion
241
- //#region src/constraint.d.ts
242
- /** Accepted scalar value types for operator arguments. */
243
- type ScalarValue = bigint | number | boolean | string;
244
- /**
245
- * Mutable builder that accumulates operators targeting a single path.
246
- * Implements the `Constraint` interface so it can be passed directly to policy builders.
247
- */
248
- declare class ConstraintBuilder implements Constraint {
249
- readonly scope: number;
250
- readonly path: Hex;
251
- readonly operators: Hex[];
252
- /** @internal */
253
- constructor(scope: number, path: Hex);
254
- /** Push a pre-encoded operator hex string and return this for chaining. */
255
- private push;
256
- /** Assert the value equals `value`. */
257
- eq(value: ScalarValue): this;
258
- /** Assert the value does not equal `value`. */
259
- neq(value: ScalarValue): this;
260
- /** Assert the value equals the context property `contextPropertyId`. */
261
- eqCtx(contextPropertyId: number): this;
262
- /** Assert the value does not equal the context property `contextPropertyId`. */
263
- neqCtx(contextPropertyId: number): this;
264
- /** Assert the value is greater than `bound`. */
265
- gt(bound: bigint | number): this;
266
- /** Assert the value is less than `bound`. */
267
- lt(bound: bigint | number): this;
268
- /** Assert the value is greater than or equal to `bound`. */
269
- gte(bound: bigint | number): this;
270
- /** Assert the value is less than or equal to `bound`. */
271
- lte(bound: bigint | number): this;
272
- /**
273
- * Assert the value is within [min, max] inclusive.
274
- * @throws {CallciumError} If min > max.
275
- */
276
- between(min: bigint | number, max: bigint | number): this;
277
- /**
278
- * Assert the value is a member of the set.
279
- * Values are sorted and deduplicated before encoding.
280
- * @throws {CallciumError} If the set is empty after deduplication.
281
- */
282
- isIn(values: readonly ScalarValue[]): this;
283
- /**
284
- * Assert the value is not a member of the set.
285
- * @throws {CallciumError} If the set is empty after deduplication.
286
- */
287
- notIn(values: readonly ScalarValue[]): this;
288
- /** Assert all bits in `mask` are set. */
289
- bitmaskAll(mask: bigint): this;
290
- /** Assert at least one bit in `mask` is set. */
291
- bitmaskAny(mask: bigint): this;
292
- /** Assert no bit in `mask` is set. */
293
- bitmaskNone(mask: bigint): this;
294
- /** Assert the runtime length equals `n`. */
295
- lengthEq(n: bigint | number): this;
296
- /** Assert the runtime length is greater than `n`. */
297
- lengthGt(n: bigint | number): this;
298
- /** Assert the runtime length is less than `n`. */
299
- lengthLt(n: bigint | number): this;
300
- /** Assert the runtime length is greater than or equal to `n`. */
301
- lengthGte(n: bigint | number): this;
302
- /** Assert the runtime length is less than or equal to `n`. */
303
- lengthLte(n: bigint | number): this;
304
- /**
305
- * Assert the runtime length is within [min, max] inclusive.
306
- * @throws {CallciumError} If min > max.
307
- */
308
- lengthBetween(min: bigint | number, max: bigint | number): this;
309
- }
310
- /**
311
- * Target a calldata argument by path.
312
- * Each argument is a big-endian uint16 step; multiple steps navigate into nested types.
313
- */
314
- declare function arg(p0: number, ...rest: number[]): ConstraintBuilder;
315
- /** Target the `msg.sender` context property. */
316
- declare function msgSender(): ConstraintBuilder;
317
- /** Target the `msg.value` context property. */
318
- declare function msgValue(): ConstraintBuilder;
319
- /** Target the `block.timestamp` context property. */
320
- declare function blockTimestamp(): ConstraintBuilder;
321
- /** Target the `block.number` context property. */
322
- declare function blockNumber(): ConstraintBuilder;
323
- /** Target the `block.chainid` context property. */
324
- declare function chainId(): ConstraintBuilder;
325
- /** Target the `tx.origin` context property. */
326
- declare function txOrigin(): ConstraintBuilder;
327
- /** Target the `block.basefee` context property. */
328
- declare function baseFee(): ConstraintBuilder;
329
- /** Target the `tx.gasprice` context property. */
330
- declare function gasPrice(): ConstraintBuilder;
331
- //#endregion
332
248
  //#region src/policy-builder.d.ts
333
249
  /** Fluent builder for constructing Callcium policies. */
334
250
  declare class PolicyBuilder {
@@ -347,8 +263,11 @@ declare class PolicyBuilder {
347
263
  /**
348
264
  * Add a constraint to the current group.
349
265
  * @param constraint - A `Constraint` object or a `ConstraintBuilder` instance.
266
+ * @throws {CallciumError} With code `OUT_OF_PHYSICAL_BOUNDS` when a numeric operand lies outside
267
+ * the target type's range and encodes as a value inside it. Operands are read as written, so a
268
+ * `Constraint` carrying encoded operator bytes is left to {@link validate}.
350
269
  */
351
- add(constraint: Constraint | ConstraintBuilder): this;
270
+ add(constraint: Constraint): this;
352
271
  /** Start a new constraint group (OR branch). */
353
272
  or(): this;
354
273
  /**
@@ -358,6 +277,8 @@ declare class PolicyBuilder {
358
277
  * @returns The policy as a 0x-prefixed hex string.
359
278
  * @throws {CallciumError} If any group is empty.
360
279
  * @throws {ValidationError} If validation finds any issue.
280
+ * @throws {CallciumError} With code `RULE_SIZE_OVERFLOW` when a rule's encoded bytes exceed the
281
+ * width of the rule size field.
361
282
  */
362
283
  build(): Hex;
363
284
  /**
@@ -380,12 +301,6 @@ declare class PolicyBuilder {
380
301
  }
381
302
  //#endregion
382
303
  //#region src/policy-coder.d.ts
383
- /**
384
- * Parse a BE16-encoded hex path into an array of step values.
385
- * @param path - 0x-prefixed hex string containing BE16-encoded path steps.
386
- * @returns Array of numeric step values.
387
- */
388
- declare function parsePathSteps(path: Hex): number[];
389
304
  /**
390
305
  * Encode a PolicyData structure into the canonical binary format.
391
306
  * @param data - The policy data to encode.
@@ -413,6 +328,32 @@ declare const PolicyCoder: {
413
328
  inspect: typeof inspect$1;
414
329
  };
415
330
  //#endregion
331
+ //#region src/path.d.ts
332
+ /** Reserved path step values that trigger quantified evaluation over array elements. */
333
+ declare const Quantifier: {
334
+ readonly ALL: 65535;
335
+ readonly ANY: 65534;
336
+ };
337
+ /** Display metadata for a quantifier step. */
338
+ type QuantifierInfo = {
339
+ label: string;
340
+ };
341
+ /** Check whether a path step is a quantifier (ALL or ANY). */
342
+ declare function isQuantifier(step: number): boolean;
343
+ /**
344
+ * Map a quantifier path step to its display label.
345
+ * @param code - Quantifier step value.
346
+ * @returns Display metadata for the quantifier.
347
+ * @throws {CallciumError} If the code is not a recognised quantifier.
348
+ */
349
+ declare function lookupQuantifier(code: number): QuantifierInfo;
350
+ /**
351
+ * Parse a BE16-encoded hex path into an array of step values.
352
+ * @param path - 0x-prefixed hex string containing BE16-encoded path steps.
353
+ * @returns Array of numeric step values.
354
+ */
355
+ declare function parsePathSteps(path: Hex): number[];
356
+ //#endregion
416
357
  //#region src/descriptor.d.ts
417
358
  /** Structural type information extracted from a descriptor node. */
418
359
  type TypeInfo = {
@@ -422,8 +363,7 @@ type TypeInfo = {
422
363
  };
423
364
  /**
424
365
  * Return the byte length of the node at `offset`.
425
- * Elementary nodes occupy exactly one byte; composite nodes encode their
426
- * length in the lower 12 bits of the 24-bit meta field.
366
+ * @throws {CallciumError} When the descriptor holds no readable node at `offset`.
427
367
  */
428
368
  declare function nodeLength(desc: Uint8Array, offset: number): number;
429
369
  /**
@@ -431,7 +371,10 @@ declare function nodeLength(desc: Uint8Array, offset: number): number;
431
371
  * Starts at the first field and skips `fieldIndex` nodes using `nodeLength`.
432
372
  */
433
373
  declare function tupleFieldOffset(desc: Uint8Array, tupleOffset: number, fieldIndex: number): number;
434
- /** Return paramCount from header byte 1. */
374
+ /**
375
+ * Return the declared top-level parameter count.
376
+ * @throws {CallciumError} When the descriptor is too short to hold a header.
377
+ */
435
378
  declare function paramCount(desc: Uint8Array): number;
436
379
  /** Return byte offset of the N-th top-level param (0-indexed). */
437
380
  declare function paramOffset(desc: Uint8Array, index: number): number;
@@ -440,6 +383,7 @@ declare function paramOffset(desc: Uint8Array, index: number): number;
440
383
  * @param desc - Raw descriptor bytes.
441
384
  * @param offset - Byte position of the node.
442
385
  * @returns typeCode, isDynamic, and staticSize in bytes.
386
+ * @throws {CallciumError} When the descriptor holds no readable node at `offset`.
443
387
  */
444
388
  declare function inspect(desc: Uint8Array, offset: number): TypeInfo;
445
389
  /**
@@ -522,6 +466,9 @@ declare function isOpAllowed(opCode: number, typeInfo: TypeInfo): boolean;
522
466
  * @returns All validation issues found, ordered by group and constraint index.
523
467
  * @throws {CallciumError} If the descriptor is not well-formed; semantic validation is
524
468
  * defined only over a well-formed descriptor.
469
+ * @throws {CallciumError} With code `EMPTY_PATH` when a constraint carries no path step, and
470
+ * `INVALID_HEX` or `INVALID_OPERATOR_BYTES` when an operator is not a readable encoding. Analysis
471
+ * is defined over canonical data, so these reject the input rather than report an issue on it.
525
472
  */
526
473
  declare function validate(data: PolicyData): Issue[];
527
474
  /** Semantic validation for policies. */
@@ -529,6 +476,115 @@ declare const PolicyValidator: {
529
476
  validate: typeof validate;
530
477
  };
531
478
  //#endregion
479
+ //#region src/constraint.d.ts
480
+ /** Accepted scalar value types for operator arguments. */
481
+ type ScalarValue = bigint | boolean | string;
482
+ /**
483
+ * Extremes of the numeric operands a builder's value operators received, as written. Encoding folds
484
+ * a negative operand onto its unsigned alias, so the sign survives nowhere else.
485
+ */
486
+ type OperandExtremes = {
487
+ /** Most negative operand written, or zero when none was negative. */leastNegative: bigint; /** Greatest operand written, or zero when none exceeded it. */
488
+ greatest: bigint;
489
+ };
490
+ /**
491
+ * Mutable builder that accumulates operators targeting a single path.
492
+ * Implements the `Constraint` interface so it can be passed directly to policy builders.
493
+ */
494
+ declare class ConstraintBuilder<Operand extends ScalarValue = ScalarValue> implements Constraint {
495
+ readonly scope: number;
496
+ readonly path: Hex;
497
+ readonly operators: Hex[];
498
+ /**
499
+ * Extremes of the numeric operands the value operators received, as written. Only the extremes
500
+ * can offend: an operand folds into a target's range from below it or from above it, and
501
+ * whichever reaches furthest arrives first. Read it through {@link readOperandExtremes}.
502
+ * @internal
503
+ */
504
+ readonly operandExtremes: OperandExtremes;
505
+ /** @internal */
506
+ constructor(scope: number, path: Hex);
507
+ /**
508
+ * Push a pre-encoded operator hex string and return this for chaining.
509
+ * `values` are the operands as written; the numeric ones join the record.
510
+ */
511
+ private push;
512
+ /** Assert the value equals `value`. */
513
+ eq(value: Operand): this;
514
+ /** Assert the value does not equal `value`. */
515
+ neq(value: Operand): this;
516
+ /** Assert the value equals the context property `contextPropertyId`. */
517
+ eqCtx(contextPropertyId: number): this;
518
+ /** Assert the value does not equal the context property `contextPropertyId`. */
519
+ neqCtx(contextPropertyId: number): this;
520
+ /** Assert the value is greater than `bound`. */
521
+ gt(bound: bigint): this;
522
+ /** Assert the value is less than `bound`. */
523
+ lt(bound: bigint): this;
524
+ /** Assert the value is greater than or equal to `bound`. */
525
+ gte(bound: bigint): this;
526
+ /** Assert the value is less than or equal to `bound`. */
527
+ lte(bound: bigint): this;
528
+ /**
529
+ * Assert the value is within [min, max] inclusive.
530
+ * @throws {CallciumError} If min > max.
531
+ */
532
+ between(min: bigint, max: bigint): this;
533
+ /**
534
+ * Assert the value is a member of the set.
535
+ * Values are sorted and deduplicated before encoding.
536
+ * @throws {CallciumError} If the set is empty after deduplication.
537
+ */
538
+ isIn(values: readonly Operand[]): this;
539
+ /**
540
+ * Assert the value is not a member of the set.
541
+ * @throws {CallciumError} If the set is empty after deduplication.
542
+ */
543
+ notIn(values: readonly Operand[]): this;
544
+ /** Assert all bits in `mask` are set. */
545
+ bitmaskAll(mask: bigint): this;
546
+ /** Assert at least one bit in `mask` is set. */
547
+ bitmaskAny(mask: bigint): this;
548
+ /** Assert no bit in `mask` is set. */
549
+ bitmaskNone(mask: bigint): this;
550
+ /** Assert the runtime length equals `length`. */
551
+ lengthEq(length: bigint): this;
552
+ /** Assert the runtime length is greater than `length`. */
553
+ lengthGt(length: bigint): this;
554
+ /** Assert the runtime length is less than `length`. */
555
+ lengthLt(length: bigint): this;
556
+ /** Assert the runtime length is greater than or equal to `length`. */
557
+ lengthGte(length: bigint): this;
558
+ /** Assert the runtime length is less than or equal to `length`. */
559
+ lengthLte(length: bigint): this;
560
+ /**
561
+ * Assert the runtime length is within [min, max] inclusive.
562
+ * @throws {CallciumError} If min > max.
563
+ */
564
+ lengthBetween(min: bigint, max: bigint): this;
565
+ }
566
+ /**
567
+ * Target a calldata argument by path.
568
+ * Each argument is a big-endian uint16 step; multiple steps navigate into nested types.
569
+ */
570
+ declare function arg(p0: number, ...rest: number[]): ConstraintBuilder;
571
+ /** Target the `msg.sender` context property. */
572
+ declare function msgSender(): ConstraintBuilder<Address>;
573
+ /** Target the `msg.value` context property. */
574
+ declare function msgValue(): ConstraintBuilder<bigint>;
575
+ /** Target the `block.timestamp` context property. */
576
+ declare function blockTimestamp(): ConstraintBuilder<bigint>;
577
+ /** Target the `block.number` context property. */
578
+ declare function blockNumber(): ConstraintBuilder<bigint>;
579
+ /** Target the `block.chainid` context property. */
580
+ declare function chainId(): ConstraintBuilder<bigint>;
581
+ /** Target the `tx.origin` context property. */
582
+ declare function txOrigin(): ConstraintBuilder<Address>;
583
+ /** Target the `block.basefee` context property. */
584
+ declare function baseFee(): ConstraintBuilder<bigint>;
585
+ /** Target the `tx.gasprice` context property. */
586
+ declare function gasPrice(): ConstraintBuilder<bigint>;
587
+ //#endregion
532
588
  //#region src/policy-enforcer.d.ts
533
589
  /**
534
590
  * Check a policy against ABI-encoded call data without throwing on violations.
@@ -536,7 +592,8 @@ declare const PolicyValidator: {
536
592
  * @param callData - ABI-encoded call data as 0x-prefixed hex string.
537
593
  * @param context - Optional execution context for context-scoped rules.
538
594
  * @returns Pass with matched group index, or fail with one violation per evaluated failing group.
539
- * @throws {CallciumError} If the policy blob is structurally malformed.
595
+ * @throws {CallciumError} If the policy blob is structurally malformed, or a context value a rule
596
+ * reads is not an address or an integer a 32-byte word represents.
540
597
  */
541
598
  declare function check(policy: Hex, callData: Hex, context?: Context): EnforceResult;
542
599
  /**
@@ -545,7 +602,8 @@ declare function check(policy: Hex, callData: Hex, context?: Context): EnforceRe
545
602
  * @param callData - ABI-encoded call data as 0x-prefixed hex string.
546
603
  * @param context - Optional execution context for context-scoped rules.
547
604
  * @throws {PolicyViolationError} If the policy rejects the call data.
548
- * @throws {CallciumError} If the policy blob is structurally malformed.
605
+ * @throws {CallciumError} If the policy blob is structurally malformed, or a context value a rule
606
+ * reads is not an address or an integer a 32-byte word represents.
549
607
  */
550
608
  declare function enforce(policy: Hex, callData: Hex, context?: Context): void;
551
609
  /** Check and enforce policies against ABI-encoded call data. */
@@ -570,6 +628,7 @@ declare function toAddress(hex: string): Address;
570
628
  * @returns Binary descriptor bytes starting with the version+paramCount header.
571
629
  * @throws {CallciumError} With code `MALFORMED_TYPE_STRING` for malformed input.
572
630
  * @throws {CallciumError} With code `UNKNOWN_TYPE` for unrecognised type names.
631
+ * @throws {CallciumError} With code `NESTING_TOO_DEEP` when composite nesting exceeds `MAX_NESTING_DEPTH`.
573
632
  */
574
633
  declare function fromTypes(typesCsv: string): Uint8Array;
575
634
  /**
@@ -589,7 +648,7 @@ declare const DescriptorCoder: {
589
648
  };
590
649
  //#endregion
591
650
  //#region src/constants.d.ts
592
- /** Binary layout constants for the Callcium policy format. */
651
+ /** Binary layout constants and normative limits for the Callcium policy format. */
593
652
  declare const PolicyFormat: {
594
653
  readonly VERSION: 2;
595
654
  readonly VERSION_MASK: 15;
@@ -610,10 +669,11 @@ declare const PolicyFormat: {
610
669
  readonly RULE_DEPTH_OFFSET: 3;
611
670
  readonly RULE_PATH_OFFSET: 4;
612
671
  readonly PATH_STEP_SIZE: 2;
672
+ readonly PATH_STEP_MAX: number;
613
673
  readonly RULE_OPCODE_SIZE: 1;
614
674
  readonly RULE_DATALENGTH_SIZE: 2;
615
675
  readonly RULE_FIXED_OVERHEAD: 7;
616
- readonly RULE_MIN_SIZE: 9;
676
+ readonly RULE_MIN_SIZE: number;
617
677
  readonly HINT_HEADER_SIZE: 1;
618
678
  readonly HINT_HOP_SIZE: 8;
619
679
  readonly HINT_HOP_INDEX_OFFSET: 4;
@@ -637,6 +697,9 @@ declare const PolicyFormat: {
637
697
  readonly HINT_META_DYNAMIC_ARRAY: 16384;
638
698
  readonly HINT_META_RESERVED_MASK: 12288;
639
699
  readonly HINT_META_STRIDE_MASK: 4095;
700
+ readonly MAX_PATH_DEPTH: 32;
701
+ readonly MAX_QUANTIFIED_ARRAY_LENGTH: 256;
702
+ readonly MAX_SET_MEMBERS: number;
640
703
  };
641
704
  /**
642
705
  * Extract a `{ KEY: code }` map from a table with `key` and `code` fields.
@@ -646,6 +709,12 @@ type CodeMap<T extends readonly {
646
709
  readonly key: string;
647
710
  readonly code: number;
648
711
  }[]> = { readonly [E in T[number] as E["key"]]: E["code"] };
712
+ /**
713
+ * Render a wire code as fixed-width hex.
714
+ * @param code - Code value.
715
+ * @param byteWidth - Byte width of the field the code occupies.
716
+ * @returns The code as `0x`-prefixed hex, or its decimal form when no such field holds it.
717
+ */
649
718
  /** Rule scope discriminant: context (EVM environment) vs. calldata (ABI payload). */
650
719
  declare const Scope: CodeMap<readonly [{
651
720
  readonly key: "CONTEXT";
@@ -689,41 +758,49 @@ declare const ContextProperty: CodeMap<readonly [{
689
758
  readonly key: "MSG_SENDER";
690
759
  readonly code: 0;
691
760
  readonly label: "msg.sender";
761
+ readonly contextKey: "msgSender";
692
762
  readonly typeCode: 65;
693
763
  }, {
694
764
  readonly key: "MSG_VALUE";
695
765
  readonly code: 1;
696
766
  readonly label: "msg.value";
767
+ readonly contextKey: "msgValue";
697
768
  readonly typeCode: 32;
698
769
  }, {
699
770
  readonly key: "BLOCK_TIMESTAMP";
700
771
  readonly code: 2;
701
772
  readonly label: "block.timestamp";
773
+ readonly contextKey: "blockTimestamp";
702
774
  readonly typeCode: 32;
703
775
  }, {
704
776
  readonly key: "BLOCK_NUMBER";
705
777
  readonly code: 3;
706
778
  readonly label: "block.number";
779
+ readonly contextKey: "blockNumber";
707
780
  readonly typeCode: 32;
708
781
  }, {
709
782
  readonly key: "CHAIN_ID";
710
783
  readonly code: 4;
711
784
  readonly label: "block.chainid";
785
+ readonly contextKey: "chainId";
712
786
  readonly typeCode: 32;
713
787
  }, {
714
788
  readonly key: "TX_ORIGIN";
715
789
  readonly code: 5;
716
790
  readonly label: "tx.origin";
791
+ readonly contextKey: "txOrigin";
717
792
  readonly typeCode: 65;
718
793
  }, {
719
794
  readonly key: "BASE_FEE";
720
795
  readonly code: 6;
721
796
  readonly label: "block.basefee";
797
+ readonly contextKey: "baseFee";
722
798
  readonly typeCode: 32;
723
799
  }, {
724
800
  readonly key: "GAS_PRICE";
725
801
  readonly code: 7;
726
802
  readonly label: "tx.gasprice";
803
+ readonly contextKey: "gasPrice";
727
804
  readonly typeCode: 32;
728
805
  }]>;
729
806
  /** Maximum valid context property ID. */
@@ -734,6 +811,12 @@ type ContextPropertyInfo = {
734
811
  contextKey: keyof Context;
735
812
  typeCode: number;
736
813
  };
814
+ /**
815
+ * Look up a context property code in the assigned set.
816
+ * @param code - Context property ID.
817
+ * @returns Display metadata, or undefined when the ID names no assigned property.
818
+ */
819
+ declare function findContextProperty(code: number): ContextPropertyInfo | undefined;
737
820
  /**
738
821
  * Map a context property code to its display label and ABI type code.
739
822
  * @param code - Context property ID.
@@ -741,12 +824,6 @@ type ContextPropertyInfo = {
741
824
  * @throws {CallciumError} If the code is not a recognised context property.
742
825
  */
743
826
  declare function lookupContextProperty(code: number): ContextPropertyInfo;
744
- /** Protocol-imposed safety limits for path depth and quantifier array size. */
745
- declare const Limits: {
746
- readonly MAX_PATH_DEPTH: 32;
747
- readonly MAX_QUANTIFIED_ARRAY_LENGTH: 256;
748
- readonly MAX_SET_MEMBERS: number;
749
- };
750
827
  /** Operand count category for operator data validation. */
751
828
  type Operands = "single" | "range" | "variadic";
752
829
  /** @internal */
@@ -852,29 +929,10 @@ type OpInfo = {
852
929
  * @throws {CallciumError} If the base code is not a recognised operator.
853
930
  */
854
931
  declare function lookupOp(code: number): OpInfo;
855
- /** Reserved path step values that trigger quantified evaluation over array elements. */
856
- declare const Quantifier: CodeMap<readonly [{
857
- readonly key: "ALL";
858
- readonly code: 65535;
859
- readonly label: "all";
860
- }, {
861
- readonly key: "ANY";
862
- readonly code: 65534;
863
- readonly label: "any";
864
- }]>;
865
- /** Display metadata for a quantifier step. */
866
- type QuantifierInfo = {
867
- label: string;
868
- };
869
- /** Check whether a path step is a quantifier (ALL or ANY). */
870
- declare function isQuantifier(step: number): boolean;
871
- /**
872
- * Map a quantifier path step to its display label.
873
- * @param code - Quantifier step value.
874
- * @returns Display metadata for the quantifier.
875
- * @throws {CallciumError} If the code is not a recognised quantifier.
876
- */
877
- declare function lookupQuantifier(code: number): QuantifierInfo;
932
+ //#endregion
933
+ //#region src/operators.d.ts
934
+ /** Return true when the operator code (with or without NOT flag) is a LENGTH_* variant. */
935
+ declare function isLengthOp(opCode: number): boolean;
878
936
  /** Structural category for a descriptor type code. */
879
937
  type TypeClass = "elementary" | "tuple" | "staticArray" | "dynamicArray";
880
938
  /** Structural classification without label. */
@@ -894,18 +952,17 @@ type TypeCodeInfo = TypeClassInfo & {
894
952
  */
895
953
  declare function lookupTypeCode(code: number): TypeCodeInfo;
896
954
  //#endregion
897
- //#region src/operators.d.ts
898
- /** Return true when the operator code (with or without NOT flag) is a LENGTH_* variant. */
899
- declare function isLengthOp(opCode: number): boolean;
900
- //#endregion
901
955
  //#region src/errors.d.ts
902
956
  /**
903
957
  * Machine-readable error code for structural decoding and validation failures.
904
958
  *
905
- * Each code names one invariant and matches the Solidity error raised for the same
906
- * invariant, transliterated from `PascalCase` to `SCREAMING_SNAKE_CASE`.
959
+ * Each code names one invariant. Where Solidity detects the same invariant, the code is its error
960
+ * name transliterated from `PascalCase` to `SCREAMING_SNAKE_CASE`. The codes under "Inputs and
961
+ * validation" have no counterpart: they name input a Solidity signature cannot express.
962
+ * `OUT_OF_PHYSICAL_BOUNDS` names an invariant Solidity carries twice, as the error
963
+ * `PolicyBuilder.OutOfPhysicalBounds` and as an issue code, so the name is shared with `IssueCode`.
907
964
  */
908
- type CallciumErrorCode = "UNSUPPORTED_VERSION" | "MALFORMED_HEADER" | "UNEXPECTED_END" | "TRAILING_BYTES" | "EMPTY_POLICY" | "EMPTY_GROUP" | "GROUP_TOO_SMALL" | "GROUP_SIZE_MISMATCH" | "GROUP_OVERFLOW" | "RULE_TOO_SMALL" | "RULE_SIZE_MISMATCH" | "RULE_FIELD_OUT_OF_BOUNDS" | "RULE_OVERFLOW" | "EMPTY_PATH" | "MALFORMED_PATH" | "PATH_TOO_DEEP" | "PARAM_INDEX_OUT_OF_BOUNDS" | "TUPLE_FIELD_OUT_OF_BOUNDS" | "STATIC_ARRAY_INDEX_OUT_OF_BOUNDS" | "NOT_COMPOSITE" | "UNCOMPILABLE_PATH" | "QUANTIFIER_ON_NON_ARRAY" | "NESTED_QUANTIFIER" | "INVALID_SCOPE" | "INVALID_CONTEXT_PATH" | "UNKNOWN_CONTEXT_PROPERTY" | "UNKNOWN_OPERATOR" | "INVALID_OPERATOR_BYTES" | "OPERATOR_TARGET_MISMATCH" | "UNSORTED_IN_SET" | "MALFORMED_HINT" | "NO_CONSTRAINT_OPERATORS" | "DUPLICATE_PATH_IN_GROUP" | "EMPTY_SET" | "SET_TOO_LARGE" | "INVALID_RANGE" | "UNKNOWN_TYPE_CODE" | "NODE_LENGTH_TOO_SMALL" | "NODE_LENGTH_TOO_LARGE" | "NODE_OVERFLOW" | "NESTING_TOO_DEEP" | "INVALID_ARRAY_LENGTH" | "INVALID_TUPLE_FIELD_COUNT" | "STATIC_WORDS_TOO_LARGE" | "PARAM_COUNT_MISMATCH" | "TOO_MANY_PARAMS" | "MALFORMED_TYPE_STRING" | "UNKNOWN_TYPE" | "MALFORMED_SIGNATURE" | "SIGNATURE_CONTAINS_WHITESPACE" | "INVALID_FUNCTION_NAME" | "GROUP_COUNT_OVERFLOW" | "RULE_COUNT_OVERFLOW" | "RULE_SIZE_OVERFLOW" | "DESC_LENGTH_OVERFLOW" | "UNKNOWN_QUANTIFIER" | "INVALID_HEX" | "VALIDATION_ERROR";
965
+ type CallciumErrorCode = "UNSUPPORTED_VERSION" | "MALFORMED_HEADER" | "UNEXPECTED_END" | "TRAILING_BYTES" | "EMPTY_POLICY" | "EMPTY_GROUP" | "GROUP_TOO_SMALL" | "GROUP_SIZE_MISMATCH" | "GROUP_OVERFLOW" | "RULE_TOO_SMALL" | "RULE_SIZE_MISMATCH" | "RULE_FIELD_OUT_OF_BOUNDS" | "RULE_OVERFLOW" | "EMPTY_PATH" | "MALFORMED_PATH" | "PATH_TOO_DEEP" | "PARAM_INDEX_OUT_OF_BOUNDS" | "TUPLE_FIELD_OUT_OF_BOUNDS" | "STATIC_ARRAY_INDEX_OUT_OF_BOUNDS" | "NOT_COMPOSITE" | "UNCOMPILABLE_PATH" | "QUANTIFIER_ON_NON_ARRAY" | "NESTED_QUANTIFIER" | "INVALID_SCOPE" | "INVALID_CONTEXT_PATH" | "UNKNOWN_CONTEXT_PROPERTY" | "UNKNOWN_OPERATOR" | "INVALID_OPERATOR_BYTES" | "OPERATOR_TARGET_MISMATCH" | "UNSORTED_IN_SET" | "MALFORMED_HINT" | "NO_CONSTRAINT_OPERATORS" | "DUPLICATE_PATH_IN_GROUP" | "EMPTY_SET" | "SET_TOO_LARGE" | "INVALID_RANGE" | "OUT_OF_PHYSICAL_BOUNDS" | "UNKNOWN_TYPE_CODE" | "NODE_LENGTH_TOO_SMALL" | "NODE_LENGTH_TOO_LARGE" | "NODE_OVERFLOW" | "NESTING_TOO_DEEP" | "INVALID_ARRAY_LENGTH" | "INVALID_TUPLE_FIELD_COUNT" | "STATIC_WORDS_TOO_LARGE" | "PARAM_COUNT_MISMATCH" | "TOO_MANY_PARAMS" | "MALFORMED_TYPE_STRING" | "UNKNOWN_TYPE" | "MALFORMED_SIGNATURE" | "SIGNATURE_CONTAINS_WHITESPACE" | "INVALID_FUNCTION_NAME" | "GROUP_COUNT_OVERFLOW" | "RULE_COUNT_OVERFLOW" | "RULE_SIZE_OVERFLOW" | "DESC_LENGTH_OVERFLOW" | "UNKNOWN_QUANTIFIER" | "INVALID_HEX" | "MALFORMED_SELECTOR" | "PATH_STEP_OVERFLOW" | "OPERAND_OVERFLOW" | "CONTEXT_VALUE_OVERFLOW" | "VALIDATION_ERROR";
909
966
  /**
910
967
  * Thrown when a policy or descriptor blob is structurally malformed.
911
968
  * The optional `offset` indicates the byte position in the source blob where the error was detected.
@@ -941,5 +998,5 @@ declare class PolicyViolationError extends Error {
941
998
  constructor(violations: Violation[]);
942
999
  }
943
1000
  //#endregion
944
- export { type Address, CallciumError, type CallciumErrorCode, type CalldataNavigationViolation, type Constraint, type ConstraintBuilder, type Context, ContextProperty, type ContextPropertyInfo, type DecodedGroup, type DecodedParam, type DecodedPolicy, type DecodedRule, Descriptor, DescriptorCoder, type EnforceResult, type Field, type Hex, type Issue, type IssueCategory, type IssueSeverity, Limits, MAX_CONTEXT_PROPERTY_ID, type MissingContextViolation, type MissingSelectorViolation, type NavigationViolationCode, type NonCanonicalValueViolation, Op, type OpInfo, type Operands, PolicyBuilder, PolicyCoder, type PolicyData, PolicyEnforcer, PolicyFormat, PolicyValidator, PolicyViolationError, Quantifier, type QuantifierEmptyArrayViolation, type QuantifierInfo, type QuantifierLimitExceededViolation, type ScalarValue, Scope, type ScopeInfo, type SelectorMismatchViolation, type Span, type TypeClass, type TypeClassInfo, TypeCode, type TypeCodeInfo, type TypeInfo, ValidationError, type ValueMismatchViolation, type Violation, type ViolationCode, arg, baseFee, blockNumber, blockTimestamp, bytesToHex, chainId, gasPrice, hexToBytes, isLengthOp, isOpAllowed, isQuantifier, lookupContextProperty, lookupOp, lookupQuantifier, lookupScope, lookupTypeCode, msgSender, msgValue, parsePathSteps, toAddress, txOrigin };
1001
+ export { type Address, CallciumError, type CallciumErrorCode, type CalldataNavigationViolation, type Constraint, type ConstraintBuilder, type Context, ContextProperty, type ContextPropertyInfo, type DecodedGroup, type DecodedParam, type DecodedPolicy, type DecodedRule, Descriptor, DescriptorCoder, type EnforceResult, type Field, type Hex, type Issue, type IssueCategory, type IssueCode, type IssueSeverity, MAX_CONTEXT_PROPERTY_ID, type MissingContextViolation, type MissingSelectorViolation, type NavigationViolationCode, type NonCanonicalValueViolation, Op, type OpInfo, type Operands, PolicyBuilder, PolicyCoder, type PolicyData, PolicyEnforcer, PolicyFormat, PolicyValidator, PolicyViolationError, Quantifier, type QuantifierEmptyArrayViolation, type QuantifierInfo, type QuantifierLimitExceededViolation, type ScalarValue, Scope, type ScopeInfo, type SelectorMismatchViolation, type Span, type TypeClass, type TypeClassInfo, TypeCode, type TypeCodeInfo, type TypeInfo, ValidationError, type ValueMismatchViolation, type Violation, type ViolationCode, arg, baseFee, blockNumber, blockTimestamp, bytesToHex, chainId, findContextProperty, gasPrice, hexToBytes, isLengthOp, isOpAllowed, isQuantifier, lookupContextProperty, lookupOp, lookupQuantifier, lookupScope, lookupTypeCode, msgSender, msgValue, parsePathSteps, toAddress, txOrigin };
945
1002
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/constraint.ts","../src/policy-builder.ts","../src/policy-coder.ts","../src/descriptor.ts","../src/policy-validator.ts","../src/policy-enforcer.ts","../src/bytes.ts","../src/descriptor-coder.ts","../src/constants.ts","../src/operators.ts","../src/errors.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/policy-builder.ts","../src/policy-coder.ts","../src/path.ts","../src/descriptor.ts","../src/policy-validator.ts","../src/constraint.ts","../src/policy-enforcer.ts","../src/bytes.ts","../src/descriptor-coder.ts","../src/constants.ts","../src/operators.ts","../src/errors.ts"],"mappings":"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"}