@dynamic-labs-wallet/forward-mpc-shared 0.1.0-alpha.6

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 (163) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +52 -0
  3. package/dist/attestation/index.d.ts +1 -0
  4. package/dist/attestation/index.d.ts.map +1 -0
  5. package/dist/attestation/index.js +4 -0
  6. package/dist/attestation/index.js.map +1 -0
  7. package/dist/codecs/DomainCodec.d.ts +11 -0
  8. package/dist/codecs/DomainCodec.d.ts.map +1 -0
  9. package/dist/codecs/DomainCodec.js +25 -0
  10. package/dist/codecs/DomainCodec.js.map +1 -0
  11. package/dist/codecs/EncryptedKeyshareCodec.d.ts +11 -0
  12. package/dist/codecs/EncryptedKeyshareCodec.d.ts.map +1 -0
  13. package/dist/codecs/EncryptedKeyshareCodec.js +11 -0
  14. package/dist/codecs/EncryptedKeyshareCodec.js.map +1 -0
  15. package/dist/codecs/Uint32ArrayCodec.d.ts +3 -0
  16. package/dist/codecs/Uint32ArrayCodec.d.ts.map +1 -0
  17. package/dist/codecs/Uint32ArrayCodec.js +37 -0
  18. package/dist/codecs/Uint32ArrayCodec.js.map +1 -0
  19. package/dist/codecs/Uint8ArrayCodec.d.ts +3 -0
  20. package/dist/codecs/Uint8ArrayCodec.d.ts.map +1 -0
  21. package/dist/codecs/Uint8ArrayCodec.js +26 -0
  22. package/dist/codecs/Uint8ArrayCodec.js.map +1 -0
  23. package/dist/codecs/Uint8ArrayOrHexCodec.d.ts +3 -0
  24. package/dist/codecs/Uint8ArrayOrHexCodec.d.ts.map +1 -0
  25. package/dist/codecs/Uint8ArrayOrHexCodec.js +35 -0
  26. package/dist/codecs/Uint8ArrayOrHexCodec.js.map +1 -0
  27. package/dist/codecs/WebSocketErrorCodec.d.ts +15 -0
  28. package/dist/codecs/WebSocketErrorCodec.d.ts.map +1 -0
  29. package/dist/codecs/WebSocketErrorCodec.js +14 -0
  30. package/dist/codecs/WebSocketErrorCodec.js.map +1 -0
  31. package/dist/codecs/index.d.ts +4 -0
  32. package/dist/codecs/index.d.ts.map +1 -0
  33. package/dist/codecs/index.js +4 -0
  34. package/dist/codecs/index.js.map +1 -0
  35. package/dist/constants/algorithms.d.ts +56 -0
  36. package/dist/constants/algorithms.d.ts.map +1 -0
  37. package/dist/constants/algorithms.js +60 -0
  38. package/dist/constants/algorithms.js.map +1 -0
  39. package/dist/constants/index.d.ts +2 -0
  40. package/dist/constants/index.d.ts.map +1 -0
  41. package/dist/constants/index.js +2 -0
  42. package/dist/constants/index.js.map +1 -0
  43. package/dist/crypto/decapsulate.d.ts +2 -0
  44. package/dist/crypto/decapsulate.d.ts.map +1 -0
  45. package/dist/crypto/decapsulate.js +5 -0
  46. package/dist/crypto/decapsulate.js.map +1 -0
  47. package/dist/crypto/encapsulate.d.ts +5 -0
  48. package/dist/crypto/encapsulate.d.ts.map +1 -0
  49. package/dist/crypto/encapsulate.js +5 -0
  50. package/dist/crypto/encapsulate.js.map +1 -0
  51. package/dist/crypto/generateKeypair.d.ts +5 -0
  52. package/dist/crypto/generateKeypair.d.ts.map +1 -0
  53. package/dist/crypto/generateKeypair.js +17 -0
  54. package/dist/crypto/generateKeypair.js.map +1 -0
  55. package/dist/crypto/index.d.ts +6 -0
  56. package/dist/crypto/index.d.ts.map +1 -0
  57. package/dist/crypto/index.js +6 -0
  58. package/dist/crypto/index.js.map +1 -0
  59. package/dist/crypto/keyDerivation.d.ts +14 -0
  60. package/dist/crypto/keyDerivation.d.ts.map +1 -0
  61. package/dist/crypto/keyDerivation.js +21 -0
  62. package/dist/crypto/keyDerivation.js.map +1 -0
  63. package/dist/crypto/keyshareEncryption.d.ts +13 -0
  64. package/dist/crypto/keyshareEncryption.d.ts.map +1 -0
  65. package/dist/crypto/keyshareEncryption.js +39 -0
  66. package/dist/crypto/keyshareEncryption.js.map +1 -0
  67. package/dist/index.d.ts +9 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +18 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/messages/ConnectionAckV1Request.d.ts +43 -0
  72. package/dist/messages/ConnectionAckV1Request.d.ts.map +1 -0
  73. package/dist/messages/ConnectionAckV1Request.js +17 -0
  74. package/dist/messages/ConnectionAckV1Request.js.map +1 -0
  75. package/dist/messages/ConnectionAckV1Response.d.ts +45 -0
  76. package/dist/messages/ConnectionAckV1Response.d.ts.map +1 -0
  77. package/dist/messages/ConnectionAckV1Response.js +18 -0
  78. package/dist/messages/ConnectionAckV1Response.js.map +1 -0
  79. package/dist/messages/HandshakeV1Request.d.ts +45 -0
  80. package/dist/messages/HandshakeV1Request.d.ts.map +1 -0
  81. package/dist/messages/HandshakeV1Request.js +28 -0
  82. package/dist/messages/HandshakeV1Request.js.map +1 -0
  83. package/dist/messages/HandshakeV1Response.d.ts +47 -0
  84. package/dist/messages/HandshakeV1Response.d.ts.map +1 -0
  85. package/dist/messages/HandshakeV1Response.js +20 -0
  86. package/dist/messages/HandshakeV1Response.js.map +1 -0
  87. package/dist/messages/SignMessageV1Request.d.ts +63 -0
  88. package/dist/messages/SignMessageV1Request.d.ts.map +1 -0
  89. package/dist/messages/SignMessageV1Request.js +42 -0
  90. package/dist/messages/SignMessageV1Request.js.map +1 -0
  91. package/dist/messages/SignMessageV1Response.d.ts +47 -0
  92. package/dist/messages/SignMessageV1Response.d.ts.map +1 -0
  93. package/dist/messages/SignMessageV1Response.js +28 -0
  94. package/dist/messages/SignMessageV1Response.js.map +1 -0
  95. package/dist/messages/allMessages.d.ts +259 -0
  96. package/dist/messages/allMessages.d.ts.map +1 -0
  97. package/dist/messages/allMessages.js +57 -0
  98. package/dist/messages/allMessages.js.map +1 -0
  99. package/dist/messages/base.d.ts +27 -0
  100. package/dist/messages/base.d.ts.map +1 -0
  101. package/dist/messages/base.js +12 -0
  102. package/dist/messages/base.js.map +1 -0
  103. package/dist/messages/index.d.ts +11 -0
  104. package/dist/messages/index.d.ts.map +1 -0
  105. package/dist/messages/index.js +14 -0
  106. package/dist/messages/index.js.map +1 -0
  107. package/dist/messages/registry.d.ts +136 -0
  108. package/dist/messages/registry.d.ts.map +1 -0
  109. package/dist/messages/registry.js +67 -0
  110. package/dist/messages/registry.js.map +1 -0
  111. package/dist/messages/utils/StandardMessage.d.ts +97 -0
  112. package/dist/messages/utils/StandardMessage.d.ts.map +1 -0
  113. package/dist/messages/utils/StandardMessage.js +98 -0
  114. package/dist/messages/utils/StandardMessage.js.map +1 -0
  115. package/dist/messages/utils/encodingHelpers.d.ts +20 -0
  116. package/dist/messages/utils/encodingHelpers.d.ts.map +1 -0
  117. package/dist/messages/utils/encodingHelpers.js +50 -0
  118. package/dist/messages/utils/encodingHelpers.js.map +1 -0
  119. package/dist/messages/utils/index.d.ts +4 -0
  120. package/dist/messages/utils/index.d.ts.map +1 -0
  121. package/dist/messages/utils/index.js +5 -0
  122. package/dist/messages/utils/index.js.map +1 -0
  123. package/dist/messages/utils/schemaBuilder.d.ts +19 -0
  124. package/dist/messages/utils/schemaBuilder.d.ts.map +1 -0
  125. package/dist/messages/utils/schemaBuilder.js +31 -0
  126. package/dist/messages/utils/schemaBuilder.js.map +1 -0
  127. package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts +20 -0
  128. package/dist/signing/algorithms/BIP340SigningAlgorithm.d.ts.map +1 -0
  129. package/dist/signing/algorithms/BIP340SigningAlgorithm.js +35 -0
  130. package/dist/signing/algorithms/BIP340SigningAlgorithm.js.map +1 -0
  131. package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts +20 -0
  132. package/dist/signing/algorithms/EcdsaSigningAlgorithm.d.ts.map +1 -0
  133. package/dist/signing/algorithms/EcdsaSigningAlgorithm.js +43 -0
  134. package/dist/signing/algorithms/EcdsaSigningAlgorithm.js.map +1 -0
  135. package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts +18 -0
  136. package/dist/signing/algorithms/Ed25519SigningAlgorithm.d.ts.map +1 -0
  137. package/dist/signing/algorithms/Ed25519SigningAlgorithm.js +34 -0
  138. package/dist/signing/algorithms/Ed25519SigningAlgorithm.js.map +1 -0
  139. package/dist/signing/allAlgorithms.d.ts +50 -0
  140. package/dist/signing/allAlgorithms.d.ts.map +1 -0
  141. package/dist/signing/allAlgorithms.js +59 -0
  142. package/dist/signing/allAlgorithms.js.map +1 -0
  143. package/dist/signing/base.d.ts +42 -0
  144. package/dist/signing/base.d.ts.map +1 -0
  145. package/dist/signing/base.js +6 -0
  146. package/dist/signing/base.js.map +1 -0
  147. package/dist/signing/index.d.ts +7 -0
  148. package/dist/signing/index.d.ts.map +1 -0
  149. package/dist/signing/index.js +9 -0
  150. package/dist/signing/index.js.map +1 -0
  151. package/dist/signing/registry.d.ts +26 -0
  152. package/dist/signing/registry.d.ts.map +1 -0
  153. package/dist/signing/registry.js +36 -0
  154. package/dist/signing/registry.js.map +1 -0
  155. package/dist/types.d.ts +42 -0
  156. package/dist/types.d.ts.map +1 -0
  157. package/dist/types.js +12 -0
  158. package/dist/types.js.map +1 -0
  159. package/dist/utils/assertDefined.d.ts +16 -0
  160. package/dist/utils/assertDefined.d.ts.map +1 -0
  161. package/dist/utils/assertDefined.js +27 -0
  162. package/dist/utils/assertDefined.js.map +1 -0
  163. package/package.json +52 -0
@@ -0,0 +1,6 @@
1
+ export { generateMlKem768Keypair } from './generateKeypair';
2
+ export { encapsulateMlKem768 } from './encapsulate';
3
+ export { decapsulateMlKem768 } from './decapsulate';
4
+ export * from './keyDerivation';
5
+ export * from './keyshareEncryption';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { generateMlKem768Keypair } from './generateKeypair';
2
+ export { encapsulateMlKem768 } from './encapsulate';
3
+ export { decapsulateMlKem768 } from './decapsulate';
4
+ export * from './keyDerivation';
5
+ export * from './keyshareEncryption';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC","sourcesContent":["export { generateMlKem768Keypair } from './generateKeypair';\nexport { encapsulateMlKem768 } from './encapsulate';\nexport { decapsulateMlKem768 } from './decapsulate';\nexport * from './keyDerivation';\nexport * from './keyshareEncryption';\n"]}
@@ -0,0 +1,14 @@
1
+ export declare const AES_256_GCM_KEY_SIZE = 32;
2
+ export declare const AES_256_GCM_NONCE_SIZE = 12;
3
+ export declare const AES_256_GCM_TAG_SIZE = 16;
4
+ export declare const HKDF_SALT_SIZE = 32;
5
+ /**
6
+ * Derive AES-256 key from ML-KEM shared secret using HKDF
7
+ * Following NIST SP 800-56C recommendations
8
+ */
9
+ export declare function deriveAESKey(sharedSecret: Uint8Array, salt: Uint8Array, info: string): Uint8Array;
10
+ /**
11
+ * Create standardized context info for HKDF
12
+ */
13
+ export declare function createKeyDerivationInfo(purpose: 'keyshare' | 'hmac', connectionId: string, version?: number): string;
14
+ //# sourceMappingURL=keyDerivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyDerivation.d.ts","sourceRoot":"","sources":["../../src/crypto/keyDerivation.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,UAAU,EACxB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACX,UAAU,CAGZ;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,UAAU,GAAG,MAAM,EAC5B,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,MAAU,GAClB,MAAM,CAER"}
@@ -0,0 +1,21 @@
1
+ import { hkdf } from '@noble/hashes/hkdf.js';
2
+ import { sha256 } from '@noble/hashes/sha2.js';
3
+ export const AES_256_GCM_KEY_SIZE = 32; // 256 bits
4
+ export const AES_256_GCM_NONCE_SIZE = 12; // 96 bits
5
+ export const AES_256_GCM_TAG_SIZE = 16; // 128 bits
6
+ export const HKDF_SALT_SIZE = 32; // 256 bits
7
+ /**
8
+ * Derive AES-256 key from ML-KEM shared secret using HKDF
9
+ * Following NIST SP 800-56C recommendations
10
+ */
11
+ export function deriveAESKey(sharedSecret, salt, info) {
12
+ const infoBytes = new TextEncoder().encode(info);
13
+ return hkdf(sha256, sharedSecret, salt, infoBytes, AES_256_GCM_KEY_SIZE);
14
+ }
15
+ /**
16
+ * Create standardized context info for HKDF
17
+ */
18
+ export function createKeyDerivationInfo(purpose, connectionId, version = 1) {
19
+ return `forward-mpc-${purpose}-v${version}-${connectionId}`;
20
+ }
21
+ //# sourceMappingURL=keyDerivation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyDerivation.js","sourceRoot":"","sources":["../../src/crypto/keyDerivation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,WAAW;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC,CAAC,UAAU;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,WAAW;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,WAAW;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,YAAwB,EACxB,IAAgB,EAChB,IAAY;IAEZ,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA4B,EAC5B,YAAoB,EACpB,UAAkB,CAAC;IAEnB,OAAO,eAAe,OAAO,KAAK,OAAO,IAAI,YAAY,EAAE,CAAC;AAC9D,CAAC","sourcesContent":["import { hkdf } from '@noble/hashes/hkdf.js';\nimport { sha256 } from '@noble/hashes/sha2.js';\n\nexport const AES_256_GCM_KEY_SIZE = 32; // 256 bits\nexport const AES_256_GCM_NONCE_SIZE = 12; // 96 bits\nexport const AES_256_GCM_TAG_SIZE = 16; // 128 bits\nexport const HKDF_SALT_SIZE = 32; // 256 bits\n\n/**\n * Derive AES-256 key from ML-KEM shared secret using HKDF\n * Following NIST SP 800-56C recommendations\n */\nexport function deriveAESKey(\n sharedSecret: Uint8Array,\n salt: Uint8Array,\n info: string\n): Uint8Array {\n const infoBytes = new TextEncoder().encode(info);\n return hkdf(sha256, sharedSecret, salt, infoBytes, AES_256_GCM_KEY_SIZE);\n}\n\n/**\n * Create standardized context info for HKDF\n */\nexport function createKeyDerivationInfo(\n purpose: 'keyshare' | 'hmac',\n connectionId: string,\n version: number = 1\n): string {\n return `forward-mpc-${purpose}-v${version}-${connectionId}`;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { EncryptedKeyshare } from '../codecs/EncryptedKeyshareCodec';
2
+ import type { SigningAlgorithmName } from '../signing/allAlgorithms';
3
+ /**
4
+ * Encrypt keyshare using AES-256-GCM with ML-KEM derived key
5
+ *
6
+ * @param keyshare - The keyshare object from Dynamic Wallet SDK
7
+ * @param sharedSecret - ML-KEM shared secret from handshake
8
+ * @param connectionId - Unique connection identifier
9
+ * @param signingAlgorithm - Algorithm name for context
10
+ * @returns Encrypted keyshare with salt and encrypted payload
11
+ */
12
+ export declare function encryptKeyshare(keyshare: any, sharedSecret: Uint8Array, connectionId: string, signingAlgorithm: SigningAlgorithmName): Promise<EncryptedKeyshare>;
13
+ //# sourceMappingURL=keyshareEncryption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyshareEncryption.d.ts","sourceRoot":"","sources":["../../src/crypto/keyshareEncryption.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,iBAAiB,CAAC,CA+B5B"}
@@ -0,0 +1,39 @@
1
+ import { gcm } from '@noble/ciphers/aes';
2
+ import { bytesToHex, randomBytes } from '@noble/hashes/utils.js';
3
+ import { deriveAESKey, createKeyDerivationInfo } from './keyDerivation';
4
+ /**
5
+ * Encrypt keyshare using AES-256-GCM with ML-KEM derived key
6
+ *
7
+ * @param keyshare - The keyshare object from Dynamic Wallet SDK
8
+ * @param sharedSecret - ML-KEM shared secret from handshake
9
+ * @param connectionId - Unique connection identifier
10
+ * @param signingAlgorithm - Algorithm name for context
11
+ * @returns Encrypted keyshare with salt and encrypted payload
12
+ */
13
+ export async function encryptKeyshare(keyshare, sharedSecret, connectionId, signingAlgorithm) {
14
+ // Generate random salt for HKDF
15
+ const salt = randomBytes(32);
16
+ // Derive AES key using HKDF with connection-specific context
17
+ const keyshareInfo = createKeyDerivationInfo('keyshare', connectionId);
18
+ const aesKey = deriveAESKey(sharedSecret, salt, keyshareInfo);
19
+ // Prepare keyshare data for encryption
20
+ const keyshareData = {
21
+ keyshare,
22
+ signingAlgorithm,
23
+ timestamp: Date.now(),
24
+ nonce: bytesToHex(randomBytes(16)),
25
+ };
26
+ // Encrypt with AES-256-GCM
27
+ const nonce = randomBytes(12);
28
+ const aes256Gcm = gcm(aesKey, nonce);
29
+ const plaintext = new TextEncoder().encode(JSON.stringify(keyshareData));
30
+ const ciphertext = aes256Gcm.encrypt(plaintext);
31
+ // Combine nonce + ciphertext for single payload
32
+ const encryptedPayload = new Uint8Array(nonce.length + ciphertext.length);
33
+ encryptedPayload.set(nonce, 0);
34
+ encryptedPayload.set(ciphertext, nonce.length);
35
+ // Clear sensitive data from memory
36
+ aesKey.fill(0);
37
+ return { salt, encryptedPayload };
38
+ }
39
+ //# sourceMappingURL=keyshareEncryption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyshareEncryption.js","sourceRoot":"","sources":["../../src/crypto/keyshareEncryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAIxE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAa,EACb,YAAwB,EACxB,YAAoB,EACpB,gBAAsC;IAEtC,gCAAgC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAE7B,6DAA6D;IAC7D,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAE9D,uCAAuC;IACvC,MAAM,YAAY,GAAG;QACnB,QAAQ;QACR,gBAAgB;QAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACnC,CAAC;IAEF,2BAA2B;IAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhD,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1E,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/C,mCAAmC;IACnC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEf,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACpC,CAAC","sourcesContent":["import { gcm } from '@noble/ciphers/aes';\nimport { bytesToHex, randomBytes } from '@noble/hashes/utils.js';\nimport { deriveAESKey, createKeyDerivationInfo } from './keyDerivation';\nimport type { EncryptedKeyshare } from '../codecs/EncryptedKeyshareCodec';\nimport type { SigningAlgorithmName } from '../signing/allAlgorithms';\n\n/**\n * Encrypt keyshare using AES-256-GCM with ML-KEM derived key\n *\n * @param keyshare - The keyshare object from Dynamic Wallet SDK\n * @param sharedSecret - ML-KEM shared secret from handshake\n * @param connectionId - Unique connection identifier\n * @param signingAlgorithm - Algorithm name for context\n * @returns Encrypted keyshare with salt and encrypted payload\n */\nexport async function encryptKeyshare(\n keyshare: any,\n sharedSecret: Uint8Array,\n connectionId: string,\n signingAlgorithm: SigningAlgorithmName\n): Promise<EncryptedKeyshare> {\n // Generate random salt for HKDF\n const salt = randomBytes(32);\n\n // Derive AES key using HKDF with connection-specific context\n const keyshareInfo = createKeyDerivationInfo('keyshare', connectionId);\n const aesKey = deriveAESKey(sharedSecret, salt, keyshareInfo);\n\n // Prepare keyshare data for encryption\n const keyshareData = {\n keyshare,\n signingAlgorithm,\n timestamp: Date.now(),\n nonce: bytesToHex(randomBytes(16)),\n };\n\n // Encrypt with AES-256-GCM\n const nonce = randomBytes(12);\n const aes256Gcm = gcm(aesKey, nonce);\n const plaintext = new TextEncoder().encode(JSON.stringify(keyshareData));\n const ciphertext = aes256Gcm.encrypt(plaintext);\n\n // Combine nonce + ciphertext for single payload\n const encryptedPayload = new Uint8Array(nonce.length + ciphertext.length);\n encryptedPayload.set(nonce, 0);\n encryptedPayload.set(ciphertext, nonce.length);\n\n // Clear sensitive data from memory\n aesKey.fill(0);\n\n return { salt, encryptedPayload };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ export * from './types';
2
+ export * from './messages';
3
+ export * from './codecs';
4
+ export * from './crypto';
5
+ export * from './utils/assertDefined';
6
+ export * from './constants';
7
+ export * from './signing';
8
+ export { toDynamicSigningAlgorithm, fromDynamicSigningAlgorithm, } from './constants/algorithms';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,uBAAuB,CAAC;AAGtC,cAAc,aAAa,CAAC;AAG5B,cAAc,WAAW,CAAC;AAK1B,OAAO,EACL,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ // Export types
2
+ export * from './types';
3
+ // Export all message schemas, types, and classes
4
+ export * from './messages';
5
+ // Export codecs
6
+ export * from './codecs';
7
+ // Export crypto functions
8
+ export * from './crypto';
9
+ // Export utilities
10
+ export * from './utils/assertDefined';
11
+ // Export constants
12
+ export * from './constants';
13
+ // Export signing algorithms (Ultra-DRY)
14
+ export * from './signing';
15
+ // Attestation verification has been moved to the client package
16
+ // Export algorithm conversion utilities
17
+ export { toDynamicSigningAlgorithm, fromDynamicSigningAlgorithm, } from './constants/algorithms';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,SAAS,CAAC;AAExB,iDAAiD;AACjD,cAAc,YAAY,CAAC;AAE3B,gBAAgB;AAChB,cAAc,UAAU,CAAC;AAEzB,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AAEzB,mBAAmB;AACnB,cAAc,uBAAuB,CAAC;AAEtC,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAE5B,wCAAwC;AACxC,cAAc,WAAW,CAAC;AAE1B,gEAAgE;AAEhE,wCAAwC;AACxC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC","sourcesContent":["// Export types\nexport * from './types';\n\n// Export all message schemas, types, and classes\nexport * from './messages';\n\n// Export codecs\nexport * from './codecs';\n\n// Export crypto functions\nexport * from './crypto';\n\n// Export utilities\nexport * from './utils/assertDefined';\n\n// Export constants\nexport * from './constants';\n\n// Export signing algorithms (Ultra-DRY)\nexport * from './signing';\n\n// Attestation verification has been moved to the client package\n\n// Export algorithm conversion utilities\nexport {\n toDynamicSigningAlgorithm,\n fromDynamicSigningAlgorithm,\n} from './constants/algorithms';\n"]}
@@ -0,0 +1,43 @@
1
+ import { TypeOf } from 'io-ts';
2
+ /**
3
+ * Connection Acknowledgment Request Runtime Data
4
+ */
5
+ export interface ConnectionAckRequestData {
6
+ connectionId?: string;
7
+ }
8
+ /**
9
+ * Connection Acknowledgment Request Wire Format
10
+ */
11
+ export interface ConnectionAckRequestWire {
12
+ type: 'connection_ack';
13
+ version: 1;
14
+ connectionId?: string;
15
+ }
16
+ /**
17
+ * Connection Acknowledgment Request Schema (built using Ultra-DRY utilities)
18
+ */
19
+ export declare const ConnectionAckRequestSchema: import("io-ts").Type<any, any, unknown>;
20
+ export type ConnectionAckRequest = TypeOf<typeof ConnectionAckRequestSchema>;
21
+ /**
22
+ * Connection Acknowledgment V1 Request Message Class (Ultra-DRY implementation)
23
+ */
24
+ export declare const ConnectionAckV1RequestMessage: {
25
+ new (data: ConnectionAckRequestData): {
26
+ readonly type: "connection_ack";
27
+ readonly version: 1;
28
+ encode(): any;
29
+ readonly data: ConnectionAckRequestData;
30
+ getData(): ConnectionAckRequestData;
31
+ };
32
+ readonly MESSAGE_TYPE: "connection_ack";
33
+ readonly MESSAGE_VERSION: 1;
34
+ readonly schema: import("io-ts").Type<any, any, unknown>;
35
+ decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
36
+ readonly type: "connection_ack";
37
+ readonly version: 1;
38
+ encode(): any;
39
+ readonly data: ConnectionAckRequestData;
40
+ getData(): ConnectionAckRequestData;
41
+ }>;
42
+ };
43
+ //# sourceMappingURL=ConnectionAckV1Request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionAckV1Request.d.ts","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,MAAM,EAAE,MAAM,OAAO,CAAC;AAG1E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,yCAMtC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;CAQxC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { union, string, undefined as undefinedType } from 'io-ts';
2
+ import { buildMessageSchema, createSimpleMessage } from './utils';
3
+ /**
4
+ * Connection Acknowledgment Request Schema (built using Ultra-DRY utilities)
5
+ */
6
+ export const ConnectionAckRequestSchema = buildMessageSchema('connection_ack', 1, {
7
+ connectionId: union([string, undefinedType]), // Optional string connectionId
8
+ });
9
+ /**
10
+ * Connection Acknowledgment V1 Request Message Class (Ultra-DRY implementation)
11
+ */
12
+ export const ConnectionAckV1RequestMessage = createSimpleMessage({
13
+ messageType: 'connection_ack',
14
+ version: 1,
15
+ schema: ConnectionAckRequestSchema,
16
+ });
17
+ //# sourceMappingURL=ConnectionAckV1Request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionAckV1Request.js","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,aAAa,EAAU,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAkBlE;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAC1D,gBAAgB,EAChB,CAAC,EACD;IACE,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,+BAA+B;CAC9E,CACF,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,mBAAmB,CAI9D;IACA,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,0BAA0B;CACnC,CAAC,CAAC","sourcesContent":["import { union, string, undefined as undefinedType, TypeOf } from 'io-ts';\nimport { buildMessageSchema, createSimpleMessage } from './utils';\n\n/**\n * Connection Acknowledgment Request Runtime Data\n */\nexport interface ConnectionAckRequestData {\n connectionId?: string;\n}\n\n/**\n * Connection Acknowledgment Request Wire Format\n */\nexport interface ConnectionAckRequestWire {\n type: 'connection_ack';\n version: 1;\n connectionId?: string;\n}\n\n/**\n * Connection Acknowledgment Request Schema (built using Ultra-DRY utilities)\n */\nexport const ConnectionAckRequestSchema = buildMessageSchema(\n 'connection_ack',\n 1,\n {\n connectionId: union([string, undefinedType]), // Optional string connectionId\n }\n);\n\nexport type ConnectionAckRequest = TypeOf<typeof ConnectionAckRequestSchema>;\n\n/**\n * Connection Acknowledgment V1 Request Message Class (Ultra-DRY implementation)\n */\nexport const ConnectionAckV1RequestMessage = createSimpleMessage<\n ConnectionAckRequestData,\n 'connection_ack',\n 1\n>({\n messageType: 'connection_ack',\n version: 1,\n schema: ConnectionAckRequestSchema,\n});\n"]}
@@ -0,0 +1,45 @@
1
+ import { TypeOf } from 'io-ts';
2
+ /**
3
+ * Connection Acknowledgment Response Runtime Data
4
+ */
5
+ export interface ConnectionAckResponseData {
6
+ status: 'acknowledged';
7
+ timestamp: string;
8
+ }
9
+ /**
10
+ * Connection Acknowledgment Response Wire Format
11
+ */
12
+ export interface ConnectionAckResponseWire {
13
+ type: 'connection_ack_response';
14
+ version: 1;
15
+ status: 'acknowledged';
16
+ timestamp: string;
17
+ }
18
+ /**
19
+ * Connection Acknowledgment Response Schema (built using Ultra-DRY utilities)
20
+ */
21
+ export declare const ConnectionAckResponseSchema: import("io-ts").Type<any, any, unknown>;
22
+ export type ConnectionAckResponse = TypeOf<typeof ConnectionAckResponseSchema>;
23
+ /**
24
+ * Connection Acknowledgment V1 Response Message Class (Ultra-DRY implementation)
25
+ */
26
+ export declare const ConnectionAckV1ResponseMessage: {
27
+ new (data: ConnectionAckResponseData): {
28
+ readonly type: "connection_ack_response";
29
+ readonly version: 1;
30
+ encode(): any;
31
+ readonly data: ConnectionAckResponseData;
32
+ getData(): ConnectionAckResponseData;
33
+ };
34
+ readonly MESSAGE_TYPE: "connection_ack_response";
35
+ readonly MESSAGE_VERSION: 1;
36
+ readonly schema: import("io-ts").Type<any, any, unknown>;
37
+ decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
38
+ readonly type: "connection_ack_response";
39
+ readonly version: 1;
40
+ encode(): any;
41
+ readonly data: ConnectionAckResponseData;
42
+ getData(): ConnectionAckResponseData;
43
+ }>;
44
+ };
45
+ //# sourceMappingURL=ConnectionAckV1Response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionAckV1Response.d.ts","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,OAAO,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,yCAOvC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;CAQzC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { literal, string } from 'io-ts';
2
+ import { buildMessageSchema, createSimpleMessage } from './utils';
3
+ /**
4
+ * Connection Acknowledgment Response Schema (built using Ultra-DRY utilities)
5
+ */
6
+ export const ConnectionAckResponseSchema = buildMessageSchema('connection_ack_response', 1, {
7
+ status: literal('acknowledged'),
8
+ timestamp: string, // ISO timestamp string
9
+ });
10
+ /**
11
+ * Connection Acknowledgment V1 Response Message Class (Ultra-DRY implementation)
12
+ */
13
+ export const ConnectionAckV1ResponseMessage = createSimpleMessage({
14
+ messageType: 'connection_ack_response',
15
+ version: 1,
16
+ schema: ConnectionAckResponseSchema,
17
+ });
18
+ //# sourceMappingURL=ConnectionAckV1Response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionAckV1Response.js","sourceRoot":"","sources":["../../src/messages/ConnectionAckV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAU,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAoBlE;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAC3D,yBAAyB,EACzB,CAAC,EACD;IACE,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,uBAAuB;CAC3C,CACF,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,mBAAmB,CAI/D;IACA,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,2BAA2B;CACpC,CAAC,CAAC","sourcesContent":["import { literal, string, TypeOf } from 'io-ts';\nimport { buildMessageSchema, createSimpleMessage } from './utils';\n\n/**\n * Connection Acknowledgment Response Runtime Data\n */\nexport interface ConnectionAckResponseData {\n status: 'acknowledged';\n timestamp: string;\n}\n\n/**\n * Connection Acknowledgment Response Wire Format\n */\nexport interface ConnectionAckResponseWire {\n type: 'connection_ack_response';\n version: 1;\n status: 'acknowledged';\n timestamp: string;\n}\n\n/**\n * Connection Acknowledgment Response Schema (built using Ultra-DRY utilities)\n */\nexport const ConnectionAckResponseSchema = buildMessageSchema(\n 'connection_ack_response',\n 1,\n {\n status: literal('acknowledged'),\n timestamp: string, // ISO timestamp string\n }\n);\n\nexport type ConnectionAckResponse = TypeOf<typeof ConnectionAckResponseSchema>;\n\n/**\n * Connection Acknowledgment V1 Response Message Class (Ultra-DRY implementation)\n */\nexport const ConnectionAckV1ResponseMessage = createSimpleMessage<\n ConnectionAckResponseData,\n 'connection_ack_response',\n 1\n>({\n messageType: 'connection_ack_response',\n version: 1,\n schema: ConnectionAckResponseSchema,\n});\n"]}
@@ -0,0 +1,45 @@
1
+ import { TypeOf } from 'io-ts';
2
+ /**
3
+ * Handshake Request Runtime Data
4
+ */
5
+ export interface HandshakeRequestData {
6
+ challenge: Uint8Array;
7
+ nonce: Uint8Array;
8
+ }
9
+ /**
10
+ * Handshake Request Wire Format
11
+ */
12
+ export interface HandshakeRequestWire {
13
+ type: 'handshake';
14
+ version: 1;
15
+ challenge: string;
16
+ nonce: string;
17
+ }
18
+ /**
19
+ * Handshake Request Schema (built using Ultra-DRY utilities)
20
+ */
21
+ export declare const HandshakeRequestSchema: import("io-ts").Type<any, any, unknown>;
22
+ export type HandshakeRequest = TypeOf<typeof HandshakeRequestSchema>;
23
+ /**
24
+ * Handshake V1 Request Message Class (Ultra-DRY implementation)
25
+ */
26
+ export declare const HandshakeV1RequestMessage: {
27
+ new (data: HandshakeRequestData): {
28
+ readonly type: "handshake";
29
+ readonly version: 1;
30
+ encode(): HandshakeRequestWire;
31
+ readonly data: HandshakeRequestData;
32
+ getData(): HandshakeRequestData;
33
+ };
34
+ readonly MESSAGE_TYPE: "handshake";
35
+ readonly MESSAGE_VERSION: 1;
36
+ readonly schema: import("io-ts").Type<any, any, unknown>;
37
+ decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
38
+ readonly type: "handshake";
39
+ readonly version: 1;
40
+ encode(): HandshakeRequestWire;
41
+ readonly data: HandshakeRequestData;
42
+ getData(): HandshakeRequestData;
43
+ }>;
44
+ };
45
+ //# sourceMappingURL=HandshakeV1Request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandshakeV1Request.d.ts","sourceRoot":"","sources":["../../src/messages/HandshakeV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQ/B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,yCAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;CAepC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { Uint8ArrayCodec } from '../codecs';
2
+ import { buildMessageSchema, createStandardMessage, createStandardDecoder, } from './utils';
3
+ /**
4
+ * Handshake Request Schema (built using Ultra-DRY utilities)
5
+ */
6
+ export const HandshakeRequestSchema = buildMessageSchema('handshake', 1, {
7
+ challenge: Uint8ArrayCodec,
8
+ nonce: Uint8ArrayCodec,
9
+ });
10
+ /**
11
+ * Handshake V1 Request Message Class (Ultra-DRY implementation)
12
+ */
13
+ export const HandshakeV1RequestMessage = createStandardMessage({
14
+ messageType: 'handshake',
15
+ version: 1,
16
+ schema: HandshakeRequestSchema,
17
+ encodeData: (data) => HandshakeRequestSchema.encode({
18
+ type: 'handshake',
19
+ version: 1,
20
+ challenge: data.challenge,
21
+ nonce: data.nonce,
22
+ }),
23
+ decodeData: createStandardDecoder((decoded) => ({
24
+ challenge: decoded.challenge,
25
+ nonce: decoded.nonce,
26
+ })),
27
+ });
28
+ //# sourceMappingURL=HandshakeV1Request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandshakeV1Request.js","sourceRoot":"","sources":["../../src/messages/HandshakeV1Request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AAoBjB;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC,EAAE;IACvE,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,eAAe;CACvB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;IAC7D,WAAW,EAAE,WAAoB;IACjC,OAAO,EAAE,CAAU;IACnB,MAAM,EAAE,sBAAsB;IAC9B,UAAU,EAAE,CAAC,IAA0B,EAAwB,EAAE,CAC/D,sBAAsB,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;IACJ,UAAU,EAAE,qBAAqB,CAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { TypeOf } from 'io-ts';\nimport { Uint8ArrayCodec } from '../codecs';\nimport {\n buildMessageSchema,\n createStandardMessage,\n createStandardDecoder,\n} from './utils';\n\n/**\n * Handshake Request Runtime Data\n */\nexport interface HandshakeRequestData {\n challenge: Uint8Array;\n nonce: Uint8Array;\n}\n\n/**\n * Handshake Request Wire Format\n */\nexport interface HandshakeRequestWire {\n type: 'handshake';\n version: 1;\n challenge: string; // hex string\n nonce: string; // hex string\n}\n\n/**\n * Handshake Request Schema (built using Ultra-DRY utilities)\n */\nexport const HandshakeRequestSchema = buildMessageSchema('handshake', 1, {\n challenge: Uint8ArrayCodec,\n nonce: Uint8ArrayCodec,\n});\n\nexport type HandshakeRequest = TypeOf<typeof HandshakeRequestSchema>;\n\n/**\n * Handshake V1 Request Message Class (Ultra-DRY implementation)\n */\nexport const HandshakeV1RequestMessage = createStandardMessage({\n messageType: 'handshake' as const,\n version: 1 as const,\n schema: HandshakeRequestSchema,\n encodeData: (data: HandshakeRequestData): HandshakeRequestWire =>\n HandshakeRequestSchema.encode({\n type: 'handshake',\n version: 1,\n challenge: data.challenge,\n nonce: data.nonce,\n }),\n decodeData: createStandardDecoder<HandshakeRequestData>((decoded) => ({\n challenge: decoded.challenge,\n nonce: decoded.nonce,\n })),\n});\n"]}
@@ -0,0 +1,47 @@
1
+ import { TypeOf } from 'io-ts';
2
+ /**
3
+ * Handshake Response Runtime Data
4
+ */
5
+ export interface HandshakeResponseData {
6
+ encapsulatedSharedSecret: string;
7
+ attestationDoc: string;
8
+ connectionId: string;
9
+ }
10
+ /**
11
+ * Handshake Response Wire Format
12
+ */
13
+ export interface HandshakeResponseWire {
14
+ type: 'handshake_response';
15
+ version: 1;
16
+ encapsulatedSharedSecret: string;
17
+ attestationDoc: string;
18
+ connectionId: string;
19
+ }
20
+ /**
21
+ * Handshake Response Schema (built using Ultra-DRY utilities)
22
+ */
23
+ export declare const HandshakeResponseSchema: import("io-ts").Type<any, any, unknown>;
24
+ export type HandshakeResponse = TypeOf<typeof HandshakeResponseSchema>;
25
+ /**
26
+ * Handshake V1 Response Message Class (Ultra-DRY implementation)
27
+ */
28
+ export declare const HandshakeV1ResponseMessage: {
29
+ new (data: HandshakeResponseData): {
30
+ readonly type: "handshake_response";
31
+ readonly version: 1;
32
+ encode(): any;
33
+ readonly data: HandshakeResponseData;
34
+ getData(): HandshakeResponseData;
35
+ };
36
+ readonly MESSAGE_TYPE: "handshake_response";
37
+ readonly MESSAGE_VERSION: 1;
38
+ readonly schema: import("io-ts").Type<any, any, unknown>;
39
+ decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
40
+ readonly type: "handshake_response";
41
+ readonly version: 1;
42
+ encode(): any;
43
+ readonly data: HandshakeResponseData;
44
+ getData(): HandshakeResponseData;
45
+ }>;
46
+ };
47
+ //# sourceMappingURL=HandshakeV1Response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandshakeV1Response.d.ts","sourceRoot":"","sources":["../../src/messages/HandshakeV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAE,MAAM,OAAO,CAAC;AAGvC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,yCAQnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;CAQrC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { string } from 'io-ts';
2
+ import { buildMessageSchema, createSimpleMessage } from './utils';
3
+ /**
4
+ * Handshake Response Schema (built using Ultra-DRY utilities)
5
+ */
6
+ export const HandshakeResponseSchema = buildMessageSchema('handshake_response', 1, {
7
+ encapsulatedSharedSecret: string,
8
+ attestationDoc: string,
9
+ connectionId: string,
10
+ });
11
+ /**
12
+ * Handshake V1 Response Message Class (Ultra-DRY implementation)
13
+ */
14
+ export const HandshakeV1ResponseMessage = createSimpleMessage({
15
+ messageType: 'handshake_response',
16
+ version: 1,
17
+ schema: HandshakeResponseSchema,
18
+ });
19
+ // HandshakeResponse naturally implements IMessageConstructor through its static properties
20
+ //# sourceMappingURL=HandshakeV1Response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandshakeV1Response.js","sourceRoot":"","sources":["../../src/messages/HandshakeV1Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAsBlE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CACvD,oBAAoB,EACpB,CAAC,EACD;IACE,wBAAwB,EAAE,MAAM;IAChC,cAAc,EAAE,MAAM;IACtB,YAAY,EAAE,MAAM;CACrB,CACF,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,mBAAmB,CAI3D;IACA,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,uBAAuB;CAChC,CAAC,CAAC;AAEH,2FAA2F","sourcesContent":["import { string, TypeOf } from 'io-ts';\nimport { buildMessageSchema, createSimpleMessage } from './utils';\n\n/**\n * Handshake Response Runtime Data\n */\nexport interface HandshakeResponseData {\n encapsulatedSharedSecret: string; // hex-encoded\n attestationDoc: string; // hex-encoded\n connectionId: string; // Server's connection ID for key derivation\n}\n\n/**\n * Handshake Response Wire Format\n */\nexport interface HandshakeResponseWire {\n type: 'handshake_response';\n version: 1;\n encapsulatedSharedSecret: string; // hex-encoded\n attestationDoc: string; // base64-encoded\n connectionId: string; // Server's connection ID for key derivation\n}\n\n/**\n * Handshake Response Schema (built using Ultra-DRY utilities)\n */\nexport const HandshakeResponseSchema = buildMessageSchema(\n 'handshake_response',\n 1,\n {\n encapsulatedSharedSecret: string,\n attestationDoc: string,\n connectionId: string,\n }\n);\n\nexport type HandshakeResponse = TypeOf<typeof HandshakeResponseSchema>;\n\n/**\n * Handshake V1 Response Message Class (Ultra-DRY implementation)\n */\nexport const HandshakeV1ResponseMessage = createSimpleMessage<\n HandshakeResponseData,\n 'handshake_response',\n 1\n>({\n messageType: 'handshake_response',\n version: 1,\n schema: HandshakeResponseSchema,\n});\n\n// HandshakeResponse naturally implements IMessageConstructor through its static properties\n"]}
@@ -0,0 +1,63 @@
1
+ import { TypeOf } from 'io-ts';
2
+ import { HashAlgorithm } from '../constants';
3
+ import { type EncryptedKeyshare } from '../codecs/EncryptedKeyshareCodec';
4
+ import { SigningAlgorithm } from '@dynamic-labs-wallet/core';
5
+ /**
6
+ * Sign Message Request Runtime Data
7
+ */
8
+ export interface SignMessageRequestData {
9
+ relayDomain: string;
10
+ signingAlgo: SigningAlgorithm;
11
+ hashAlgo?: HashAlgorithm;
12
+ derivationPath?: Uint32Array;
13
+ tweak?: Uint8Array;
14
+ keyshare: EncryptedKeyshare;
15
+ message: Uint8Array | string;
16
+ roomUuid: string;
17
+ }
18
+ /**
19
+ * Sign Message Request Wire Format
20
+ */
21
+ export interface SignMessageRequestWire {
22
+ type: 'signMessage';
23
+ version: 1;
24
+ relayDomain: string;
25
+ signingAlgo: SigningAlgorithm;
26
+ hashAlgo?: HashAlgorithm;
27
+ derivationPath?: string;
28
+ tweak?: string;
29
+ keyshare: {
30
+ salt: string;
31
+ encryptedPayload: string;
32
+ };
33
+ message: string;
34
+ roomUuid: string;
35
+ }
36
+ /**
37
+ * Sign Message Request Schema - uses codecs that handle both formats automatically
38
+ */
39
+ export declare const SignMessageRequestSchema: import("io-ts").Type<any, any, unknown>;
40
+ export type SignMessageRequest = TypeOf<typeof SignMessageRequestSchema>;
41
+ /**
42
+ * Sign Message V1 Request Message Class - Clean implementation using createComplexEncoder
43
+ */
44
+ export declare const SignMessageV1RequestMessage: {
45
+ new (data: SignMessageRequestData): {
46
+ readonly type: "signMessage";
47
+ readonly version: 1;
48
+ encode(): unknown;
49
+ readonly data: SignMessageRequestData;
50
+ getData(): SignMessageRequestData;
51
+ };
52
+ readonly MESSAGE_TYPE: "signMessage";
53
+ readonly MESSAGE_VERSION: 1;
54
+ readonly schema: import("io-ts").Type<any, any, unknown>;
55
+ decode(wireData: unknown): import("fp-ts/lib/Either").Either<import("io-ts").Errors, {
56
+ readonly type: "signMessage";
57
+ readonly version: 1;
58
+ encode(): unknown;
59
+ readonly data: SignMessageRequestData;
60
+ getData(): SignMessageRequestData;
61
+ }>;
62
+ };
63
+ //# sourceMappingURL=SignMessageV1Request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignMessageV1Request.d.ts","sourceRoot":"","sources":["../../src/messages/SignMessageV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EACL,aAAa,EAGd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,yCAUpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;CAuBtC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { string } from 'io-ts';
2
+ import { Uint32ArrayCodec, Uint8ArrayCodec } from '../codecs';
3
+ import { SignatureAlgoSchema, fromDynamicSigningAlgorithm, } from '../constants';
4
+ import { DomainCodec } from '../codecs/DomainCodec';
5
+ import { EncryptedKeyshareCodec, } from '../codecs/EncryptedKeyshareCodec';
6
+ import { buildMessageSchema, createStandardMessage, createStandardDecoder, createComplexEncoder, } from './utils';
7
+ import { Uint8ArrayOrHexCodec } from '../codecs/Uint8ArrayOrHexCodec';
8
+ /**
9
+ * Sign Message Request Schema - uses codecs that handle both formats automatically
10
+ */
11
+ export const SignMessageRequestSchema = buildMessageSchema('signMessage', 1, {
12
+ relayDomain: DomainCodec,
13
+ keyshare: EncryptedKeyshareCodec,
14
+ message: Uint8ArrayOrHexCodec,
15
+ roomUuid: string,
16
+ }, SignatureAlgoSchema);
17
+ /**
18
+ * Sign Message V1 Request Message Class - Clean implementation using createComplexEncoder
19
+ */
20
+ export const SignMessageV1RequestMessage = createStandardMessage({
21
+ messageType: 'signMessage',
22
+ version: 1,
23
+ schema: SignMessageRequestSchema,
24
+ encodeData: createComplexEncoder('signMessage', 1, {
25
+ signingAlgo: (value) => fromDynamicSigningAlgorithm(value),
26
+ derivationPath: (value) => Uint32ArrayCodec.encode(value),
27
+ tweak: (value) => Uint8ArrayCodec.encode(value),
28
+ keyshare: (value) => EncryptedKeyshareCodec.encode(value),
29
+ message: (value) => Uint8ArrayOrHexCodec.encode(value),
30
+ }),
31
+ decodeData: createStandardDecoder((decoded) => ({
32
+ relayDomain: decoded.relayDomain,
33
+ signingAlgo: decoded.signingAlgo,
34
+ hashAlgo: decoded.hashAlgo,
35
+ derivationPath: decoded.derivationPath,
36
+ tweak: decoded.tweak,
37
+ keyshare: decoded.keyshare,
38
+ message: decoded.message,
39
+ roomUuid: decoded.roomUuid,
40
+ })),
41
+ });
42
+ //# sourceMappingURL=SignMessageV1Request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignMessageV1Request.js","sourceRoot":"","sources":["../../src/messages/SignMessageV1Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAEL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,sBAAsB,GAEvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAoCtE;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CACxD,aAAa,EACb,CAAC,EACD;IACE,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,MAAM;CACjB,EACD,mBAAmB,CACpB,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;IAC/D,WAAW,EAAE,aAAsB;IACnC,OAAO,EAAE,CAAU;IACnB,MAAM,EAAE,wBAAwB;IAChC,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,CAAC,EAAE;QACjD,WAAW,EAAE,CAAC,KAAuB,EAAE,EAAE,CACvC,2BAA2B,CAAC,KAAK,CAAC;QACpC,cAAc,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;QACtE,KAAK,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3D,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE,CACrC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC,KAA0B,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;KAC5E,CAAC;IACF,UAAU,EAAE,qBAAqB,CAAyB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtE,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { string, TypeOf } from 'io-ts';\nimport { Uint32ArrayCodec, Uint8ArrayCodec } from '../codecs';\nimport {\n HashAlgorithm,\n SignatureAlgoSchema,\n fromDynamicSigningAlgorithm,\n} from '../constants';\nimport { DomainCodec } from '../codecs/DomainCodec';\nimport {\n EncryptedKeyshareCodec,\n type EncryptedKeyshare,\n} from '../codecs/EncryptedKeyshareCodec';\nimport {\n buildMessageSchema,\n createStandardMessage,\n createStandardDecoder,\n createComplexEncoder,\n} from './utils';\nimport { Uint8ArrayOrHexCodec } from '../codecs/Uint8ArrayOrHexCodec';\nimport { SigningAlgorithm } from '@dynamic-labs-wallet/core';\n\n/**\n * Sign Message Request Runtime Data\n */\nexport interface SignMessageRequestData {\n relayDomain: string;\n signingAlgo: SigningAlgorithm;\n hashAlgo?: HashAlgorithm;\n derivationPath?: Uint32Array;\n tweak?: Uint8Array;\n keyshare: EncryptedKeyshare;\n message: Uint8Array | string;\n roomUuid: string;\n}\n\n/**\n * Sign Message Request Wire Format\n */\nexport interface SignMessageRequestWire {\n type: 'signMessage';\n version: 1;\n relayDomain: string;\n signingAlgo: SigningAlgorithm;\n hashAlgo?: HashAlgorithm;\n derivationPath?: string; // hex string\n tweak?: string; // hex string\n keyshare: {\n salt: string; // hex string\n encryptedPayload: string; // hex string\n };\n message: string; // hex string\n roomUuid: string;\n}\n\n/**\n * Sign Message Request Schema - uses codecs that handle both formats automatically\n */\nexport const SignMessageRequestSchema = buildMessageSchema(\n 'signMessage',\n 1,\n {\n relayDomain: DomainCodec,\n keyshare: EncryptedKeyshareCodec,\n message: Uint8ArrayOrHexCodec,\n roomUuid: string,\n },\n SignatureAlgoSchema\n);\n\nexport type SignMessageRequest = TypeOf<typeof SignMessageRequestSchema>;\n\n/**\n * Sign Message V1 Request Message Class - Clean implementation using createComplexEncoder\n */\nexport const SignMessageV1RequestMessage = createStandardMessage({\n messageType: 'signMessage' as const,\n version: 1 as const,\n schema: SignMessageRequestSchema,\n encodeData: createComplexEncoder('signMessage', 1, {\n signingAlgo: (value: SigningAlgorithm) =>\n fromDynamicSigningAlgorithm(value),\n derivationPath: (value: Uint32Array) => Uint32ArrayCodec.encode(value),\n tweak: (value: Uint8Array) => Uint8ArrayCodec.encode(value),\n keyshare: (value: EncryptedKeyshare) =>\n EncryptedKeyshareCodec.encode(value),\n message: (value: Uint8Array | string) => Uint8ArrayOrHexCodec.encode(value),\n }),\n decodeData: createStandardDecoder<SignMessageRequestData>((decoded) => ({\n relayDomain: decoded.relayDomain,\n signingAlgo: decoded.signingAlgo,\n hashAlgo: decoded.hashAlgo,\n derivationPath: decoded.derivationPath,\n tweak: decoded.tweak,\n keyshare: decoded.keyshare,\n message: decoded.message,\n roomUuid: decoded.roomUuid,\n })),\n});\n"]}