optropic 2.1.0 → 2.3.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.cts CHANGED
@@ -44,6 +44,12 @@ interface OptropicConfig {
44
44
  * Retry configuration for failed requests.
45
45
  */
46
46
  readonly retry?: RetryConfig;
47
+ /**
48
+ * Enable debug logging. When ``true``, every request and response
49
+ * is logged to the console with secrets redacted.
50
+ * @default false
51
+ */
52
+ readonly debug?: boolean;
47
53
  }
48
54
  /**
49
55
  * Retry configuration for network requests.
@@ -159,6 +165,18 @@ declare class AssetsResource {
159
165
  * assets. Pass an explicit `is_sandbox` value to override.
160
166
  */
161
167
  list(params?: ListAssetsParams): Promise<ListAssetsResponse>;
168
+ /**
169
+ * Auto-paginate through all assets, yielding pages of results.
170
+ * Returns an async generator that fetches pages on demand.
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * for await (const asset of client.assets.listAll({ status: 'active' })) {
175
+ * console.log(asset.id);
176
+ * }
177
+ * ```
178
+ */
179
+ listAll(params?: ListAssetsParams): AsyncGenerator<Asset>;
162
180
  get(assetId: string): Promise<Asset>;
163
181
  verify(assetId: string): Promise<VerifyResult>;
164
182
  revoke(assetId: string, reason?: string): Promise<Asset>;
@@ -304,6 +322,115 @@ declare class ComplianceResource {
304
322
  private buildQuery;
305
323
  }
306
324
 
325
+ /**
326
+ * Documents Resource
327
+ *
328
+ * Document enrollment operations — register physical objects with substrate
329
+ * fingerprints and manage their lifecycle.
330
+ *
331
+ * This module is central to Optropic's Material Entropy technology:
332
+ * a physical object is photographed, its micro-surface features are extracted
333
+ * as a 3D descriptor [GB, GE, M7-PCA], and the resulting fingerprint is
334
+ * enrolled as a document linked to an asset.
335
+ */
336
+
337
+ interface Document {
338
+ readonly id: string;
339
+ readonly assetId: string;
340
+ readonly tenantId: string;
341
+ readonly fingerprintHash: string;
342
+ readonly descriptorVersion: string;
343
+ readonly substrateType: string;
344
+ readonly captureDevice?: string;
345
+ readonly enrolledAt: string;
346
+ readonly status: 'active' | 'superseded' | 'revoked';
347
+ readonly metadata?: Record<string, unknown>;
348
+ }
349
+ interface EnrollDocumentParams {
350
+ /** The asset ID to link this document to. */
351
+ readonly assetId: string;
352
+ /** SHA-256 hash of the 3D descriptor fingerprint. */
353
+ readonly fingerprintHash: string;
354
+ /** Descriptor version, e.g. "GB_GE_M7PCA_v1". */
355
+ readonly descriptorVersion: string;
356
+ /** Substrate type, e.g. "S_fb", "S_pvc", "S_kp". */
357
+ readonly substrateType: string;
358
+ /** Capture device identifier, e.g. "iPhone16ProMax_main". */
359
+ readonly captureDevice?: string;
360
+ /** Additional metadata (ROI info, sharpness scores, etc). */
361
+ readonly metadata?: Record<string, unknown>;
362
+ }
363
+ interface VerifyDocumentParams {
364
+ /** The fingerprint hash to verify against enrolled documents. */
365
+ readonly fingerprintHash: string;
366
+ /** Descriptor version used for the verification capture. */
367
+ readonly descriptorVersion: string;
368
+ /** Minimum similarity threshold (0.0 - 1.0). @default 0.85 */
369
+ readonly threshold?: number;
370
+ }
371
+ interface DocumentVerifyResult {
372
+ readonly matched: boolean;
373
+ readonly documentId?: string;
374
+ readonly assetId?: string;
375
+ readonly similarity: number;
376
+ readonly descriptorVersion: string;
377
+ readonly verifiedAt: string;
378
+ }
379
+ interface ListDocumentsParams {
380
+ readonly assetId?: string;
381
+ readonly substrateType?: string;
382
+ readonly status?: 'active' | 'superseded' | 'revoked';
383
+ readonly page?: number;
384
+ readonly per_page?: number;
385
+ }
386
+ interface ListDocumentsResponse {
387
+ readonly data: Document[];
388
+ readonly pagination: {
389
+ readonly total: number;
390
+ readonly page: number;
391
+ readonly perPage: number;
392
+ readonly totalPages: number;
393
+ };
394
+ }
395
+ declare class DocumentsResource {
396
+ private readonly request;
397
+ constructor(request: RequestFn);
398
+ /**
399
+ * Enroll a new document (substrate fingerprint) linked to an asset.
400
+ *
401
+ * @example
402
+ * ```typescript
403
+ * const doc = await client.documents.enroll({
404
+ * assetId: 'asset-123',
405
+ * fingerprintHash: 'sha256:abc123...',
406
+ * descriptorVersion: 'GB_GE_M7PCA_v1',
407
+ * substrateType: 'S_fb',
408
+ * captureDevice: 'iPhone16ProMax_main',
409
+ * });
410
+ * ```
411
+ */
412
+ enroll(params: EnrollDocumentParams): Promise<Document>;
413
+ /**
414
+ * Verify a fingerprint against enrolled documents.
415
+ *
416
+ * Returns the best match if similarity exceeds the threshold.
417
+ */
418
+ verify(params: VerifyDocumentParams): Promise<DocumentVerifyResult>;
419
+ /**
420
+ * Get a single document by ID.
421
+ */
422
+ get(documentId: string): Promise<Document>;
423
+ /**
424
+ * List enrolled documents with optional filtering.
425
+ */
426
+ list(params?: ListDocumentsParams): Promise<ListDocumentsResponse>;
427
+ /**
428
+ * Supersede a document (e.g., re-enrollment with better capture).
429
+ */
430
+ supersede(documentId: string, newDocumentId: string): Promise<Document>;
431
+ private buildQuery;
432
+ }
433
+
307
434
  /**
308
435
  * Keys Resource
309
436
  *
@@ -376,6 +503,124 @@ declare class KeysetsResource {
376
503
  private buildQuery;
377
504
  }
378
505
 
506
+ /**
507
+ * Provenance Resource
508
+ *
509
+ * OID (Origin ID) Provenance chain operations — track the full lifecycle
510
+ * of a physical object from manufacturing through distribution to verification.
511
+ *
512
+ * Each provenance event is cryptographically linked to the previous one,
513
+ * forming a tamper-evident chain. Combined with Document Enrollment
514
+ * (substrate fingerprints), this enables end-to-end physical-digital trust.
515
+ */
516
+
517
+ interface ProvenanceEvent {
518
+ readonly id: string;
519
+ readonly assetId: string;
520
+ readonly tenantId: string;
521
+ readonly eventType: ProvenanceEventType;
522
+ readonly actor: string;
523
+ readonly location?: ProvenanceLocation;
524
+ readonly previousEventId?: string;
525
+ readonly eventHash: string;
526
+ readonly chainSequence: number;
527
+ readonly timestamp: string;
528
+ readonly metadata?: Record<string, unknown>;
529
+ }
530
+ type ProvenanceEventType = 'manufactured' | 'labeled' | 'enrolled' | 'shipped' | 'received' | 'transferred' | 'verified' | 'recalled' | 'destroyed' | 'custom';
531
+ interface ProvenanceLocation {
532
+ readonly country?: string;
533
+ readonly region?: string;
534
+ readonly facility?: string;
535
+ readonly coordinates?: {
536
+ readonly lat: number;
537
+ readonly lng: number;
538
+ };
539
+ }
540
+ interface RecordProvenanceParams {
541
+ /** The asset ID this event belongs to. */
542
+ readonly assetId: string;
543
+ /** Type of provenance event. */
544
+ readonly eventType: ProvenanceEventType;
545
+ /** Actor identifier (user, system, device). */
546
+ readonly actor: string;
547
+ /** Location where the event occurred. */
548
+ readonly location?: ProvenanceLocation;
549
+ /** Additional event metadata. */
550
+ readonly metadata?: Record<string, unknown>;
551
+ }
552
+ interface ProvenanceChain {
553
+ readonly assetId: string;
554
+ readonly events: ProvenanceEvent[];
555
+ readonly chainValid: boolean;
556
+ readonly eventCount: number;
557
+ readonly firstEvent: string;
558
+ readonly lastEvent: string;
559
+ }
560
+ interface VerifyProvenanceResult {
561
+ readonly chainValid: boolean;
562
+ readonly eventsChecked: number;
563
+ readonly brokenAtSequence?: number;
564
+ readonly verifiedAt: string;
565
+ }
566
+ interface ListProvenanceParams {
567
+ readonly assetId?: string;
568
+ readonly eventType?: ProvenanceEventType;
569
+ readonly from_date?: string;
570
+ readonly to_date?: string;
571
+ readonly page?: number;
572
+ readonly per_page?: number;
573
+ }
574
+ interface ListProvenanceResponse {
575
+ readonly data: ProvenanceEvent[];
576
+ readonly pagination: {
577
+ readonly total: number;
578
+ readonly page: number;
579
+ readonly perPage: number;
580
+ readonly totalPages: number;
581
+ };
582
+ }
583
+ declare class ProvenanceResource {
584
+ private readonly request;
585
+ constructor(request: RequestFn);
586
+ /**
587
+ * Record a new provenance event in the chain.
588
+ *
589
+ * Events are automatically chained — the server links each new event
590
+ * to the previous one via cryptographic hash.
591
+ *
592
+ * @example
593
+ * ```typescript
594
+ * const event = await client.provenance.record({
595
+ * assetId: 'asset-123',
596
+ * eventType: 'manufactured',
597
+ * actor: 'factory-line-7',
598
+ * location: { country: 'DE', facility: 'Munich Plant' },
599
+ * });
600
+ * ```
601
+ */
602
+ record(params: RecordProvenanceParams): Promise<ProvenanceEvent>;
603
+ /**
604
+ * Get the full provenance chain for an asset.
605
+ */
606
+ getChain(assetId: string): Promise<ProvenanceChain>;
607
+ /**
608
+ * Get a single provenance event by ID.
609
+ */
610
+ get(eventId: string): Promise<ProvenanceEvent>;
611
+ /**
612
+ * List provenance events with optional filtering.
613
+ */
614
+ list(params?: ListProvenanceParams): Promise<ListProvenanceResponse>;
615
+ /**
616
+ * Verify the integrity of an asset's provenance chain.
617
+ *
618
+ * Checks that all events are correctly linked via cryptographic hashes.
619
+ */
620
+ verifyChain(assetId: string): Promise<VerifyProvenanceResult>;
621
+ private buildQuery;
622
+ }
623
+
379
624
  /**
380
625
  * Schemas Resource
381
626
  *
@@ -475,11 +720,14 @@ declare class SchemasResource {
475
720
  */
476
721
 
477
722
  interface RequestOptions {
478
- method: 'GET' | 'POST' | 'PUT' | 'DELETE';
723
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
479
724
  path: string;
480
725
  body?: unknown;
481
726
  headers?: Record<string, string>;
727
+ /** Per-operation timeout in ms. Overrides the client-level default. */
482
728
  timeout?: number;
729
+ /** Idempotency key for safe mutation retries. Auto-generated for POST/PUT/PATCH if omitted. */
730
+ idempotencyKey?: string;
483
731
  }
484
732
  type RequestFn = <T>(options: RequestOptions) => Promise<T>;
485
733
  /**
@@ -491,6 +739,7 @@ type RequestFn = <T>(options: RequestOptions) => Promise<T>;
491
739
  *
492
740
  * const client = new OptropicClient({
493
741
  * apiKey: 'optr_live_xxxxxxxxxxxx',
742
+ * debug: true, // logs every request/response
494
743
  * });
495
744
  *
496
745
  * // Create an asset
@@ -499,7 +748,7 @@ type RequestFn = <T>(options: RequestOptions) => Promise<T>;
499
748
  * serial: 'SN001',
500
749
  * });
501
750
  *
502
- * // Verify an asset
751
+ * // Verify an asset (with per-operation timeout)
503
752
  * const result = await client.assets.verify(asset.id);
504
753
  * ```
505
754
  */
@@ -508,11 +757,14 @@ declare class OptropicClient {
508
757
  private readonly baseUrl;
509
758
  private readonly retryConfig;
510
759
  private readonly _sandbox;
760
+ private readonly _debug;
511
761
  readonly assets: AssetsResource;
512
762
  readonly audit: AuditResource;
513
763
  readonly compliance: ComplianceResource;
764
+ readonly documents: DocumentsResource;
514
765
  readonly keys: KeysResource;
515
766
  readonly keysets: KeysetsResource;
767
+ readonly provenance: ProvenanceResource;
516
768
  readonly schemas: SchemasResource;
517
769
  constructor(config: OptropicConfig);
518
770
  /** True when the client is in sandbox mode (test API key or explicit override). */
@@ -521,6 +773,10 @@ declare class OptropicClient {
521
773
  get isLive(): boolean;
522
774
  /** Returns 'sandbox' or 'live'. */
523
775
  get environment(): 'sandbox' | 'live';
776
+ private redact;
777
+ private logRequest;
778
+ private logResponse;
779
+ private logRetry;
524
780
  private isValidApiKey;
525
781
  private request;
526
782
  private executeRequest;
@@ -538,11 +794,224 @@ declare class OptropicClient {
538
794
  *
539
795
  * const client = createClient({
540
796
  * apiKey: process.env.OPTROPIC_API_KEY!,
797
+ * debug: true,
541
798
  * });
542
799
  * ```
543
800
  */
544
801
  declare function createClient(config: OptropicConfig): OptropicClient;
545
802
 
803
+ /**
804
+ * Offline Filter Verification — Cuckoo Filter + Salted Lookup
805
+ *
806
+ * Validates the filter signature, checks freshness, then performs
807
+ * salted lookup for revocation status without network access.
808
+ *
809
+ * Port of Python SDK's `filter_verify.py` to TypeScript.
810
+ *
811
+ * @module optropic/filter-verify
812
+ */
813
+ interface FilterHeader {
814
+ readonly version: number;
815
+ readonly issuedAt: number;
816
+ readonly itemCount: number;
817
+ readonly keyId: number;
818
+ readonly capacity: number;
819
+ }
820
+ interface OfflineVerifyResult {
821
+ readonly signatureValid: boolean;
822
+ readonly revocationStatus: 'clear' | 'revoked' | 'unknown';
823
+ readonly filterAgeSeconds: number | null;
824
+ readonly verifiedAt: string;
825
+ readonly verificationMode: 'offline';
826
+ readonly freshness?: 'current' | 'stale';
827
+ }
828
+ interface FilterSyncResult {
829
+ readonly filter: Uint8Array;
830
+ readonly salts: Map<string, Uint8Array>;
831
+ readonly issuedAt: Date;
832
+ readonly itemCount: number;
833
+ }
834
+ interface OfflineVerifyOptions {
835
+ /** The asset ID to check. */
836
+ readonly assetId: string;
837
+ /** The full filter binary (header + buckets + signature). */
838
+ readonly filterBytes: Uint8Array;
839
+ /** Per-tenant salts (tenant_id → salt bytes). */
840
+ readonly salts: Map<string, Uint8Array>;
841
+ /** Ed25519 public key for signature verification. Optional. */
842
+ readonly publicKey?: Uint8Array;
843
+ /** 'strict' throws on stale filter, 'permissive' continues. @default 'permissive' */
844
+ readonly filterPolicy?: 'strict' | 'permissive';
845
+ /** Maximum filter age in seconds before considered stale. @default 259200 (72 hours) */
846
+ readonly trustWindowSeconds?: number;
847
+ }
848
+ declare class StaleFilterError extends Error {
849
+ readonly code = "FILTER_STALE_CRITICAL";
850
+ readonly ageSeconds: number;
851
+ readonly trustWindowSeconds: number;
852
+ constructor(ageSeconds: number, trustWindowSeconds: number);
853
+ }
854
+ /**
855
+ * Parse the 19-byte Cuckoo filter header.
856
+ */
857
+ declare function parseFilterHeader(buf: Uint8Array): FilterHeader;
858
+ /**
859
+ * Parse the X-Optropic-Filter-Salts header.
860
+ *
861
+ * Format: "tenant_id_1:salt_hex_1,tenant_id_2:salt_hex_2"
862
+ */
863
+ declare function parseSaltsHeader(header: string): Map<string, Uint8Array>;
864
+ /**
865
+ * Perform offline verification using a local Cuckoo filter.
866
+ *
867
+ * Checks the revocation status of an asset without any network access.
868
+ * Requires a previously downloaded filter (via `assets.syncFilter()`).
869
+ *
870
+ * @example
871
+ * ```typescript
872
+ * import { verifyOffline } from 'optropic';
873
+ *
874
+ * const result = await verifyOffline({
875
+ * assetId: 'asset-123',
876
+ * filterBytes: cachedFilter,
877
+ * salts: cachedSalts,
878
+ * });
879
+ *
880
+ * if (result.revocationStatus === 'revoked') {
881
+ * console.warn('Asset has been revoked!');
882
+ * }
883
+ * ```
884
+ */
885
+ declare function verifyOffline(options: OfflineVerifyOptions): Promise<OfflineVerifyResult>;
886
+
887
+ /**
888
+ * EU Digital Product Passport (DPP) — Types & Helpers
889
+ *
890
+ * Supports the ESPR/DPP regulation (EU DPP Registry goes live 19 July 2026).
891
+ * Provides typed metadata structures for Battery Passport (Feb 2027),
892
+ * Textiles (Q2 2027), and general product passports.
893
+ *
894
+ * @module optropic/dpp
895
+ */
896
+ /**
897
+ * Base Digital Product Passport metadata.
898
+ * Aligns with the EU DPP data model (ESPR Art. 8-12).
899
+ */
900
+ interface DPPMetadata {
901
+ /** Unique product identifier (GS1 GTIN, SGTIN, or custom). */
902
+ readonly productId: string;
903
+ /** Product name / trade name. */
904
+ readonly productName: string;
905
+ /** Manufacturer / economic operator name. */
906
+ readonly manufacturer: string;
907
+ /** Country of manufacture (ISO 3166-1 alpha-2). */
908
+ readonly countryOfOrigin: string;
909
+ /** Product category for DPP regulation scope. */
910
+ readonly category: DPPCategory;
911
+ /** Carbon footprint in kg CO2e (if applicable). */
912
+ readonly carbonFootprint?: number;
913
+ /** Recycled content percentage (0-100). */
914
+ readonly recycledContent?: number;
915
+ /** Durability / expected lifetime in years. */
916
+ readonly durabilityYears?: number;
917
+ /** Repairability score (EU scale, if applicable). */
918
+ readonly repairabilityScore?: number;
919
+ /** List of substances of concern (SCIP database). */
920
+ readonly substancesOfConcern?: SubstanceEntry[];
921
+ /** EU DPP Registry reference (assigned after July 2026). */
922
+ readonly dppRegistryId?: string;
923
+ /** Conformity declarations / certifications. */
924
+ readonly conformityDeclarations?: ConformityDeclaration[];
925
+ /** Additional sector-specific metadata. */
926
+ readonly sectorData?: BatteryPassportData | TextilePassportData | Record<string, unknown>;
927
+ }
928
+ type DPPCategory = 'battery' | 'textile' | 'electronics' | 'construction' | 'steel' | 'furniture' | 'chemical' | 'general';
929
+ interface SubstanceEntry {
930
+ readonly name: string;
931
+ readonly casNumber?: string;
932
+ readonly concentration?: number;
933
+ readonly unit?: string;
934
+ }
935
+ interface ConformityDeclaration {
936
+ readonly standard: string;
937
+ readonly certificateId?: string;
938
+ readonly issuedBy?: string;
939
+ readonly validUntil?: string;
940
+ }
941
+ interface BatteryPassportData {
942
+ readonly type: 'battery';
943
+ /** Battery chemistry (e.g., "NMC", "LFP", "NCA"). */
944
+ readonly chemistry: string;
945
+ /** Nominal capacity in kWh. */
946
+ readonly capacityKwh: number;
947
+ /** State of Health percentage (0-100). */
948
+ readonly stateOfHealth?: number;
949
+ /** Number of charge cycles completed. */
950
+ readonly cycleCount?: number;
951
+ /** Cobalt content percentage. */
952
+ readonly cobaltContent?: number;
953
+ /** Lithium content percentage. */
954
+ readonly lithiumContent?: number;
955
+ /** Recycled cobalt percentage. */
956
+ readonly recycledCobaltPercent?: number;
957
+ /** Carbon footprint class (A-G). */
958
+ readonly carbonClass?: string;
959
+ /** Expected lifetime in charge cycles. */
960
+ readonly expectedLifetimeCycles?: number;
961
+ }
962
+ interface TextilePassportData {
963
+ readonly type: 'textile';
964
+ /** Fiber composition (e.g., [{ fiber: "cotton", percent: 95 }]). */
965
+ readonly fiberComposition: FiberEntry[];
966
+ /** Dyeing / finishing processes used. */
967
+ readonly processes?: string[];
968
+ /** Water usage in liters per unit. */
969
+ readonly waterUsageLiters?: number;
970
+ /** Microfiber release rating. */
971
+ readonly microfiberRelease?: 'low' | 'medium' | 'high';
972
+ /** Care instructions (ISO 3758 symbols). */
973
+ readonly careInstructions?: string[];
974
+ }
975
+ interface FiberEntry {
976
+ readonly fiber: string;
977
+ readonly percent: number;
978
+ readonly recycled?: boolean;
979
+ readonly origin?: string;
980
+ }
981
+ /**
982
+ * Build a DPP-compliant asset config from metadata.
983
+ *
984
+ * Converts a typed DPPMetadata object into the flat config format
985
+ * expected by the Optropic API's asset creation endpoint.
986
+ *
987
+ * @example
988
+ * ```typescript
989
+ * const config = buildDPPConfig({
990
+ * productId: '04012345000010',
991
+ * productName: 'EcoWidget Pro',
992
+ * manufacturer: 'GreenTech GmbH',
993
+ * countryOfOrigin: 'DE',
994
+ * category: 'electronics',
995
+ * carbonFootprint: 12.5,
996
+ * recycledContent: 35,
997
+ * });
998
+ *
999
+ * await client.assets.create({
1000
+ * keysetId: 'ks-1',
1001
+ * vertical: 'dpp',
1002
+ * assetConfig: config,
1003
+ * });
1004
+ * ```
1005
+ */
1006
+ declare function buildDPPConfig(metadata: DPPMetadata): Record<string, unknown>;
1007
+ /**
1008
+ * Validate that DPP metadata meets minimum requirements for the given category.
1009
+ */
1010
+ declare function validateDPPMetadata(metadata: DPPMetadata): {
1011
+ valid: boolean;
1012
+ errors: string[];
1013
+ };
1014
+
546
1015
  /**
547
1016
  * Webhook Signature Verification
548
1017
  *
@@ -842,7 +1311,19 @@ declare class ServiceUnavailableError extends OptropicError {
842
1311
  requestId?: string;
843
1312
  });
844
1313
  }
1314
+ /**
1315
+ * Create an appropriate error from an API response.
1316
+ * Used internally by the client to map responses to typed errors.
1317
+ *
1318
+ * @internal
1319
+ */
1320
+ declare function createErrorFromResponse(statusCode: number, body: {
1321
+ code?: ErrorCode;
1322
+ message?: string;
1323
+ details?: Record<string, unknown>;
1324
+ requestId?: string;
1325
+ }): OptropicError;
845
1326
 
846
- declare const SDK_VERSION = "2.0.0";
1327
+ declare const SDK_VERSION = "2.3.0";
847
1328
 
848
- export { type ApiKey, type Asset, AssetsResource, type AuditEvent, AuditResource, AuthenticationError, type BatchCreateParams, type BatchCreateResult, BatchNotFoundError, type ChainVerifyResult, CodeNotFoundError, type ComplianceConfig, ComplianceResource, type CreateAssetParams, type CreateAuditEventParams, type CreateKeyParams, type CreateKeyResult, type CreateKeysetParams, type CreateSchemaParams, type ErrorCode, type ExportParams, type ExportResult, InvalidCodeError, InvalidGTINError, InvalidSerialError, KeysResource, type Keyset, KeysetsResource, type ListAssetsParams, type ListAssetsResponse, type ListAuditParams, type ListAuditResponse, type ListKeysetsParams, type ListKeysetsResponse, type ListSchemasParams, type ListSchemasResponse, type MerkleProof, type MerkleRoot, NetworkError, OptropicClient, type OptropicConfig, OptropicError, QuotaExceededError, RateLimitedError, type RequestFn, type RetryConfig, RevokedCodeError, SDK_VERSION, type SchemaValidationResult, SchemasResource, ServiceUnavailableError, TimeoutError, type UpdateSchemaParams, type VerifyResult, type VerticalSchema, type WebhookVerifyOptions, type WebhookVerifyResult, createClient, verifyWebhookSignature };
1329
+ export { type ApiKey, type Asset, AssetsResource, type AuditEvent, AuditResource, AuthenticationError, type BatchCreateParams, type BatchCreateResult, BatchNotFoundError, type BatteryPassportData, type ChainVerifyResult, CodeNotFoundError, type ComplianceConfig, ComplianceResource, type ConformityDeclaration, type CreateAssetParams, type CreateAuditEventParams, type CreateKeyParams, type CreateKeyResult, type CreateKeysetParams, type CreateSchemaParams, type DPPCategory, type DPPMetadata, type Document, type DocumentVerifyResult, DocumentsResource, type EnrollDocumentParams, type ErrorCode, type ExportParams, type ExportResult, type FiberEntry, type FilterHeader, type FilterSyncResult, InvalidCodeError, InvalidGTINError, InvalidSerialError, KeysResource, type Keyset, KeysetsResource, type ListAssetsParams, type ListAssetsResponse, type ListAuditParams, type ListAuditResponse, type ListDocumentsParams, type ListDocumentsResponse, type ListKeysetsParams, type ListKeysetsResponse, type ListProvenanceParams, type ListProvenanceResponse, type ListSchemasParams, type ListSchemasResponse, type MerkleProof, type MerkleRoot, NetworkError, type OfflineVerifyOptions, type OfflineVerifyResult, OptropicClient, type OptropicConfig, OptropicError, type ProvenanceChain, type ProvenanceEvent, type ProvenanceEventType, type ProvenanceLocation, ProvenanceResource, QuotaExceededError, RateLimitedError, type RecordProvenanceParams, type RequestFn, type RetryConfig, RevokedCodeError, SDK_VERSION, type SchemaValidationResult, SchemasResource, ServiceUnavailableError, StaleFilterError, type SubstanceEntry, type TextilePassportData, TimeoutError, type UpdateSchemaParams, type VerifyDocumentParams, type VerifyProvenanceResult, type VerifyResult, type VerticalSchema, type WebhookVerifyOptions, type WebhookVerifyResult, buildDPPConfig, createClient, createErrorFromResponse, parseFilterHeader, parseSaltsHeader, validateDPPMetadata, verifyOffline, verifyWebhookSignature };