@smartledger/keys 1.1.0 → 1.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.
Files changed (48) hide show
  1. package/dist/cjs/browser.d.ts +20 -0
  2. package/dist/cjs/browser.d.ts.map +1 -0
  3. package/dist/cjs/browser.js.map +1 -0
  4. package/dist/cjs/index.d.ts +9 -0
  5. package/dist/cjs/index.d.ts.map +1 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/sdk.d.ts +69 -0
  8. package/dist/cjs/sdk.d.ts.map +1 -0
  9. package/dist/cjs/sdk.js.map +1 -0
  10. package/dist/cjs/types.d.ts +117 -0
  11. package/dist/cjs/types.d.ts.map +1 -0
  12. package/dist/cjs/types.js.map +1 -0
  13. package/dist/esm/browser.d.ts +20 -0
  14. package/dist/esm/browser.d.ts.map +1 -0
  15. package/dist/esm/browser.js +41 -0
  16. package/dist/esm/browser.js.map +1 -0
  17. package/dist/esm/index.d.ts +9 -0
  18. package/dist/esm/index.d.ts.map +1 -0
  19. package/dist/esm/index.js +8 -0
  20. package/dist/esm/index.js.map +1 -0
  21. package/dist/esm/package.json +1 -0
  22. package/dist/esm/sdk.d.ts +69 -0
  23. package/dist/esm/sdk.d.ts.map +1 -0
  24. package/dist/esm/sdk.js +186 -0
  25. package/dist/esm/sdk.js.map +1 -0
  26. package/dist/esm/types.d.ts +117 -0
  27. package/dist/esm/types.d.ts.map +1 -0
  28. package/dist/esm/types.js +8 -0
  29. package/dist/esm/types.js.map +1 -0
  30. package/dist/lumen-keys.js +1556 -2846
  31. package/dist/lumen-keys.js.map +4 -4
  32. package/dist/lumen-keys.min.js +2 -2
  33. package/dist/lumen-keys.min.js.map +4 -4
  34. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -0
  36. package/package.json +22 -6
  37. package/dist/browser.d.ts.map +0 -1
  38. package/dist/browser.js.map +0 -1
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/index.js.map +0 -1
  41. package/dist/sdk.d.ts.map +0 -1
  42. package/dist/sdk.js.map +0 -1
  43. package/dist/types.d.ts.map +0 -1
  44. package/dist/types.js.map +0 -1
  45. /package/dist/{browser.js → cjs/browser.js} +0 -0
  46. /package/dist/{index.js → cjs/index.js} +0 -0
  47. /package/dist/{sdk.js → cjs/sdk.js} +0 -0
  48. /package/dist/{types.js → cjs/types.js} +0 -0
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Browser entry point for @lumen/keys SDK
3
+ * Includes WASM initialization and browser-compatible exports
4
+ */
5
+ import type { KeySDK } from './types.js';
6
+ export * from './types.js';
7
+ export { InMemoryKeyStorage } from '@smartledger/crypto';
8
+ /**
9
+ * Creates a new KeySDK instance for browser usage
10
+ * Handles WASM initialization automatically
11
+ */
12
+ export declare function createKeySDK(): Promise<KeySDK>;
13
+ /**
14
+ * Browser-ready default export
15
+ */
16
+ declare const _default: {
17
+ createKeySDK: typeof createKeySDK;
18
+ };
19
+ export default _default;
20
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBpD;AAED;;GAEG;;;;AACH,wBAEE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAoBH,oCAkBC;AApCD,qCAAyC;AACzC,gDAM6B;AAG7B,wCAAwC;AACxC,6CAA2B;AAC3B,8CAAyD;AAAhD,4GAAA,kBAAkB,OAAA;AAE3B;;;GAGG;AACI,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAI,2BAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,oBAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,uDAAuD;IACvD,MAAM,aAAa,GAAG,IAAI,+BAAsB,EAAE,CAAC;IACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,sBAAa,EAAE,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,CAAC,IAAI,mBAAU,EAAE,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,IAAI,sBAAa,CAAC;QAC5B,WAAW;QACX,aAAa;KACd,CAAC,CAAC;IAEH,2CAA2C;IAC3C,kEAAkE;IAElE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,kBAAe;IACb,YAAY;CACb,CAAC;AAEF,8BAA8B;AAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,SAAS,GAAG;QAC1B,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @smartledger/keys - Key Management SDK
3
+ *
4
+ * Single source of truth for cryptographic key operations.
5
+ */
6
+ export * from './types';
7
+ export * from './sdk';
8
+ export type { KeyMeta, CryptoProfile } from '@smartledger/crypto';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AAGtB,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,wCAAsB"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Default implementation of KeySDK.
3
+ *
4
+ * Integrates KeyRegistry and SignatureSuiteRegistry to provide
5
+ * a clean, high-level API for key operations.
6
+ */
7
+ import { KeyRegistry, SignatureSuiteRegistry, CryptoProfile } from '@smartledger/crypto';
8
+ import { KeySDK, KeyRecord, CreateKeyOptions } from './types';
9
+ /**
10
+ * Configuration for DefaultKeySDK.
11
+ */
12
+ export interface KeySDKConfig {
13
+ /** Key registry instance */
14
+ keyRegistry: KeyRegistry;
15
+ /** Signature suite registry instance */
16
+ suiteRegistry: SignatureSuiteRegistry;
17
+ }
18
+ /**
19
+ * Default KeySDK implementation.
20
+ *
21
+ * Provides a simple, safe API for key operations while hiding complexity.
22
+ */
23
+ export declare class DefaultKeySDK implements KeySDK {
24
+ private keyRegistry;
25
+ private suiteRegistry;
26
+ private keyCounter;
27
+ constructor(config: KeySDKConfig);
28
+ /**
29
+ * Create a new key for an agent.
30
+ */
31
+ createKey(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<KeyRecord>;
32
+ /**
33
+ * Get an existing key.
34
+ */
35
+ getKey(keyId: string): Promise<KeyRecord | null>;
36
+ /**
37
+ * Sign with a key (private key never exposed).
38
+ */
39
+ signWithKey(keyId: string, message: Uint8Array): Promise<Uint8Array>;
40
+ /**
41
+ * Verify a signature.
42
+ */
43
+ verifySignature(keyId: string, message: Uint8Array, signature: Uint8Array): Promise<boolean>;
44
+ /**
45
+ * List keys for an agent.
46
+ */
47
+ listKeysForAgent(agentId: string, activeOnly?: boolean): Promise<KeyRecord[]>;
48
+ /**
49
+ * Get active crypto profile for an agent.
50
+ */
51
+ getActiveCryptoProfile(agentId: string): Promise<CryptoProfile | null>;
52
+ /**
53
+ * Rotate all keys for an agent.
54
+ */
55
+ rotateAgentKeys(agentId: string): Promise<KeyRecord[]>;
56
+ /**
57
+ * Get or create key (idempotent).
58
+ */
59
+ getOrCreateKey(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<KeyRecord>;
60
+ /**
61
+ * Helper: Get hash algorithm for a suite.
62
+ */
63
+ private getHashAlgorithm;
64
+ /**
65
+ * Helper: Get next counter for an agent.
66
+ */
67
+ private getNextCounter;
68
+ }
69
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,sBAAsB,EAEtB,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,MAAM,EACN,SAAS,EACT,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,WAAW,EAAE,WAAW,CAAC;IAEzB,wCAAwC;IACxC,aAAa,EAAE,sBAAsB,CAAC;CACvC;AAED;;;;GAIG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAA6B;gBAEnC,MAAM,EAAE,YAAY;IAKhC;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC;IA4BrB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAatD;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC;IAsBtB;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC;IAoBnB;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAc,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBvB;;OAEG;IACG,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkB5E;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8B5D;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC;IAgBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;CAMvB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @smartledger/keys - Key Management SDK
3
+ *
4
+ * Single source of truth for cryptographic key operations.
5
+ * Provides a clean API that hides complexity and ensures consistency.
6
+ */
7
+ import { KeyMeta, CryptoProfile } from '@smartledger/crypto';
8
+ /**
9
+ * Public key record (safe to expose, no private key).
10
+ */
11
+ export interface KeyRecord {
12
+ meta: KeyMeta;
13
+ publicKey: Uint8Array;
14
+ }
15
+ /**
16
+ * Key creation options.
17
+ */
18
+ export interface CreateKeyOptions {
19
+ /** Optional expiration date (ISO 8601) */
20
+ expiresAt?: string;
21
+ /** Key usage (default: ['signing']) */
22
+ usage?: Array<'signing' | 'encryption' | 'both'>;
23
+ /** Crypto profile version (default: '1.0.0') */
24
+ cryptoProfileVersion?: string;
25
+ }
26
+ /**
27
+ * Key SDK - Single interface for all key operations.
28
+ *
29
+ * Design principles:
30
+ * - Hide private keys from most callers
31
+ * - Single source of truth for suite selection
32
+ * - Crypto-agnostic API (suite is config, not code)
33
+ * - Easy to audit (all key operations go through this)
34
+ */
35
+ export interface KeySDK {
36
+ /**
37
+ * Create a new key for an agent/module.
38
+ *
39
+ * @param agentId Agent identifier (e.g. 'agent-resonance')
40
+ * @param profile Crypto configuration (which suites to use)
41
+ * @param options Optional expiration, usage, etc.
42
+ * @returns KeyRecord with metadata and public key
43
+ */
44
+ createKey(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<KeyRecord>;
45
+ /**
46
+ * Get an existing key by ID.
47
+ *
48
+ * @param keyId Key identifier
49
+ * @returns KeyRecord or null if not found
50
+ */
51
+ getKey(keyId: string): Promise<KeyRecord | null>;
52
+ /**
53
+ * Sign a message with a key.
54
+ *
55
+ * Private key never leaves the SDK.
56
+ *
57
+ * @param keyId Which key to sign with
58
+ * @param message Message to sign (will be hashed internally)
59
+ * @returns Signature bytes
60
+ */
61
+ signWithKey(keyId: string, message: Uint8Array): Promise<Uint8Array>;
62
+ /**
63
+ * Verify a signature against a public key.
64
+ *
65
+ * @param keyId Which key to verify with
66
+ * @param message Original message
67
+ * @param signature Signature to verify
68
+ * @returns true if valid
69
+ */
70
+ verifySignature(keyId: string, message: Uint8Array, signature: Uint8Array): Promise<boolean>;
71
+ /**
72
+ * List all keys for an agent.
73
+ *
74
+ * @param agentId Agent identifier
75
+ * @param activeOnly If true, only return active keys (default: true)
76
+ * @returns Array of KeyRecords
77
+ */
78
+ listKeysForAgent(agentId: string, activeOnly?: boolean): Promise<KeyRecord[]>;
79
+ /**
80
+ * Get the active crypto profile for an agent.
81
+ *
82
+ * Looks up the most recent active keys and infers the profile.
83
+ *
84
+ * @param agentId Agent identifier
85
+ * @returns CryptoProfile or null if no keys found
86
+ */
87
+ getActiveCryptoProfile(agentId: string): Promise<CryptoProfile | null>;
88
+ /**
89
+ * Rotate an agent's keys.
90
+ *
91
+ * Generates new keypairs for all active keys, marks old ones as rotated.
92
+ *
93
+ * @param agentId Agent identifier
94
+ * @returns Array of new KeyRecords
95
+ */
96
+ rotateAgentKeys(agentId: string): Promise<KeyRecord[]>;
97
+ /**
98
+ * Create key if it doesn't exist, otherwise return existing.
99
+ *
100
+ * Idempotent key creation for agent setup.
101
+ *
102
+ * @param agentId Agent identifier
103
+ * @param profile Crypto configuration
104
+ * @param options Creation options
105
+ * @returns KeyRecord (new or existing)
106
+ */
107
+ getOrCreateKey(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<KeyRecord>;
108
+ }
109
+ /**
110
+ * Agent metadata with crypto configuration.
111
+ */
112
+ export interface AgentKeyConfig {
113
+ agentId: string;
114
+ version: string;
115
+ cryptoProfile: CryptoProfile;
116
+ }
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;IAEjD,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;OAOG;IACH,SAAS,CACP,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAEjD;;;;;;;;OAQG;IACH,WAAW,CACT,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;OAMG;IACH,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAExB;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEvE;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvD;;;;;;;;;OASG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,aAAa,CAAC;CAC9B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Browser entry point for @lumen/keys SDK
3
+ * Includes WASM initialization and browser-compatible exports
4
+ */
5
+ import type { KeySDK } from './types.js';
6
+ export * from './types.js';
7
+ export { InMemoryKeyStorage } from '@smartledger/crypto';
8
+ /**
9
+ * Creates a new KeySDK instance for browser usage
10
+ * Handles WASM initialization automatically
11
+ */
12
+ export declare function createKeySDK(): Promise<KeySDK>;
13
+ /**
14
+ * Browser-ready default export
15
+ */
16
+ declare const _default: {
17
+ createKeySDK: typeof createKeySDK;
18
+ };
19
+ export default _default;
20
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBpD;AAED;;GAEG;;;;AACH,wBAEE"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Browser entry point for @lumen/keys SDK
3
+ * Includes WASM initialization and browser-compatible exports
4
+ */
5
+ import { DefaultKeySDK } from './sdk.js';
6
+ import { InMemoryKeyStorage, KeyRegistry, SignatureSuiteRegistry, BsvEcdsaSuite, MlDsaSuite, } from '@smartledger/crypto';
7
+ // Re-export all types for browser usage
8
+ export * from './types.js';
9
+ export { InMemoryKeyStorage } from '@smartledger/crypto';
10
+ /**
11
+ * Creates a new KeySDK instance for browser usage
12
+ * Handles WASM initialization automatically
13
+ */
14
+ export async function createKeySDK() {
15
+ const storage = new InMemoryKeyStorage();
16
+ const keyRegistry = new KeyRegistry(storage);
17
+ // Initialize suite registry with both ECDSA and ML-DSA
18
+ const suiteRegistry = new SignatureSuiteRegistry();
19
+ suiteRegistry.register(new BsvEcdsaSuite());
20
+ suiteRegistry.register(new MlDsaSuite());
21
+ const sdk = new DefaultKeySDK({
22
+ keyRegistry,
23
+ suiteRegistry,
24
+ });
25
+ // Pre-initialize WASM for ML-DSA if needed
26
+ // The dilithium-crystals library will lazy-load WASM on first use
27
+ return sdk;
28
+ }
29
+ /**
30
+ * Browser-ready default export
31
+ */
32
+ export default {
33
+ createKeySDK,
34
+ };
35
+ // Global export for CDN usage
36
+ if (typeof window !== 'undefined') {
37
+ window.LumenKeys = {
38
+ createKeySDK,
39
+ };
40
+ }
41
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,wCAAwC;AACxC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,uDAAuD;IACvD,MAAM,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACnD,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IAC5C,aAAa,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC;QAC5B,WAAW;QACX,aAAa;KACd,CAAC,CAAC;IAEH,2CAA2C;IAC3C,kEAAkE;IAElE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,eAAe;IACb,YAAY;CACb,CAAC;AAEF,8BAA8B;AAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,SAAS,GAAG;QAC1B,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @smartledger/keys - Key Management SDK
3
+ *
4
+ * Single source of truth for cryptographic key operations.
5
+ */
6
+ export * from './types';
7
+ export * from './sdk';
8
+ export type { KeyMeta, CryptoProfile } from '@smartledger/crypto';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AAGtB,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @smartledger/keys - Key Management SDK
3
+ *
4
+ * Single source of truth for cryptographic key operations.
5
+ */
6
+ export * from './types';
7
+ export * from './sdk';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"}
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Default implementation of KeySDK.
3
+ *
4
+ * Integrates KeyRegistry and SignatureSuiteRegistry to provide
5
+ * a clean, high-level API for key operations.
6
+ */
7
+ import { KeyRegistry, SignatureSuiteRegistry, CryptoProfile } from '@smartledger/crypto';
8
+ import { KeySDK, KeyRecord, CreateKeyOptions } from './types';
9
+ /**
10
+ * Configuration for DefaultKeySDK.
11
+ */
12
+ export interface KeySDKConfig {
13
+ /** Key registry instance */
14
+ keyRegistry: KeyRegistry;
15
+ /** Signature suite registry instance */
16
+ suiteRegistry: SignatureSuiteRegistry;
17
+ }
18
+ /**
19
+ * Default KeySDK implementation.
20
+ *
21
+ * Provides a simple, safe API for key operations while hiding complexity.
22
+ */
23
+ export declare class DefaultKeySDK implements KeySDK {
24
+ private keyRegistry;
25
+ private suiteRegistry;
26
+ private keyCounter;
27
+ constructor(config: KeySDKConfig);
28
+ /**
29
+ * Create a new key for an agent.
30
+ */
31
+ createKey(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<KeyRecord>;
32
+ /**
33
+ * Get an existing key.
34
+ */
35
+ getKey(keyId: string): Promise<KeyRecord | null>;
36
+ /**
37
+ * Sign with a key (private key never exposed).
38
+ */
39
+ signWithKey(keyId: string, message: Uint8Array): Promise<Uint8Array>;
40
+ /**
41
+ * Verify a signature.
42
+ */
43
+ verifySignature(keyId: string, message: Uint8Array, signature: Uint8Array): Promise<boolean>;
44
+ /**
45
+ * List keys for an agent.
46
+ */
47
+ listKeysForAgent(agentId: string, activeOnly?: boolean): Promise<KeyRecord[]>;
48
+ /**
49
+ * Get active crypto profile for an agent.
50
+ */
51
+ getActiveCryptoProfile(agentId: string): Promise<CryptoProfile | null>;
52
+ /**
53
+ * Rotate all keys for an agent.
54
+ */
55
+ rotateAgentKeys(agentId: string): Promise<KeyRecord[]>;
56
+ /**
57
+ * Get or create key (idempotent).
58
+ */
59
+ getOrCreateKey(agentId: string, profile: CryptoProfile, options?: CreateKeyOptions): Promise<KeyRecord>;
60
+ /**
61
+ * Helper: Get hash algorithm for a suite.
62
+ */
63
+ private getHashAlgorithm;
64
+ /**
65
+ * Helper: Get next counter for an agent.
66
+ */
67
+ private getNextCounter;
68
+ }
69
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,sBAAsB,EAEtB,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,MAAM,EACN,SAAS,EACT,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,WAAW,EAAE,WAAW,CAAC;IAEzB,wCAAwC;IACxC,aAAa,EAAE,sBAAsB,CAAC;CACvC;AAED;;;;GAIG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAA6B;gBAEnC,MAAM,EAAE,YAAY;IAKhC;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC;IA4BrB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAatD;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC;IAsBtB;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC;IAoBnB;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAc,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBvB;;OAEG;IACG,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkB5E;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8B5D;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC;IAgBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;CAMvB"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Default implementation of KeySDK.
3
+ *
4
+ * Integrates KeyRegistry and SignatureSuiteRegistry to provide
5
+ * a clean, high-level API for key operations.
6
+ */
7
+ import { hashBytes, } from '@smartledger/crypto';
8
+ /**
9
+ * Default KeySDK implementation.
10
+ *
11
+ * Provides a simple, safe API for key operations while hiding complexity.
12
+ */
13
+ export class DefaultKeySDK {
14
+ constructor(config) {
15
+ this.keyCounter = new Map(); // agentId -> counter
16
+ this.keyRegistry = config.keyRegistry;
17
+ this.suiteRegistry = config.suiteRegistry;
18
+ }
19
+ /**
20
+ * Create a new key for an agent.
21
+ */
22
+ async createKey(agentId, profile, options = {}) {
23
+ // Generate key for primary suite
24
+ const suite = this.suiteRegistry.getSuite(profile.primarySignatureSuite);
25
+ const keypair = await suite.generateKeypair();
26
+ // Generate unique keyId
27
+ const counter = this.getNextCounter(agentId);
28
+ const suiteName = profile.primarySignatureSuite.split('-')[0]; // 'ml-dsa' or 'bsv'
29
+ const keyId = `${agentId}:pk-${suiteName}-${counter}`;
30
+ // Register key
31
+ const meta = await this.keyRegistry.registerKey(keyId, keypair, profile.primarySignatureSuite, {
32
+ expiresAt: options.expiresAt,
33
+ usage: options.usage || ['signing'],
34
+ cryptoProfileVersion: options.cryptoProfileVersion || '1.0.0',
35
+ });
36
+ return {
37
+ meta,
38
+ publicKey: keypair.publicKey,
39
+ };
40
+ }
41
+ /**
42
+ * Get an existing key.
43
+ */
44
+ async getKey(keyId) {
45
+ const result = await this.keyRegistry.getPublicKey(keyId);
46
+ if (!result) {
47
+ return null;
48
+ }
49
+ return {
50
+ meta: result.meta,
51
+ publicKey: result.publicKey,
52
+ };
53
+ }
54
+ /**
55
+ * Sign with a key (private key never exposed).
56
+ */
57
+ async signWithKey(keyId, message) {
58
+ // Get full keypair (private access)
59
+ const result = await this.keyRegistry.getKey(keyId);
60
+ if (!result) {
61
+ throw new Error(`Key not found: ${keyId}`);
62
+ }
63
+ if (result.meta.status !== 'active') {
64
+ throw new Error(`Key is not active: ${keyId} (status: ${result.meta.status})`);
65
+ }
66
+ // Get suite and sign
67
+ const suite = this.suiteRegistry.getSuite(result.meta.suiteId);
68
+ // Hash the message (consistent with signAgentResponse)
69
+ const hashAlg = this.getHashAlgorithm(result.meta.suiteId);
70
+ const messageHash = await hashBytes(message, hashAlg);
71
+ return await suite.sign(result.keypair.privateKey, messageHash);
72
+ }
73
+ /**
74
+ * Verify a signature.
75
+ */
76
+ async verifySignature(keyId, message, signature) {
77
+ const result = await this.keyRegistry.getPublicKey(keyId);
78
+ if (!result) {
79
+ return false;
80
+ }
81
+ const suite = this.suiteRegistry.getSuite(result.meta.suiteId);
82
+ // Hash the message
83
+ const hashAlg = this.getHashAlgorithm(result.meta.suiteId);
84
+ const messageHash = await hashBytes(message, hashAlg);
85
+ try {
86
+ return await suite.verify(result.publicKey, messageHash, signature);
87
+ }
88
+ catch {
89
+ return false;
90
+ }
91
+ }
92
+ /**
93
+ * List keys for an agent.
94
+ */
95
+ async listKeysForAgent(agentId, activeOnly = true) {
96
+ const keys = activeOnly
97
+ ? await this.keyRegistry.listActiveKeys()
98
+ : await this.keyRegistry.listKeys();
99
+ // Filter by agentId prefix
100
+ const agentKeys = keys.filter(meta => meta.keyId.startsWith(`${agentId}:`));
101
+ // Convert to KeyRecords
102
+ const records = [];
103
+ for (const meta of agentKeys) {
104
+ const result = await this.keyRegistry.getPublicKey(meta.keyId);
105
+ if (result) {
106
+ records.push({
107
+ meta: result.meta,
108
+ publicKey: result.publicKey,
109
+ });
110
+ }
111
+ }
112
+ return records;
113
+ }
114
+ /**
115
+ * Get active crypto profile for an agent.
116
+ */
117
+ async getActiveCryptoProfile(agentId) {
118
+ const keys = await this.listKeysForAgent(agentId, true);
119
+ if (keys.length === 0) {
120
+ return null;
121
+ }
122
+ // Group by suite
123
+ const suites = new Set(keys.map(k => k.meta.suiteId));
124
+ const suiteArray = Array.from(suites);
125
+ // Assume first is primary, second is secondary
126
+ return {
127
+ primarySignatureSuite: suiteArray[0],
128
+ secondarySignatureSuite: suiteArray[1],
129
+ };
130
+ }
131
+ /**
132
+ * Rotate all keys for an agent.
133
+ */
134
+ async rotateAgentKeys(agentId) {
135
+ const activeKeys = await this.listKeysForAgent(agentId, true);
136
+ const newKeys = [];
137
+ for (const keyRecord of activeKeys) {
138
+ // Generate new keypair
139
+ const suite = this.suiteRegistry.getSuite(keyRecord.meta.suiteId);
140
+ const newKeypair = await suite.generateKeypair();
141
+ // Generate new keyId (increment counter)
142
+ const counter = this.getNextCounter(agentId);
143
+ const suiteName = keyRecord.meta.suiteId.split('-')[0];
144
+ const newKeyId = `${agentId}:pk-${suiteName}-${counter}`;
145
+ // Rotate
146
+ const newMeta = await this.keyRegistry.rotateKey(keyRecord.meta.keyId, newKeyId, newKeypair);
147
+ newKeys.push({
148
+ meta: newMeta,
149
+ publicKey: newKeypair.publicKey,
150
+ });
151
+ }
152
+ return newKeys;
153
+ }
154
+ /**
155
+ * Get or create key (idempotent).
156
+ */
157
+ async getOrCreateKey(agentId, profile, options = {}) {
158
+ // Check if key exists
159
+ const existingKeys = await this.listKeysForAgent(agentId, true);
160
+ const primaryKey = existingKeys.find(k => k.meta.suiteId === profile.primarySignatureSuite);
161
+ if (primaryKey) {
162
+ return primaryKey;
163
+ }
164
+ // Create new key
165
+ return await this.createKey(agentId, profile, options);
166
+ }
167
+ /**
168
+ * Helper: Get hash algorithm for a suite.
169
+ */
170
+ getHashAlgorithm(suiteId) {
171
+ if (suiteId.startsWith('ml-dsa')) {
172
+ return 'sha3-256';
173
+ }
174
+ return 'sha256';
175
+ }
176
+ /**
177
+ * Helper: Get next counter for an agent.
178
+ */
179
+ getNextCounter(agentId) {
180
+ const current = this.keyCounter.get(agentId) || 0;
181
+ const next = current + 1;
182
+ this.keyCounter.set(agentId, next);
183
+ return next;
184
+ }
185
+ }
186
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAKL,SAAS,GACV,MAAM,qBAAqB,CAAC;AAmB7B;;;;GAIG;AACH,MAAM,OAAO,aAAa;IAKxB,YAAY,MAAoB;QAFxB,eAAU,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,qBAAqB;QAGnE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,OAAe,EACf,OAAsB,EACtB,UAA4B,EAAE;QAE9B,iCAAiC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;QAE9C,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;QACnF,MAAM,KAAK,GAAG,GAAG,OAAO,OAAO,SAAS,IAAI,OAAO,EAAE,CAAC;QAEtD,eAAe;QACf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAC7C,KAAK,EACL,OAAO,EACP,OAAO,CAAC,qBAAqB,EAC7B;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC;YACnC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,OAAO;SAC9D,CACF,CAAC;QAEF,OAAO;YACL,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,KAAa,EACb,OAAmB;QAEnB,oCAAoC;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,aAAa,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjF,CAAC;QAED,qBAAqB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/D,uDAAuD;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,OAAmB,EACnB,SAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/D,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,OAAe,EACf,aAAsB,IAAI;QAE1B,MAAM,IAAI,GAAG,UAAU;YACrB,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;YACzC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAEtC,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;QAE5E,wBAAwB;QACxB,MAAM,OAAO,GAAgB,EAAE,CAAC;QAEhC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,OAAe;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iBAAiB;QACjB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtC,+CAA+C;QAC/C,OAAO;YACL,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC;YACpC,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC;SACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAgB,EAAE,CAAC;QAEhC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,uBAAuB;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;YAEjD,yCAAyC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,GAAG,OAAO,OAAO,SAAS,IAAI,OAAO,EAAE,CAAC;YAEzD,SAAS;YACT,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAC9C,SAAS,CAAC,IAAI,CAAC,KAAK,EACpB,QAAQ,EACR,UAAU,CACX,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,OAAe,EACf,OAAsB,EACtB,UAA4B,EAAE;QAE9B,sBAAsB;QACtB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhE,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,qBAAqB,CACtD,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,iBAAiB;QACjB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe;QACtC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}