@open-charging-cloud/wwcp-poi 0.1.1 → 0.2.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/keys.d.ts CHANGED
@@ -3,8 +3,10 @@ import { type JSONObject, type JSONValue } from './json/value.ts';
3
3
  /** What a signing key may sign (SPECIFICATION.md section 4.1); a signing key naming none signs everything of its party. */
4
4
  export declare const KeyUsages: {
5
5
  readonly Infrastructure: "infrastructure";
6
+ readonly ChargeTransparencyRecords: "chargeTransparencyRecords";
6
7
  readonly Tariffs: "tariffs";
7
8
  readonly PriceStatements: "priceStatements";
9
+ readonly WitnessPublications: "witnessPublications";
8
10
  readonly Models: "models";
9
11
  readonly Software: "software";
10
12
  readonly Certificates: "certificates";
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIhF,2HAA2H;AAC3H,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAKhE,eAAO,MAAM,kBAAkB,QAAiD,CAAC;AAyBjF;;;GAGG;AACH,qBAAa,YAAY;IAGjB,wEAAwE;aACxD,EAAE,EAAU,MAAM;aAClB,GAAG,EAAS,OAAO;IACnC,gFAAgF;aAChE,QAAQ,EAAI,UAAU;aACtB,SAAS,EAAG,MAAM,GAAG,SAAS;aAC9B,QAAQ,EAAI,MAAM,GAAG,SAAS;IAC9C,iHAAiH;aACjG,MAAM,EAAM,MAAM,GAAG,SAAS;aAC9B,MAAM,EAAM,SAAS,MAAM,EAAE;IAC7C,iCAAiC;aACjB,IAAI,EAAQ,UAAU;IAZ1C,OAAO;IAgBP,2FAA2F;IAC3F,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,iGAAiG;IAC1F,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIxC,2FAA2F;IACpF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMvC;;;;;;OAMG;WACW,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,SAAiB,GAAG,YAAY;IA2FtF,0DAA0D;WAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;CAiBrF"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIhF,2HAA2H;AAC3H,eAAO,MAAM,SAAS;;;;;;;;;;;CAWZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAKhE,eAAO,MAAM,kBAAkB,QAAiD,CAAC;AAyBjF;;;GAGG;AACH,qBAAa,YAAY;IAGjB,wEAAwE;aACxD,EAAE,EAAU,MAAM;aAClB,GAAG,EAAS,OAAO;IACnC,gFAAgF;aAChE,QAAQ,EAAI,UAAU;aACtB,SAAS,EAAG,MAAM,GAAG,SAAS;aAC9B,QAAQ,EAAI,MAAM,GAAG,SAAS;IAC9C,iHAAiH;aACjG,MAAM,EAAM,MAAM,GAAG,SAAS;aAC9B,MAAM,EAAM,SAAS,MAAM,EAAE;IAC7C,iCAAiC;aACjB,IAAI,EAAQ,UAAU;IAZ1C,OAAO;IAgBP,2FAA2F;IAC3F,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,iGAAiG;IAC1F,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIxC,2FAA2F;IACpF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMvC;;;;;;OAMG;WACW,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,SAAiB,GAAG,YAAY;IA2FtF,0DAA0D;WAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;CAiBrF"}
@@ -11,6 +11,8 @@ import type { Checkpoint, CheckpointProof } from '../history/checkpoint.ts';
11
11
  export declare const PROOF_CONTEXT: string;
12
12
  /** What a verified proof attests, and by whom. */
13
13
  export interface VerifiedProof {
14
+ /** Conservative expiry of counted attestations and their certified signing/identity keys. */
15
+ readonly validUntil: number;
14
16
  /** The root the proof leads to: the `effectiveTree` ETag of its version. */
15
17
  readonly eTag: ETag;
16
18
  /** The roaming network with what the proof gives completely; pruned arrays as they are. */
@@ -1 +1 @@
1
- {"version":3,"file":"stationProof.d.ts","sourceRoot":"","sources":["../../src/proofs/stationProof.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAA0B,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAc,KAAK,IAAI,EAAE,MAAU,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAY,8BAA8B,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAmB,mBAAmB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAoB,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAY,MAAS,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAe,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI5E,eAAO,MAAM,aAAa,QAA6C,CAAC;AAGxE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAW,IAAI,CAAC;IAC7B,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAO,UAAU,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAG,SAAS,WAAW,EAAE,CAAC;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAK,SAAS,MAAM,EAAE,CAAC;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAG,YAAY,CAAC;CACxC;AAiBD;;;;GAIG;AACH,qBAAa,oBAAoB;aAGT,aAAa,EAAI,aAAa;aAC9B,QAAQ,EAAS,MAAM;aACvB,QAAQ,EAAS,MAAM;aACvB,cAAc,EAAG,UAAU;aAC3B,YAAY,EAAK,SAAS,WAAW,EAAE;aACvC,IAAI,EAAa,UAAU;IAN/C,OAAO;WAUO,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,oBAAoB;IA4BvE;;;;OAIG;WACW,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,GAAE,SAAS,WAAW,EAAO,GAAG,oBAAoB;IAaxM,uFAAuF;IAChF,SAAS,IAAI;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE;IAMxD;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,aAAa;IAyE5F;;;;;;;;OAQG;IACI,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE;IAiDzH;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAgE5B;;;;OAIG;IACI,wBAAwB,CAAC,WAAW,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE;CAkBtG;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"stationProof.d.ts","sourceRoot":"","sources":["../../src/proofs/stationProof.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAA0B,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAc,KAAK,IAAI,EAAE,MAAU,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAY,8BAA8B,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAmB,mBAAmB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAoB,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAY,MAAS,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAe,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI5E,eAAO,MAAM,aAAa,QAA6C,CAAC;AAGxE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC1B,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAW,IAAI,CAAC;IAC7B,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAO,UAAU,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAG,SAAS,WAAW,EAAE,CAAC;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAK,SAAS,MAAM,EAAE,CAAC;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAG,YAAY,CAAC;CACxC;AAiBD;;;;GAIG;AACH,qBAAa,oBAAoB;aAGT,aAAa,EAAI,aAAa;aAC9B,QAAQ,EAAS,MAAM;aACvB,QAAQ,EAAS,MAAM;aACvB,cAAc,EAAG,UAAU;aAC3B,YAAY,EAAK,SAAS,WAAW,EAAE;aACvC,IAAI,EAAa,UAAU;IAN/C,OAAO;WAUO,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,oBAAoB;IA4BvE;;;;OAIG;WACW,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,GAAE,SAAS,WAAW,EAAO,GAAG,oBAAoB;IAaxM,uFAAuF;IAChF,SAAS,IAAI;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE;IAMxD;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,aAAa;IA6E5F;;;;;;;;OAQG;IACI,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE;IAiDzH;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAiE5B;;;;OAIG;IACI,wBAAwB,CAAC,WAAW,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE;CAkBtG;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type Epoch } from '../history/epoch.ts';
1
2
  import type { POIPublicKey } from '../keys.ts';
2
3
  import type { KeyStatement } from './keyStatement.ts';
3
4
  import { TrustAnchor } from './trustAnchor.ts';
@@ -28,7 +29,10 @@ export interface TrustEvaluation {
28
29
  * decisions for each operation. It is not persisted, and cannot be constructed from a serialized green flag.
29
30
  */
30
31
  export declare class TrustContext {
32
+ private readonly statement;
31
33
  readonly evaluatedAt: number;
34
+ readonly epoch: Epoch;
35
+ readonly epochs: readonly Epoch[];
32
36
  readonly anchor: TrustAnchor;
33
37
  readonly authorizedAnchor: TrustAnchor;
34
38
  readonly trustedHolders: readonly (readonly string[])[];
@@ -38,6 +42,8 @@ export declare class TrustContext {
38
42
  readonly requiredConsensus: number;
39
43
  readonly validUntil: number;
40
44
  private constructor();
45
+ /** Attach only profiles established by a verified transition; the bootstrap keeps the first epoch. */
46
+ static withEpoch(reference: TrustContext, epoch: Epoch, epochs?: readonly Epoch[]): TrustContext;
41
47
  static create(anchor: TrustAnchor, statement: KeyStatement, options: TrustEvaluationOptions): TrustContext;
42
48
  static evaluate(anchor: TrustAnchor, statement: KeyStatement, options: TrustEvaluationOptions): TrustEvaluation;
43
49
  /** The context represents exactly one evaluation time; a different time requires fresh local decisions. */
@@ -1 +1 @@
1
- {"version":3,"file":"trustContext.d.ts","sourceRoot":"","sources":["../../src/proofs/trustContext.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAU,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAU,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAgB,kBAAkB,CAAC;AAGzD,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;CACxC;AAED,0GAA0G;AAC1G,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACnC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;aAWwC,WAAW,EAAE,MAAM;IAVhF,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,SAAgB,gBAAgB,EAAE,WAAW,CAAC;IAC9C,SAAgB,cAAc,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/D,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,wBAAwB,EAAE,MAAM,CAAC;IACjD,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAC1C,SAAgB,UAAU,EAAE,MAAM,CAAC;IAEnC,OAAO;WAeO,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,GAAG,YAAY;WAOnG,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,GAAG,eAAe;IAkDtH,2GAA2G;IACpG,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM;IAM1D,6FAA6F;IACtF,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,GAAE,SAAS,YAAY,EAAO,EACxE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CASjG;AAED,yHAAyH;AACzH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAEvE"}
1
+ {"version":3,"file":"trustContext.d.ts","sourceRoot":"","sources":["../../src/proofs/trustContext.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAa,KAAK,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAK3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAU,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAU,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAgB,kBAAkB,CAAC;AAGzD,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;CACxC;AAED,0GAA0G;AAC1G,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACnC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IAWD,OAAO,CAAC,QAAQ,CAAC,SAAS;aAAgC,WAAW,EAAE,MAAM;aAAiB,KAAK,EAAC,KAAK;aAA6B,MAAM,EAAC,SAAS,KAAK,EAAE;IAVjL,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,SAAgB,gBAAgB,EAAE,WAAW,CAAC;IAC9C,SAAgB,cAAc,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/D,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,wBAAwB,EAAE,MAAM,CAAC;IACjD,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAC1C,SAAgB,UAAU,EAAE,MAAM,CAAC;IAEnC,OAAO;IAeP,sGAAsG;WACxF,SAAS,CAAC,SAAS,EAAC,YAAY,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,GAAC,SAAS,KAAK,EAAU,GAAE,YAAY;WAG1F,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,GAAG,YAAY;WAOnG,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,GAAG,eAAe;IAkDtH,2GAA2G;IACpG,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM;IAM1D,6FAA6F;IACtF,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,GAAE,SAAS,YAAY,EAAO,EACxE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CASjG;AAED,yHAAyH;AACzH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAEvE"}
@@ -7,6 +7,11 @@ import { TrustContext } from '../proofs/trustContext.ts';
7
7
  import type { TrustAnchor } from '../proofs/trustAnchor.ts';
8
8
  /** A charging station as a verified proof gives it: everything here is attested by the roaming network operator. */
9
9
  export interface VerifiedChargingStation {
10
+ /** Evaluation time and conservative freshness bound of the counted root attestations. */
11
+ readonly verification: {
12
+ readonly at: number;
13
+ readonly validUntil: number;
14
+ };
10
15
  readonly roamingNetwork: {
11
16
  readonly id: string;
12
17
  readonly name: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"chargingStation.d.ts","sourceRoot":"","sources":["../../src/verifier/chargingStation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chargingStation.d.ts","sourceRoot":"","sources":["../../src/verifier/chargingStation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { JSONValue } from '../json/value.ts';
2
+ import type { TrustContext } from '../proofs/trustContext.ts';
3
+ import type { HistoricalTrustContext } from './historicalMeasurements.ts';
4
+ /** Library extension: this usage authorizes charging transparency envelopes, independently of price statements. */
5
+ export declare const CHARGING_DOCUMENT_USAGE: "chargeTransparencyRecords";
6
+ export interface AuthorizedChargingDocumentKeys {
7
+ readonly evseId: string;
8
+ readonly chargingStationId: string;
9
+ readonly operatorId: string;
10
+ readonly at: number;
11
+ readonly commitId: string;
12
+ readonly revision: number;
13
+ readonly keys: readonly {
14
+ readonly id: string;
15
+ readonly algorithm: string;
16
+ readonly encodings: readonly string[];
17
+ readonly value: string;
18
+ readonly keyUsage: readonly string[];
19
+ }[];
20
+ }
21
+ /** Authentication and key normalization are shared by web, desktop and mobile callers. No envelope-supplied key is an authority input. */
22
+ export declare function verifyChargingDocumentKeys(context: TrustContext | HistoricalTrustContext, proof: JSONValue, request: {
23
+ readonly evseId: string;
24
+ readonly operatorId: string;
25
+ readonly at: number;
26
+ }): AuthorizedChargingDocumentKeys;
27
+ //# sourceMappingURL=documentKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentKeys.d.ts","sourceRoot":"","sources":["../../src/verifier/documentKeys.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAyB,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAsB,2BAA2B,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAY,6BAA6B,CAAC;AAMhF,mHAAmH;AACnH,eAAO,MAAM,uBAAuB,EAAG,2BAAoC,CAAC;AAE5E,MAAM,WAAW,8BAA8B;IAC3C,QAAQ,CAAC,MAAM,EAAc,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,EAAE,EAAkB,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAY,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAY,MAAM,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAgB,SAAS;QAClC,QAAQ,CAAC,EAAE,EAAU,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAG,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAG,SAAS,MAAM,EAAE,CAAC;QACvC,QAAQ,CAAC,KAAK,EAAO,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAI,SAAS,MAAM,EAAE,CAAC;KAC1C,EAAE,CAAC;CACP;AAYD,0IAA0I;AAC1I,wBAAgB,0BAA0B,CAAC,OAAO,EAAG,YAAY,GAAG,sBAAsB,EAC/C,KAAK,EAAK,SAAS,EACnB,OAAO,EAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,8BAA8B,CAkClK"}
@@ -0,0 +1,96 @@
1
+ import type { JSONValue } from '../json/value.ts';
2
+ import type { TrustAnchor } from '../proofs/trustAnchor.ts';
3
+ import { TrustContext } from '../proofs/trustContext.ts';
4
+ import { KeyStatement } from '../proofs/keyStatement.ts';
5
+ import { POIPublicKey } from '../keys.ts';
6
+ import { Checkpoint } from '../history/checkpoint.ts';
7
+ import type { TrustedWitness } from './checkpoints.ts';
8
+ import { type MeasurementKeyFormat, type VerifiedMeterKeyBinding } from './measurementKeys.ts';
9
+ /** Versioned TS-library extension, not a change to the existing Evidence wire schema. */
10
+ export declare const HISTORICAL_METER_EVIDENCE_CONTEXT = "https://open.charging.cloud/contexts/wwcp/historicalMeterEvidence/v1";
11
+ export interface HistoricalMeterEvidence {
12
+ readonly evseId: string;
13
+ readonly versions: readonly {
14
+ readonly proof: JSONValue;
15
+ readonly commitProof?: JSONValue;
16
+ readonly checkpoints: readonly {
17
+ readonly checkpoint: JSONValue;
18
+ readonly operator: JSONValue;
19
+ }[];
20
+ }[];
21
+ }
22
+ export interface HistoricalMeterKeyBinding extends Omit<VerifiedMeterKeyBinding, 'evidence'> {
23
+ readonly evidence: Omit<VerifiedMeterKeyBinding['evidence'], 'association'> & {
24
+ readonly association: 'historical-attestation';
25
+ readonly measurementTimes: readonly number[];
26
+ readonly historicalStatementDigest: string;
27
+ readonly attestationValidUntil: number;
28
+ };
29
+ }
30
+ export interface HistoricalMeterVerification {
31
+ readonly bindings: readonly HistoricalMeterKeyBinding[];
32
+ readonly versions: readonly {
33
+ readonly commitId: string;
34
+ readonly publication: 'missing' | 'rno-checkpoint' | 'witnessed-checkpoint';
35
+ readonly checkpointId?: string;
36
+ readonly witnessedBy: readonly string[];
37
+ }[];
38
+ readonly checkedAt: number;
39
+ readonly timeBasis: 'signed-measurement-timestamps';
40
+ readonly independentTime: 'not-proven';
41
+ readonly latestVersion: 'not-proven';
42
+ }
43
+ export interface HistoricalMeterPolicy {
44
+ readonly witnesses?: readonly TrustedWitness[];
45
+ readonly requiredWitnesses?: number;
46
+ readonly requirePublication?: boolean;
47
+ /** Caller-authorized compromise information, never read from the evidence bundle. */
48
+ readonly revocations?: readonly {
49
+ readonly keyId: string;
50
+ readonly invalidFrom: number;
51
+ }[];
52
+ }
53
+ export declare function parseHistoricalMeterEvidence(value: JSONValue): HistoricalMeterEvidence;
54
+ export declare function historicalOperatorContext(current: TrustContext | HistoricalTrustContext, operator: JSONValue, at: number): TrustContext;
55
+ /** Fresh local permission for historical verification, independent of today's statement expiry. Not persisted. */
56
+ export declare class HistoricalTrustContext {
57
+ readonly evaluatedAt: number;
58
+ private readonly authorities;
59
+ readonly authorizedAnchor: TrustAnchor;
60
+ readonly roamingNetworkId: string;
61
+ readonly roamingNetworkOperatorId: string;
62
+ readonly requiredConsensus: number;
63
+ readonly keyStatementDigest: string;
64
+ /** An operation deadline, not historical document validity or a lease on local trust. */
65
+ readonly validUntil: number;
66
+ readonly trustedHolders: readonly (readonly string[])[];
67
+ readonly epoch: TrustContext['epoch'];
68
+ readonly epochs: TrustContext['epochs'];
69
+ private constructor();
70
+ /** Contexts must be reconstructed from current local roots and verified transition certificates, never serialized success flags. */
71
+ static fromVerifiedAuthorities(reference: TrustContext, authorities: readonly {
72
+ readonly context: TrustContext;
73
+ readonly from: number;
74
+ readonly until: number;
75
+ }[], now: number): HistoricalTrustContext;
76
+ authorityAt(at: number): TrustContext | undefined;
77
+ static create(anchor: TrustAnchor, reference: KeyStatement, options: {
78
+ readonly trustedIdentityKeyIds: Iterable<string>;
79
+ readonly otherIdentityKeys?: readonly POIPublicKey[];
80
+ readonly now?: number;
81
+ }): HistoricalTrustContext;
82
+ }
83
+ /** Current caller authorization and historical document validity are deliberately different clocks. */
84
+ export declare function verifyHistoricalMeterEvidence(current: TrustContext | HistoricalTrustContext, value: JSONValue, request: {
85
+ readonly evseId: string;
86
+ readonly meterSerialNumber: string;
87
+ readonly measurementTimes: readonly number[];
88
+ readonly keyFormat: MeasurementKeyFormat;
89
+ }, policy?: HistoricalMeterPolicy): HistoricalMeterVerification;
90
+ /** Shared checkpoint authority for meter and price evidence. A witness is never authorized by its own bundle. */
91
+ export declare function verifyAuthorizedCheckpoint(current: TrustContext | HistoricalTrustContext, checkpoint: Checkpoint, operator: JSONValue, policy?: HistoricalMeterPolicy): {
92
+ readonly checkpoint: Checkpoint;
93
+ readonly signedBy: readonly string[];
94
+ readonly witnessedBy: readonly string[];
95
+ };
96
+ //# sourceMappingURL=historicalMeasurements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historicalMeasurements.d.ts","sourceRoot":"","sources":["../../src/verifier/historicalMeasurements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { POIError } from '../errors.ts';
2
+ import { type JSONValue } from '../json/value.ts';
3
+ import { TrustContext } from '../proofs/trustContext.ts';
4
+ export type MeasurementKeyFormat = 'spki-der' | 'cose-key';
5
+ export type MeasurementKeyProblem = 'missing-meter' | 'identity-mismatch' | 'ambiguous-key' | 'unsupported-key' | 'invalid-key';
6
+ export declare class MeasurementKeyError extends POIError {
7
+ readonly code: MeasurementKeyProblem;
8
+ constructor(code: MeasurementKeyProblem, message: string);
9
+ }
10
+ /** P-256 pilot. The declared format is required; a 64-character ID never determines its derivation scheme. */
11
+ export interface MeasurementPublicKey {
12
+ readonly id: string;
13
+ readonly idScheme: 'sha256-spki' | 'sha256-cose-key-thumbprint';
14
+ readonly canonicalId: string;
15
+ readonly sourceFormat: MeasurementKeyFormat;
16
+ readonly value: string;
17
+ readonly encodings: readonly string[];
18
+ readonly algorithm: 'ECDSA-secp256r1';
19
+ }
20
+ export interface VerifiedMeterKeyBinding {
21
+ readonly evseId: string;
22
+ readonly chargingStationId: string;
23
+ readonly meterId: string;
24
+ readonly meterSerialNumber: string;
25
+ readonly key: MeasurementPublicKey;
26
+ readonly evidence: {
27
+ readonly roamingNetworkId: string;
28
+ readonly roamingNetworkOperatorId: string;
29
+ readonly commitId: string;
30
+ readonly revision: number;
31
+ readonly treeRoot: string;
32
+ readonly keyStatementDigest: string;
33
+ readonly verifiedAt: number;
34
+ readonly validUntil: number;
35
+ /** A current authenticated snapshot is not historical installation/key-rotation evidence. */
36
+ readonly association: 'current-snapshot';
37
+ };
38
+ }
39
+ export declare function parseMeasurementPublicKey(value: JSONValue, format: MeasurementKeyFormat): MeasurementPublicKey;
40
+ /** Re-verifies the original proof against an authorized context. Never searches other EVSEs or tries unrelated keys. */
41
+ export declare function verifyMeterKey(context: TrustContext, proof: JSONValue, request: {
42
+ readonly evseId: string;
43
+ readonly meterSerialNumber: string;
44
+ readonly meterId?: string;
45
+ readonly keyId?: string;
46
+ readonly keyFormat: MeasurementKeyFormat;
47
+ }): VerifiedMeterKeyBinding;
48
+ //# sourceMappingURL=measurementKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measurementKeys.d.ts","sourceRoot":"","sources":["../../src/verifier/measurementKeys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,CAAC;AAChI,qBAAa,mBAAoB,SAAQ,QAAQ;aACV,IAAI,EAAE,qBAAqB;gBAA3B,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAClF;AAED,8GAA8G;AAC9G,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,4BAA4B,CAAC;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE;QACf,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;QAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,6FAA6F;QAC7F,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;KAC5C,CAAC;CACL;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CA0C9G;AAED,wHAAwH;AACxH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;CACrE,GAAG,uBAAuB,CAsB1B"}
@@ -0,0 +1,70 @@
1
+ import type { JSONValue } from '../json/value.ts';
2
+ import type { ChargingStationProof } from '../proofs/stationProof.ts';
3
+ import type { Checkpoint } from '../history/checkpoint.ts';
4
+ import type { PriceStatement } from '../proofs/priceStatement.ts';
5
+ /** Authenticated observations supplied by the caller, never imported success flags. Comparison grants no authority. */
6
+ export interface VersionObservation {
7
+ readonly kind: 'station' | 'checkpoint' | 'price' | 'live' | 'policy';
8
+ readonly chain: string;
9
+ readonly epoch: string;
10
+ readonly position: number;
11
+ readonly digest: string;
12
+ readonly revision?: number;
13
+ readonly previous?: string;
14
+ readonly identity?: string;
15
+ readonly original: string;
16
+ readonly final?: boolean;
17
+ readonly rootDigest?: string;
18
+ }
19
+ export interface VersionConflict {
20
+ readonly code: 'fork' | 'identity' | 'link';
21
+ readonly kind: VersionObservation['kind'];
22
+ readonly chain: string;
23
+ readonly epoch: string;
24
+ readonly position: number;
25
+ readonly known: string;
26
+ readonly incoming: string;
27
+ readonly original: string;
28
+ readonly observedAt: number;
29
+ }
30
+ export interface ObservedVersions {
31
+ readonly version: 1;
32
+ readonly points: readonly VersionObservation[];
33
+ readonly transitions?: readonly {
34
+ readonly id: string;
35
+ readonly sequence: number;
36
+ readonly fromPolicyId: string;
37
+ readonly toPolicyId: string;
38
+ readonly fromEpoch: number;
39
+ readonly toEpoch: number;
40
+ readonly original: string;
41
+ }[];
42
+ readonly heads: Readonly<Record<string, {
43
+ readonly epoch: string;
44
+ readonly position: number;
45
+ readonly digest: string;
46
+ }>>;
47
+ readonly conflicts: readonly VersionConflict[];
48
+ }
49
+ export interface VersionIssue {
50
+ readonly code: 'fork' | 'identity' | 'link' | 'known-fork' | 'rollback' | 'continuity-missing' | 'epoch-transition';
51
+ readonly kind: VersionObservation['kind'];
52
+ readonly chain: string;
53
+ readonly detail: string;
54
+ }
55
+ export interface VersionComparison {
56
+ readonly accepted: boolean;
57
+ readonly status: 'first-seen' | 'matches' | 'advanced' | 'historical' | 'rejected';
58
+ readonly issues: readonly VersionIssue[];
59
+ readonly state: ObservedVersions;
60
+ }
61
+ export declare function emptyObservedVersions(): ObservedVersions;
62
+ export declare function observedVersionsChecksum(value: JSONValue): string;
63
+ /** Deterministic negative constraints. Current selection is monotonic; historical inspection permits older coordinates, never contradictory ones. */
64
+ export declare function compareObservedVersions(before: ObservedVersions, candidates: readonly VersionObservation[], mode: 'current' | 'historical', observedAt: number): VersionComparison;
65
+ /** Metadata projection only: callers must authenticate each original with the normal role/quorum verifiers first. */
66
+ export declare function stationVersionObservation(proof: ChargingStationProof, epoch?: string): VersionObservation;
67
+ export declare function checkpointVersionObservation(checkpoint: Checkpoint): VersionObservation;
68
+ export declare function priceVersionObservation(statement: PriceStatement): VersionObservation;
69
+ export declare function checkpointRootVersionObservation(checkpoint: Checkpoint): VersionObservation;
70
+ //# sourceMappingURL=observedVersions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observedVersions.d.ts","sourceRoot":"","sources":["../../src/verifier/observedVersions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { JSONObject, JSONValue } from '../json/value.ts';
2
+ import { POIPublicKey } from '../keys.ts';
3
+ import type { Checkpoint } from '../history/checkpoint.ts';
4
+ import type { PriceStatement } from '../proofs/priceStatement.ts';
5
+ /** Experimental extensions, not the checkpoint witness wire format or an RFC 3161 token. */
6
+ export declare const PRICE_PUBLICATION_RECEIPT_CONTEXT = "https://open.charging.cloud/contexts/wwcp/pricePublicationReceipt/v1";
7
+ export declare const WITNESS_PUBLICATION_POLICY_CONTEXT = "https://open.charging.cloud/contexts/wwcp/witnessPublicationPolicy/v1";
8
+ /** Bind the actual original CPO signature and the complete selected tariff, including its currency. */
9
+ export declare function pricePublicationOfferHashes(statement: PriceStatement, tariff: JSONObject): {
10
+ readonly priceStatementSHA256: string;
11
+ readonly tariffSHA256: string;
12
+ };
13
+ export interface PublicationWitness {
14
+ readonly id: string;
15
+ /** Independently approved organization identity; several keys/aliases never add votes. */
16
+ readonly organization: string;
17
+ readonly networks: readonly string[];
18
+ readonly keys: readonly POIPublicKey[];
19
+ readonly notBefore: number;
20
+ readonly notAfter: number;
21
+ /** Locally accepted upper bound, never taken from a receipt. */
22
+ readonly clockErrorMs: number;
23
+ /** Explicit receipt endpoints, not a guessed discovery URL. */
24
+ readonly endpoints: readonly string[];
25
+ readonly json: JSONObject;
26
+ }
27
+ export interface WitnessPublicationPolicy {
28
+ readonly requiredOrganizations: number;
29
+ readonly witnesses: readonly PublicationWitness[];
30
+ readonly json: JSONObject;
31
+ }
32
+ /** Syntax only. Callers must additionally apply their own public-network transport policy before fetching. */
33
+ export declare function publicPublicationURL(text: string): string;
34
+ /** Parsing a suggested policy never authorizes it. Only the caller supplies the accepted policy. */
35
+ export declare function parseWitnessPublicationPolicy(value: JSONValue): WitnessPublicationPolicy;
36
+ export declare class PricePublicationReceipt {
37
+ readonly json: JSONObject;
38
+ readonly observedAt: number;
39
+ readonly signedAt: number;
40
+ private constructor();
41
+ static parse(value: JSONValue): PricePublicationReceipt;
42
+ signingBytes(): Uint8Array;
43
+ digest(): string;
44
+ }
45
+ export interface PricePublicationVerification {
46
+ readonly status: 'witnessed-before-signed-start' | 'not-proven' | 'invalid';
47
+ readonly requiredOrganizations: number;
48
+ readonly organizations: readonly string[];
49
+ readonly timeBasis: 'trusted-witness-clocks-versus-signed-start';
50
+ readonly actualStartTime: 'not-independently-proven';
51
+ readonly receipts: readonly {
52
+ readonly witnessId: string;
53
+ readonly organization?: string;
54
+ readonly keyId?: string;
55
+ readonly receiptDigest?: string;
56
+ readonly latestPublicationAt?: number;
57
+ readonly sourceURL?: string;
58
+ readonly status: 'counted' | 'duplicate-organization' | 'after-start' | 'untrusted' | 'invalid';
59
+ readonly detail: string;
60
+ }[];
61
+ }
62
+ /** Inclusion and CPO signatures are checked by the calling shared session-price verifier first. */
63
+ export declare function verifyPricePublication(receipts: readonly JSONValue[], policy: WitnessPublicationPolicy | undefined, subject: {
64
+ readonly roamingNetworkId: string;
65
+ readonly evseId: string;
66
+ readonly statement: PriceStatement;
67
+ readonly tariff: JSONObject;
68
+ readonly checkpoints: readonly Checkpoint[];
69
+ readonly chargingStarted: number;
70
+ readonly now: number;
71
+ readonly excludedKeyMaterial?: readonly string[];
72
+ readonly excludedIdentities?: readonly string[];
73
+ }): PricePublicationVerification;
74
+ //# sourceMappingURL=pricePublication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricePublication.d.ts","sourceRoot":"","sources":["../../src/verifier/pricePublication.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { type JSONValue, type JSONObject } from '../json/value.ts';
2
+ import { TrustContext } from '../proofs/trustContext.ts';
3
+ import { type VerifiedChargingStation } from './chargingStation.ts';
4
+ import { HistoricalTrustContext, type HistoricalMeterPolicy } from './historicalMeasurements.ts';
5
+ import { type WitnessPublicationPolicy, type PricePublicationVerification } from './pricePublication.ts';
6
+ export declare const SESSION_PRICE_EVIDENCE_CONTEXT = "https://open.charging.cloud/contexts/wwcp/sessionPriceEvidence/v1";
7
+ export declare const SESSION_PRICE_AGREEMENT_CONTEXT = "https://open.charging.cloud/contexts/wwcp/sessionPriceAgreement/v1";
8
+ export declare const SIMPLE_GROSS_PRICE_PROFILE = "chargy-gross-rates/v1";
9
+ /** Experimental CPO assertion, distinct from customer consent. */
10
+ export declare class SessionPriceAgreement {
11
+ readonly json: JSONObject;
12
+ readonly chargingStarted: number;
13
+ readonly signedAt: number;
14
+ private constructor();
15
+ static parse(value: JSONValue): SessionPriceAgreement;
16
+ signingBytes(): Uint8Array;
17
+ verify(station: VerifiedChargingStation): void;
18
+ }
19
+ export interface SessionPriceEvidence {
20
+ readonly evseId: string;
21
+ readonly proof: JSONValue;
22
+ readonly priceStatements: readonly JSONValue[];
23
+ readonly publicationReceipts: readonly JSONValue[];
24
+ readonly witnessCandidates: readonly JSONValue[];
25
+ readonly agreement?: JSONValue;
26
+ readonly priceProofs: readonly JSONValue[];
27
+ readonly checkpoints: readonly {
28
+ readonly checkpoint: JSONValue;
29
+ readonly operator: JSONValue;
30
+ }[];
31
+ }
32
+ export declare function parseSessionPriceEvidence(value: JSONValue): SessionPriceEvidence;
33
+ export interface SessionPriceRequest {
34
+ readonly evseId: string;
35
+ readonly meterSerialNumber: string;
36
+ readonly chargingStarted: number;
37
+ readonly startDocumentSHA256: string;
38
+ }
39
+ export interface SessionPriceVerification {
40
+ readonly station: VerifiedChargingStation;
41
+ readonly signatures: 'valid' | 'invalid' | 'missing';
42
+ readonly applicability: 'bound' | 'unbound' | 'missing' | 'invalid' | 'ambiguous' | 'unsupported';
43
+ readonly agreement: 'valid' | 'invalid' | 'missing';
44
+ readonly publication: 'valid' | 'invalid' | 'missing' | 'incomplete';
45
+ readonly publicationBeforeStart: 'not-proven' | 'witnessed-before-signed-start' | 'invalid';
46
+ readonly publicationWitnesses?: PricePublicationVerification;
47
+ readonly customerConsent: 'not-proven';
48
+ readonly latestOrSoleOffer: 'not-proven';
49
+ readonly chainGaps: boolean;
50
+ readonly checkedAt: number;
51
+ readonly checkpointIds: readonly string[];
52
+ readonly witnessedBy: readonly string[];
53
+ readonly diagnostics: readonly string[];
54
+ readonly selected?: {
55
+ readonly statement: JSONObject;
56
+ readonly digest: string;
57
+ readonly tariff: JSONObject;
58
+ readonly currency: string;
59
+ readonly elements: readonly JSONObject[];
60
+ readonly rates?: {
61
+ readonly currency: string;
62
+ readonly energyPerKWh?: string;
63
+ readonly flatFee?: string;
64
+ readonly timePerHour?: string;
65
+ };
66
+ };
67
+ }
68
+ export declare function verifySessionPriceEvidence(current: TrustContext | HistoricalTrustContext, value: JSONValue, request: SessionPriceRequest, policy?: HistoricalMeterPolicy & {
69
+ readonly publicationPolicy?: WitnessPublicationPolicy;
70
+ readonly relatedCheckpoints?: readonly {
71
+ readonly checkpoint: JSONValue;
72
+ readonly operator: JSONValue;
73
+ }[];
74
+ }): SessionPriceVerification;
75
+ //# sourceMappingURL=sessionPrices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionPrices.d.ts","sourceRoot":"","sources":["../../src/verifier/sessionPrices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { type JSONValue, type JSONObject } from '../json/value.ts';
2
+ import { TrustAnchor } from '../proofs/trustAnchor.ts';
3
+ import { KeyStatement } from '../proofs/keyStatement.ts';
4
+ import { TrustContext } from '../proofs/trustContext.ts';
5
+ import { Checkpoint } from '../history/checkpoint.ts';
6
+ import { type Epoch } from '../history/epoch.ts';
7
+ import { type ObservedVersions, type VersionComparison } from './observedVersions.ts';
8
+ /** Experimental compact trust delegation; not a replacement for History.followedBy or full owner/change-set replay. */
9
+ export declare const TRUST_TRANSITION_CONTEXT = "https://open.charging.cloud/contexts/wwcp/trustTransition/v1";
10
+ /** The digest of a key statement a transition continues: the SHA-256 of the canonical JSON of its content. */
11
+ export declare const trustStatementDigest: (statement: KeyStatement) => string;
12
+ /**
13
+ * The identity of the complete policy of a trust anchor: the SHA-256 of the canonical JSON (section 1) of
14
+ * `{network, holders, minConsensus, urls}`, its holders in their order, its URLs as a WHATWG URL serializes them (scheme
15
+ * and host in lower case, no default port) without trailing slashes, in their ordinal order; as lowercase hex, so that
16
+ * one endpoint spelled otherwise is one policy. WWCP_POI3 calculates it alike (`TrustTransition.PolicyIdOf`).
17
+ */
18
+ export declare function trustPolicyId(anchor: TrustAnchor): string;
19
+ /**
20
+ * A compact delegation of trust from one authorized policy to the next: the exact policy and key statement it continues,
21
+ * the trust anchor and the roaming network operator it delegates to, its place in a chain of transitions, its interval,
22
+ * optionally the checkpoints of the old epoch and the start of the next one; signed by quorums of the holders of both.
23
+ */
24
+ export declare class TrustTransition {
25
+ readonly json: JSONObject;
26
+ readonly sequence: number;
27
+ readonly previous: string | undefined;
28
+ readonly signedAt: number;
29
+ readonly validUntil: number;
30
+ readonly fromPolicyId: string;
31
+ readonly fromStatementDigest: string;
32
+ readonly anchor: TrustAnchor;
33
+ readonly operator: JSONObject;
34
+ private constructor();
35
+ static parse(value: JSONValue): TrustTransition;
36
+ /** What it names, but its signatures. */
37
+ content(): JSONObject;
38
+ /** The SHA-256 of the canonical JSON of its content: the `previous` of the next transition. */
39
+ digest(): string;
40
+ /** The signature input of a signature: its content with the side, the algorithm and the key of the signature. */
41
+ signingBytes(side: string, algorithm: string, keyId: string): Uint8Array;
42
+ }
43
+ export interface TransitionVerificationOptions {
44
+ readonly acceptedAt: number;
45
+ readonly epoch: Epoch;
46
+ readonly sequence: number;
47
+ readonly previous?: string | undefined;
48
+ }
49
+ /** Only produced after both holder quorums and the exact policies/evidence were authenticated. Never restored from a JSON flag. */
50
+ export declare class VerifiedTrustTransition {
51
+ readonly source: TrustTransition;
52
+ readonly context: TrustContext;
53
+ readonly epoch: Epoch;
54
+ readonly checkpoints: readonly Checkpoint[];
55
+ readonly first: Checkpoint | undefined;
56
+ readonly oldEpoch: Epoch;
57
+ readonly signedBy: {
58
+ readonly old: readonly number[];
59
+ readonly next: readonly number[];
60
+ };
61
+ private constructor();
62
+ static verify(basis: TrustContext, fromOperator: JSONValue, transition: TrustTransition, options: TransitionVerificationOptions): VerifiedTrustTransition;
63
+ }
64
+ /** Persist only original evidence and negative coordinates; authority is recreated on every resolver operation. */
65
+ export declare function applyVerifiedTrustTransition(before: ObservedVersions, verified: VerifiedTrustTransition, at: number): VersionComparison;
66
+ export declare const initialTrustEpoch: () => Epoch;
67
+ //# sourceMappingURL=trustTransitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trustTransitions.d.ts","sourceRoot":"","sources":["../../src/verifier/trustTransitions.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAO,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKxE,OAAO,EAAE,WAAW,EAAE,MAA+B,0BAA0B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAA8B,2BAA2B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAA8B,2BAA2B,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAgC,0BAA0B,CAAC;AAEhF,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAiB,qBAAqB,CAAC;AAI3E,OAAO,EACE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAItF,uHAAuH;AACvH,eAAO,MAAM,wBAAwB,iEAAiE,CAAC;AAEvG,8GAA8G;AAC9G,eAAO,MAAM,oBAAoB,GAAI,WAAW,YAAY,KAAG,MACG,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAOzD;AAGD;;;;GAIG;AACH,qBAAa,eAAe;aAEY,IAAI,EAAkB,UAAU;aAChC,QAAQ,EAAc,MAAM;aAC5B,QAAQ,EAAc,MAAM,GAAG,SAAS;aACxC,QAAQ,EAAc,MAAM;aAC5B,UAAU,EAAY,MAAM;aAC5B,YAAY,EAAU,MAAM;aAC5B,mBAAmB,EAAG,MAAM;aAC5B,MAAM,EAAgB,WAAW;aACjC,QAAQ,EAAc,UAAU;IARpE,OAAO;WAWO,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe;IAmCtD,yCAAyC;IAClC,OAAO,IAAI,UAAU;IAK5B,+FAA+F;IACxF,MAAM,IAAI,MAAM;IAIvB,iHAAiH;IAC1G,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU;CAIlF;AAGD,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,CAAC,UAAU,EAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAQ,KAAK,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAK,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAI,MAAM,GAAG,SAAS,CAAC;CAC5C;AAGD,mIAAmI;AACnI,qBAAa,uBAAuB;aAEI,MAAM,EAAQ,eAAe;aAC7B,OAAO,EAAO,YAAY;aAC1B,KAAK,EAAS,KAAK;aACnB,WAAW,EAAG,SAAS,UAAU,EAAE;aACnC,KAAK,EAAS,UAAU,GAAG,SAAS;aACpC,QAAQ,EAAM,KAAK;aACnB,QAAQ,EAAM;QAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE;IANvH,OAAO;WASO,MAAM,CAAC,KAAK,EAAU,YAAY,EAC3B,YAAY,EAAG,SAAS,EACxB,UAAU,EAAK,eAAe,EAC9B,OAAO,EAAQ,6BAA6B,GAAG,uBAAuB;CAkJ9F;AAGD,mHAAmH;AACnH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAgEvI;AAGD,eAAO,MAAM,iBAAiB,QAAO,KAAuD,CAAC"}