@yielded/auth-persistence 0.1.0-beta.24 → 0.1.0-beta.26

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 (481) hide show
  1. package/README.md +6 -8
  2. package/dist/Adapter.d.mts +47 -33
  3. package/dist/Adapter.mjs +36 -23
  4. package/dist/OAuthPersistence.d.mts +35 -51
  5. package/dist/OAuthPersistence.mjs +60 -68
  6. package/dist/OAuthPersistence.mjs.map +1 -1
  7. package/dist/index.d.mts +2 -2
  8. package/dist/index.mjs +2 -2
  9. package/dist/internal/browser-login.d.mts +1 -1
  10. package/dist/internal/browser-login.mjs +29 -9
  11. package/dist/internal/browser-login.mjs.map +1 -1
  12. package/dist/internal/configuration.d.mts +13 -8
  13. package/dist/internal/configuration.mjs.map +1 -1
  14. package/dist/internal/crypto.d.mts +1 -0
  15. package/dist/internal/crypto.mjs +1 -1
  16. package/dist/internal/d1-planning.mjs +8 -0
  17. package/dist/internal/d1-planning.mjs.map +1 -0
  18. package/dist/internal/email-native-state.mjs +135 -0
  19. package/dist/internal/email-native-state.mjs.map +1 -0
  20. package/dist/internal/email-native.d.mts +17 -0
  21. package/dist/internal/email-native.mjs +245 -0
  22. package/dist/internal/email-native.mjs.map +1 -0
  23. package/dist/internal/email-policy.mjs +92 -0
  24. package/dist/internal/email-policy.mjs.map +1 -0
  25. package/dist/internal/email-registration-native.d.mts +38 -0
  26. package/dist/internal/email-registration-native.mjs +171 -0
  27. package/dist/internal/email-registration-native.mjs.map +1 -0
  28. package/dist/internal/models/email-model.d.mts +40 -104
  29. package/dist/internal/models/email-model.mjs +3 -5
  30. package/dist/internal/models/email-model.mjs.map +1 -1
  31. package/dist/internal/models/oauth-connected-model.d.mts +44 -213
  32. package/dist/internal/models/oauth-connected-model.mjs +6 -14
  33. package/dist/internal/models/oauth-connected-model.mjs.map +1 -1
  34. package/dist/internal/models/oauth-model.d.mts +95 -244
  35. package/dist/internal/models/oauth-model.mjs +28 -22
  36. package/dist/internal/models/oauth-model.mjs.map +1 -1
  37. package/dist/internal/models/passkey-model.d.mts +11 -147
  38. package/dist/internal/models/passkey-model.mjs +5 -24
  39. package/dist/internal/models/passkey-model.mjs.map +1 -1
  40. package/dist/internal/models/passkey-registration-ceremony-model.d.mts +5 -39
  41. package/dist/internal/models/passkey-write-model.d.mts +17 -75
  42. package/dist/internal/models/passkey-write-model.mjs +1 -7
  43. package/dist/internal/models/passkey-write-model.mjs.map +1 -1
  44. package/dist/internal/models/password-model.d.mts +16 -82
  45. package/dist/internal/models/password-model.mjs +1 -4
  46. package/dist/internal/models/password-model.mjs.map +1 -1
  47. package/dist/internal/models/phone-model.d.mts +86 -0
  48. package/dist/internal/models/phone-model.mjs +10 -0
  49. package/dist/internal/models/phone-model.mjs.map +1 -0
  50. package/dist/internal/models/proof-model.d.mts +43 -272
  51. package/dist/internal/models/proof-model.mjs +2 -10
  52. package/dist/internal/models/proof-model.mjs.map +1 -1
  53. package/dist/internal/models/session-model.d.mts +74 -93
  54. package/dist/internal/models/session-model.mjs +3 -11
  55. package/dist/internal/models/session-model.mjs.map +1 -1
  56. package/dist/internal/models/step-up-model.d.mts +12 -50
  57. package/dist/internal/models/step-up-model.mjs +2 -4
  58. package/dist/internal/models/step-up-model.mjs.map +1 -1
  59. package/dist/internal/models/totp-model.d.mts +76 -0
  60. package/dist/internal/models/totp-model.mjs +10 -0
  61. package/dist/internal/models/totp-model.mjs.map +1 -0
  62. package/dist/internal/native-sql-table.d.mts +21 -4
  63. package/dist/internal/native-sql-table.mjs +9 -5
  64. package/dist/internal/native-sql-table.mjs.map +1 -1
  65. package/dist/internal/oauth/native-accounts.d.mts +17 -0
  66. package/dist/internal/oauth/native-accounts.mjs +290 -0
  67. package/dist/internal/oauth/native-accounts.mjs.map +1 -0
  68. package/dist/internal/oauth/native-connected-state.d.mts +11 -0
  69. package/dist/internal/oauth/native-connected-state.mjs +146 -0
  70. package/dist/internal/oauth/native-connected-state.mjs.map +1 -0
  71. package/dist/internal/oauth/native-connected.d.mts +15 -0
  72. package/dist/internal/oauth/native-connected.mjs +462 -0
  73. package/dist/internal/oauth/native-connected.mjs.map +1 -0
  74. package/dist/internal/oauth/native-flow.mjs +138 -0
  75. package/dist/internal/oauth/native-flow.mjs.map +1 -0
  76. package/dist/internal/oauth/native-layers.d.mts +24 -0
  77. package/dist/internal/oauth/native-layers.mjs +13 -0
  78. package/dist/internal/oauth/native-layers.mjs.map +1 -0
  79. package/dist/internal/oauth/native-mutation.mjs +122 -0
  80. package/dist/internal/oauth/native-mutation.mjs.map +1 -0
  81. package/dist/internal/oauth/native-registration.d.mts +24 -0
  82. package/dist/internal/oauth/native-registration.mjs +328 -0
  83. package/dist/internal/oauth/native-registration.mjs.map +1 -0
  84. package/dist/internal/oauth/native-revocations.d.mts +17 -0
  85. package/dist/internal/oauth/native-revocations.mjs +106 -0
  86. package/dist/internal/oauth/native-revocations.mjs.map +1 -0
  87. package/dist/internal/oauth/native-sign-in.d.mts +17 -0
  88. package/dist/internal/oauth/native-sign-in.mjs +50 -0
  89. package/dist/internal/oauth/native-sign-in.mjs.map +1 -0
  90. package/dist/internal/oauth/native-state.d.mts +10 -0
  91. package/dist/internal/oauth/native-state.mjs +214 -0
  92. package/dist/internal/oauth/native-state.mjs.map +1 -0
  93. package/dist/internal/oauth/state.d.mts +10 -0
  94. package/dist/internal/oauth/state.mjs +3 -27
  95. package/dist/internal/oauth/state.mjs.map +1 -1
  96. package/dist/internal/passkey-actions.mjs +55 -0
  97. package/dist/internal/passkey-actions.mjs.map +1 -0
  98. package/dist/internal/passkey-inputs.mjs +73 -0
  99. package/dist/internal/passkey-inputs.mjs.map +1 -0
  100. package/dist/internal/passkey-managed.mjs +224 -0
  101. package/dist/internal/passkey-managed.mjs.map +1 -0
  102. package/dist/internal/passkey-native-ceremony.d.mts +35 -0
  103. package/dist/internal/passkey-native-ceremony.mjs +38 -0
  104. package/dist/internal/passkey-native-ceremony.mjs.map +1 -0
  105. package/dist/internal/passkey-native-flow.mjs +91 -0
  106. package/dist/internal/passkey-native-flow.mjs.map +1 -0
  107. package/dist/internal/passkey-native-registration.d.mts +10 -0
  108. package/dist/internal/passkey-native-registration.mjs +114 -0
  109. package/dist/internal/passkey-native-registration.mjs.map +1 -0
  110. package/dist/internal/passkey-native-state.d.mts +15 -0
  111. package/dist/internal/passkey-native-state.mjs +186 -0
  112. package/dist/internal/passkey-native-state.mjs.map +1 -0
  113. package/dist/internal/passkey-native-write.d.mts +82 -0
  114. package/dist/internal/passkey-native-write.mjs +330 -0
  115. package/dist/internal/passkey-native-write.mjs.map +1 -0
  116. package/dist/internal/passkey-native.d.mts +835 -0
  117. package/dist/internal/passkey-native.mjs +175 -0
  118. package/dist/internal/passkey-native.mjs.map +1 -0
  119. package/dist/internal/passkey-policy.mjs +115 -0
  120. package/dist/internal/passkey-policy.mjs.map +1 -0
  121. package/dist/internal/password-credentials.mjs +38 -9
  122. package/dist/internal/password-credentials.mjs.map +1 -1
  123. package/dist/internal/password-native.d.mts +14 -0
  124. package/dist/internal/password-native.mjs +292 -0
  125. package/dist/internal/password-native.mjs.map +1 -0
  126. package/dist/internal/password-policy.mjs +93 -0
  127. package/dist/internal/password-policy.mjs.map +1 -0
  128. package/dist/internal/password-registration-native.d.mts +22 -0
  129. package/dist/internal/password-registration-native.mjs +142 -0
  130. package/dist/internal/password-registration-native.mjs.map +1 -0
  131. package/dist/internal/persistence.d.mts +6 -19
  132. package/dist/internal/persistence.mjs +199 -166
  133. package/dist/internal/persistence.mjs.map +1 -1
  134. package/dist/internal/phone-composed.mjs +79 -0
  135. package/dist/internal/phone-composed.mjs.map +1 -0
  136. package/dist/internal/phone-native.d.mts +15 -0
  137. package/dist/internal/phone-native.mjs +354 -0
  138. package/dist/internal/phone-native.mjs.map +1 -0
  139. package/dist/internal/proof-native.d.mts +15 -0
  140. package/dist/internal/proof-native.mjs +289 -0
  141. package/dist/internal/proof-native.mjs.map +1 -0
  142. package/dist/internal/registration.mjs +50 -60
  143. package/dist/internal/registration.mjs.map +1 -1
  144. package/dist/internal/session-native-authority.d.mts +15 -0
  145. package/dist/internal/session-native-authority.mjs +91 -0
  146. package/dist/internal/session-native-authority.mjs.map +1 -0
  147. package/dist/internal/session-native-cleanup.d.mts +14 -0
  148. package/dist/internal/session-native-cleanup.mjs +48 -0
  149. package/dist/internal/session-native-cleanup.mjs.map +1 -0
  150. package/dist/internal/session-native-login.d.mts +15 -0
  151. package/dist/internal/session-native-login.mjs +87 -0
  152. package/dist/internal/session-native-login.mjs.map +1 -0
  153. package/dist/internal/session-native-pending-read.mjs +42 -0
  154. package/dist/internal/session-native-pending-read.mjs.map +1 -0
  155. package/dist/internal/session-native-pending.mjs +134 -0
  156. package/dist/internal/session-native-pending.mjs.map +1 -0
  157. package/dist/internal/session-native-record.mjs +79 -0
  158. package/dist/internal/session-native-record.mjs.map +1 -0
  159. package/dist/internal/session-native-state.mjs +130 -0
  160. package/dist/internal/session-native-state.mjs.map +1 -0
  161. package/dist/internal/session-native-stateful.d.mts +16 -0
  162. package/dist/internal/session-native-stateful.mjs +225 -0
  163. package/dist/internal/session-native-stateful.mjs.map +1 -0
  164. package/dist/internal/session-native-step-up.d.mts +15 -0
  165. package/dist/internal/session-native-step-up.mjs +212 -0
  166. package/dist/internal/session-native-step-up.mjs.map +1 -0
  167. package/dist/internal/session-native-validity.d.mts +15 -0
  168. package/dist/internal/session-native-validity.mjs +97 -0
  169. package/dist/internal/session-native-validity.mjs.map +1 -0
  170. package/dist/internal/session-policy.mjs +29 -0
  171. package/dist/internal/session-policy.mjs.map +1 -0
  172. package/dist/internal/sql-authority.d.mts +16 -0
  173. package/dist/internal/sql-authority.mjs +32 -0
  174. package/dist/internal/sql-authority.mjs.map +1 -0
  175. package/dist/internal/sql-change.mjs +21 -0
  176. package/dist/internal/sql-change.mjs.map +1 -0
  177. package/dist/internal/sql-cleanup.mjs +35 -0
  178. package/dist/internal/sql-cleanup.mjs.map +1 -0
  179. package/dist/internal/sql-commit.d.mts +72 -0
  180. package/dist/internal/sql-commit.mjs +176 -0
  181. package/dist/internal/sql-commit.mjs.map +1 -0
  182. package/dist/internal/sql-expression.d.mts +17 -0
  183. package/dist/internal/sql-expression.mjs +49 -0
  184. package/dist/internal/sql-expression.mjs.map +1 -0
  185. package/dist/internal/sql-oauth-connected-model.d.mts +7 -23
  186. package/dist/internal/sql-oauth-model.d.mts +27 -52
  187. package/dist/internal/sql-oauth-model.mjs +3 -4
  188. package/dist/internal/sql-oauth-model.mjs.map +1 -1
  189. package/dist/internal/sql-persistence.mjs +5 -9
  190. package/dist/internal/sql-persistence.mjs.map +1 -1
  191. package/dist/internal/sql-storage-validation.mjs +1 -2
  192. package/dist/internal/sql-storage-validation.mjs.map +1 -1
  193. package/dist/internal/sql-table.d.mts +3 -16
  194. package/dist/internal/sql-table.mjs +21 -42
  195. package/dist/internal/sql-table.mjs.map +1 -1
  196. package/dist/internal/standalone.mjs +2 -3
  197. package/dist/internal/standalone.mjs.map +1 -1
  198. package/dist/internal/step-up-state.mjs +5 -8
  199. package/dist/internal/step-up-state.mjs.map +1 -1
  200. package/dist/internal/storage-clock.mjs +44 -0
  201. package/dist/internal/storage-clock.mjs.map +1 -0
  202. package/dist/internal/storage-mapping.d.mts +11 -8
  203. package/dist/internal/storage-mapping.mjs +88 -302
  204. package/dist/internal/storage-mapping.mjs.map +1 -1
  205. package/dist/internal/storage-plans.mjs +15 -73
  206. package/dist/internal/storage-plans.mjs.map +1 -1
  207. package/dist/internal/storage-tables.d.mts +37 -520
  208. package/dist/internal/storage-tables.mjs +31 -211
  209. package/dist/internal/storage-tables.mjs.map +1 -1
  210. package/dist/internal/storage-validation.d.mts +1 -6
  211. package/dist/internal/storage-validation.mjs +1 -42
  212. package/dist/internal/storage-validation.mjs.map +1 -1
  213. package/dist/internal/table-model.d.mts +21 -0
  214. package/dist/internal/totp-native.d.mts +15 -0
  215. package/dist/internal/totp-native.mjs +401 -0
  216. package/dist/internal/totp-native.mjs.map +1 -0
  217. package/package.json +1 -1
  218. package/src/Adapter.ts +143 -199
  219. package/src/OAuthPersistence.ts +128 -271
  220. package/src/index.ts +1 -1
  221. package/src/internal/browser-login.ts +54 -24
  222. package/src/internal/configuration.ts +16 -31
  223. package/src/internal/d1-planning.ts +7 -0
  224. package/src/internal/email-native-state.ts +247 -0
  225. package/src/internal/email-native.ts +514 -0
  226. package/src/internal/email-policy.ts +235 -0
  227. package/src/internal/email-registration-native.ts +386 -0
  228. package/src/internal/models/email-model.ts +76 -214
  229. package/src/internal/models/oauth-connected-model.ts +50 -288
  230. package/src/internal/models/oauth-model.ts +147 -368
  231. package/src/internal/models/passkey-model.ts +11 -208
  232. package/src/internal/models/passkey-registration-ceremony-model.ts +6 -60
  233. package/src/internal/models/passkey-write-model.ts +14 -95
  234. package/src/internal/models/password-model.ts +28 -148
  235. package/src/internal/models/phone-model.ts +110 -0
  236. package/src/internal/models/proof-model.ts +48 -404
  237. package/src/internal/models/session-model.ts +102 -200
  238. package/src/internal/models/step-up-model.ts +17 -96
  239. package/src/internal/models/totp-model.ts +82 -0
  240. package/src/internal/native-sql-table.ts +32 -11
  241. package/src/internal/oauth/native-accounts.ts +576 -0
  242. package/src/internal/oauth/native-connected-state.ts +288 -0
  243. package/src/internal/oauth/native-connected.ts +888 -0
  244. package/src/internal/oauth/native-flow.ts +253 -0
  245. package/src/internal/oauth/native-layers.ts +83 -0
  246. package/src/internal/oauth/native-mutation.ts +222 -0
  247. package/src/internal/oauth/native-registration.ts +545 -0
  248. package/src/internal/oauth/native-revocations.ts +190 -0
  249. package/src/internal/oauth/native-sign-in.ts +111 -0
  250. package/src/internal/oauth/native-state.ts +346 -0
  251. package/src/internal/oauth/state.ts +2 -70
  252. package/src/internal/passkey-actions.ts +70 -0
  253. package/src/internal/passkey-inputs.ts +56 -0
  254. package/src/internal/passkey-managed.ts +360 -0
  255. package/src/internal/passkey-native-ceremony.ts +66 -0
  256. package/src/internal/passkey-native-flow.ts +140 -0
  257. package/src/internal/passkey-native-registration.ts +221 -0
  258. package/src/internal/passkey-native-state.ts +335 -0
  259. package/src/internal/passkey-native-write.ts +611 -0
  260. package/src/internal/passkey-native.ts +372 -0
  261. package/src/internal/passkey-policy.ts +246 -0
  262. package/src/internal/password-credentials.ts +52 -10
  263. package/src/internal/password-native.ts +571 -0
  264. package/src/internal/password-policy.ts +307 -0
  265. package/src/internal/password-registration-native.ts +322 -0
  266. package/src/internal/persistence.ts +336 -290
  267. package/src/internal/phone-composed.ts +86 -0
  268. package/src/internal/phone-native.ts +659 -0
  269. package/src/internal/proof-native.ts +448 -0
  270. package/src/internal/registration.ts +96 -143
  271. package/src/internal/session-native-authority.ts +247 -0
  272. package/src/internal/session-native-cleanup.ts +65 -0
  273. package/src/internal/session-native-login.ts +205 -0
  274. package/src/internal/session-native-pending-read.ts +68 -0
  275. package/src/internal/session-native-pending.ts +223 -0
  276. package/src/internal/session-native-record.ts +141 -0
  277. package/src/internal/session-native-state.ts +259 -0
  278. package/src/internal/session-native-stateful.ts +512 -0
  279. package/src/internal/session-native-step-up.ts +450 -0
  280. package/src/internal/session-native-validity.ts +208 -0
  281. package/src/internal/session-policy.ts +59 -0
  282. package/src/internal/sql-authority.ts +56 -0
  283. package/src/internal/sql-change.ts +38 -0
  284. package/src/internal/sql-cleanup.ts +56 -0
  285. package/src/internal/sql-commit.ts +435 -0
  286. package/src/internal/sql-expression.ts +94 -0
  287. package/src/internal/sql-metadata.ts +100 -0
  288. package/src/internal/sql-oauth-connected-model.ts +6 -95
  289. package/src/internal/sql-oauth-model.ts +31 -134
  290. package/src/internal/sql-persistence.ts +2 -6
  291. package/src/internal/sql-storage-validation.ts +1 -2
  292. package/src/internal/sql-table.ts +19 -52
  293. package/src/internal/standalone.ts +2 -11
  294. package/src/internal/step-up-state.ts +4 -17
  295. package/src/internal/storage-clock.ts +58 -0
  296. package/src/internal/storage-mapping.ts +125 -340
  297. package/src/internal/storage-plans.ts +14 -80
  298. package/src/internal/storage-tables.ts +28 -212
  299. package/src/internal/storage-validation.ts +0 -58
  300. package/src/internal/table-model.ts +24 -0
  301. package/src/internal/totp-native.ts +701 -0
  302. package/dist/internal/PasswordPreparedPostconditions.d.mts +0 -22
  303. package/dist/internal/PasswordPreparedPostconditions.mjs +0 -12
  304. package/dist/internal/PasswordPreparedPostconditions.mjs.map +0 -1
  305. package/dist/internal/authority-snapshot.mjs +0 -53
  306. package/dist/internal/authority-snapshot.mjs.map +0 -1
  307. package/dist/internal/email-kernel.d.mts +0 -276
  308. package/dist/internal/email-kernel.mjs +0 -497
  309. package/dist/internal/email-kernel.mjs.map +0 -1
  310. package/dist/internal/models/passkey-registration-ceremony-model.mjs +0 -18
  311. package/dist/internal/models/passkey-registration-ceremony-model.mjs.map +0 -1
  312. package/dist/internal/oauth/accounts.d.mts +0 -8
  313. package/dist/internal/oauth/accounts.mjs +0 -379
  314. package/dist/internal/oauth/accounts.mjs.map +0 -1
  315. package/dist/internal/oauth/connected-access.d.mts +0 -9
  316. package/dist/internal/oauth/connected-access.mjs +0 -229
  317. package/dist/internal/oauth/connected-access.mjs.map +0 -1
  318. package/dist/internal/oauth/connected-collection.d.mts +0 -7
  319. package/dist/internal/oauth/connected-collection.mjs +0 -214
  320. package/dist/internal/oauth/connected-collection.mjs.map +0 -1
  321. package/dist/internal/oauth/connected-custody.d.mts +0 -6
  322. package/dist/internal/oauth/connected-custody.mjs +0 -165
  323. package/dist/internal/oauth/connected-custody.mjs.map +0 -1
  324. package/dist/internal/oauth/connected-flow.d.mts +0 -7
  325. package/dist/internal/oauth/connected-flow.mjs +0 -324
  326. package/dist/internal/oauth/connected-flow.mjs.map +0 -1
  327. package/dist/internal/oauth/connected-input.mjs +0 -122
  328. package/dist/internal/oauth/connected-input.mjs.map +0 -1
  329. package/dist/internal/oauth/connected-keys.d.mts +0 -2
  330. package/dist/internal/oauth/connected-keys.mjs +0 -22
  331. package/dist/internal/oauth/connected-keys.mjs.map +0 -1
  332. package/dist/internal/oauth/connected-maintenance.d.mts +0 -9
  333. package/dist/internal/oauth/connected-maintenance.mjs +0 -226
  334. package/dist/internal/oauth/connected-maintenance.mjs.map +0 -1
  335. package/dist/internal/oauth/connected-management.d.mts +0 -9
  336. package/dist/internal/oauth/connected-management.mjs +0 -243
  337. package/dist/internal/oauth/connected-management.mjs.map +0 -1
  338. package/dist/internal/oauth/connected-reference.mjs +0 -63
  339. package/dist/internal/oauth/connected-reference.mjs.map +0 -1
  340. package/dist/internal/oauth/connected-settlement.d.mts +0 -8
  341. package/dist/internal/oauth/connected-settlement.mjs +0 -141
  342. package/dist/internal/oauth/connected-settlement.mjs.map +0 -1
  343. package/dist/internal/oauth/connected-sign-in.d.mts +0 -10
  344. package/dist/internal/oauth/connected-sign-in.mjs +0 -281
  345. package/dist/internal/oauth/connected-sign-in.mjs.map +0 -1
  346. package/dist/internal/oauth/connected-state.d.mts +0 -14
  347. package/dist/internal/oauth/connected-state.mjs +0 -469
  348. package/dist/internal/oauth/connected-state.mjs.map +0 -1
  349. package/dist/internal/oauth/connected-target.d.mts +0 -21
  350. package/dist/internal/oauth/connected-target.mjs +0 -117
  351. package/dist/internal/oauth/connected-target.mjs.map +0 -1
  352. package/dist/internal/oauth/flow.d.mts +0 -5
  353. package/dist/internal/oauth/flow.mjs +0 -279
  354. package/dist/internal/oauth/flow.mjs.map +0 -1
  355. package/dist/internal/oauth/input.mjs +0 -127
  356. package/dist/internal/oauth/input.mjs.map +0 -1
  357. package/dist/internal/oauth/owner.d.mts +0 -10
  358. package/dist/internal/oauth/owner.mjs +0 -10
  359. package/dist/internal/oauth/owner.mjs.map +0 -1
  360. package/dist/internal/oauth/query-compiler.d.mts +0 -7
  361. package/dist/internal/oauth/query-compiler.mjs +0 -9
  362. package/dist/internal/oauth/query-compiler.mjs.map +0 -1
  363. package/dist/internal/oauth/registration.d.mts +0 -7
  364. package/dist/internal/oauth/registration.mjs +0 -393
  365. package/dist/internal/oauth/registration.mjs.map +0 -1
  366. package/dist/internal/oauth/target.d.mts +0 -31
  367. package/dist/internal/oauth/target.mjs +0 -273
  368. package/dist/internal/oauth/target.mjs.map +0 -1
  369. package/dist/internal/oauth-kernel.d.mts +0 -1423
  370. package/dist/internal/oauth-kernel.mjs +0 -187
  371. package/dist/internal/oauth-kernel.mjs.map +0 -1
  372. package/dist/internal/passkey/admission.d.mts +0 -6
  373. package/dist/internal/passkey/admission.mjs +0 -220
  374. package/dist/internal/passkey/admission.mjs.map +0 -1
  375. package/dist/internal/passkey/credentials.d.mts +0 -14
  376. package/dist/internal/passkey/credentials.mjs +0 -249
  377. package/dist/internal/passkey/credentials.mjs.map +0 -1
  378. package/dist/internal/passkey/enrollment.mjs +0 -138
  379. package/dist/internal/passkey/enrollment.mjs.map +0 -1
  380. package/dist/internal/passkey/flow.d.mts +0 -21
  381. package/dist/internal/passkey/flow.mjs +0 -452
  382. package/dist/internal/passkey/flow.mjs.map +0 -1
  383. package/dist/internal/passkey/management.mjs +0 -231
  384. package/dist/internal/passkey/management.mjs.map +0 -1
  385. package/dist/internal/passkey/registration-ceremony.d.mts +0 -9
  386. package/dist/internal/passkey/registration-ceremony.mjs +0 -129
  387. package/dist/internal/passkey/registration-ceremony.mjs.map +0 -1
  388. package/dist/internal/passkey/registration-custody.d.mts +0 -2
  389. package/dist/internal/passkey/registration-custody.mjs +0 -52
  390. package/dist/internal/passkey/registration-custody.mjs.map +0 -1
  391. package/dist/internal/passkey/registration-write.mjs +0 -211
  392. package/dist/internal/passkey/registration-write.mjs.map +0 -1
  393. package/dist/internal/passkey/state.d.mts +0 -10
  394. package/dist/internal/passkey/state.mjs +0 -234
  395. package/dist/internal/passkey/state.mjs.map +0 -1
  396. package/dist/internal/passkey/target.d.mts +0 -20
  397. package/dist/internal/passkey/target.mjs +0 -200
  398. package/dist/internal/passkey/target.mjs.map +0 -1
  399. package/dist/internal/passkey/write-state.d.mts +0 -17
  400. package/dist/internal/passkey/write-state.mjs +0 -346
  401. package/dist/internal/passkey/write-state.mjs.map +0 -1
  402. package/dist/internal/passkey/write-target.mjs +0 -192
  403. package/dist/internal/passkey/write-target.mjs.map +0 -1
  404. package/dist/internal/passkey-kernel.d.mts +0 -6045
  405. package/dist/internal/passkey-kernel.mjs +0 -49
  406. package/dist/internal/passkey-kernel.mjs.map +0 -1
  407. package/dist/internal/passkeys.d.mts +0 -7
  408. package/dist/internal/passkeys.mjs +0 -387
  409. package/dist/internal/passkeys.mjs.map +0 -1
  410. package/dist/internal/password-credentials.d.mts +0 -11
  411. package/dist/internal/password-kernel.d.mts +0 -278
  412. package/dist/internal/password-kernel.mjs +0 -508
  413. package/dist/internal/password-kernel.mjs.map +0 -1
  414. package/dist/internal/phone-kernel.d.mts +0 -162
  415. package/dist/internal/phone-kernel.mjs +0 -437
  416. package/dist/internal/phone-kernel.mjs.map +0 -1
  417. package/dist/internal/proof-kernel.d.mts +0 -94
  418. package/dist/internal/proof-kernel.mjs +0 -624
  419. package/dist/internal/proof-kernel.mjs.map +0 -1
  420. package/dist/internal/query-operations.d.mts +0 -68
  421. package/dist/internal/session-kernel.d.mts +0 -62
  422. package/dist/internal/session-kernel.mjs +0 -820
  423. package/dist/internal/session-kernel.mjs.map +0 -1
  424. package/dist/internal/sql-oauth-connected-model.mjs +0 -7
  425. package/dist/internal/sql-oauth-connected-model.mjs.map +0 -1
  426. package/dist/internal/sql-query.d.mts +0 -12
  427. package/dist/internal/sql-query.mjs +0 -206
  428. package/dist/internal/sql-query.mjs.map +0 -1
  429. package/dist/internal/step-up-state.d.mts +0 -49
  430. package/dist/internal/transaction-execution-kernel.d.mts +0 -37
  431. package/dist/internal/transaction-execution-kernel.mjs +0 -120
  432. package/dist/internal/transaction-execution-kernel.mjs.map +0 -1
  433. package/dist/internal/transaction-kernel.d.mts +0 -81
  434. package/dist/internal/transaction-kernel.mjs +0 -264
  435. package/dist/internal/transaction-kernel.mjs.map +0 -1
  436. package/src/internal/PasswordPreparedPostconditions.ts +0 -30
  437. package/src/internal/authority-snapshot.ts +0 -91
  438. package/src/internal/email-kernel.ts +0 -1555
  439. package/src/internal/oauth/accounts.ts +0 -838
  440. package/src/internal/oauth/connected-access.ts +0 -388
  441. package/src/internal/oauth/connected-collection.ts +0 -345
  442. package/src/internal/oauth/connected-custody.ts +0 -308
  443. package/src/internal/oauth/connected-flow.ts +0 -562
  444. package/src/internal/oauth/connected-input.ts +0 -147
  445. package/src/internal/oauth/connected-keys.ts +0 -31
  446. package/src/internal/oauth/connected-maintenance.ts +0 -379
  447. package/src/internal/oauth/connected-management.ts +0 -391
  448. package/src/internal/oauth/connected-reference.ts +0 -135
  449. package/src/internal/oauth/connected-settlement.ts +0 -278
  450. package/src/internal/oauth/connected-sign-in.ts +0 -472
  451. package/src/internal/oauth/connected-state.ts +0 -924
  452. package/src/internal/oauth/connected-target.ts +0 -307
  453. package/src/internal/oauth/flow.ts +0 -505
  454. package/src/internal/oauth/input.ts +0 -201
  455. package/src/internal/oauth/owner.ts +0 -22
  456. package/src/internal/oauth/query-compiler.ts +0 -15
  457. package/src/internal/oauth/registration.ts +0 -676
  458. package/src/internal/oauth/target.ts +0 -803
  459. package/src/internal/oauth-kernel.ts +0 -294
  460. package/src/internal/passkey/admission.ts +0 -368
  461. package/src/internal/passkey/credentials.ts +0 -511
  462. package/src/internal/passkey/enrollment.ts +0 -326
  463. package/src/internal/passkey/flow.ts +0 -1062
  464. package/src/internal/passkey/management.ts +0 -426
  465. package/src/internal/passkey/registration-ceremony.ts +0 -283
  466. package/src/internal/passkey/registration-custody.ts +0 -91
  467. package/src/internal/passkey/registration-write.ts +0 -426
  468. package/src/internal/passkey/state.ts +0 -351
  469. package/src/internal/passkey/target.ts +0 -598
  470. package/src/internal/passkey/write-state.ts +0 -678
  471. package/src/internal/passkey/write-target.ts +0 -450
  472. package/src/internal/passkey-kernel.ts +0 -112
  473. package/src/internal/passkeys.ts +0 -652
  474. package/src/internal/password-kernel.ts +0 -1522
  475. package/src/internal/phone-kernel.ts +0 -872
  476. package/src/internal/proof-kernel.ts +0 -1992
  477. package/src/internal/query-operations.ts +0 -91
  478. package/src/internal/session-kernel.ts +0 -2406
  479. package/src/internal/sql-query.ts +0 -304
  480. package/src/internal/transaction-execution-kernel.ts +0 -335
  481. package/src/internal/transaction-kernel.ts +0 -603
@@ -0,0 +1,835 @@
1
+ import { PersistenceMappingError } from "./mapping-error.mjs";
2
+ import { NativeSqlTables, SqlTable, sqlMapping } from "./native-sql-table.mjs";
3
+ import { CurrentSqlCommit, SqlBatchCommit, SqlCommitExecutor, SqlCommitOwnerError } from "./sql-commit.mjs";
4
+ import { PasskeyNativeMapping, PasskeyNativeRead, PasskeyNativeRow } from "./passkey-native-state.mjs";
5
+ import { Crypto, Effect, Schema } from "effect";
6
+ import { CurrentCommitJournal } from "@yielded/auth/Hooks";
7
+ import * as M from "@yielded/auth/Passkey";
8
+ import { SqlError } from "effect/sql/SqlError";
9
+ //#region src/internal/passkey-native.d.ts
10
+ export declare const makeNativePasskeyServices: (tables: NativeSqlTables, mapping: PasskeyNativeMapping) => Effect.Effect<{
11
+ batch: boolean;
12
+ state: {
13
+ sql: import("effect/sql/SqlClient").SqlClient;
14
+ tables: NativeSqlTables;
15
+ subject: SqlTable;
16
+ credential: SqlTable;
17
+ factor: SqlTable;
18
+ now: import("effect/sql/Statement").Fragment;
19
+ storedNow: import("effect/sql/Statement").Fragment;
20
+ millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
21
+ active: (table: "subject" | "credential" | "authority") => import("effect/sql/Statement").Fragment;
22
+ native: (id: M.PasskeyCredential["revision"]["subjectId"]) => unknown;
23
+ sameId: (nativeId: unknown, value: unknown) => boolean;
24
+ revision: (row: PasskeyNativeRow, factors: ReadonlyArray<PasskeyNativeRow>) => {
25
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
26
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
27
+ readonly credentials: readonly {
28
+ readonly credentialId: string;
29
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
30
+ }[];
31
+ };
32
+ decodeCredential: (row: Readonly<Record<string, unknown>>, current: {
33
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
34
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
35
+ readonly credentials: readonly {
36
+ readonly credentialId: string;
37
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
38
+ }[];
39
+ }, subjectRow: Readonly<Record<string, unknown>>) => Effect.Effect<{
40
+ readonly requirement: {
41
+ readonly alternatives: readonly [{
42
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
43
+ readonly userVerified: boolean;
44
+ readonly phishingResistant: boolean;
45
+ readonly minimumCredentials: number;
46
+ }, ...{
47
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
48
+ readonly userVerified: boolean;
49
+ readonly phishingResistant: boolean;
50
+ readonly minimumCredentials: number;
51
+ }[]];
52
+ readonly maximumAgeMillis: number;
53
+ };
54
+ readonly credentialId: string;
55
+ readonly rpId: string;
56
+ readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
57
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
58
+ readonly publicKey: string;
59
+ readonly algorithm: -257 | -7;
60
+ readonly profile: {
61
+ readonly profileId: string;
62
+ readonly rpId: string;
63
+ readonly rpName: string;
64
+ readonly origins: readonly [string, ...string[]];
65
+ readonly developmentLocalhost: boolean;
66
+ readonly residentKey: "discouraged" | "preferred" | "required";
67
+ readonly userVerification: "preferred" | "required";
68
+ readonly primarySignIn: boolean;
69
+ readonly attestation: "none";
70
+ readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
71
+ };
72
+ readonly revision: {
73
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
74
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
75
+ readonly credentials: readonly {
76
+ readonly credentialId: string;
77
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
78
+ }[];
79
+ };
80
+ readonly active: boolean;
81
+ readonly primarySignIn: boolean;
82
+ readonly enrollmentUserVerified: boolean;
83
+ readonly backupEligible: boolean;
84
+ readonly backupState: boolean;
85
+ readonly counter: number;
86
+ } | undefined, PersistenceMappingError, never>;
87
+ readAuthority: (nativeId: unknown, lock: boolean, credentialId?: string | undefined) => Effect.Effect<{
88
+ row: Record<string, unknown>;
89
+ credential: Record<string, unknown> | undefined;
90
+ revision: {
91
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
92
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
93
+ readonly credentials: readonly {
94
+ readonly credentialId: string;
95
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
96
+ }[];
97
+ };
98
+ nowMillis: number;
99
+ } | undefined, Schema.SchemaError | SqlError, never>;
100
+ lookup: (rpId: string, protocolCredentialId: string) => Effect.Effect<{
101
+ readonly requirement: {
102
+ readonly alternatives: readonly [{
103
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
104
+ readonly userVerified: boolean;
105
+ readonly phishingResistant: boolean;
106
+ readonly minimumCredentials: number;
107
+ }, ...{
108
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
109
+ readonly userVerified: boolean;
110
+ readonly phishingResistant: boolean;
111
+ readonly minimumCredentials: number;
112
+ }[]];
113
+ readonly maximumAgeMillis: number;
114
+ };
115
+ readonly credentialId: string;
116
+ readonly rpId: string;
117
+ readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
118
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
119
+ readonly publicKey: string;
120
+ readonly algorithm: -257 | -7;
121
+ readonly profile: {
122
+ readonly profileId: string;
123
+ readonly rpId: string;
124
+ readonly rpName: string;
125
+ readonly origins: readonly [string, ...string[]];
126
+ readonly developmentLocalhost: boolean;
127
+ readonly residentKey: "discouraged" | "preferred" | "required";
128
+ readonly userVerification: "preferred" | "required";
129
+ readonly primarySignIn: boolean;
130
+ readonly attestation: "none";
131
+ readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
132
+ };
133
+ readonly revision: {
134
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
135
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
136
+ readonly credentials: readonly {
137
+ readonly credentialId: string;
138
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
139
+ }[];
140
+ };
141
+ readonly active: boolean;
142
+ readonly primarySignIn: boolean;
143
+ readonly enrollmentUserVerified: boolean;
144
+ readonly backupEligible: boolean;
145
+ readonly backupState: boolean;
146
+ readonly counter: number;
147
+ } | undefined, PersistenceMappingError | import("effect/PlatformError").PlatformError | Schema.SchemaError | SqlError, Crypto.Crypto>;
148
+ joinedSubject: SqlTable;
149
+ joinedFactor: SqlTable;
150
+ joinedCredential: SqlTable;
151
+ selected: (kind: "subject" | "authority" | "credential", alias: string) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
152
+ mapped: typeof sqlMapping;
153
+ mapping: PasskeyNativeMapping;
154
+ ceremony: {
155
+ sql: import("effect/sql/SqlClient").SqlClient;
156
+ flow: SqlTable;
157
+ now: import("effect/sql/Statement").Fragment;
158
+ millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
159
+ exact: (key: string, value: unknown) => import("effect/sql/Statement").Fragment;
160
+ module: (moduleId: string) => import("effect/sql/Statement").Fragment;
161
+ validModule: (moduleId: string) => boolean;
162
+ access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
163
+ insert: (ceremony: M.PasskeyCeremony, extra?: Readonly<Record<string, unknown>>) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
164
+ consume: (input: M.PasskeyAccess, ceremony: M.PasskeyCeremony, condition?: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
165
+ absent: (input: M.PasskeyAccess) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
166
+ context: (input: {
167
+ readonly moduleId: string;
168
+ readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
169
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
170
+ readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
171
+ readonly requestBindingExpiresAtMillis: number;
172
+ }) => Effect.Effect<{
173
+ readonly moduleId: string;
174
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
175
+ readonly commandId: string;
176
+ readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
177
+ readonly profile: {
178
+ readonly profileId: string;
179
+ readonly rpId: string;
180
+ readonly rpName: string;
181
+ readonly origins: readonly [string, ...string[]];
182
+ readonly developmentLocalhost: boolean;
183
+ readonly residentKey: "discouraged" | "preferred" | "required";
184
+ readonly userVerification: "preferred" | "required";
185
+ readonly primarySignIn: boolean;
186
+ readonly attestation: "none";
187
+ readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
188
+ };
189
+ readonly challenge: string;
190
+ readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
191
+ readonly requestBindingExpiresAtMillis: number;
192
+ readonly issuedAtMillis: number;
193
+ readonly expiresAtMillis: number;
194
+ readonly allowedCredentials: readonly {
195
+ readonly type: "public-key";
196
+ readonly id: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
197
+ }[];
198
+ readonly context: {
199
+ readonly _tag: "SignIn";
200
+ } | {
201
+ readonly _tag: "Registration";
202
+ readonly fingerprint: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
203
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
204
+ readonly name: string;
205
+ readonly displayName: string;
206
+ } | {
207
+ readonly _tag: "Enrollment";
208
+ readonly revision: {
209
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
210
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
211
+ readonly credentials: readonly {
212
+ readonly credentialId: string;
213
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
214
+ }[];
215
+ };
216
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
217
+ readonly name: string;
218
+ readonly authorization: {
219
+ readonly challenge: {
220
+ readonly moduleId: string;
221
+ readonly action: "enroll-begin" | "remove";
222
+ readonly commandId: string;
223
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
224
+ readonly revision: {
225
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
226
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
227
+ readonly credentials: readonly {
228
+ readonly credentialId: string;
229
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
230
+ }[];
231
+ };
232
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
233
+ };
234
+ readonly evidence: {
235
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
236
+ readonly revision: {
237
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
238
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
239
+ readonly credentials: readonly {
240
+ readonly credentialId: string;
241
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
242
+ }[];
243
+ };
244
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
245
+ readonly proofs: readonly [{
246
+ readonly userVerified: boolean;
247
+ readonly phishingResistant: boolean;
248
+ readonly verifiedAt: import("effect/DateTime").Utc;
249
+ readonly method: string;
250
+ readonly credentialId: string;
251
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
252
+ }, ...{
253
+ readonly userVerified: boolean;
254
+ readonly phishingResistant: boolean;
255
+ readonly verifiedAt: import("effect/DateTime").Utc;
256
+ readonly method: string;
257
+ readonly credentialId: string;
258
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
259
+ }[]];
260
+ };
261
+ readonly requirement: {
262
+ readonly maximumAgeMillis: number;
263
+ readonly alternatives: readonly [{
264
+ readonly userVerified: boolean;
265
+ readonly phishingResistant: boolean;
266
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
267
+ readonly minimumCredentials: number;
268
+ }, ...{
269
+ readonly userVerified: boolean;
270
+ readonly phishingResistant: boolean;
271
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
272
+ readonly minimumCredentials: number;
273
+ }[]];
274
+ };
275
+ };
276
+ } | {
277
+ readonly _tag: "Pending";
278
+ readonly target: {
279
+ readonly moduleId: string;
280
+ readonly kind: string;
281
+ readonly commandId: string;
282
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
283
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
284
+ readonly revision: {
285
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
286
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
287
+ readonly credentials: readonly {
288
+ readonly credentialId: string;
289
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
290
+ }[];
291
+ };
292
+ readonly requirement?: {
293
+ readonly maximumAgeMillis: number;
294
+ readonly alternatives: readonly [{
295
+ readonly userVerified: boolean;
296
+ readonly phishingResistant: boolean;
297
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
298
+ readonly minimumCredentials: number;
299
+ }, ...{
300
+ readonly userVerified: boolean;
301
+ readonly phishingResistant: boolean;
302
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
303
+ readonly minimumCredentials: number;
304
+ }[]];
305
+ };
306
+ readonly expiresAtMillis: number;
307
+ };
308
+ } | {
309
+ readonly _tag: "StepUp";
310
+ readonly target: {
311
+ readonly moduleId: string;
312
+ readonly kind: string;
313
+ readonly commandId: string;
314
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
315
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
316
+ readonly revision: {
317
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
318
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
319
+ readonly credentials: readonly {
320
+ readonly credentialId: string;
321
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
322
+ }[];
323
+ };
324
+ readonly requirement?: {
325
+ readonly maximumAgeMillis: number;
326
+ readonly alternatives: readonly [{
327
+ readonly userVerified: boolean;
328
+ readonly phishingResistant: boolean;
329
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
330
+ readonly minimumCredentials: number;
331
+ }, ...{
332
+ readonly userVerified: boolean;
333
+ readonly phishingResistant: boolean;
334
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
335
+ readonly minimumCredentials: number;
336
+ }[]];
337
+ };
338
+ readonly expiresAtMillis: number;
339
+ };
340
+ } | {
341
+ readonly _tag: "Action";
342
+ readonly target: {
343
+ readonly moduleId: string;
344
+ readonly kind: string;
345
+ readonly commandId: string;
346
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
347
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
348
+ readonly revision: {
349
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
350
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
351
+ readonly credentials: readonly {
352
+ readonly credentialId: string;
353
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
354
+ }[];
355
+ };
356
+ readonly requirement?: {
357
+ readonly maximumAgeMillis: number;
358
+ readonly alternatives: readonly [{
359
+ readonly userVerified: boolean;
360
+ readonly phishingResistant: boolean;
361
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
362
+ readonly minimumCredentials: number;
363
+ }, ...{
364
+ readonly userVerified: boolean;
365
+ readonly phishingResistant: boolean;
366
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
367
+ readonly minimumCredentials: number;
368
+ }[]];
369
+ };
370
+ readonly expiresAtMillis: number;
371
+ };
372
+ };
373
+ } | undefined, Schema.SchemaError | SqlError, never>;
374
+ cleanup: (moduleId: string, limit: number, batch?: boolean) => Effect.Effect<{
375
+ readonly removed: number;
376
+ readonly hasMore: boolean;
377
+ }, Schema.SchemaError | SqlCommitOwnerError | SqlError, CurrentSqlCommit | import("effect/sql/SqlClient").SqlClient>;
378
+ stage: (statement: import("effect/sql/Statement").Fragment, count: number) => Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit>;
379
+ change: (statement: import("effect/sql/Statement").Fragment) => Effect.Effect<number, Schema.SchemaError | SqlError, never>;
380
+ };
381
+ flow: SqlTable;
382
+ access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
383
+ };
384
+ executor: SqlCommitExecutor<M.PasskeyUnavailable>;
385
+ run: <A, E, R>(effect: Effect.Effect<A, E, R>, mode?: "transaction" | "statement") => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>> | Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>, SqlBatchCommit>>;
386
+ advisory: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<R, Crypto.Crypto>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>>;
387
+ passkeyPersistence: {
388
+ readonly issue: <A>(input: {
389
+ readonly ceremony: M.PasskeyCeremony;
390
+ }, prepare: M.PreparePasskeyCommit<M.PasskeyIssueDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
391
+ readonly context: (input: M.PasskeyAccess) => Effect.Effect<M.PasskeyCeremony | undefined, M.PasskeyUnavailable>;
392
+ readonly consume: <A>(input: {
393
+ readonly access: M.PasskeyAccess;
394
+ readonly ceremony: M.PasskeyCeremony;
395
+ readonly credential: M.PasskeyCredential;
396
+ readonly assertion: M.PasskeyAssertionVerified;
397
+ }, prepare: M.PreparePasskeyCommit<M.PasskeyConsumeDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
398
+ readonly cleanup: <A>(input: {
399
+ readonly moduleId: string;
400
+ readonly limit: import("@yielded/auth/Persistence").CleanupLimit;
401
+ }, prepare: M.PreparePasskeyCommit<import("@yielded/auth/Persistence").CleanupResult, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
402
+ };
403
+ passkeyCredentials: {
404
+ readonly listForSubject: (input: {
405
+ readonly moduleId: string;
406
+ readonly rpId: string;
407
+ readonly subjectId: import("@yielded/auth/Schema").SubjectId;
408
+ }) => Effect.Effect<M.PasskeyEnrollmentSnapshot | undefined, M.PasskeyUnavailable>;
409
+ readonly lookup: (input: {
410
+ readonly rpId: string;
411
+ readonly protocolCredentialId: M.PasskeyProtocolCredentialId;
412
+ }) => Effect.Effect<M.PasskeyCredential | undefined, M.PasskeyUnavailable>;
413
+ };
414
+ }, never, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | import("effect/sql/SqlClient").SqlClient>;
415
+ export declare const makeBatchPasskeyServices: (tables: NativeSqlTables, mapping: PasskeyNativeMapping) => Effect.Effect<{
416
+ batch: boolean;
417
+ state: {
418
+ sql: import("effect/sql/SqlClient").SqlClient;
419
+ tables: NativeSqlTables;
420
+ subject: SqlTable;
421
+ credential: SqlTable;
422
+ factor: SqlTable;
423
+ now: import("effect/sql/Statement").Fragment;
424
+ storedNow: import("effect/sql/Statement").Fragment;
425
+ millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
426
+ active: (table: "subject" | "credential" | "authority") => import("effect/sql/Statement").Fragment;
427
+ native: (id: M.PasskeyCredential["revision"]["subjectId"]) => unknown;
428
+ sameId: (nativeId: unknown, value: unknown) => boolean;
429
+ revision: (row: PasskeyNativeRow, factors: ReadonlyArray<PasskeyNativeRow>) => {
430
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
431
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
432
+ readonly credentials: readonly {
433
+ readonly credentialId: string;
434
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
435
+ }[];
436
+ };
437
+ decodeCredential: (row: Readonly<Record<string, unknown>>, current: {
438
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
439
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
440
+ readonly credentials: readonly {
441
+ readonly credentialId: string;
442
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
443
+ }[];
444
+ }, subjectRow: Readonly<Record<string, unknown>>) => Effect.Effect<{
445
+ readonly requirement: {
446
+ readonly alternatives: readonly [{
447
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
448
+ readonly userVerified: boolean;
449
+ readonly phishingResistant: boolean;
450
+ readonly minimumCredentials: number;
451
+ }, ...{
452
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
453
+ readonly userVerified: boolean;
454
+ readonly phishingResistant: boolean;
455
+ readonly minimumCredentials: number;
456
+ }[]];
457
+ readonly maximumAgeMillis: number;
458
+ };
459
+ readonly credentialId: string;
460
+ readonly rpId: string;
461
+ readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
462
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
463
+ readonly publicKey: string;
464
+ readonly algorithm: -257 | -7;
465
+ readonly profile: {
466
+ readonly profileId: string;
467
+ readonly rpId: string;
468
+ readonly rpName: string;
469
+ readonly origins: readonly [string, ...string[]];
470
+ readonly developmentLocalhost: boolean;
471
+ readonly residentKey: "discouraged" | "preferred" | "required";
472
+ readonly userVerification: "preferred" | "required";
473
+ readonly primarySignIn: boolean;
474
+ readonly attestation: "none";
475
+ readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
476
+ };
477
+ readonly revision: {
478
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
479
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
480
+ readonly credentials: readonly {
481
+ readonly credentialId: string;
482
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
483
+ }[];
484
+ };
485
+ readonly active: boolean;
486
+ readonly primarySignIn: boolean;
487
+ readonly enrollmentUserVerified: boolean;
488
+ readonly backupEligible: boolean;
489
+ readonly backupState: boolean;
490
+ readonly counter: number;
491
+ } | undefined, PersistenceMappingError, never>;
492
+ readAuthority: (nativeId: unknown, lock: boolean, credentialId?: string | undefined) => Effect.Effect<{
493
+ row: Record<string, unknown>;
494
+ credential: Record<string, unknown> | undefined;
495
+ revision: {
496
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
497
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
498
+ readonly credentials: readonly {
499
+ readonly credentialId: string;
500
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
501
+ }[];
502
+ };
503
+ nowMillis: number;
504
+ } | undefined, Schema.SchemaError | SqlError, never>;
505
+ lookup: (rpId: string, protocolCredentialId: string) => Effect.Effect<{
506
+ readonly requirement: {
507
+ readonly alternatives: readonly [{
508
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
509
+ readonly userVerified: boolean;
510
+ readonly phishingResistant: boolean;
511
+ readonly minimumCredentials: number;
512
+ }, ...{
513
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
514
+ readonly userVerified: boolean;
515
+ readonly phishingResistant: boolean;
516
+ readonly minimumCredentials: number;
517
+ }[]];
518
+ readonly maximumAgeMillis: number;
519
+ };
520
+ readonly credentialId: string;
521
+ readonly rpId: string;
522
+ readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
523
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
524
+ readonly publicKey: string;
525
+ readonly algorithm: -257 | -7;
526
+ readonly profile: {
527
+ readonly profileId: string;
528
+ readonly rpId: string;
529
+ readonly rpName: string;
530
+ readonly origins: readonly [string, ...string[]];
531
+ readonly developmentLocalhost: boolean;
532
+ readonly residentKey: "discouraged" | "preferred" | "required";
533
+ readonly userVerification: "preferred" | "required";
534
+ readonly primarySignIn: boolean;
535
+ readonly attestation: "none";
536
+ readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
537
+ };
538
+ readonly revision: {
539
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
540
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
541
+ readonly credentials: readonly {
542
+ readonly credentialId: string;
543
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
544
+ }[];
545
+ };
546
+ readonly active: boolean;
547
+ readonly primarySignIn: boolean;
548
+ readonly enrollmentUserVerified: boolean;
549
+ readonly backupEligible: boolean;
550
+ readonly backupState: boolean;
551
+ readonly counter: number;
552
+ } | undefined, PersistenceMappingError | import("effect/PlatformError").PlatformError | Schema.SchemaError | SqlError, Crypto.Crypto>;
553
+ joinedSubject: SqlTable;
554
+ joinedFactor: SqlTable;
555
+ joinedCredential: SqlTable;
556
+ selected: (kind: "subject" | "authority" | "credential", alias: string) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
557
+ mapped: typeof sqlMapping;
558
+ mapping: PasskeyNativeMapping;
559
+ ceremony: {
560
+ sql: import("effect/sql/SqlClient").SqlClient;
561
+ flow: SqlTable;
562
+ now: import("effect/sql/Statement").Fragment;
563
+ millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
564
+ exact: (key: string, value: unknown) => import("effect/sql/Statement").Fragment;
565
+ module: (moduleId: string) => import("effect/sql/Statement").Fragment;
566
+ validModule: (moduleId: string) => boolean;
567
+ access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
568
+ insert: (ceremony: M.PasskeyCeremony, extra?: Readonly<Record<string, unknown>>) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
569
+ consume: (input: M.PasskeyAccess, ceremony: M.PasskeyCeremony, condition?: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
570
+ absent: (input: M.PasskeyAccess) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
571
+ context: (input: {
572
+ readonly moduleId: string;
573
+ readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
574
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
575
+ readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
576
+ readonly requestBindingExpiresAtMillis: number;
577
+ }) => Effect.Effect<{
578
+ readonly moduleId: string;
579
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
580
+ readonly commandId: string;
581
+ readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
582
+ readonly profile: {
583
+ readonly profileId: string;
584
+ readonly rpId: string;
585
+ readonly rpName: string;
586
+ readonly origins: readonly [string, ...string[]];
587
+ readonly developmentLocalhost: boolean;
588
+ readonly residentKey: "discouraged" | "preferred" | "required";
589
+ readonly userVerification: "preferred" | "required";
590
+ readonly primarySignIn: boolean;
591
+ readonly attestation: "none";
592
+ readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
593
+ };
594
+ readonly challenge: string;
595
+ readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
596
+ readonly requestBindingExpiresAtMillis: number;
597
+ readonly issuedAtMillis: number;
598
+ readonly expiresAtMillis: number;
599
+ readonly allowedCredentials: readonly {
600
+ readonly type: "public-key";
601
+ readonly id: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
602
+ }[];
603
+ readonly context: {
604
+ readonly _tag: "SignIn";
605
+ } | {
606
+ readonly _tag: "Registration";
607
+ readonly fingerprint: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
608
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
609
+ readonly name: string;
610
+ readonly displayName: string;
611
+ } | {
612
+ readonly _tag: "Enrollment";
613
+ readonly revision: {
614
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
615
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
616
+ readonly credentials: readonly {
617
+ readonly credentialId: string;
618
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
619
+ }[];
620
+ };
621
+ readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
622
+ readonly name: string;
623
+ readonly authorization: {
624
+ readonly challenge: {
625
+ readonly moduleId: string;
626
+ readonly action: "enroll-begin" | "remove";
627
+ readonly commandId: string;
628
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
629
+ readonly revision: {
630
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
631
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
632
+ readonly credentials: readonly {
633
+ readonly credentialId: string;
634
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
635
+ }[];
636
+ };
637
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
638
+ };
639
+ readonly evidence: {
640
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
641
+ readonly revision: {
642
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
643
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
644
+ readonly credentials: readonly {
645
+ readonly credentialId: string;
646
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
647
+ }[];
648
+ };
649
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
650
+ readonly proofs: readonly [{
651
+ readonly userVerified: boolean;
652
+ readonly phishingResistant: boolean;
653
+ readonly verifiedAt: import("effect/DateTime").Utc;
654
+ readonly method: string;
655
+ readonly credentialId: string;
656
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
657
+ }, ...{
658
+ readonly userVerified: boolean;
659
+ readonly phishingResistant: boolean;
660
+ readonly verifiedAt: import("effect/DateTime").Utc;
661
+ readonly method: string;
662
+ readonly credentialId: string;
663
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
664
+ }[]];
665
+ };
666
+ readonly requirement: {
667
+ readonly maximumAgeMillis: number;
668
+ readonly alternatives: readonly [{
669
+ readonly userVerified: boolean;
670
+ readonly phishingResistant: boolean;
671
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
672
+ readonly minimumCredentials: number;
673
+ }, ...{
674
+ readonly userVerified: boolean;
675
+ readonly phishingResistant: boolean;
676
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
677
+ readonly minimumCredentials: number;
678
+ }[]];
679
+ };
680
+ };
681
+ } | {
682
+ readonly _tag: "Pending";
683
+ readonly target: {
684
+ readonly moduleId: string;
685
+ readonly kind: string;
686
+ readonly commandId: string;
687
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
688
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
689
+ readonly revision: {
690
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
691
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
692
+ readonly credentials: readonly {
693
+ readonly credentialId: string;
694
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
695
+ }[];
696
+ };
697
+ readonly requirement?: {
698
+ readonly maximumAgeMillis: number;
699
+ readonly alternatives: readonly [{
700
+ readonly userVerified: boolean;
701
+ readonly phishingResistant: boolean;
702
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
703
+ readonly minimumCredentials: number;
704
+ }, ...{
705
+ readonly userVerified: boolean;
706
+ readonly phishingResistant: boolean;
707
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
708
+ readonly minimumCredentials: number;
709
+ }[]];
710
+ };
711
+ readonly expiresAtMillis: number;
712
+ };
713
+ } | {
714
+ readonly _tag: "StepUp";
715
+ readonly target: {
716
+ readonly moduleId: string;
717
+ readonly kind: string;
718
+ readonly commandId: string;
719
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
720
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
721
+ readonly revision: {
722
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
723
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
724
+ readonly credentials: readonly {
725
+ readonly credentialId: string;
726
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
727
+ }[];
728
+ };
729
+ readonly requirement?: {
730
+ readonly maximumAgeMillis: number;
731
+ readonly alternatives: readonly [{
732
+ readonly userVerified: boolean;
733
+ readonly phishingResistant: boolean;
734
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
735
+ readonly minimumCredentials: number;
736
+ }, ...{
737
+ readonly userVerified: boolean;
738
+ readonly phishingResistant: boolean;
739
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
740
+ readonly minimumCredentials: number;
741
+ }[]];
742
+ };
743
+ readonly expiresAtMillis: number;
744
+ };
745
+ } | {
746
+ readonly _tag: "Action";
747
+ readonly target: {
748
+ readonly moduleId: string;
749
+ readonly kind: string;
750
+ readonly commandId: string;
751
+ readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
752
+ readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
753
+ readonly revision: {
754
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
755
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
756
+ readonly credentials: readonly {
757
+ readonly credentialId: string;
758
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
759
+ }[];
760
+ };
761
+ readonly requirement?: {
762
+ readonly maximumAgeMillis: number;
763
+ readonly alternatives: readonly [{
764
+ readonly userVerified: boolean;
765
+ readonly phishingResistant: boolean;
766
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
767
+ readonly minimumCredentials: number;
768
+ }, ...{
769
+ readonly userVerified: boolean;
770
+ readonly phishingResistant: boolean;
771
+ readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
772
+ readonly minimumCredentials: number;
773
+ }[]];
774
+ };
775
+ readonly expiresAtMillis: number;
776
+ };
777
+ };
778
+ } | undefined, Schema.SchemaError | SqlError, never>;
779
+ cleanup: (moduleId: string, limit: number, batch?: boolean) => Effect.Effect<{
780
+ readonly removed: number;
781
+ readonly hasMore: boolean;
782
+ }, Schema.SchemaError | SqlCommitOwnerError | SqlError, CurrentSqlCommit | import("effect/sql/SqlClient").SqlClient>;
783
+ stage: (statement: import("effect/sql/Statement").Fragment, count: number) => Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit>;
784
+ change: (statement: import("effect/sql/Statement").Fragment) => Effect.Effect<number, Schema.SchemaError | SqlError, never>;
785
+ };
786
+ flow: SqlTable;
787
+ access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
788
+ };
789
+ executor: SqlCommitExecutor<M.PasskeyUnavailable>;
790
+ run: <A, E, R>(effect: Effect.Effect<A, E, R>, mode?: "transaction" | "statement") => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>> | Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>, SqlBatchCommit>>;
791
+ advisory: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<R, Crypto.Crypto>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>>;
792
+ passkeyPersistence: {
793
+ readonly issue: <A>(input: {
794
+ readonly ceremony: M.PasskeyCeremony;
795
+ }, prepare: M.PreparePasskeyCommit<M.PasskeyIssueDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
796
+ readonly context: (input: M.PasskeyAccess) => Effect.Effect<M.PasskeyCeremony | undefined, M.PasskeyUnavailable>;
797
+ readonly consume: <A>(input: {
798
+ readonly access: M.PasskeyAccess;
799
+ readonly ceremony: M.PasskeyCeremony;
800
+ readonly credential: M.PasskeyCredential;
801
+ readonly assertion: M.PasskeyAssertionVerified;
802
+ }, prepare: M.PreparePasskeyCommit<M.PasskeyConsumeDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
803
+ readonly cleanup: <A>(input: {
804
+ readonly moduleId: string;
805
+ readonly limit: import("@yielded/auth/Persistence").CleanupLimit;
806
+ }, prepare: M.PreparePasskeyCommit<import("@yielded/auth/Persistence").CleanupResult, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
807
+ };
808
+ passkeyCredentials: {
809
+ readonly listForSubject: (input: {
810
+ readonly moduleId: string;
811
+ readonly rpId: string;
812
+ readonly subjectId: import("@yielded/auth/Schema").SubjectId;
813
+ }) => Effect.Effect<M.PasskeyEnrollmentSnapshot | undefined, M.PasskeyUnavailable>;
814
+ readonly lookup: (input: {
815
+ readonly rpId: string;
816
+ readonly protocolCredentialId: M.PasskeyProtocolCredentialId;
817
+ }) => Effect.Effect<M.PasskeyCredential | undefined, M.PasskeyUnavailable>;
818
+ };
819
+ }, never, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | SqlBatchCommit | import("effect/sql/SqlClient").SqlClient>;
820
+ export type NativePasskeyServices = Effect.Success<ReturnType<typeof makeNativePasskeyServices>>;
821
+ export declare const makeNativePasskeyCredentialServices: (tables: NativeSqlTables, mapping: PasskeyNativeRead) => Effect.Effect<{
822
+ passkeyCredentials: {
823
+ readonly listForSubject: (input: {
824
+ readonly moduleId: string;
825
+ readonly rpId: string;
826
+ readonly subjectId: import("@yielded/auth/Schema").SubjectId;
827
+ }) => Effect.Effect<M.PasskeyEnrollmentSnapshot | undefined, M.PasskeyUnavailable>;
828
+ readonly lookup: (input: {
829
+ readonly rpId: string;
830
+ readonly protocolCredentialId: M.PasskeyProtocolCredentialId;
831
+ }) => Effect.Effect<M.PasskeyCredential | undefined, M.PasskeyUnavailable>;
832
+ };
833
+ }, never, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | import("effect/sql/SqlClient").SqlClient>;
834
+ //#endregion
835
+ //# sourceMappingURL=passkey-native.d.mts.map