@effect-auth/core 0.1.0-alpha.15 → 0.1.0-alpha.18

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 (627) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +332 -131
  3. package/dist/AbuseProtection.d.ts +100 -0
  4. package/dist/AbuseProtection.d.ts.map +1 -0
  5. package/dist/AbuseProtection.js +71 -0
  6. package/dist/AbuseProtection.js.map +1 -0
  7. package/dist/AccessGrant.d.ts +344 -0
  8. package/dist/AccessGrant.d.ts.map +1 -0
  9. package/dist/AccessGrant.js +687 -0
  10. package/dist/AccessGrant.js.map +1 -0
  11. package/dist/ApiKey.d.ts +2 -14
  12. package/dist/ApiKey.d.ts.map +1 -1
  13. package/dist/ApiKey.js +36 -27
  14. package/dist/ApiKey.js.map +1 -1
  15. package/dist/Assurance.d.ts +415 -0
  16. package/dist/Assurance.d.ts.map +1 -0
  17. package/dist/Assurance.js +764 -0
  18. package/dist/Assurance.js.map +1 -0
  19. package/dist/AtomicPlanExecutor.d.ts +28 -0
  20. package/dist/AtomicPlanExecutor.d.ts.map +1 -0
  21. package/dist/AtomicPlanExecutor.js +5 -0
  22. package/dist/AtomicPlanExecutor.js.map +1 -0
  23. package/dist/AuditLog.d.ts +2314 -52
  24. package/dist/AuditLog.d.ts.map +1 -1
  25. package/dist/AuditLog.js +511 -33
  26. package/dist/AuditLog.js.map +1 -1
  27. package/dist/AuthConfig.d.ts.map +1 -1
  28. package/dist/AuthConfig.js.map +1 -1
  29. package/dist/AuthFlow.d.ts +326 -220
  30. package/dist/AuthFlow.d.ts.map +1 -1
  31. package/dist/AuthFlow.js +611 -263
  32. package/dist/AuthFlow.js.map +1 -1
  33. package/dist/AuthKernel.d.ts +1 -1
  34. package/dist/AuthRateLimit.d.ts +96 -0
  35. package/dist/AuthRateLimit.d.ts.map +1 -0
  36. package/dist/AuthRateLimit.js +212 -0
  37. package/dist/AuthRateLimit.js.map +1 -0
  38. package/dist/Challenge.d.ts +0 -3
  39. package/dist/Challenge.d.ts.map +1 -1
  40. package/dist/Challenge.js +1 -4
  41. package/dist/Challenge.js.map +1 -1
  42. package/dist/Client.d.ts +205 -10
  43. package/dist/Client.d.ts.map +1 -1
  44. package/dist/Client.js +397 -16
  45. package/dist/Client.js.map +1 -1
  46. package/dist/CloudflareTurnstile.d.ts +28 -0
  47. package/dist/CloudflareTurnstile.d.ts.map +1 -0
  48. package/dist/CloudflareTurnstile.js +205 -0
  49. package/dist/CloudflareTurnstile.js.map +1 -0
  50. package/dist/Crypto.d.ts +0 -3
  51. package/dist/Crypto.d.ts.map +1 -1
  52. package/dist/Crypto.js +5 -7
  53. package/dist/Crypto.js.map +1 -1
  54. package/dist/DelegatedAccessStorageMigrations.d.ts +7 -0
  55. package/dist/DelegatedAccessStorageMigrations.d.ts.map +1 -0
  56. package/dist/DelegatedAccessStorageMigrations.js +159 -0
  57. package/dist/DelegatedAccessStorageMigrations.js.map +1 -0
  58. package/dist/DisposableEmailDomains.d.ts +19 -0
  59. package/dist/DisposableEmailDomains.d.ts.map +1 -0
  60. package/dist/DisposableEmailDomains.js +85 -0
  61. package/dist/DisposableEmailDomains.js.map +1 -0
  62. package/dist/DomainVerification.d.ts +0 -9
  63. package/dist/DomainVerification.d.ts.map +1 -1
  64. package/dist/DomainVerification.js +36 -22
  65. package/dist/DomainVerification.js.map +1 -1
  66. package/dist/DrizzleBunSqliteStorage.d.ts +18 -0
  67. package/dist/DrizzleBunSqliteStorage.d.ts.map +1 -0
  68. package/dist/DrizzleBunSqliteStorage.js +11 -0
  69. package/dist/DrizzleBunSqliteStorage.js.map +1 -0
  70. package/dist/DrizzleD1SqliteStorage.d.ts +28 -0
  71. package/dist/DrizzleD1SqliteStorage.d.ts.map +1 -0
  72. package/dist/DrizzleD1SqliteStorage.js +10 -0
  73. package/dist/DrizzleD1SqliteStorage.js.map +1 -0
  74. package/dist/DrizzleDurableObjectSqliteStorage.d.ts +19 -0
  75. package/dist/DrizzleDurableObjectSqliteStorage.d.ts.map +1 -0
  76. package/dist/DrizzleDurableObjectSqliteStorage.js +14 -0
  77. package/dist/DrizzleDurableObjectSqliteStorage.js.map +1 -0
  78. package/dist/DrizzleEffectSqliteStorage.d.ts +31 -0
  79. package/dist/DrizzleEffectSqliteStorage.d.ts.map +1 -0
  80. package/dist/DrizzleEffectSqliteStorage.js +108 -0
  81. package/dist/DrizzleEffectSqliteStorage.js.map +1 -0
  82. package/dist/DrizzleNodeSqliteStorage.d.ts +18 -0
  83. package/dist/DrizzleNodeSqliteStorage.d.ts.map +1 -0
  84. package/dist/DrizzleNodeSqliteStorage.js +11 -0
  85. package/dist/DrizzleNodeSqliteStorage.js.map +1 -0
  86. package/dist/DrizzleWasmSqliteStorage.d.ts +23 -0
  87. package/dist/DrizzleWasmSqliteStorage.d.ts.map +1 -0
  88. package/dist/DrizzleWasmSqliteStorage.js +15 -0
  89. package/dist/DrizzleWasmSqliteStorage.js.map +1 -0
  90. package/dist/EffectQbPostgresDelegatedAccessStorage.d.ts +34 -0
  91. package/dist/EffectQbPostgresDelegatedAccessStorage.d.ts.map +1 -0
  92. package/dist/EffectQbPostgresDelegatedAccessStorage.js +499 -0
  93. package/dist/EffectQbPostgresDelegatedAccessStorage.js.map +1 -0
  94. package/dist/EffectQbPostgresStorage.d.ts +171 -0
  95. package/dist/EffectQbPostgresStorage.d.ts.map +1 -0
  96. package/dist/EffectQbPostgresStorage.js +4280 -0
  97. package/dist/EffectQbPostgresStorage.js.map +1 -0
  98. package/dist/EffectQbSqliteDelegatedAccessStorage.d.ts +112 -0
  99. package/dist/EffectQbSqliteDelegatedAccessStorage.d.ts.map +1 -0
  100. package/dist/EffectQbSqliteDelegatedAccessStorage.js +602 -0
  101. package/dist/EffectQbSqliteDelegatedAccessStorage.js.map +1 -0
  102. package/dist/EffectQbSqliteStorage.d.ts +184 -27
  103. package/dist/EffectQbSqliteStorage.d.ts.map +1 -1
  104. package/dist/EffectQbSqliteStorage.js +1729 -135
  105. package/dist/EffectQbSqliteStorage.js.map +1 -1
  106. package/dist/EmailAuth.d.ts +65 -0
  107. package/dist/EmailAuth.d.ts.map +1 -0
  108. package/dist/EmailAuth.js +171 -0
  109. package/dist/EmailAuth.js.map +1 -0
  110. package/dist/EmailIdentityAuth.d.ts +30 -0
  111. package/dist/EmailIdentityAuth.d.ts.map +1 -0
  112. package/dist/EmailIdentityAuth.js +142 -0
  113. package/dist/EmailIdentityAuth.js.map +1 -0
  114. package/dist/EmailOtp.d.ts +10 -11
  115. package/dist/EmailOtp.d.ts.map +1 -1
  116. package/dist/EmailOtp.js +44 -81
  117. package/dist/EmailOtp.js.map +1 -1
  118. package/dist/EmailRisk.d.ts +48 -0
  119. package/dist/EmailRisk.d.ts.map +1 -0
  120. package/dist/EmailRisk.js +33 -0
  121. package/dist/EmailRisk.js.map +1 -0
  122. package/dist/EmailVerification.d.ts +10 -16
  123. package/dist/EmailVerification.d.ts.map +1 -1
  124. package/dist/EmailVerification.js +85 -42
  125. package/dist/EmailVerification.js.map +1 -1
  126. package/dist/Guard.d.ts +11 -0
  127. package/dist/Guard.d.ts.map +1 -0
  128. package/dist/Guard.js +11 -0
  129. package/dist/Guard.js.map +1 -0
  130. package/dist/HibpPwnedPasswords.d.ts +56 -0
  131. package/dist/HibpPwnedPasswords.d.ts.map +1 -0
  132. package/dist/HibpPwnedPasswords.js +232 -0
  133. package/dist/HibpPwnedPasswords.js.map +1 -0
  134. package/dist/HttpApi/AdminPermissionDefinition.d.ts +4 -0
  135. package/dist/HttpApi/AdminPermissionDefinition.d.ts.map +1 -0
  136. package/dist/HttpApi/AdminPermissionDefinition.js +4 -0
  137. package/dist/HttpApi/AdminPermissionDefinition.js.map +1 -0
  138. package/dist/HttpApi/AdminSecurityTimeline.d.ts +4 -0
  139. package/dist/HttpApi/AdminSecurityTimeline.d.ts.map +1 -0
  140. package/dist/HttpApi/AdminSecurityTimeline.js +4 -0
  141. package/dist/HttpApi/AdminSecurityTimeline.js.map +1 -0
  142. package/dist/HttpApi/AdminSession.d.ts +4 -0
  143. package/dist/HttpApi/AdminSession.d.ts.map +1 -0
  144. package/dist/HttpApi/AdminSession.js +4 -0
  145. package/dist/HttpApi/AdminSession.js.map +1 -0
  146. package/dist/HttpApi/AdminTrustedDevice.d.ts +4 -0
  147. package/dist/HttpApi/AdminTrustedDevice.d.ts.map +1 -0
  148. package/dist/HttpApi/AdminTrustedDevice.js +4 -0
  149. package/dist/HttpApi/AdminTrustedDevice.js.map +1 -0
  150. package/dist/HttpApi/Api.d.ts +1172 -1172
  151. package/dist/HttpApi/Api.d.ts.map +1 -1
  152. package/dist/HttpApi/Api.js +2160 -896
  153. package/dist/HttpApi/Api.js.map +1 -1
  154. package/dist/HttpApi/ApiKey.d.ts +4 -0
  155. package/dist/HttpApi/ApiKey.d.ts.map +1 -0
  156. package/dist/HttpApi/ApiKey.js +4 -0
  157. package/dist/HttpApi/ApiKey.js.map +1 -0
  158. package/dist/HttpApi/Audit.d.ts +6 -0
  159. package/dist/HttpApi/Audit.d.ts.map +1 -0
  160. package/dist/HttpApi/Audit.js +10 -0
  161. package/dist/HttpApi/Audit.js.map +1 -0
  162. package/dist/HttpApi/ClientApi.d.ts +917 -0
  163. package/dist/HttpApi/ClientApi.d.ts.map +1 -0
  164. package/dist/HttpApi/ClientApi.js +101 -0
  165. package/dist/HttpApi/ClientApi.js.map +1 -0
  166. package/dist/HttpApi/EmailAuth.d.ts +6 -0
  167. package/dist/HttpApi/EmailAuth.d.ts.map +1 -0
  168. package/dist/HttpApi/EmailAuth.js +6 -0
  169. package/dist/HttpApi/EmailAuth.js.map +1 -0
  170. package/dist/HttpApi/EmailGuards.d.ts +115 -0
  171. package/dist/HttpApi/EmailGuards.d.ts.map +1 -0
  172. package/dist/HttpApi/EmailGuards.js +191 -0
  173. package/dist/HttpApi/EmailGuards.js.map +1 -0
  174. package/dist/HttpApi/EmailOtp.d.ts +6 -0
  175. package/dist/HttpApi/EmailOtp.d.ts.map +1 -0
  176. package/dist/HttpApi/EmailOtp.js +6 -0
  177. package/dist/HttpApi/EmailOtp.js.map +1 -0
  178. package/dist/HttpApi/EmailVerification.d.ts +6 -0
  179. package/dist/HttpApi/EmailVerification.d.ts.map +1 -0
  180. package/dist/HttpApi/EmailVerification.js +6 -0
  181. package/dist/HttpApi/EmailVerification.js.map +1 -0
  182. package/dist/HttpApi/Endpoints.d.ts +629 -301
  183. package/dist/HttpApi/Endpoints.d.ts.map +1 -1
  184. package/dist/HttpApi/Endpoints.js +178 -120
  185. package/dist/HttpApi/Endpoints.js.map +1 -1
  186. package/dist/HttpApi/Errors.d.ts +26 -7
  187. package/dist/HttpApi/Errors.d.ts.map +1 -1
  188. package/dist/HttpApi/Errors.js +26 -4
  189. package/dist/HttpApi/Errors.js.map +1 -1
  190. package/dist/HttpApi/Identity.d.ts +6 -0
  191. package/dist/HttpApi/Identity.d.ts.map +1 -0
  192. package/dist/HttpApi/Identity.js +6 -0
  193. package/dist/HttpApi/Identity.js.map +1 -0
  194. package/dist/HttpApi/IdentityGuards.d.ts +31 -0
  195. package/dist/HttpApi/IdentityGuards.d.ts.map +1 -0
  196. package/dist/HttpApi/IdentityGuards.js +33 -0
  197. package/dist/HttpApi/IdentityGuards.js.map +1 -0
  198. package/dist/HttpApi/Jwt.d.ts +4 -0
  199. package/dist/HttpApi/Jwt.d.ts.map +1 -0
  200. package/dist/HttpApi/Jwt.js +4 -0
  201. package/dist/HttpApi/Jwt.js.map +1 -0
  202. package/dist/HttpApi/JwtDiscovery.d.ts +4 -0
  203. package/dist/HttpApi/JwtDiscovery.d.ts.map +1 -0
  204. package/dist/HttpApi/JwtDiscovery.js +4 -0
  205. package/dist/HttpApi/JwtDiscovery.js.map +1 -0
  206. package/dist/HttpApi/LoginApproval.d.ts +5 -0
  207. package/dist/HttpApi/LoginApproval.d.ts.map +1 -0
  208. package/dist/HttpApi/LoginApproval.js +5 -0
  209. package/dist/HttpApi/LoginApproval.js.map +1 -0
  210. package/dist/HttpApi/LoginNotification.d.ts +5 -0
  211. package/dist/HttpApi/LoginNotification.d.ts.map +1 -0
  212. package/dist/HttpApi/LoginNotification.js +5 -0
  213. package/dist/HttpApi/LoginNotification.js.map +1 -0
  214. package/dist/HttpApi/MagicLink.d.ts +6 -0
  215. package/dist/HttpApi/MagicLink.d.ts.map +1 -0
  216. package/dist/HttpApi/MagicLink.js +6 -0
  217. package/dist/HttpApi/MagicLink.js.map +1 -0
  218. package/dist/HttpApi/Mfa.d.ts +5 -0
  219. package/dist/HttpApi/Mfa.d.ts.map +1 -0
  220. package/dist/HttpApi/Mfa.js +5 -0
  221. package/dist/HttpApi/Mfa.js.map +1 -0
  222. package/dist/HttpApi/Middleware.d.ts +14 -0
  223. package/dist/HttpApi/Middleware.d.ts.map +1 -0
  224. package/dist/HttpApi/Middleware.js +5 -0
  225. package/dist/HttpApi/Middleware.js.map +1 -0
  226. package/dist/HttpApi/OAuth.d.ts +4 -0
  227. package/dist/HttpApi/OAuth.d.ts.map +1 -0
  228. package/dist/HttpApi/OAuth.js +4 -0
  229. package/dist/HttpApi/OAuth.js.map +1 -0
  230. package/dist/HttpApi/OAuthProviderAuthorization.d.ts +4 -0
  231. package/dist/HttpApi/OAuthProviderAuthorization.d.ts.map +1 -0
  232. package/dist/HttpApi/OAuthProviderAuthorization.js +4 -0
  233. package/dist/HttpApi/OAuthProviderAuthorization.js.map +1 -0
  234. package/dist/HttpApi/OAuthToken.d.ts +4 -0
  235. package/dist/HttpApi/OAuthToken.d.ts.map +1 -0
  236. package/dist/HttpApi/OAuthToken.js +4 -0
  237. package/dist/HttpApi/OAuthToken.js.map +1 -0
  238. package/dist/HttpApi/OidcDiscovery.d.ts +4 -0
  239. package/dist/HttpApi/OidcDiscovery.d.ts.map +1 -0
  240. package/dist/HttpApi/OidcDiscovery.js +4 -0
  241. package/dist/HttpApi/OidcDiscovery.js.map +1 -0
  242. package/dist/HttpApi/Operations/AdminPermissionDefinition.d.ts +28 -0
  243. package/dist/HttpApi/Operations/AdminPermissionDefinition.d.ts.map +1 -0
  244. package/dist/HttpApi/Operations/AdminPermissionDefinition.js +5 -0
  245. package/dist/HttpApi/Operations/AdminPermissionDefinition.js.map +1 -0
  246. package/dist/HttpApi/Operations/AdminSession.d.ts +16 -0
  247. package/dist/HttpApi/Operations/AdminSession.d.ts.map +1 -0
  248. package/dist/HttpApi/Operations/AdminSession.js +5 -0
  249. package/dist/HttpApi/Operations/AdminSession.js.map +1 -0
  250. package/dist/HttpApi/Operations/ApiKey.d.ts +16 -0
  251. package/dist/HttpApi/Operations/ApiKey.d.ts.map +1 -0
  252. package/dist/HttpApi/Operations/ApiKey.js +5 -0
  253. package/dist/HttpApi/Operations/ApiKey.js.map +1 -0
  254. package/dist/HttpApi/Operations/Discovery.d.ts +19 -0
  255. package/dist/HttpApi/Operations/Discovery.d.ts.map +1 -0
  256. package/dist/HttpApi/Operations/Discovery.js +7 -0
  257. package/dist/HttpApi/Operations/Discovery.js.map +1 -0
  258. package/dist/HttpApi/Operations/EmailAuth.d.ts +12 -0
  259. package/dist/HttpApi/Operations/EmailAuth.d.ts.map +1 -0
  260. package/dist/HttpApi/Operations/EmailAuth.js +5 -0
  261. package/dist/HttpApi/Operations/EmailAuth.js.map +1 -0
  262. package/dist/HttpApi/Operations/EmailOtp.d.ts +14 -0
  263. package/dist/HttpApi/Operations/EmailOtp.d.ts.map +1 -0
  264. package/dist/HttpApi/Operations/EmailOtp.js +5 -0
  265. package/dist/HttpApi/Operations/EmailOtp.js.map +1 -0
  266. package/dist/HttpApi/Operations/EmailVerification.d.ts +14 -0
  267. package/dist/HttpApi/Operations/EmailVerification.d.ts.map +1 -0
  268. package/dist/HttpApi/Operations/EmailVerification.js +5 -0
  269. package/dist/HttpApi/Operations/EmailVerification.js.map +1 -0
  270. package/dist/HttpApi/Operations/HttpOperation.d.ts +4 -0
  271. package/dist/HttpApi/Operations/HttpOperation.d.ts.map +1 -0
  272. package/dist/HttpApi/Operations/HttpOperation.js +2 -0
  273. package/dist/HttpApi/Operations/HttpOperation.js.map +1 -0
  274. package/dist/HttpApi/Operations/Identity.d.ts +22 -0
  275. package/dist/HttpApi/Operations/Identity.d.ts.map +1 -0
  276. package/dist/HttpApi/Operations/Identity.js +5 -0
  277. package/dist/HttpApi/Operations/Identity.js.map +1 -0
  278. package/dist/HttpApi/Operations/Jwt.d.ts +14 -0
  279. package/dist/HttpApi/Operations/Jwt.d.ts.map +1 -0
  280. package/dist/HttpApi/Operations/Jwt.js +5 -0
  281. package/dist/HttpApi/Operations/Jwt.js.map +1 -0
  282. package/dist/HttpApi/Operations/LoginApproval.d.ts +16 -0
  283. package/dist/HttpApi/Operations/LoginApproval.d.ts.map +1 -0
  284. package/dist/HttpApi/Operations/LoginApproval.js +5 -0
  285. package/dist/HttpApi/Operations/LoginApproval.js.map +1 -0
  286. package/dist/HttpApi/Operations/MagicLink.d.ts +14 -0
  287. package/dist/HttpApi/Operations/MagicLink.d.ts.map +1 -0
  288. package/dist/HttpApi/Operations/MagicLink.js +5 -0
  289. package/dist/HttpApi/Operations/MagicLink.js.map +1 -0
  290. package/dist/HttpApi/Operations/Mfa.d.ts +24 -0
  291. package/dist/HttpApi/Operations/Mfa.d.ts.map +1 -0
  292. package/dist/HttpApi/Operations/Mfa.js +5 -0
  293. package/dist/HttpApi/Operations/Mfa.js.map +1 -0
  294. package/dist/HttpApi/Operations/OAuth.d.ts +20 -0
  295. package/dist/HttpApi/Operations/OAuth.d.ts.map +1 -0
  296. package/dist/HttpApi/Operations/OAuth.js +5 -0
  297. package/dist/HttpApi/Operations/OAuth.js.map +1 -0
  298. package/dist/HttpApi/Operations/OAuthProviderAuthorization.d.ts +12 -0
  299. package/dist/HttpApi/Operations/OAuthProviderAuthorization.d.ts.map +1 -0
  300. package/dist/HttpApi/Operations/OAuthProviderAuthorization.js +5 -0
  301. package/dist/HttpApi/Operations/OAuthProviderAuthorization.js.map +1 -0
  302. package/dist/HttpApi/Operations/OAuthToken.d.ts +16 -0
  303. package/dist/HttpApi/Operations/OAuthToken.d.ts.map +1 -0
  304. package/dist/HttpApi/Operations/OAuthToken.js +5 -0
  305. package/dist/HttpApi/Operations/OAuthToken.js.map +1 -0
  306. package/dist/HttpApi/Operations/Passkey.d.ts +22 -0
  307. package/dist/HttpApi/Operations/Passkey.d.ts.map +1 -0
  308. package/dist/HttpApi/Operations/Passkey.js +5 -0
  309. package/dist/HttpApi/Operations/Passkey.js.map +1 -0
  310. package/dist/HttpApi/Operations/Password.d.ts +22 -0
  311. package/dist/HttpApi/Operations/Password.d.ts.map +1 -0
  312. package/dist/HttpApi/Operations/Password.js +5 -0
  313. package/dist/HttpApi/Operations/Password.js.map +1 -0
  314. package/dist/HttpApi/Operations/RecoveryCodes.d.ts +20 -0
  315. package/dist/HttpApi/Operations/RecoveryCodes.d.ts.map +1 -0
  316. package/dist/HttpApi/Operations/RecoveryCodes.js +5 -0
  317. package/dist/HttpApi/Operations/RecoveryCodes.js.map +1 -0
  318. package/dist/HttpApi/Operations/RefreshToken.d.ts +12 -0
  319. package/dist/HttpApi/Operations/RefreshToken.d.ts.map +1 -0
  320. package/dist/HttpApi/Operations/RefreshToken.js +5 -0
  321. package/dist/HttpApi/Operations/RefreshToken.js.map +1 -0
  322. package/dist/HttpApi/Operations/Security.d.ts +12 -0
  323. package/dist/HttpApi/Operations/Security.d.ts.map +1 -0
  324. package/dist/HttpApi/Operations/Security.js +5 -0
  325. package/dist/HttpApi/Operations/Security.js.map +1 -0
  326. package/dist/HttpApi/Operations/SecurityTimeline.d.ts +19 -0
  327. package/dist/HttpApi/Operations/SecurityTimeline.d.ts.map +1 -0
  328. package/dist/HttpApi/Operations/SecurityTimeline.js +7 -0
  329. package/dist/HttpApi/Operations/SecurityTimeline.js.map +1 -0
  330. package/dist/HttpApi/Operations/Session.d.ts +22 -0
  331. package/dist/HttpApi/Operations/Session.d.ts.map +1 -0
  332. package/dist/HttpApi/Operations/Session.js +5 -0
  333. package/dist/HttpApi/Operations/Session.js.map +1 -0
  334. package/dist/HttpApi/Operations/StepUp.d.ts +22 -0
  335. package/dist/HttpApi/Operations/StepUp.d.ts.map +1 -0
  336. package/dist/HttpApi/Operations/StepUp.js +5 -0
  337. package/dist/HttpApi/Operations/StepUp.js.map +1 -0
  338. package/dist/HttpApi/Operations/Totp.d.ts +20 -0
  339. package/dist/HttpApi/Operations/Totp.d.ts.map +1 -0
  340. package/dist/HttpApi/Operations/Totp.js +5 -0
  341. package/dist/HttpApi/Operations/Totp.js.map +1 -0
  342. package/dist/HttpApi/Operations/TrustedDevice.d.ts +23 -0
  343. package/dist/HttpApi/Operations/TrustedDevice.d.ts.map +1 -0
  344. package/dist/HttpApi/Operations/TrustedDevice.js +7 -0
  345. package/dist/HttpApi/Operations/TrustedDevice.js.map +1 -0
  346. package/dist/HttpApi/Operations/index.d.ts +27 -0
  347. package/dist/HttpApi/Operations/index.d.ts.map +1 -0
  348. package/dist/HttpApi/Operations/index.js +27 -0
  349. package/dist/HttpApi/Operations/index.js.map +1 -0
  350. package/dist/HttpApi/Passkey.d.ts +5 -0
  351. package/dist/HttpApi/Passkey.d.ts.map +1 -0
  352. package/dist/HttpApi/Passkey.js +5 -0
  353. package/dist/HttpApi/Passkey.js.map +1 -0
  354. package/dist/HttpApi/Password.d.ts +220 -0
  355. package/dist/HttpApi/Password.d.ts.map +1 -0
  356. package/dist/HttpApi/Password.js +237 -0
  357. package/dist/HttpApi/Password.js.map +1 -0
  358. package/dist/HttpApi/PasswordContract.d.ts +307 -0
  359. package/dist/HttpApi/PasswordContract.d.ts.map +1 -0
  360. package/dist/HttpApi/PasswordContract.js +63 -0
  361. package/dist/HttpApi/PasswordContract.js.map +1 -0
  362. package/dist/HttpApi/PasswordGuards.d.ts +82 -0
  363. package/dist/HttpApi/PasswordGuards.d.ts.map +1 -0
  364. package/dist/HttpApi/PasswordGuards.js +179 -0
  365. package/dist/HttpApi/PasswordGuards.js.map +1 -0
  366. package/dist/HttpApi/RecoveryCodes.d.ts +5 -0
  367. package/dist/HttpApi/RecoveryCodes.d.ts.map +1 -0
  368. package/dist/HttpApi/RecoveryCodes.js +5 -0
  369. package/dist/HttpApi/RecoveryCodes.js.map +1 -0
  370. package/dist/HttpApi/RefreshToken.d.ts +4 -0
  371. package/dist/HttpApi/RefreshToken.d.ts.map +1 -0
  372. package/dist/HttpApi/RefreshToken.js +4 -0
  373. package/dist/HttpApi/RefreshToken.js.map +1 -0
  374. package/dist/HttpApi/RequestGuards.d.ts +42 -0
  375. package/dist/HttpApi/RequestGuards.d.ts.map +1 -0
  376. package/dist/HttpApi/RequestGuards.js +194 -0
  377. package/dist/HttpApi/RequestGuards.js.map +1 -0
  378. package/dist/HttpApi/Schemas.d.ts +361 -84
  379. package/dist/HttpApi/Schemas.d.ts.map +1 -1
  380. package/dist/HttpApi/Schemas.js +190 -27
  381. package/dist/HttpApi/Schemas.js.map +1 -1
  382. package/dist/HttpApi/Security.d.ts +12 -93
  383. package/dist/HttpApi/Security.d.ts.map +1 -1
  384. package/dist/HttpApi/Security.js +65 -356
  385. package/dist/HttpApi/Security.js.map +1 -1
  386. package/dist/HttpApi/SecurityTimeline.d.ts +4 -0
  387. package/dist/HttpApi/SecurityTimeline.d.ts.map +1 -0
  388. package/dist/HttpApi/SecurityTimeline.js +4 -0
  389. package/dist/HttpApi/SecurityTimeline.js.map +1 -0
  390. package/dist/HttpApi/Session.d.ts +5 -0
  391. package/dist/HttpApi/Session.d.ts.map +1 -0
  392. package/dist/HttpApi/Session.js +5 -0
  393. package/dist/HttpApi/Session.js.map +1 -0
  394. package/dist/HttpApi/SessionGuards.d.ts +15 -0
  395. package/dist/HttpApi/SessionGuards.d.ts.map +1 -0
  396. package/dist/HttpApi/SessionGuards.js +37 -0
  397. package/dist/HttpApi/SessionGuards.js.map +1 -0
  398. package/dist/HttpApi/StepUp.d.ts +5 -0
  399. package/dist/HttpApi/StepUp.d.ts.map +1 -0
  400. package/dist/HttpApi/StepUp.js +5 -0
  401. package/dist/HttpApi/StepUp.js.map +1 -0
  402. package/dist/HttpApi/Totp.d.ts +5 -0
  403. package/dist/HttpApi/Totp.d.ts.map +1 -0
  404. package/dist/HttpApi/Totp.js +5 -0
  405. package/dist/HttpApi/Totp.js.map +1 -0
  406. package/dist/HttpApi/Transport.d.ts +4 -6
  407. package/dist/HttpApi/Transport.d.ts.map +1 -1
  408. package/dist/HttpApi/Transport.js +62 -36
  409. package/dist/HttpApi/Transport.js.map +1 -1
  410. package/dist/HttpApi/TrustedDevice.d.ts +4 -0
  411. package/dist/HttpApi/TrustedDevice.d.ts.map +1 -0
  412. package/dist/HttpApi/TrustedDevice.js +4 -0
  413. package/dist/HttpApi/TrustedDevice.js.map +1 -0
  414. package/dist/HttpApi/index.d.ts +9 -3
  415. package/dist/HttpApi/index.d.ts.map +1 -1
  416. package/dist/HttpApi/index.js +8 -2
  417. package/dist/HttpApi/index.js.map +1 -1
  418. package/dist/Identity.d.ts +138 -0
  419. package/dist/Identity.d.ts.map +1 -0
  420. package/dist/Identity.js +105 -0
  421. package/dist/Identity.js.map +1 -0
  422. package/dist/IdentityManagement.d.ts +189 -0
  423. package/dist/IdentityManagement.d.ts.map +1 -0
  424. package/dist/IdentityManagement.js +317 -0
  425. package/dist/IdentityManagement.js.map +1 -0
  426. package/dist/IncidentAction.d.ts +1 -4
  427. package/dist/IncidentAction.d.ts.map +1 -1
  428. package/dist/IncidentAction.js +15 -9
  429. package/dist/IncidentAction.js.map +1 -1
  430. package/dist/Internal.d.ts +2 -0
  431. package/dist/Internal.d.ts.map +1 -1
  432. package/dist/Internal.js +30 -0
  433. package/dist/Internal.js.map +1 -1
  434. package/dist/Invitation.d.ts +362 -0
  435. package/dist/Invitation.d.ts.map +1 -0
  436. package/dist/Invitation.js +633 -0
  437. package/dist/Invitation.js.map +1 -0
  438. package/dist/IpQualityScore.d.ts +38 -0
  439. package/dist/IpQualityScore.d.ts.map +1 -0
  440. package/dist/IpQualityScore.js +215 -0
  441. package/dist/IpQualityScore.js.map +1 -0
  442. package/dist/Jwt.d.ts +9 -30
  443. package/dist/Jwt.d.ts.map +1 -1
  444. package/dist/Jwt.js +72 -60
  445. package/dist/Jwt.js.map +1 -1
  446. package/dist/LoginApproval.d.ts +16 -31
  447. package/dist/LoginApproval.d.ts.map +1 -1
  448. package/dist/LoginApproval.js +47 -41
  449. package/dist/LoginApproval.js.map +1 -1
  450. package/dist/LoginNotification.d.ts +8 -12
  451. package/dist/LoginNotification.d.ts.map +1 -1
  452. package/dist/LoginNotification.js +30 -17
  453. package/dist/LoginNotification.js.map +1 -1
  454. package/dist/LoginRisk.d.ts +11 -13
  455. package/dist/LoginRisk.d.ts.map +1 -1
  456. package/dist/LoginRisk.js +66 -26
  457. package/dist/LoginRisk.js.map +1 -1
  458. package/dist/LoginRiskEnrichment.d.ts +145 -0
  459. package/dist/LoginRiskEnrichment.d.ts.map +1 -0
  460. package/dist/LoginRiskEnrichment.js +220 -0
  461. package/dist/LoginRiskEnrichment.js.map +1 -0
  462. package/dist/MachineAuth.d.ts.map +1 -1
  463. package/dist/MachineAuth.js.map +1 -1
  464. package/dist/MagicLink.d.ts +9 -8
  465. package/dist/MagicLink.d.ts.map +1 -1
  466. package/dist/MagicLink.js +40 -73
  467. package/dist/MagicLink.js.map +1 -1
  468. package/dist/Mailer.d.ts +20 -13
  469. package/dist/Mailer.d.ts.map +1 -1
  470. package/dist/Mailer.js +10 -12
  471. package/dist/Mailer.js.map +1 -1
  472. package/dist/OAuth.d.ts +100 -103
  473. package/dist/OAuth.d.ts.map +1 -1
  474. package/dist/OAuth.js +404 -217
  475. package/dist/OAuth.js.map +1 -1
  476. package/dist/Passkey.d.ts +17 -19
  477. package/dist/Passkey.d.ts.map +1 -1
  478. package/dist/Passkey.js +86 -39
  479. package/dist/Passkey.js.map +1 -1
  480. package/dist/PasskeyBrowser.d.ts +39 -0
  481. package/dist/PasskeyBrowser.d.ts.map +1 -0
  482. package/dist/PasskeyBrowser.js +206 -0
  483. package/dist/PasskeyBrowser.js.map +1 -0
  484. package/dist/PasskeySimpleWebAuthn.d.ts.map +1 -1
  485. package/dist/PasskeySimpleWebAuthn.js +19 -7
  486. package/dist/PasskeySimpleWebAuthn.js.map +1 -1
  487. package/dist/Password.d.ts +71 -37
  488. package/dist/Password.d.ts.map +1 -1
  489. package/dist/Password.js +296 -82
  490. package/dist/Password.js.map +1 -1
  491. package/dist/PasswordRisk.d.ts +63 -0
  492. package/dist/PasswordRisk.d.ts.map +1 -0
  493. package/dist/PasswordRisk.js +37 -0
  494. package/dist/PasswordRisk.js.map +1 -0
  495. package/dist/Permission.d.ts +308 -0
  496. package/dist/Permission.d.ts.map +1 -0
  497. package/dist/Permission.js +827 -0
  498. package/dist/Permission.js.map +1 -0
  499. package/dist/Policy.d.ts +31 -18
  500. package/dist/Policy.d.ts.map +1 -1
  501. package/dist/Policy.js +58 -14
  502. package/dist/Policy.js.map +1 -1
  503. package/dist/PostgresDelegatedAccessStorageMigrations.d.ts +7 -0
  504. package/dist/PostgresDelegatedAccessStorageMigrations.d.ts.map +1 -0
  505. package/dist/PostgresDelegatedAccessStorageMigrations.js +119 -0
  506. package/dist/PostgresDelegatedAccessStorageMigrations.js.map +1 -0
  507. package/dist/PostgresStorageMigrations.d.ts +15 -0
  508. package/dist/PostgresStorageMigrations.d.ts.map +1 -0
  509. package/dist/PostgresStorageMigrations.js +620 -0
  510. package/dist/PostgresStorageMigrations.js.map +1 -0
  511. package/dist/Privacy.d.ts +0 -3
  512. package/dist/Privacy.d.ts.map +1 -1
  513. package/dist/Privacy.js +2 -5
  514. package/dist/Privacy.js.map +1 -1
  515. package/dist/RateLimiter.d.ts +0 -3
  516. package/dist/RateLimiter.d.ts.map +1 -1
  517. package/dist/RateLimiter.js +1 -4
  518. package/dist/RateLimiter.js.map +1 -1
  519. package/dist/RecoveryCode.d.ts +84 -12
  520. package/dist/RecoveryCode.d.ts.map +1 -1
  521. package/dist/RecoveryCode.js +273 -75
  522. package/dist/RecoveryCode.js.map +1 -1
  523. package/dist/RecoveryPolicy.d.ts +81 -0
  524. package/dist/RecoveryPolicy.d.ts.map +1 -0
  525. package/dist/RecoveryPolicy.js +119 -0
  526. package/dist/RecoveryPolicy.js.map +1 -0
  527. package/dist/RefreshToken.d.ts +1 -10
  528. package/dist/RefreshToken.d.ts.map +1 -1
  529. package/dist/RefreshToken.js +31 -22
  530. package/dist/RefreshToken.js.map +1 -1
  531. package/dist/Retention.d.ts.map +1 -1
  532. package/dist/Retention.js.map +1 -1
  533. package/dist/SecurityTimeline.d.ts +1 -4
  534. package/dist/SecurityTimeline.d.ts.map +1 -1
  535. package/dist/SecurityTimeline.js +110 -17
  536. package/dist/SecurityTimeline.js.map +1 -1
  537. package/dist/Sessions.d.ts +124 -29
  538. package/dist/Sessions.d.ts.map +1 -1
  539. package/dist/Sessions.js +626 -94
  540. package/dist/Sessions.js.map +1 -1
  541. package/dist/StepUp.d.ts +132 -11
  542. package/dist/StepUp.d.ts.map +1 -1
  543. package/dist/StepUp.js +387 -19
  544. package/dist/StepUp.js.map +1 -1
  545. package/dist/Storage.d.ts +89 -23
  546. package/dist/Storage.d.ts.map +1 -1
  547. package/dist/Storage.js +10 -12
  548. package/dist/Storage.js.map +1 -1
  549. package/dist/StorageMigrations.d.ts +6 -1
  550. package/dist/StorageMigrations.d.ts.map +1 -1
  551. package/dist/StorageMigrations.js +224 -0
  552. package/dist/StorageMigrations.js.map +1 -1
  553. package/dist/StorageSchemaGenerator.d.ts +486 -0
  554. package/dist/StorageSchemaGenerator.d.ts.map +1 -0
  555. package/dist/StorageSchemaGenerator.js +1022 -0
  556. package/dist/StorageSchemaGenerator.js.map +1 -0
  557. package/dist/StrongFactor.d.ts +64 -0
  558. package/dist/StrongFactor.d.ts.map +1 -0
  559. package/dist/StrongFactor.js +100 -0
  560. package/dist/StrongFactor.js.map +1 -0
  561. package/dist/Testing.d.ts +1 -1
  562. package/dist/Testing.js +2 -2
  563. package/dist/Testing.js.map +1 -1
  564. package/dist/Totp.d.ts +88 -13
  565. package/dist/Totp.d.ts.map +1 -1
  566. package/dist/Totp.js +194 -36
  567. package/dist/Totp.js.map +1 -1
  568. package/dist/TrustedDevice.d.ts +0 -9
  569. package/dist/TrustedDevice.d.ts.map +1 -1
  570. package/dist/TrustedDevice.js +15 -17
  571. package/dist/TrustedDevice.js.map +1 -1
  572. package/dist/WaitUntil.d.ts +0 -3
  573. package/dist/WaitUntil.d.ts.map +1 -1
  574. package/dist/WaitUntil.js +1 -4
  575. package/dist/WaitUntil.js.map +1 -1
  576. package/dist/Webhook.d.ts +42 -12
  577. package/dist/Webhook.d.ts.map +1 -1
  578. package/dist/Webhook.js +165 -26
  579. package/dist/Webhook.js.map +1 -1
  580. package/dist/alchemy/cloudflare/Email.d.ts +4 -4
  581. package/dist/alchemy/cloudflare/Email.d.ts.map +1 -1
  582. package/dist/alchemy/cloudflare/Email.js +10 -5
  583. package/dist/alchemy/cloudflare/Email.js.map +1 -1
  584. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts +4 -4
  585. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts.map +1 -1
  586. package/dist/alchemy/cloudflare/RateLimitDurableObject.js +5 -4
  587. package/dist/alchemy/cloudflare/RateLimitDurableObject.js.map +1 -1
  588. package/dist/cloudflare/Email.d.ts.map +1 -1
  589. package/dist/cloudflare/Email.js +1 -1
  590. package/dist/cloudflare/Email.js.map +1 -1
  591. package/dist/cloudflare/RateLimitDurableObject.d.ts +6 -5
  592. package/dist/cloudflare/RateLimitDurableObject.d.ts.map +1 -1
  593. package/dist/cloudflare/RateLimitDurableObject.js.map +1 -1
  594. package/dist/cloudflare/RequestMetadata.d.ts +49 -0
  595. package/dist/cloudflare/RequestMetadata.d.ts.map +1 -0
  596. package/dist/cloudflare/RequestMetadata.js +71 -0
  597. package/dist/cloudflare/RequestMetadata.js.map +1 -0
  598. package/dist/index.d.ts +0 -35
  599. package/dist/index.d.ts.map +1 -1
  600. package/dist/index.js +0 -35
  601. package/dist/index.js.map +1 -1
  602. package/dist/internal/AuthFlowFinalizer.d.ts +31 -0
  603. package/dist/internal/AuthFlowFinalizer.d.ts.map +1 -0
  604. package/dist/internal/AuthFlowFinalizer.js +182 -0
  605. package/dist/internal/AuthFlowFinalizer.js.map +1 -0
  606. package/dist/internal/RateLimitDurableObject.d.ts.map +1 -1
  607. package/dist/internal/RateLimitDurableObject.js +3 -0
  608. package/dist/internal/RateLimitDurableObject.js.map +1 -1
  609. package/migrations/0001_auth_storage.sql +1 -0
  610. package/migrations/0006_auth_totp_factor.sql +1 -0
  611. package/migrations/0024_auth_permission.sql +39 -0
  612. package/migrations/0025_auth_permission_definition.sql +19 -0
  613. package/migrations/0026_auth_user_identity.sql +59 -0
  614. package/migrations/0027_auth_audit_log_storage_order.sql +46 -0
  615. package/migrations/0028_auth_oauth_client_secret_key.sql +39 -0
  616. package/migrations/delegated-access/0001_auth_delegated_access.sql +152 -0
  617. package/migrations/postgres/0001_auth_core.sql +77 -0
  618. package/migrations/postgres/0002_auth_security_oauth.sql +65 -0
  619. package/migrations/postgres/0003_auth_credentials_tokens.sql +43 -0
  620. package/migrations/postgres/0004_auth_security_history.sql +103 -0
  621. package/migrations/postgres/0005_auth_webhooks.sql +29 -0
  622. package/migrations/postgres/0006_auth_domain_timeline.sql +50 -0
  623. package/migrations/postgres/0007_auth_oauth_clients.sql +85 -0
  624. package/migrations/postgres/0008_auth_oauth_tokens.sql +63 -0
  625. package/migrations/postgres/0009_auth_permissions.sql +66 -0
  626. package/migrations/postgres/delegated-access/0001_auth_delegated_access.sql +112 -0
  627. package/package.json +309 -2
@@ -1,15 +1,21 @@
1
1
  import { Context, Data, Duration, Effect, Layer, Redacted } from "effect";
2
+ import type { AuthenticationEvidence } from "./Assurance.js";
2
3
  import { Challenge } from "./Challenge.js";
3
4
  import type { ChallengeService } from "./Challenge.js";
4
5
  import type { CryptoService } from "./Crypto.js";
5
- import type { OAuthProviderId, UnixMillis } from "./Identifiers.js";
6
- import { AuthFlowId, ChallengeId, Email, UserId } from "./Identifiers.js";
6
+ import type { IdentityId, OAuthProviderId } from "./Identifiers.js";
7
+ import { AuthFlowId, ChallengeId, UnixMillis, UserId } from "./Identifiers.js";
8
+ import type { IdentityKind } from "./Identity.js";
7
9
  import { LoginApprovalReview } from "./LoginApproval.js";
8
10
  import type { LoginApprovalChannel, LoginApprovalFlowService, LoginApprovalFlowStartError, LoginApprovalIntent, LoginApprovalPolicyService, LoginApprovalReason, LoginApprovalReviewError, LoginApprovalReviewService, LoginApprovalSessionBinding, LoginDeviceContext } from "./LoginApproval.js";
9
11
  import type { LoginNotificationService } from "./LoginNotification.js";
10
12
  import type { LoginRequestContext, LoginRiskContext, LoginRiskEngineService, LoginRiskError } from "./LoginRisk.js";
13
+ import type { PasskeyCredentialManagementError, PasskeyCredentialManagementService } from "./Passkey.js";
14
+ import type { RecoveryCodeManagementError, RecoveryCodeManagementService } from "./RecoveryCode.js";
15
+ import type { RecoveryRequirementPolicyService } from "./RecoveryPolicy.js";
11
16
  import { Sessions } from "./Sessions.js";
12
- import type { AuthAssuranceLevel, AuthMethodReference, IssuedSession, SessionCreateError, SessionClaims, SessionsService } from "./Sessions.js";
17
+ import type { AuthAssuranceLevel, AuthMethodReference, IssuedSession, SessionCreateError, SessionClaims, SessionsService, PreparedSession } from "./Sessions.js";
18
+ import type { TotpFactorManagementError, TotpFactorManagementService } from "./Totp.js";
13
19
  import type { TrustedDeviceError, TrustedDeviceService } from "./TrustedDevice.js";
14
20
  export type AuthMethod = "password" | "email-otp" | "magic-link" | "passkey" | "oauth" | "totp" | "backup-code" | (string & {});
15
21
  export type EmailVerificationSessionMode = "allow-unverified" | "limited-session";
@@ -30,51 +36,124 @@ export interface EmailVerificationSessionPolicyService {
30
36
  declare const EmailVerificationSessionPolicy_base: Context.ServiceClass<EmailVerificationSessionPolicy, "auth/EmailVerificationSessionPolicy", EmailVerificationSessionPolicyService>;
31
37
  export declare class EmailVerificationSessionPolicy extends EmailVerificationSessionPolicy_base {
32
38
  }
33
- export declare namespace EmailVerificationSessionPolicy {
34
- const make: (service: EmailVerificationSessionPolicyService) => EmailVerificationSessionPolicyService;
35
- }
36
39
  export declare const makeEmailVerificationSessionPolicy: (options?: EmailVerificationSessionPolicyOptions) => EmailVerificationSessionPolicyService;
37
40
  export declare const EmailVerificationSessionPolicyLive: (options?: EmailVerificationSessionPolicyOptions) => Layer.Layer<EmailVerificationSessionPolicy, never, never>;
38
41
  export interface MfaFactor {
39
42
  readonly type: "totp" | "backup-code" | "passkey" | (string & {});
40
43
  }
44
+ export type MfaRequirementMode = "disabled" | "when-factors-present";
45
+ export interface MfaRequirementPolicyInput<Method extends AuthMethod = AuthMethod> extends PrimaryFactorResult<Method> {
46
+ readonly factors: readonly MfaFactor[];
47
+ readonly risk?: LoginRiskContext;
48
+ }
49
+ export type MfaRequirementPolicyDecision = {
50
+ readonly _tag: "Continue";
51
+ } | {
52
+ readonly _tag: "RequireMfa";
53
+ readonly factors: readonly MfaFactor[];
54
+ };
55
+ export interface MfaRequirementPolicyOptions {
56
+ readonly mode?: MfaRequirementMode;
57
+ readonly methods?: readonly AuthMethod[];
58
+ }
59
+ export interface MfaRequirementPolicyService {
60
+ readonly decide: <Method extends AuthMethod>(input: MfaRequirementPolicyInput<Method>) => Effect.Effect<MfaRequirementPolicyDecision>;
61
+ }
62
+ declare const MfaRequirementPolicy_base: Context.ServiceClass<MfaRequirementPolicy, "auth/MfaRequirementPolicy", MfaRequirementPolicyService>;
63
+ export declare class MfaRequirementPolicy extends MfaRequirementPolicy_base {
64
+ }
65
+ export declare const defaultMfaRequirementMethods: readonly ["password", "email-otp", "magic-link", "oauth"];
66
+ export declare const makeMfaRequirementPolicy: (options?: MfaRequirementPolicyOptions) => MfaRequirementPolicyService;
67
+ export declare const MfaRequirementPolicyLive: (options?: MfaRequirementPolicyOptions) => Layer.Layer<MfaRequirementPolicy, never, never>;
41
68
  export interface PrimaryFactorResult<Method extends AuthMethod = AuthMethod> {
42
69
  readonly userId: UserId;
43
- readonly email?: Email;
70
+ readonly identity?: AuthenticatedIdentityContext;
71
+ readonly emailDestination?: EmailDestinationContext;
44
72
  readonly intent?: LoginApprovalIntent;
45
73
  readonly method: Method;
46
- readonly amr: readonly AuthMethodReference[];
47
- readonly aal: AuthAssuranceLevel;
74
+ readonly evidence: readonly AuthenticationEvidence[];
48
75
  readonly claims?: SessionClaims;
49
76
  readonly device?: LoginDeviceContext;
50
77
  readonly trustedDeviceToken?: Redacted.Redacted<string>;
78
+ readonly deviceKey?: string;
79
+ readonly locationKey?: string;
51
80
  readonly request?: LoginRequestContext;
81
+ readonly risk?: LoginRiskContext;
52
82
  readonly metadata?: Readonly<Record<string, unknown>>;
53
83
  }
84
+ export interface AuthFlowRequireMfaInput<Method extends AuthMethod = AuthMethod> extends PrimaryFactorResult<Method> {
85
+ readonly factors: readonly MfaFactor[];
86
+ readonly ttl?: Duration.Duration;
87
+ readonly secret?: Redacted.Redacted<string>;
88
+ }
54
89
  export interface MfaCompleteInput {
55
90
  readonly flowId: AuthFlowId;
56
91
  readonly userId?: UserId;
57
92
  readonly method: AuthMethod;
58
- readonly amr?: readonly AuthMethodReference[];
59
- readonly aal?: AuthAssuranceLevel;
93
+ readonly evidence: AuthenticationEvidence;
60
94
  readonly secret?: Redacted.Redacted<string>;
61
95
  readonly now?: UnixMillis;
62
96
  readonly metadata?: Readonly<Record<string, unknown>>;
63
97
  }
64
98
  export interface AuthFlowCompleteInput<Method extends AuthMethod = AuthMethod> {
65
99
  readonly userId: UserId;
66
- readonly email?: Email;
100
+ readonly identity?: AuthenticatedIdentityContext;
101
+ readonly emailDestination?: EmailDestinationContext;
67
102
  readonly intent?: LoginApprovalIntent;
68
103
  readonly method: Method;
69
- readonly amr: readonly AuthMethodReference[];
70
- readonly aal: AuthAssuranceLevel;
104
+ readonly evidence: readonly AuthenticationEvidence[];
71
105
  readonly claims?: SessionClaims;
72
106
  readonly device?: LoginDeviceContext;
107
+ readonly deviceKey?: string;
108
+ readonly locationKey?: string;
73
109
  readonly request?: LoginRequestContext;
74
110
  readonly risk?: LoginRiskContext;
75
- readonly mfaVerifiedAt?: UnixMillis;
76
111
  readonly metadata?: Readonly<Record<string, unknown>>;
77
112
  }
113
+ export interface AuthFlowDerivedInput<Method extends AuthMethod = AuthMethod> extends AuthFlowCompleteInput<Method> {
114
+ readonly amr: readonly AuthMethodReference[];
115
+ readonly aal: AuthAssuranceLevel;
116
+ readonly primaryEstablished: boolean;
117
+ readonly recoveryRemediation: boolean;
118
+ readonly mfaVerifiedAt?: UnixMillis;
119
+ }
120
+ export interface AuthenticatedIdentityContext {
121
+ readonly identityId: IdentityId;
122
+ readonly kind: IdentityKind;
123
+ readonly verified: boolean;
124
+ }
125
+ export interface EmailDestinationContext {
126
+ readonly identityId: IdentityId;
127
+ readonly email: import("./Identifiers.js").Email;
128
+ }
129
+ export type AuthFlowPipelinePhase = "before-risk" | "after-risk" | "before-mfa" | "after-mfa" | "before-login-approval";
130
+ export interface AuthFlowPipelineContext {
131
+ readonly phase: AuthFlowPipelinePhase;
132
+ readonly input: AuthFlowDerivedInput;
133
+ readonly mfaSatisfied: boolean;
134
+ }
135
+ export type AuthFlowPipelineDecision = {
136
+ readonly _tag: "Continue";
137
+ } | {
138
+ readonly _tag: "PolicyDenied";
139
+ readonly reason?: string;
140
+ };
141
+ export interface AuthFlowPipelineService {
142
+ readonly advance: (context: AuthFlowPipelineContext) => Effect.Effect<AuthFlowPipelineDecision>;
143
+ }
144
+ declare const AuthFlowPipeline_base: Context.ServiceClass<AuthFlowPipeline, "auth/AuthFlowPipeline", AuthFlowPipelineService>;
145
+ export declare class AuthFlowPipeline extends AuthFlowPipeline_base {
146
+ }
147
+ export declare namespace AuthFlowPipeline {
148
+ const continueWith: () => AuthFlowPipelineDecision;
149
+ const deny: (reason?: string) => AuthFlowPipelineDecision;
150
+ }
151
+ export interface AuthFlowPipelineStage {
152
+ readonly phases?: readonly AuthFlowPipelinePhase[];
153
+ readonly run: (context: AuthFlowPipelineContext) => Effect.Effect<AuthFlowPipelineDecision>;
154
+ }
155
+ export declare const makeAuthFlowPipeline: (stages?: readonly AuthFlowPipelineStage[]) => AuthFlowPipelineService;
156
+ export declare const AuthFlowPipelineLive: (stages?: readonly AuthFlowPipelineStage[]) => Layer.Layer<AuthFlowPipeline, never, never>;
78
157
  export type AuthResult = Data.TaggedEnum<{
79
158
  Authenticated: {
80
159
  readonly session: IssuedSession;
@@ -86,7 +165,7 @@ export type AuthResult = Data.TaggedEnum<{
86
165
  RequiresEmailVerification: {
87
166
  readonly flowId: AuthFlowId;
88
167
  readonly userId?: UserId;
89
- readonly email?: Email;
168
+ readonly identityId: IdentityId;
90
169
  };
91
170
  RequiresLoginApproval: {
92
171
  readonly flowId: AuthFlowId;
@@ -112,67 +191,35 @@ export type AuthResult = Data.TaggedEnum<{
112
191
  };
113
192
  }>;
114
193
  export declare const AuthResult: {
115
- readonly Authenticated: Data.TaggedEnum.ConstructorFrom<{
194
+ readonly $is: <Tag extends "AccountDisabled" | "Authenticated" | "InvalidCredentials" | "PolicyDenied" | "RequiresEmailVerification" | "RequiresExplicitLinking" | "RequiresLoginApproval" | "RequiresMfa" | "RequiresPasskeyEnrollment">(tag: Tag) => (u: unknown) => u is Extract<{
195
+ readonly _tag: "AccountDisabled";
196
+ }, {
197
+ readonly _tag: Tag;
198
+ }> | Extract<{
116
199
  readonly _tag: "Authenticated";
117
200
  readonly session: IssuedSession;
118
- }, "_tag">;
119
- readonly RequiresMfa: Data.TaggedEnum.ConstructorFrom<{
120
- readonly _tag: "RequiresMfa";
121
- readonly flowId: AuthFlowId;
122
- readonly factors: readonly MfaFactor[];
123
- }, "_tag">;
124
- readonly RequiresEmailVerification: Data.TaggedEnum.ConstructorFrom<{
125
- readonly _tag: "RequiresEmailVerification";
126
- readonly flowId: AuthFlowId;
127
- readonly userId?: UserId | undefined;
128
- readonly email?: Email | undefined;
129
- }, "_tag">;
130
- readonly RequiresLoginApproval: Data.TaggedEnum.ConstructorFrom<{
131
- readonly _tag: "RequiresLoginApproval";
132
- readonly flowId: AuthFlowId;
133
- readonly approvalChallengeId: ChallengeId;
134
- readonly channel: LoginApprovalChannel;
135
- readonly sessionBinding: LoginApprovalSessionBinding;
136
- readonly sameDeviceRequired: boolean;
137
- readonly reason: LoginApprovalReason;
138
- readonly expiresAt: UnixMillis;
139
- readonly sameDeviceSecret?: Redacted.Redacted<string> | undefined;
140
- }, "_tag">;
141
- readonly RequiresPasskeyEnrollment: Data.TaggedEnum.ConstructorFrom<{
142
- readonly _tag: "RequiresPasskeyEnrollment";
143
- readonly flowId: AuthFlowId;
144
- }, "_tag">;
145
- readonly RequiresExplicitLinking: Data.TaggedEnum.ConstructorFrom<{
146
- readonly _tag: "RequiresExplicitLinking";
147
- readonly flowId: AuthFlowId;
148
- readonly provider: OAuthProviderId;
149
- }, "_tag">;
150
- readonly InvalidCredentials: Data.TaggedEnum.ConstructorFrom<{
201
+ }, {
202
+ readonly _tag: Tag;
203
+ }> | Extract<{
151
204
  readonly _tag: "InvalidCredentials";
152
- }, "_tag">;
153
- readonly AccountDisabled: Data.TaggedEnum.ConstructorFrom<{
154
- readonly _tag: "AccountDisabled";
155
- }, "_tag">;
156
- readonly PolicyDenied: Data.TaggedEnum.ConstructorFrom<{
205
+ }, {
206
+ readonly _tag: Tag;
207
+ }> | Extract<{
157
208
  readonly _tag: "PolicyDenied";
158
- readonly reason?: string | undefined;
159
- }, "_tag">;
160
- readonly $is: <Tag extends "Authenticated" | "RequiresMfa" | "RequiresEmailVerification" | "RequiresLoginApproval" | "RequiresPasskeyEnrollment" | "RequiresExplicitLinking" | "InvalidCredentials" | "AccountDisabled" | "PolicyDenied">(tag: Tag) => (u: unknown) => u is Extract<{
161
- readonly _tag: "Authenticated";
162
- readonly session: IssuedSession;
209
+ readonly reason?: string;
163
210
  }, {
164
211
  readonly _tag: Tag;
165
212
  }> | Extract<{
166
- readonly _tag: "RequiresMfa";
213
+ readonly _tag: "RequiresEmailVerification";
167
214
  readonly flowId: AuthFlowId;
168
- readonly factors: readonly MfaFactor[];
215
+ readonly userId?: UserId;
216
+ readonly identityId: IdentityId;
169
217
  }, {
170
218
  readonly _tag: Tag;
171
219
  }> | Extract<{
172
- readonly _tag: "RequiresEmailVerification";
220
+ readonly _tag: "RequiresExplicitLinking";
173
221
  readonly flowId: AuthFlowId;
174
- readonly userId?: UserId | undefined;
175
- readonly email?: Email | undefined;
222
+ readonly provider: OAuthProviderId;
176
223
  }, {
177
224
  readonly _tag: Tag;
178
225
  }> | Extract<{
@@ -184,93 +231,95 @@ export declare const AuthResult: {
184
231
  readonly sameDeviceRequired: boolean;
185
232
  readonly reason: LoginApprovalReason;
186
233
  readonly expiresAt: UnixMillis;
187
- readonly sameDeviceSecret?: Redacted.Redacted<string> | undefined;
234
+ readonly sameDeviceSecret?: Redacted.Redacted<string>;
188
235
  }, {
189
236
  readonly _tag: Tag;
190
237
  }> | Extract<{
191
- readonly _tag: "RequiresPasskeyEnrollment";
238
+ readonly _tag: "RequiresMfa";
192
239
  readonly flowId: AuthFlowId;
240
+ readonly factors: readonly MfaFactor[];
193
241
  }, {
194
242
  readonly _tag: Tag;
195
243
  }> | Extract<{
196
- readonly _tag: "RequiresExplicitLinking";
244
+ readonly _tag: "RequiresPasskeyEnrollment";
197
245
  readonly flowId: AuthFlowId;
198
- readonly provider: OAuthProviderId;
199
- }, {
200
- readonly _tag: Tag;
201
- }> | Extract<{
202
- readonly _tag: "InvalidCredentials";
203
- }, {
204
- readonly _tag: Tag;
205
- }> | Extract<{
206
- readonly _tag: "AccountDisabled";
207
- }, {
208
- readonly _tag: Tag;
209
- }> | Extract<{
210
- readonly _tag: "PolicyDenied";
211
- readonly reason?: string | undefined;
212
246
  }, {
213
247
  readonly _tag: Tag;
214
248
  }>;
215
249
  readonly $match: {
216
- <Cases extends {
217
- readonly Authenticated: (args: {
218
- readonly _tag: "Authenticated";
219
- readonly session: IssuedSession;
220
- }) => any;
221
- readonly RequiresMfa: (args: {
222
- readonly _tag: "RequiresMfa";
223
- readonly flowId: AuthFlowId;
224
- readonly factors: readonly MfaFactor[];
225
- }) => any;
226
- readonly RequiresEmailVerification: (args: {
227
- readonly _tag: "RequiresEmailVerification";
228
- readonly flowId: AuthFlowId;
229
- readonly userId?: UserId | undefined;
230
- readonly email?: Email | undefined;
231
- }) => any;
232
- readonly RequiresLoginApproval: (args: {
233
- readonly _tag: "RequiresLoginApproval";
234
- readonly flowId: AuthFlowId;
235
- readonly approvalChallengeId: ChallengeId;
236
- readonly channel: LoginApprovalChannel;
237
- readonly sessionBinding: LoginApprovalSessionBinding;
238
- readonly sameDeviceRequired: boolean;
239
- readonly reason: LoginApprovalReason;
240
- readonly expiresAt: UnixMillis;
241
- readonly sameDeviceSecret?: Redacted.Redacted<string> | undefined;
242
- }) => any;
243
- readonly RequiresPasskeyEnrollment: (args: {
244
- readonly _tag: "RequiresPasskeyEnrollment";
245
- readonly flowId: AuthFlowId;
246
- }) => any;
247
- readonly RequiresExplicitLinking: (args: {
248
- readonly _tag: "RequiresExplicitLinking";
249
- readonly flowId: AuthFlowId;
250
- readonly provider: OAuthProviderId;
251
- }) => any;
252
- readonly InvalidCredentials: (args: {
253
- readonly _tag: "InvalidCredentials";
254
- }) => any;
255
- readonly AccountDisabled: (args: {
256
- readonly _tag: "AccountDisabled";
257
- }) => any;
258
- readonly PolicyDenied: (args: {
259
- readonly _tag: "PolicyDenied";
260
- readonly reason?: string | undefined;
261
- }) => any;
262
- }>(cases: Cases): (value: {
250
+ <Cases extends { readonly [Tag in "AccountDisabled" | "Authenticated" | "InvalidCredentials" | "PolicyDenied" | "RequiresEmailVerification" | "RequiresExplicitLinking" | "RequiresLoginApproval" | "RequiresMfa" | "RequiresPasskeyEnrollment"]: (args: Extract<{
251
+ readonly _tag: "AccountDisabled";
252
+ }, {
253
+ readonly _tag: Tag;
254
+ }> | Extract<{
263
255
  readonly _tag: "Authenticated";
264
256
  readonly session: IssuedSession;
265
- } | {
257
+ }, {
258
+ readonly _tag: Tag;
259
+ }> | Extract<{
260
+ readonly _tag: "InvalidCredentials";
261
+ }, {
262
+ readonly _tag: Tag;
263
+ }> | Extract<{
264
+ readonly _tag: "PolicyDenied";
265
+ readonly reason?: string;
266
+ }, {
267
+ readonly _tag: Tag;
268
+ }> | Extract<{
269
+ readonly _tag: "RequiresEmailVerification";
270
+ readonly flowId: AuthFlowId;
271
+ readonly userId?: UserId;
272
+ readonly identityId: IdentityId;
273
+ }, {
274
+ readonly _tag: Tag;
275
+ }> | Extract<{
276
+ readonly _tag: "RequiresExplicitLinking";
277
+ readonly flowId: AuthFlowId;
278
+ readonly provider: OAuthProviderId;
279
+ }, {
280
+ readonly _tag: Tag;
281
+ }> | Extract<{
282
+ readonly _tag: "RequiresLoginApproval";
283
+ readonly flowId: AuthFlowId;
284
+ readonly approvalChallengeId: ChallengeId;
285
+ readonly channel: LoginApprovalChannel;
286
+ readonly sessionBinding: LoginApprovalSessionBinding;
287
+ readonly sameDeviceRequired: boolean;
288
+ readonly reason: LoginApprovalReason;
289
+ readonly expiresAt: UnixMillis;
290
+ readonly sameDeviceSecret?: Redacted.Redacted<string>;
291
+ }, {
292
+ readonly _tag: Tag;
293
+ }> | Extract<{
266
294
  readonly _tag: "RequiresMfa";
267
295
  readonly flowId: AuthFlowId;
268
296
  readonly factors: readonly MfaFactor[];
297
+ }, {
298
+ readonly _tag: Tag;
299
+ }> | Extract<{
300
+ readonly _tag: "RequiresPasskeyEnrollment";
301
+ readonly flowId: AuthFlowId;
302
+ }, {
303
+ readonly _tag: Tag;
304
+ }>) => any; }>(cases: Cases): (value: {
305
+ readonly _tag: "AccountDisabled";
306
+ } | {
307
+ readonly _tag: "Authenticated";
308
+ readonly session: IssuedSession;
309
+ } | {
310
+ readonly _tag: "InvalidCredentials";
311
+ } | {
312
+ readonly _tag: "PolicyDenied";
313
+ readonly reason?: string;
269
314
  } | {
270
315
  readonly _tag: "RequiresEmailVerification";
271
316
  readonly flowId: AuthFlowId;
272
- readonly userId?: UserId | undefined;
273
- readonly email?: Email | undefined;
317
+ readonly userId?: UserId;
318
+ readonly identityId: IdentityId;
319
+ } | {
320
+ readonly _tag: "RequiresExplicitLinking";
321
+ readonly flowId: AuthFlowId;
322
+ readonly provider: OAuthProviderId;
274
323
  } | {
275
324
  readonly _tag: "RequiresLoginApproval";
276
325
  readonly flowId: AuthFlowId;
@@ -280,80 +329,88 @@ export declare const AuthResult: {
280
329
  readonly sameDeviceRequired: boolean;
281
330
  readonly reason: LoginApprovalReason;
282
331
  readonly expiresAt: UnixMillis;
283
- readonly sameDeviceSecret?: Redacted.Redacted<string> | undefined;
332
+ readonly sameDeviceSecret?: Redacted.Redacted<string>;
284
333
  } | {
285
- readonly _tag: "RequiresPasskeyEnrollment";
334
+ readonly _tag: "RequiresMfa";
286
335
  readonly flowId: AuthFlowId;
336
+ readonly factors: readonly MfaFactor[];
287
337
  } | {
338
+ readonly _tag: "RequiresPasskeyEnrollment";
339
+ readonly flowId: AuthFlowId;
340
+ }) => import("effect/Unify").Unify<ReturnType<Cases["AccountDisabled" | "Authenticated" | "InvalidCredentials" | "PolicyDenied" | "RequiresEmailVerification" | "RequiresExplicitLinking" | "RequiresLoginApproval" | "RequiresMfa" | "RequiresPasskeyEnrollment"]>>;
341
+ <Cases extends { readonly [Tag in "AccountDisabled" | "Authenticated" | "InvalidCredentials" | "PolicyDenied" | "RequiresEmailVerification" | "RequiresExplicitLinking" | "RequiresLoginApproval" | "RequiresMfa" | "RequiresPasskeyEnrollment"]: (args: Extract<{
342
+ readonly _tag: "AccountDisabled";
343
+ }, {
344
+ readonly _tag: Tag;
345
+ }> | Extract<{
346
+ readonly _tag: "Authenticated";
347
+ readonly session: IssuedSession;
348
+ }, {
349
+ readonly _tag: Tag;
350
+ }> | Extract<{
351
+ readonly _tag: "InvalidCredentials";
352
+ }, {
353
+ readonly _tag: Tag;
354
+ }> | Extract<{
355
+ readonly _tag: "PolicyDenied";
356
+ readonly reason?: string;
357
+ }, {
358
+ readonly _tag: Tag;
359
+ }> | Extract<{
360
+ readonly _tag: "RequiresEmailVerification";
361
+ readonly flowId: AuthFlowId;
362
+ readonly userId?: UserId;
363
+ readonly identityId: IdentityId;
364
+ }, {
365
+ readonly _tag: Tag;
366
+ }> | Extract<{
288
367
  readonly _tag: "RequiresExplicitLinking";
289
368
  readonly flowId: AuthFlowId;
290
369
  readonly provider: OAuthProviderId;
291
- } | {
292
- readonly _tag: "InvalidCredentials";
293
- } | {
370
+ }, {
371
+ readonly _tag: Tag;
372
+ }> | Extract<{
373
+ readonly _tag: "RequiresLoginApproval";
374
+ readonly flowId: AuthFlowId;
375
+ readonly approvalChallengeId: ChallengeId;
376
+ readonly channel: LoginApprovalChannel;
377
+ readonly sessionBinding: LoginApprovalSessionBinding;
378
+ readonly sameDeviceRequired: boolean;
379
+ readonly reason: LoginApprovalReason;
380
+ readonly expiresAt: UnixMillis;
381
+ readonly sameDeviceSecret?: Redacted.Redacted<string>;
382
+ }, {
383
+ readonly _tag: Tag;
384
+ }> | Extract<{
385
+ readonly _tag: "RequiresMfa";
386
+ readonly flowId: AuthFlowId;
387
+ readonly factors: readonly MfaFactor[];
388
+ }, {
389
+ readonly _tag: Tag;
390
+ }> | Extract<{
391
+ readonly _tag: "RequiresPasskeyEnrollment";
392
+ readonly flowId: AuthFlowId;
393
+ }, {
394
+ readonly _tag: Tag;
395
+ }>) => any; }>(value: {
294
396
  readonly _tag: "AccountDisabled";
295
397
  } | {
296
- readonly _tag: "PolicyDenied";
297
- readonly reason?: string | undefined;
298
- }) => import("effect/Unify").Unify<ReturnType<Cases["Authenticated" | "RequiresMfa" | "RequiresEmailVerification" | "RequiresLoginApproval" | "RequiresPasskeyEnrollment" | "RequiresExplicitLinking" | "InvalidCredentials" | "AccountDisabled" | "PolicyDenied"]>>;
299
- <Cases extends {
300
- readonly Authenticated: (args: {
301
- readonly _tag: "Authenticated";
302
- readonly session: IssuedSession;
303
- }) => any;
304
- readonly RequiresMfa: (args: {
305
- readonly _tag: "RequiresMfa";
306
- readonly flowId: AuthFlowId;
307
- readonly factors: readonly MfaFactor[];
308
- }) => any;
309
- readonly RequiresEmailVerification: (args: {
310
- readonly _tag: "RequiresEmailVerification";
311
- readonly flowId: AuthFlowId;
312
- readonly userId?: UserId | undefined;
313
- readonly email?: Email | undefined;
314
- }) => any;
315
- readonly RequiresLoginApproval: (args: {
316
- readonly _tag: "RequiresLoginApproval";
317
- readonly flowId: AuthFlowId;
318
- readonly approvalChallengeId: ChallengeId;
319
- readonly channel: LoginApprovalChannel;
320
- readonly sessionBinding: LoginApprovalSessionBinding;
321
- readonly sameDeviceRequired: boolean;
322
- readonly reason: LoginApprovalReason;
323
- readonly expiresAt: UnixMillis;
324
- readonly sameDeviceSecret?: Redacted.Redacted<string> | undefined;
325
- }) => any;
326
- readonly RequiresPasskeyEnrollment: (args: {
327
- readonly _tag: "RequiresPasskeyEnrollment";
328
- readonly flowId: AuthFlowId;
329
- }) => any;
330
- readonly RequiresExplicitLinking: (args: {
331
- readonly _tag: "RequiresExplicitLinking";
332
- readonly flowId: AuthFlowId;
333
- readonly provider: OAuthProviderId;
334
- }) => any;
335
- readonly InvalidCredentials: (args: {
336
- readonly _tag: "InvalidCredentials";
337
- }) => any;
338
- readonly AccountDisabled: (args: {
339
- readonly _tag: "AccountDisabled";
340
- }) => any;
341
- readonly PolicyDenied: (args: {
342
- readonly _tag: "PolicyDenied";
343
- readonly reason?: string | undefined;
344
- }) => any;
345
- }>(value: {
346
398
  readonly _tag: "Authenticated";
347
399
  readonly session: IssuedSession;
348
400
  } | {
349
- readonly _tag: "RequiresMfa";
350
- readonly flowId: AuthFlowId;
351
- readonly factors: readonly MfaFactor[];
401
+ readonly _tag: "InvalidCredentials";
402
+ } | {
403
+ readonly _tag: "PolicyDenied";
404
+ readonly reason?: string;
352
405
  } | {
353
406
  readonly _tag: "RequiresEmailVerification";
354
407
  readonly flowId: AuthFlowId;
355
- readonly userId?: UserId | undefined;
356
- readonly email?: Email | undefined;
408
+ readonly userId?: UserId;
409
+ readonly identityId: IdentityId;
410
+ } | {
411
+ readonly _tag: "RequiresExplicitLinking";
412
+ readonly flowId: AuthFlowId;
413
+ readonly provider: OAuthProviderId;
357
414
  } | {
358
415
  readonly _tag: "RequiresLoginApproval";
359
416
  readonly flowId: AuthFlowId;
@@ -363,23 +420,61 @@ export declare const AuthResult: {
363
420
  readonly sameDeviceRequired: boolean;
364
421
  readonly reason: LoginApprovalReason;
365
422
  readonly expiresAt: UnixMillis;
366
- readonly sameDeviceSecret?: Redacted.Redacted<string> | undefined;
423
+ readonly sameDeviceSecret?: Redacted.Redacted<string>;
367
424
  } | {
368
- readonly _tag: "RequiresPasskeyEnrollment";
425
+ readonly _tag: "RequiresMfa";
369
426
  readonly flowId: AuthFlowId;
427
+ readonly factors: readonly MfaFactor[];
370
428
  } | {
371
- readonly _tag: "RequiresExplicitLinking";
429
+ readonly _tag: "RequiresPasskeyEnrollment";
372
430
  readonly flowId: AuthFlowId;
373
- readonly provider: OAuthProviderId;
374
- } | {
375
- readonly _tag: "InvalidCredentials";
376
- } | {
377
- readonly _tag: "AccountDisabled";
378
- } | {
379
- readonly _tag: "PolicyDenied";
380
- readonly reason?: string | undefined;
381
- }, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["Authenticated" | "RequiresMfa" | "RequiresEmailVerification" | "RequiresLoginApproval" | "RequiresPasskeyEnrollment" | "RequiresExplicitLinking" | "InvalidCredentials" | "AccountDisabled" | "PolicyDenied"]>>;
431
+ }, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["AccountDisabled" | "Authenticated" | "InvalidCredentials" | "PolicyDenied" | "RequiresEmailVerification" | "RequiresExplicitLinking" | "RequiresLoginApproval" | "RequiresMfa" | "RequiresPasskeyEnrollment"]>>;
382
432
  };
433
+ readonly AccountDisabled: Data.TaggedEnum.ConstructorFrom<{
434
+ readonly _tag: "AccountDisabled";
435
+ }, "_tag">;
436
+ readonly Authenticated: Data.TaggedEnum.ConstructorFrom<{
437
+ readonly _tag: "Authenticated";
438
+ readonly session: IssuedSession;
439
+ }, "_tag">;
440
+ readonly InvalidCredentials: Data.TaggedEnum.ConstructorFrom<{
441
+ readonly _tag: "InvalidCredentials";
442
+ }, "_tag">;
443
+ readonly PolicyDenied: Data.TaggedEnum.ConstructorFrom<{
444
+ readonly _tag: "PolicyDenied";
445
+ readonly reason?: string;
446
+ }, "_tag">;
447
+ readonly RequiresEmailVerification: Data.TaggedEnum.ConstructorFrom<{
448
+ readonly _tag: "RequiresEmailVerification";
449
+ readonly flowId: AuthFlowId;
450
+ readonly userId?: UserId;
451
+ readonly identityId: IdentityId;
452
+ }, "_tag">;
453
+ readonly RequiresExplicitLinking: Data.TaggedEnum.ConstructorFrom<{
454
+ readonly _tag: "RequiresExplicitLinking";
455
+ readonly flowId: AuthFlowId;
456
+ readonly provider: OAuthProviderId;
457
+ }, "_tag">;
458
+ readonly RequiresLoginApproval: Data.TaggedEnum.ConstructorFrom<{
459
+ readonly _tag: "RequiresLoginApproval";
460
+ readonly flowId: AuthFlowId;
461
+ readonly approvalChallengeId: ChallengeId;
462
+ readonly channel: LoginApprovalChannel;
463
+ readonly sessionBinding: LoginApprovalSessionBinding;
464
+ readonly sameDeviceRequired: boolean;
465
+ readonly reason: LoginApprovalReason;
466
+ readonly expiresAt: UnixMillis;
467
+ readonly sameDeviceSecret?: Redacted.Redacted<string>;
468
+ }, "_tag">;
469
+ readonly RequiresMfa: Data.TaggedEnum.ConstructorFrom<{
470
+ readonly _tag: "RequiresMfa";
471
+ readonly flowId: AuthFlowId;
472
+ readonly factors: readonly MfaFactor[];
473
+ }, "_tag">;
474
+ readonly RequiresPasskeyEnrollment: Data.TaggedEnum.ConstructorFrom<{
475
+ readonly _tag: "RequiresPasskeyEnrollment";
476
+ readonly flowId: AuthFlowId;
477
+ }, "_tag">;
383
478
  };
384
479
  export type AuthResultOf<Tag extends AuthResult["_tag"]> = Extract<AuthResult, {
385
480
  readonly _tag: Tag;
@@ -387,7 +482,8 @@ export type AuthResultOf<Tag extends AuthResult["_tag"]> = Extract<AuthResult, {
387
482
  export type AuthenticatedResult = AuthResultOf<"Authenticated">;
388
483
  type CommonPrimaryFactorResult = AuthResultOf<"Authenticated" | "RequiresMfa" | "RequiresEmailVerification" | "RequiresLoginApproval" | "RequiresPasskeyEnrollment" | "PolicyDenied">;
389
484
  export type AuthFlowPrimaryFactorResult<Method extends AuthMethod = AuthMethod> = CommonPrimaryFactorResult | (Method extends "oauth" ? AuthResultOf<"RequiresExplicitLinking"> : never);
390
- export type AuthFlowMfaResult = AuthResultOf<"Authenticated" | "PolicyDenied">;
485
+ export type AuthFlowMfaResult = AuthResultOf<"Authenticated" | "RequiresLoginApproval" | "PolicyDenied">;
486
+ export type AuthFlowRequireMfaResult = AuthResultOf<"RequiresMfa" | "PolicyDenied">;
391
487
  declare const AuthFlowStateError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
392
488
  readonly _tag: "AuthFlowStateError";
393
489
  } & Readonly<A>;
@@ -399,6 +495,7 @@ export declare class AuthFlowStateError extends AuthFlowStateError_base<{
399
495
  export interface AuthFlowStateStartInput<Method extends AuthMethod = AuthMethod> extends AuthFlowCompleteInput<Method> {
400
496
  readonly ttl?: Duration.Duration;
401
497
  readonly secret?: Redacted.Redacted<string>;
498
+ readonly factors?: readonly MfaFactor[];
402
499
  readonly metadata?: Readonly<Record<string, unknown>>;
403
500
  }
404
501
  export interface StartedAuthFlowState {
@@ -408,6 +505,7 @@ export interface StartedAuthFlowState {
408
505
  }
409
506
  export interface ConsumedAuthFlowState<Method extends AuthMethod = AuthMethod> extends AuthFlowCompleteInput<Method> {
410
507
  readonly flowId: AuthFlowId;
508
+ readonly factors?: readonly MfaFactor[];
411
509
  readonly metadata?: Readonly<Record<string, unknown>>;
412
510
  }
413
511
  export interface InspectedAuthFlowState<Method extends AuthMethod = AuthMethod> extends ConsumedAuthFlowState<Method> {
@@ -421,9 +519,6 @@ export interface AuthFlowStateService {
421
519
  declare const AuthFlowState_base: Context.ServiceClass<AuthFlowState, "auth/AuthFlowState", AuthFlowStateService>;
422
520
  export declare class AuthFlowState extends AuthFlowState_base {
423
521
  }
424
- export declare namespace AuthFlowState {
425
- const make: (service: AuthFlowStateService) => AuthFlowStateService;
426
- }
427
522
  export interface AuthFlowStateOptions {
428
523
  readonly ttl?: Duration.Duration;
429
524
  }
@@ -434,21 +529,29 @@ export declare const defaultAuthFlowStateTtl: Duration.Duration;
434
529
  export declare const makeAuthFlowState: (dependencies: AuthFlowStateDependencies) => AuthFlowStateService;
435
530
  export declare const AuthFlowStateLive: (options?: AuthFlowStateOptions) => Layer.Layer<AuthFlowState, never, Challenge>;
436
531
  export type AuthFlowCompleteError = SessionCreateError;
437
- export type AuthFlowMfaError = AuthFlowStateError | AuthFlowCompleteError;
438
- export type AuthFlowPrimaryFactorError = AuthFlowCompleteError | TrustedDeviceError | LoginRiskError | AuthFlowStateError | LoginApprovalReviewError | LoginApprovalFlowStartError;
532
+ export type AuthFlowFinalize = (input: AuthFlowCompleteInput) => Effect.Effect<AuthenticatedResult | AuthResultOf<"PolicyDenied">, AuthFlowCompleteError>;
533
+ export type AuthFlowMfaError = AuthFlowPrimaryFactorError;
534
+ export type AuthFlowRequireMfaError = AuthFlowCompleteError | AuthFlowStateError | TrustedDeviceError;
535
+ export type AuthFlowPrimaryFactorError = AuthFlowCompleteError | TrustedDeviceError | LoginRiskError | TotpFactorManagementError | RecoveryCodeManagementError | PasskeyCredentialManagementError | AuthFlowStateError | LoginApprovalReviewError | LoginApprovalFlowStartError;
439
536
  export type AuthFlowError = AuthFlowPrimaryFactorError;
537
+ export type AuthFlowPreparedMfaResult = {
538
+ readonly _tag: "PreparedAuthenticated";
539
+ readonly prepared: PreparedSession;
540
+ readonly notify: Effect.Effect<void>;
541
+ } | {
542
+ readonly _tag: "PreparedLoginApproval";
543
+ readonly complete: Effect.Effect<AuthResultOf<"RequiresLoginApproval" | "PolicyDenied">, AuthFlowMfaError>;
544
+ } | AuthResultOf<"PolicyDenied">;
440
545
  export interface AuthFlowService {
441
546
  readonly startPrimaryFactor: <Method extends AuthMethod>(input: PrimaryFactorResult<Method>) => Effect.Effect<AuthFlowPrimaryFactorResult<Method>, AuthFlowPrimaryFactorError>;
547
+ readonly requireMfa: <Method extends AuthMethod>(input: AuthFlowRequireMfaInput<Method>) => Effect.Effect<AuthFlowRequireMfaResult, AuthFlowRequireMfaError>;
442
548
  readonly completePrimaryFactor: <Method extends AuthMethod>(input: PrimaryFactorResult<Method>) => Effect.Effect<AuthFlowPrimaryFactorResult<Method>, AuthFlowPrimaryFactorError>;
443
549
  readonly completeMfa: (input: MfaCompleteInput) => Effect.Effect<AuthFlowMfaResult, AuthFlowMfaError>;
444
- readonly complete: <Method extends AuthMethod>(input: AuthFlowCompleteInput<Method>) => Effect.Effect<AuthenticatedResult, AuthFlowCompleteError>;
550
+ readonly prepareMfa?: (input: MfaCompleteInput) => Effect.Effect<AuthFlowPreparedMfaResult, AuthFlowMfaError>;
445
551
  }
446
552
  declare const AuthFlow_base: Context.ServiceClass<AuthFlow, "auth/AuthFlow", AuthFlowService>;
447
553
  export declare class AuthFlow extends AuthFlow_base {
448
554
  }
449
- export declare namespace AuthFlow {
450
- const make: (service: AuthFlowService) => AuthFlowService;
451
- }
452
555
  export interface LoginApprovalFinalizeInput {
453
556
  readonly flowId: AuthFlowId;
454
557
  readonly approvalChallengeId: ChallengeId;
@@ -462,19 +565,21 @@ export interface LoginApprovalFinalizeService {
462
565
  declare const LoginApprovalFinalize_base: Context.ServiceClass<LoginApprovalFinalize, "auth/LoginApprovalFinalize", LoginApprovalFinalizeService>;
463
566
  export declare class LoginApprovalFinalize extends LoginApprovalFinalize_base {
464
567
  }
465
- export declare namespace LoginApprovalFinalize {
466
- const make: (service: LoginApprovalFinalizeService) => LoginApprovalFinalizeService;
467
- }
468
568
  export interface LoginApprovalFinalizeDependencies {
469
569
  readonly loginApprovalReview: LoginApprovalReviewService;
470
570
  readonly authFlowState: AuthFlowStateService;
471
- readonly authFlow: AuthFlowService;
571
+ readonly finalizeAuthFlow: AuthFlowFinalize;
472
572
  }
473
573
  export declare const makeLoginApprovalFinalize: (dependencies: LoginApprovalFinalizeDependencies) => LoginApprovalFinalizeService;
474
- export declare const LoginApprovalFinalizeLive: Layer.Layer<LoginApprovalFinalize, never, LoginApprovalReview | AuthFlowState | AuthFlow>;
574
+ export declare const LoginApprovalFinalizeLive: Layer.Layer<LoginApprovalFinalize, never, AuthFlowState | LoginApprovalReview | Sessions>;
475
575
  export interface AuthFlowDependencies {
476
576
  readonly sessions: SessionsService;
577
+ readonly pipeline?: AuthFlowPipelineService;
477
578
  readonly emailVerificationSessionPolicy?: EmailVerificationSessionPolicyService;
579
+ readonly mfaRequirementPolicy?: MfaRequirementPolicyService;
580
+ readonly totpFactorManagement?: TotpFactorManagementService;
581
+ readonly recoveryCodeManagement?: RecoveryCodeManagementService;
582
+ readonly passkeyCredentialManagement?: PasskeyCredentialManagementService;
478
583
  readonly loginApprovalPolicy?: LoginApprovalPolicyService;
479
584
  readonly loginApprovalFlow?: LoginApprovalFlowService;
480
585
  readonly authFlowState?: AuthFlowStateService;
@@ -483,10 +588,11 @@ export interface AuthFlowDependencies {
483
588
  readonly loginRiskEngine?: LoginRiskEngineService;
484
589
  readonly loginApprovalReview?: LoginApprovalReviewService;
485
590
  readonly loginNotification?: LoginNotificationService;
591
+ readonly recoveryRequirementPolicy?: RecoveryRequirementPolicyService;
486
592
  readonly loginApprovalSameDeviceSecretBytes?: number;
487
593
  }
488
594
  export declare const makeAuthFlow: (dependencies: AuthFlowDependencies) => AuthFlowService;
489
595
  export declare const AuthFlowLive: Layer.Layer<AuthFlow, never, Sessions>;
490
- export declare const AuthFlowLiveWithEmailVerificationPolicy: (options?: EmailVerificationSessionPolicyOptions) => Layer.Layer<AuthFlow, never, Sessions>;
596
+ export declare const AuthFlowWithEmailVerificationPolicyLive: (options?: EmailVerificationSessionPolicyOptions) => Layer.Layer<AuthFlow, never, Sessions>;
491
597
  export {};
492
598
  //# sourceMappingURL=AuthFlow.d.ts.map