@graphprotocol/hypergraph 0.0.1 → 0.0.2

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 (328) hide show
  1. package/dist/connect/abis/MainVotingPlugin.json +1865 -0
  2. package/dist/connect/abis/PersonalSpaceAdminPlugin.json +531 -0
  3. package/dist/connect/abis.d.ts +115 -0
  4. package/dist/connect/abis.d.ts.map +1 -0
  5. package/dist/connect/abis.js +141 -0
  6. package/dist/connect/abis.js.map +1 -0
  7. package/dist/connect/auth-storage.d.ts +15 -0
  8. package/dist/connect/auth-storage.js +53 -0
  9. package/dist/connect/auth-storage.js.map +1 -0
  10. package/dist/connect/create-app-identity.d.ts +7 -0
  11. package/dist/connect/create-app-identity.js +15 -0
  12. package/dist/connect/create-app-identity.js.map +1 -0
  13. package/dist/connect/create-auth-url.d.ts +15 -0
  14. package/dist/connect/create-callback-params.d.ts +28 -0
  15. package/dist/connect/create-callback-params.d.ts.map +1 -1
  16. package/dist/connect/create-callback-params.js.map +1 -1
  17. package/dist/connect/create-identity-keys.d.ts +3 -0
  18. package/dist/connect/create-identity-keys.js +20 -0
  19. package/dist/connect/create-identity-keys.js.map +1 -0
  20. package/dist/connect/identity-encryption.d.ts +12 -0
  21. package/dist/connect/identity-encryption.d.ts.map +1 -1
  22. package/dist/connect/identity-encryption.js +187 -0
  23. package/dist/connect/identity-encryption.js.map +1 -0
  24. package/dist/connect/index.d.ts +11 -0
  25. package/dist/connect/index.d.ts.map +1 -1
  26. package/dist/connect/index.js +11 -0
  27. package/dist/connect/index.js.map +1 -0
  28. package/dist/connect/login.d.ts +22 -0
  29. package/dist/connect/login.d.ts.map +1 -1
  30. package/dist/connect/login.js +172 -0
  31. package/dist/connect/login.js.map +1 -0
  32. package/dist/connect/parse-auth-params.d.ts +14 -0
  33. package/dist/connect/parse-auth-params.d.ts.map +1 -0
  34. package/dist/connect/parse-auth-params.js +40 -0
  35. package/dist/connect/parse-auth-params.js.map +1 -0
  36. package/dist/connect/parse-callback-params.d.ts +13 -0
  37. package/dist/connect/parse-callback-params.d.ts.map +1 -1
  38. package/dist/connect/parse-callback-params.js +4 -1
  39. package/dist/connect/parse-callback-params.js.map +1 -1
  40. package/dist/connect/smart-account.d.ts +96 -0
  41. package/dist/connect/smart-account.d.ts.map +1 -0
  42. package/dist/connect/smart-account.js +761 -0
  43. package/dist/connect/smart-account.js.map +1 -0
  44. package/dist/connect/types.d.ts +2 -0
  45. package/dist/connect/types.d.ts.map +1 -1
  46. package/dist/connect/types.js.map +1 -1
  47. package/dist/entity/create.d.ts +8 -0
  48. package/dist/entity/create.js +51 -0
  49. package/dist/entity/create.js.map +1 -0
  50. package/dist/entity/decodedEntitiesCache.d.ts +23 -0
  51. package/dist/entity/decodedEntitiesCache.d.ts.map +1 -1
  52. package/dist/entity/decodedEntitiesCache.js +2 -0
  53. package/dist/entity/decodedEntitiesCache.js.map +1 -0
  54. package/dist/entity/delete.d.ts +12 -0
  55. package/dist/entity/delete.js +44 -0
  56. package/dist/entity/delete.js.map +1 -0
  57. package/dist/entity/entity.d.ts +18 -0
  58. package/dist/entity/entity.js +19 -0
  59. package/dist/entity/entity.js.map +1 -0
  60. package/dist/entity/entityRelationParentsMap.d.ts +4 -0
  61. package/dist/entity/entityRelationParentsMap.js +2 -0
  62. package/dist/entity/entityRelationParentsMap.js.map +1 -0
  63. package/dist/entity/findMany.d.ts +22 -0
  64. package/dist/entity/findMany.d.ts.map +1 -1
  65. package/dist/entity/findMany.js +8 -8
  66. package/dist/entity/findMany.js.map +1 -1
  67. package/dist/entity/findOne.d.ts +8 -0
  68. package/dist/entity/findOne.js +31 -0
  69. package/dist/entity/findOne.js.map +1 -0
  70. package/dist/entity/getEntityRelations.d.ts +4 -0
  71. package/dist/entity/getEntityRelations.d.ts.map +1 -1
  72. package/dist/entity/getEntityRelations.js +35 -0
  73. package/dist/entity/getEntityRelations.js.map +1 -0
  74. package/dist/entity/hasValidTypesProperty.d.ts +2 -0
  75. package/dist/entity/hasValidTypesProperty.d.ts.map +1 -0
  76. package/dist/entity/hasValidTypesProperty.js +4 -0
  77. package/dist/entity/hasValidTypesProperty.js.map +1 -0
  78. package/dist/entity/index.d.ts +9 -0
  79. package/dist/entity/index.js +9 -0
  80. package/dist/entity/index.js.map +1 -0
  81. package/dist/entity/relationParentsMap.d.ts +4 -0
  82. package/dist/entity/relationParentsMap.js +2 -0
  83. package/dist/entity/relationParentsMap.js.map +1 -0
  84. package/dist/entity/removeRelation.d.ts +7 -0
  85. package/dist/entity/removeRelation.js +17 -0
  86. package/dist/entity/removeRelation.js.map +1 -0
  87. package/dist/entity/test.d.ts +2 -0
  88. package/dist/entity/test.d.ts.map +1 -0
  89. package/dist/entity/test.js +2 -0
  90. package/dist/entity/test.js.map +1 -0
  91. package/dist/entity/types.d.ts +8 -8
  92. package/dist/entity/update.d.ts +8 -0
  93. package/dist/entity/update.js +58 -0
  94. package/dist/entity/update.js.map +1 -0
  95. package/dist/entity/variant-schema.d.ts +247 -0
  96. package/dist/entity/variant-schema.d.ts.map +1 -0
  97. package/dist/entity/variant-schema.js +204 -0
  98. package/dist/entity/variant-schema.js.map +1 -0
  99. package/dist/identity/auth-storage.d.ts +6 -0
  100. package/dist/identity/auth-storage.d.ts.map +1 -1
  101. package/dist/identity/auth-storage.js +52 -0
  102. package/dist/identity/auth-storage.js.map +1 -0
  103. package/dist/identity/get-verified-identity.d.ts +7 -0
  104. package/dist/identity/get-verified-identity.d.ts.map +1 -1
  105. package/dist/identity/get-verified-identity.js +37 -0
  106. package/dist/identity/get-verified-identity.js.map +1 -0
  107. package/dist/identity/identity-encryption.d.ts +7 -0
  108. package/dist/identity/identity-encryption.js +120 -0
  109. package/dist/identity/identity-encryption.js.map +1 -0
  110. package/dist/identity/index.d.ts +7 -0
  111. package/dist/identity/index.d.ts.map +1 -1
  112. package/dist/identity/index.js +7 -0
  113. package/dist/identity/index.js.map +1 -0
  114. package/dist/identity/logout.d.ts +3 -0
  115. package/dist/identity/logout.js +9 -0
  116. package/dist/identity/logout.js.map +1 -0
  117. package/dist/identity/prove-ownership.d.ts +15 -0
  118. package/dist/identity/prove-ownership.d.ts.map +1 -1
  119. package/dist/identity/prove-ownership.js +90 -0
  120. package/dist/identity/prove-ownership.js.map +1 -0
  121. package/dist/identity/types.d.ts +37 -0
  122. package/dist/identity/types.d.ts.map +1 -0
  123. package/dist/identity/types.js +11 -0
  124. package/dist/identity/types.js.map +1 -0
  125. package/dist/inboxes/create-inbox.d.ts +22 -0
  126. package/dist/inboxes/create-inbox.js +76 -0
  127. package/dist/inboxes/create-inbox.js.map +1 -0
  128. package/dist/inboxes/get-list-inboxes.d.ts +20 -0
  129. package/dist/inboxes/get-list-inboxes.js +45 -0
  130. package/dist/inboxes/get-list-inboxes.js.map +1 -0
  131. package/dist/inboxes/index.d.ts +11 -0
  132. package/dist/inboxes/index.js +11 -0
  133. package/dist/inboxes/index.js.map +1 -0
  134. package/dist/inboxes/merge-messages.d.ts +6 -0
  135. package/dist/inboxes/merge-messages.js +23 -0
  136. package/dist/inboxes/merge-messages.js.map +1 -0
  137. package/dist/inboxes/message-encryption.d.ts +15 -0
  138. package/dist/inboxes/message-encryption.js +29 -0
  139. package/dist/inboxes/message-encryption.js.map +1 -0
  140. package/dist/inboxes/message-validation.d.ts +6 -0
  141. package/dist/inboxes/message-validation.d.ts.map +1 -1
  142. package/dist/inboxes/message-validation.js +53 -0
  143. package/dist/inboxes/message-validation.js.map +1 -0
  144. package/dist/inboxes/prepare-message.d.ts +2 -2
  145. package/dist/inboxes/prepare-message.js +78 -0
  146. package/dist/inboxes/prepare-message.js.map +1 -0
  147. package/dist/inboxes/recover-inbox-creator.d.ts +5 -0
  148. package/dist/inboxes/recover-inbox-creator.js +24 -0
  149. package/dist/inboxes/recover-inbox-creator.js.map +1 -0
  150. package/dist/inboxes/recover-inbox-message-signer.d.ts +4 -0
  151. package/dist/inboxes/recover-inbox-message-signer.js +32 -0
  152. package/dist/inboxes/recover-inbox-message-signer.js.map +1 -0
  153. package/dist/inboxes/send-message.d.ts +19 -0
  154. package/dist/inboxes/send-message.js +58 -0
  155. package/dist/inboxes/send-message.js.map +1 -0
  156. package/dist/inboxes/types.d.ts +4 -0
  157. package/dist/inboxes/types.d.ts.map +1 -0
  158. package/dist/inboxes/types.js +3 -0
  159. package/dist/inboxes/types.js.map +1 -0
  160. package/dist/index.d.ts +14 -0
  161. package/dist/index.js +14 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/key/create-key.d.ts +11 -0
  164. package/dist/key/create-key.d.ts.map +1 -0
  165. package/dist/key/create-key.js +22 -0
  166. package/dist/key/create-key.js.map +1 -0
  167. package/dist/key/decrypt-key.d.ts +9 -0
  168. package/dist/key/decrypt-key.d.ts.map +1 -0
  169. package/dist/key/decrypt-key.js +16 -0
  170. package/dist/key/decrypt-key.js.map +1 -0
  171. package/dist/key/encrypt-key.d.ts +11 -0
  172. package/dist/key/encrypt-key.d.ts.map +1 -0
  173. package/dist/key/encrypt-key.js +20 -0
  174. package/dist/key/encrypt-key.js.map +1 -0
  175. package/dist/key/index.d.ts +5 -0
  176. package/dist/key/index.d.ts.map +1 -0
  177. package/dist/key/index.js +5 -0
  178. package/dist/key/index.js.map +1 -0
  179. package/dist/key/key-box.d.ts +19 -0
  180. package/dist/key/key-box.d.ts.map +1 -0
  181. package/dist/key/key-box.js +38 -0
  182. package/dist/key/key-box.js.map +1 -0
  183. package/dist/messages/decrypt-message.d.ts +7 -0
  184. package/dist/messages/decrypt-message.d.ts.map +1 -0
  185. package/dist/messages/decrypt-message.js +11 -0
  186. package/dist/messages/decrypt-message.js.map +1 -0
  187. package/dist/messages/encrypt-message.d.ts +7 -0
  188. package/dist/messages/encrypt-message.d.ts.map +1 -0
  189. package/dist/messages/encrypt-message.js +12 -0
  190. package/dist/messages/encrypt-message.js.map +1 -0
  191. package/dist/messages/index.d.ts +6 -0
  192. package/dist/messages/index.js +6 -0
  193. package/dist/messages/index.js.map +1 -0
  194. package/dist/messages/serialize.d.ts +3 -0
  195. package/dist/messages/serialize.d.ts.map +1 -0
  196. package/dist/messages/serialize.js +30 -0
  197. package/dist/messages/serialize.js.map +1 -0
  198. package/dist/messages/signed-update-message.d.ts +23 -0
  199. package/dist/messages/signed-update-message.js +56 -0
  200. package/dist/messages/signed-update-message.js.map +1 -0
  201. package/dist/messages/types.d.ts +1268 -0
  202. package/dist/messages/types.d.ts.map +1 -1
  203. package/dist/messages/types.js +312 -0
  204. package/dist/messages/types.js.map +1 -0
  205. package/dist/space-events/accept-invitation.d.ts +9 -0
  206. package/dist/space-events/accept-invitation.js +28 -0
  207. package/dist/space-events/accept-invitation.js.map +1 -0
  208. package/dist/space-events/apply-event.d.ts +11 -0
  209. package/dist/space-events/apply-event.js +130 -0
  210. package/dist/space-events/apply-event.js.map +1 -0
  211. package/dist/space-events/create-inbox.d.ts +14 -0
  212. package/dist/space-events/create-inbox.js +41 -0
  213. package/dist/space-events/create-inbox.js.map +1 -0
  214. package/dist/space-events/create-invitation.d.ts +12 -0
  215. package/dist/space-events/create-invitation.js +30 -0
  216. package/dist/space-events/create-invitation.js.map +1 -0
  217. package/dist/space-events/create-space.d.ts +9 -0
  218. package/dist/space-events/create-space.js +29 -0
  219. package/dist/space-events/create-space.js.map +1 -0
  220. package/dist/space-events/delete-space.d.ts +10 -0
  221. package/dist/space-events/delete-space.js +30 -0
  222. package/dist/space-events/delete-space.js.map +1 -0
  223. package/dist/space-events/hash-event.d.ts +3 -0
  224. package/dist/space-events/hash-event.js +7 -0
  225. package/dist/space-events/hash-event.js.map +1 -0
  226. package/dist/space-events/index.d.ts +9 -0
  227. package/dist/space-events/index.js +9 -0
  228. package/dist/space-events/index.js.map +1 -0
  229. package/dist/space-events/types.d.ts +222 -0
  230. package/dist/space-events/types.d.ts.map +1 -0
  231. package/dist/space-events/types.js +102 -0
  232. package/dist/space-events/types.js.map +1 -0
  233. package/dist/space-info/decrypt-space-info.d.ts +7 -0
  234. package/dist/space-info/decrypt-space-info.js +18 -0
  235. package/dist/space-info/decrypt-space-info.js.map +1 -0
  236. package/dist/space-info/encrypt-and-sign-space-info.d.ts +17 -0
  237. package/dist/space-info/encrypt-and-sign-space-info.js +39 -0
  238. package/dist/space-info/encrypt-and-sign-space-info.js.map +1 -0
  239. package/dist/space-info/index.d.ts +4 -0
  240. package/dist/space-info/index.js +4 -0
  241. package/dist/space-info/index.js.map +1 -0
  242. package/dist/space-info/types.d.ts +6 -0
  243. package/dist/space-info/types.d.ts.map +1 -0
  244. package/dist/space-info/types.js +5 -0
  245. package/dist/space-info/types.js.map +1 -0
  246. package/dist/store-connect.d.ts +149 -0
  247. package/dist/store-connect.d.ts.map +1 -1
  248. package/dist/store-connect.js +289 -0
  249. package/dist/store-connect.js.map +1 -0
  250. package/dist/store.d.ts +158 -0
  251. package/dist/store.d.ts.map +1 -1
  252. package/dist/store.js +354 -0
  253. package/dist/store.js.map +1 -0
  254. package/dist/type/type.d.ts +14 -0
  255. package/dist/type/type.d.ts.map +1 -1
  256. package/dist/type/type.js +25 -0
  257. package/dist/type/type.js.map +1 -0
  258. package/dist/types.d.ts +80 -0
  259. package/dist/types.d.ts.map +1 -0
  260. package/dist/types.js +37 -0
  261. package/dist/types.js.map +1 -0
  262. package/dist/utils/assertExhaustive.d.ts +2 -0
  263. package/dist/utils/assertExhaustive.d.ts.map +1 -0
  264. package/dist/utils/assertExhaustive.js +4 -0
  265. package/dist/utils/assertExhaustive.js.map +1 -0
  266. package/dist/utils/automergeId.d.ts +1 -1
  267. package/dist/utils/automergeId.d.ts.map +1 -1
  268. package/dist/utils/automergeId.js +1 -1
  269. package/dist/utils/automergeId.js.map +1 -1
  270. package/dist/utils/base58.d.ts +36 -0
  271. package/dist/utils/base58.d.ts.map +1 -0
  272. package/dist/utils/base58.js +62 -0
  273. package/dist/utils/base58.js.map +1 -0
  274. package/dist/utils/hexBytesAddressUtils.d.ts +4 -0
  275. package/dist/utils/hexBytesAddressUtils.d.ts.map +1 -0
  276. package/dist/utils/hexBytesAddressUtils.js +21 -0
  277. package/dist/utils/hexBytesAddressUtils.js.map +1 -0
  278. package/dist/utils/index.d.ts +9 -0
  279. package/dist/utils/index.js +9 -0
  280. package/dist/utils/index.js.map +1 -0
  281. package/dist/utils/internal/base58Utils.d.ts +4 -0
  282. package/dist/utils/internal/base58Utils.d.ts.map +1 -0
  283. package/dist/utils/internal/base58Utils.js +40 -0
  284. package/dist/utils/internal/base58Utils.js.map +1 -0
  285. package/dist/utils/internal/deep-merge.d.ts +7 -0
  286. package/dist/utils/internal/deep-merge.d.ts.map +1 -0
  287. package/dist/utils/internal/deep-merge.js +33 -0
  288. package/dist/utils/internal/deep-merge.js.map +1 -0
  289. package/dist/utils/isRelationField.d.ts +3 -0
  290. package/dist/utils/isRelationField.d.ts.map +1 -0
  291. package/dist/utils/isRelationField.js +8 -0
  292. package/dist/utils/isRelationField.js.map +1 -0
  293. package/dist/utils/jsc.d.ts +49 -0
  294. package/dist/utils/jsc.d.ts.map +1 -0
  295. package/dist/utils/jsc.js +88 -0
  296. package/dist/utils/jsc.js.map +1 -0
  297. package/dist/utils/stringToUint8Array.d.ts +3 -0
  298. package/dist/utils/stringToUint8Array.d.ts.map +1 -0
  299. package/dist/utils/stringToUint8Array.js +9 -0
  300. package/dist/utils/stringToUint8Array.js.map +1 -0
  301. package/package.json +5 -2
  302. package/src/connect/abis/MainVotingPlugin.json +1865 -0
  303. package/src/connect/abis/PersonalSpaceAdminPlugin.json +531 -0
  304. package/src/connect/abis.ts +183 -0
  305. package/src/connect/create-callback-params.ts +4 -1
  306. package/src/connect/identity-encryption.ts +10 -14
  307. package/src/connect/index.ts +1 -1
  308. package/src/connect/login.ts +106 -18
  309. package/src/connect/parse-callback-params.ts +4 -1
  310. package/src/connect/smart-account.ts +915 -0
  311. package/src/connect/types.ts +2 -0
  312. package/src/entity/decodedEntitiesCache.ts +1 -1
  313. package/src/entity/findMany.ts +16 -14
  314. package/src/entity/getEntityRelations.ts +1 -1
  315. package/src/entity/types.ts +8 -8
  316. package/src/identity/auth-storage.ts +11 -1
  317. package/src/identity/get-verified-identity.ts +6 -1
  318. package/src/identity/index.ts +1 -1
  319. package/src/identity/prove-ownership.ts +52 -8
  320. package/src/inboxes/message-validation.ts +17 -2
  321. package/src/messages/types.ts +6 -0
  322. package/src/store-connect.ts +1 -52
  323. package/src/store.ts +78 -48
  324. package/src/type/type.ts +4 -2
  325. package/src/types.ts +19 -1
  326. package/src/utils/automergeId.ts +1 -1
  327. package/dist/connect/prove-ownership.d.ts.map +0 -1
  328. package/src/connect/prove-ownership.ts +0 -58
@@ -6,15 +6,18 @@ type CreateAuthUrlParams = {
6
6
  expiry: number;
7
7
  nonce: string;
8
8
  appId: string;
9
+ permissionId: string;
9
10
  appIdentityAddress: string;
10
11
  appIdentityAddressPrivateKey: string;
12
+ accountAddress: string;
11
13
  signaturePublicKey: string;
12
14
  signaturePrivateKey: string;
13
15
  encryptionPublicKey: string;
14
16
  encryptionPrivateKey: string;
15
17
  sessionToken: string;
16
18
  sessionTokenExpires: number;
17
- spaces: { id: string }[];
19
+ privateSpaces: { id: string }[];
20
+ publicSpaces: { id: string }[];
18
21
  };
19
22
 
20
23
  export const createCallbackParams = ({ nonce, ephemeralPublicKey, ...rest }: CreateAuthUrlParams) => {
@@ -67,7 +67,6 @@ const signatureMessage = (nonce: Uint8Array): string => {
67
67
 
68
68
  export const encryptIdentity = async (
69
69
  signer: Signer,
70
- accountAddress: string,
71
70
  keys: IdentityKeys,
72
71
  ): Promise<{ ciphertext: string; nonce: string }> => {
73
72
  const nonce = randomBytes(32);
@@ -76,7 +75,7 @@ export const encryptIdentity = async (
76
75
 
77
76
  // Check that the signature is valid
78
77
  const valid = await verifyMessage({
79
- address: accountAddress as Hex,
78
+ address: (await signer.getAddress()) as Hex,
80
79
  message,
81
80
  signature,
82
81
  });
@@ -97,18 +96,13 @@ export const encryptIdentity = async (
97
96
  return { ciphertext, nonce: bytesToHex(nonce) };
98
97
  };
99
98
 
100
- export const decryptIdentity = async (
101
- signer: Signer,
102
- accountAddress: string,
103
- ciphertext: string,
104
- nonce: string,
105
- ): Promise<IdentityKeys> => {
99
+ export const decryptIdentity = async (signer: Signer, ciphertext: string, nonce: string): Promise<IdentityKeys> => {
106
100
  const message = signatureMessage(hexToBytes(nonce));
107
101
  const signature = (await signer.signMessage(message)) as Hex;
108
102
 
109
103
  // Check that the signature is valid
110
104
  const valid = await verifyMessage({
111
- address: accountAddress as Hex,
105
+ address: (await signer.getAddress()) as Hex,
112
106
  message,
113
107
  signature,
114
108
  });
@@ -141,9 +135,9 @@ export const decryptIdentity = async (
141
135
 
142
136
  export const encryptAppIdentity = async (
143
137
  signer: Signer,
144
- accountAddress: string,
145
138
  appIdentityAddress: string,
146
139
  appIdentityAddressPrivateKey: string,
140
+ permissionId: string,
147
141
  keys: IdentityKeys,
148
142
  ): Promise<{ ciphertext: string; nonce: string }> => {
149
143
  const nonce = randomBytes(32);
@@ -152,7 +146,7 @@ export const encryptAppIdentity = async (
152
146
 
153
147
  // Check that the signature is valid
154
148
  const valid = await verifyMessage({
155
- address: accountAddress as Hex,
149
+ address: (await signer.getAddress()) as Hex,
156
150
  message,
157
151
  signature,
158
152
  });
@@ -169,6 +163,7 @@ export const encryptAppIdentity = async (
169
163
  keys.signaturePrivateKey,
170
164
  appIdentityAddress,
171
165
  appIdentityAddressPrivateKey,
166
+ permissionId,
172
167
  ].join('\n');
173
168
  const keysMsg = new TextEncoder().encode(keysTxt);
174
169
  const ciphertext = encrypt(keysMsg, secretKey);
@@ -177,16 +172,15 @@ export const encryptAppIdentity = async (
177
172
 
178
173
  export const decryptAppIdentity = async (
179
174
  signer: Signer,
180
- accountAddress: string,
181
175
  ciphertext: string,
182
176
  nonce: string,
183
- ): Promise<Omit<PrivateAppIdentity, 'sessionToken' | 'sessionTokenExpires'>> => {
177
+ ): Promise<Omit<PrivateAppIdentity, 'sessionToken' | 'sessionTokenExpires' | 'accountAddress'>> => {
184
178
  const message = signatureMessage(hexToBytes(nonce));
185
179
  const signature = (await signer.signMessage(message)) as Hex;
186
180
 
187
181
  // Check that the signature is valid
188
182
  const valid = await verifyMessage({
189
- address: accountAddress as Hex,
183
+ address: (await signer.getAddress()) as Hex,
190
184
  message,
191
185
  signature,
192
186
  });
@@ -220,6 +214,7 @@ export const decryptAppIdentity = async (
220
214
  signaturePrivateKey,
221
215
  appIdentityAddress,
222
216
  appIdentityAddressPrivateKey,
217
+ permissionId,
223
218
  ] = keysTxt.split('\n');
224
219
  return {
225
220
  encryptionPublicKey,
@@ -228,5 +223,6 @@ export const decryptAppIdentity = async (
228
223
  signaturePrivateKey,
229
224
  address: appIdentityAddress,
230
225
  addressPrivateKey: appIdentityAddressPrivateKey,
226
+ permissionId,
231
227
  };
232
228
  };
@@ -6,5 +6,5 @@ export * from './identity-encryption.js';
6
6
  export * from './login.js';
7
7
  export * from './parse-auth-params.js';
8
8
  export * from './parse-callback-params.js';
9
- export * from './prove-ownership.js';
9
+ export * from './smart-account.js';
10
10
  export * from './types.js';
@@ -1,11 +1,19 @@
1
1
  import * as Schema from 'effect/Schema';
2
- import type { Address } from 'viem';
2
+ import type { SmartAccountClient } from 'permissionless';
3
+ import type { Address, Chain, Hex, WalletClient } from 'viem';
4
+ import { proveIdentityOwnership } from '../identity/prove-ownership.js';
3
5
  import * as Messages from '../messages/index.js';
4
6
  import { store } from '../store-connect.js';
5
- import { storeAccountAddress, storeKeys } from './auth-storage.js';
7
+ import { loadAccountAddress, storeAccountAddress, storeKeys, wipeAccountAddress } from './auth-storage.js';
6
8
  import { createIdentityKeys } from './create-identity-keys.js';
7
9
  import { decryptIdentity, encryptIdentity } from './identity-encryption.js';
8
- import { proveIdentityOwnership } from './prove-ownership.js';
10
+ import {
11
+ type SmartAccountParams,
12
+ getSmartAccountWalletClient,
13
+ isSmartAccountDeployed,
14
+ smartAccountNeedsUpdate,
15
+ updateLegacySmartAccount,
16
+ } from './smart-account.js';
9
17
  import type { IdentityKeys, Signer, Storage } from './types.js';
10
18
 
11
19
  export async function identityExists(accountAddress: string, syncServerUri: string) {
@@ -17,17 +25,24 @@ export async function identityExists(accountAddress: string, syncServerUri: stri
17
25
 
18
26
  export async function signup(
19
27
  signer: Signer,
28
+ walletClient: WalletClient,
29
+ smartAccountClient: SmartAccountClient,
20
30
  accountAddress: Address,
21
31
  syncServerUri: string,
22
32
  storage: Storage,
23
33
  identityToken: string,
24
34
  ) {
25
35
  const keys = createIdentityKeys();
26
- const { ciphertext, nonce } = await encryptIdentity(signer, accountAddress, keys);
27
- const { accountProof, keyProof } = await proveIdentityOwnership(signer, accountAddress, keys);
36
+ const { ciphertext, nonce } = await encryptIdentity(signer, keys);
37
+ const { accountProof, keyProof } = await proveIdentityOwnership(
38
+ walletClient,
39
+ smartAccountClient,
40
+ accountAddress,
41
+ keys,
42
+ );
28
43
 
29
44
  const req: Messages.RequestConnectCreateIdentity = {
30
- keyBox: { accountAddress, ciphertext, nonce },
45
+ keyBox: { signer: await signer.getAddress(), accountAddress, ciphertext, nonce },
31
46
  accountProof,
32
47
  keyProof,
33
48
  signaturePublicKey: keys.signaturePublicKey,
@@ -49,9 +64,8 @@ export async function signup(
49
64
  if (!decoded.success) {
50
65
  throw new Error('Error creating identity');
51
66
  }
52
- storeAccountAddress(storage, accountAddress);
53
67
  storeKeys(storage, accountAddress, keys);
54
-
68
+ storeAccountAddress(storage, accountAddress);
55
69
  return {
56
70
  accountAddress,
57
71
  keys,
@@ -66,9 +80,10 @@ export async function restoreKeys(
66
80
  identityToken: string,
67
81
  ) {
68
82
  const res = await fetch(new URL('/connect/identity/encrypted', syncServerUri), {
69
- method: 'POST',
83
+ method: 'GET',
70
84
  headers: {
71
85
  'privy-id-token': identityToken,
86
+ 'account-address': accountAddress,
72
87
  'Content-Type': 'application/json',
73
88
  },
74
89
  });
@@ -77,8 +92,9 @@ export async function restoreKeys(
77
92
  const decoded = Schema.decodeUnknownSync(Messages.ResponseIdentityEncrypted)(await res.json());
78
93
  const { keyBox } = decoded;
79
94
  const { ciphertext, nonce } = keyBox;
80
- const keys = await decryptIdentity(signer, accountAddress, ciphertext, nonce);
95
+ const keys = await decryptIdentity(signer, ciphertext, nonce);
81
96
  storeKeys(storage, accountAddress, keys);
97
+ storeAccountAddress(storage, accountAddress);
82
98
  return {
83
99
  accountAddress,
84
100
  keys,
@@ -87,13 +103,77 @@ export async function restoreKeys(
87
103
  throw new Error(`Error fetching identity ${res.status}`);
88
104
  }
89
105
 
90
- export async function login(
91
- signer: Signer,
92
- accountAddress: Address,
93
- syncServerUri: string,
94
- storage: Storage,
95
- identityToken: string,
96
- ) {
106
+ const getAndDeploySmartAccount = async (walletClient: WalletClient, rpcUrl: string, chain: Chain, storage: Storage) => {
107
+ const accountAddressFromStorage = loadAccountAddress(storage) as Hex;
108
+ const smartAccountParams: SmartAccountParams = {
109
+ owner: walletClient,
110
+ rpcUrl,
111
+ chain,
112
+ };
113
+ if (accountAddressFromStorage) {
114
+ smartAccountParams.address = accountAddressFromStorage;
115
+ }
116
+ const smartAccountWalletClient = await getSmartAccountWalletClient(smartAccountParams);
117
+ if (!smartAccountWalletClient.account) {
118
+ throw new Error('Smart account wallet client not found');
119
+ }
120
+ console.log('smartAccountWalletClient', smartAccountWalletClient);
121
+ console.log('address', smartAccountWalletClient.account.address);
122
+ console.log('is deployed', await isSmartAccountDeployed(smartAccountWalletClient));
123
+ // This will prompt the user to sign a user operation to update the smart account
124
+ if (await smartAccountNeedsUpdate(smartAccountWalletClient, chain, rpcUrl)) {
125
+ console.log('updating smart account');
126
+ await updateLegacySmartAccount(smartAccountWalletClient, chain, rpcUrl);
127
+ smartAccountParams.address = smartAccountWalletClient.account.address;
128
+ // Create the client again to ensure we have the 7579 config now
129
+ return getSmartAccountWalletClient(smartAccountParams);
130
+ }
131
+ if (!(await isSmartAccountDeployed(smartAccountWalletClient))) {
132
+ // TODO: remove this once we manage to get counterfactual signatures working
133
+ console.log('sending dummy userOp to deploy smart account');
134
+ if (!walletClient.account) {
135
+ throw new Error('Wallet client account not found');
136
+ }
137
+ const tx = await smartAccountWalletClient.sendUserOperation({
138
+ calls: [{ to: walletClient.account.address, data: '0x' }],
139
+ account: smartAccountWalletClient.account,
140
+ });
141
+
142
+ console.log('tx', tx);
143
+ const receipt = await smartAccountWalletClient.waitForUserOperationReceipt({ hash: tx });
144
+ console.log('receipt', receipt);
145
+ }
146
+ return smartAccountWalletClient;
147
+ };
148
+
149
+ export async function login({
150
+ walletClient,
151
+ signer,
152
+ syncServerUri,
153
+ storage,
154
+ identityToken,
155
+ rpcUrl,
156
+ chain,
157
+ }: {
158
+ walletClient: WalletClient;
159
+ signer: Signer;
160
+ syncServerUri: string;
161
+ storage: Storage;
162
+ identityToken: string;
163
+ rpcUrl: string;
164
+ chain: Chain;
165
+ }) {
166
+ let smartAccountWalletClient: SmartAccountClient;
167
+ try {
168
+ smartAccountWalletClient = await getAndDeploySmartAccount(walletClient, rpcUrl, chain, storage);
169
+ } catch (error) {
170
+ wipeAccountAddress(storage);
171
+ smartAccountWalletClient = await getAndDeploySmartAccount(walletClient, rpcUrl, chain, storage);
172
+ }
173
+ if (!smartAccountWalletClient.account) {
174
+ throw new Error('Smart account wallet client account not found');
175
+ }
176
+ const accountAddress = smartAccountWalletClient.account.address;
97
177
  // const keys = loadKeys(storage, accountAddress);
98
178
  let authData: {
99
179
  accountAddress: Address;
@@ -101,7 +181,15 @@ export async function login(
101
181
  };
102
182
  const exists = await identityExists(accountAddress, syncServerUri);
103
183
  if (!exists) {
104
- authData = await signup(signer, accountAddress, syncServerUri, storage, identityToken);
184
+ authData = await signup(
185
+ signer,
186
+ walletClient,
187
+ smartAccountWalletClient,
188
+ accountAddress,
189
+ syncServerUri,
190
+ storage,
191
+ identityToken,
192
+ );
105
193
  } else {
106
194
  authData = await restoreKeys(signer, accountAddress, syncServerUri, storage, identityToken);
107
195
  }
@@ -52,13 +52,16 @@ export const parseCallbackParams = ({
52
52
  return Effect.succeed({
53
53
  appIdentityAddress: data.appIdentityAddress,
54
54
  appIdentityAddressPrivateKey: data.appIdentityAddressPrivateKey,
55
+ accountAddress: data.accountAddress,
56
+ permissionId: data.permissionId,
55
57
  signaturePublicKey: data.signaturePublicKey,
56
58
  signaturePrivateKey: data.signaturePrivateKey,
57
59
  encryptionPublicKey: data.encryptionPublicKey,
58
60
  encryptionPrivateKey: data.encryptionPrivateKey,
59
61
  sessionToken: data.sessionToken,
60
62
  sessionTokenExpires: new Date(data.sessionTokenExpires),
61
- spaces: data.spaces,
63
+ privateSpaces: data.privateSpaces,
64
+ publicSpaces: data.publicSpaces,
62
65
  });
63
66
  } catch (error) {
64
67
  console.error(error);