@yielded/auth-persistence 0.1.0-beta.10

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 (182) hide show
  1. package/README.md +27 -0
  2. package/dist/Adapter.d.mts +30 -0
  3. package/dist/Adapter.mjs +25 -0
  4. package/dist/index.d.mts +7 -0
  5. package/dist/index.mjs +7 -0
  6. package/dist/internal/PasswordPreparedPostconditions.d.mts +22 -0
  7. package/dist/internal/PasswordPreparedPostconditions.mjs +12 -0
  8. package/dist/internal/PasswordPreparedPostconditions.mjs.map +1 -0
  9. package/dist/internal/configuration.d.mts +174 -0
  10. package/dist/internal/configuration.mjs +7 -0
  11. package/dist/internal/configuration.mjs.map +1 -0
  12. package/dist/internal/email-kernel.d.mts +275 -0
  13. package/dist/internal/email-kernel.mjs +487 -0
  14. package/dist/internal/email-kernel.mjs.map +1 -0
  15. package/dist/internal/mapping-error.d.mts +10 -0
  16. package/dist/internal/mapping-error.mjs +30 -0
  17. package/dist/internal/mapping-error.mjs.map +1 -0
  18. package/dist/internal/models/common.d.mts +12 -0
  19. package/dist/internal/models/email-model.d.mts +353 -0
  20. package/dist/internal/models/email-model.mjs +21 -0
  21. package/dist/internal/models/email-model.mjs.map +1 -0
  22. package/dist/internal/models/passkey-model.d.mts +266 -0
  23. package/dist/internal/models/passkey-model.mjs +34 -0
  24. package/dist/internal/models/passkey-model.mjs.map +1 -0
  25. package/dist/internal/models/passkey-registration-ceremony-model.d.mts +49 -0
  26. package/dist/internal/models/passkey-registration-ceremony-model.mjs +18 -0
  27. package/dist/internal/models/passkey-registration-ceremony-model.mjs.map +1 -0
  28. package/dist/internal/models/passkey-write-model.d.mts +189 -0
  29. package/dist/internal/models/passkey-write-model.mjs +13 -0
  30. package/dist/internal/models/passkey-write-model.mjs.map +1 -0
  31. package/dist/internal/models/password-model.d.mts +328 -0
  32. package/dist/internal/models/password-model.mjs +23 -0
  33. package/dist/internal/models/password-model.mjs.map +1 -0
  34. package/dist/internal/models/proof-model.d.mts +285 -0
  35. package/dist/internal/models/proof-model.mjs +17 -0
  36. package/dist/internal/models/proof-model.mjs.map +1 -0
  37. package/dist/internal/models/session-model.d.mts +199 -0
  38. package/dist/internal/models/session-model.mjs +20 -0
  39. package/dist/internal/models/session-model.mjs.map +1 -0
  40. package/dist/internal/models/step-up-model.d.mts +66 -0
  41. package/dist/internal/models/step-up-model.mjs +9 -0
  42. package/dist/internal/models/step-up-model.mjs.map +1 -0
  43. package/dist/internal/oauth-app.d.mts +11 -0
  44. package/dist/internal/oauth-app.mjs +57 -0
  45. package/dist/internal/oauth-app.mjs.map +1 -0
  46. package/dist/internal/oauth-server.d.mts +10 -0
  47. package/dist/internal/oauth-server.mjs +66 -0
  48. package/dist/internal/oauth-server.mjs.map +1 -0
  49. package/dist/internal/passkey/admission.d.mts +6 -0
  50. package/dist/internal/passkey/admission.mjs +216 -0
  51. package/dist/internal/passkey/admission.mjs.map +1 -0
  52. package/dist/internal/passkey/credentials.d.mts +14 -0
  53. package/dist/internal/passkey/credentials.mjs +249 -0
  54. package/dist/internal/passkey/credentials.mjs.map +1 -0
  55. package/dist/internal/passkey/enrollment.mjs +138 -0
  56. package/dist/internal/passkey/enrollment.mjs.map +1 -0
  57. package/dist/internal/passkey/flow.d.mts +21 -0
  58. package/dist/internal/passkey/flow.mjs +452 -0
  59. package/dist/internal/passkey/flow.mjs.map +1 -0
  60. package/dist/internal/passkey/management.mjs +231 -0
  61. package/dist/internal/passkey/management.mjs.map +1 -0
  62. package/dist/internal/passkey/registration-ceremony.d.mts +9 -0
  63. package/dist/internal/passkey/registration-ceremony.mjs +129 -0
  64. package/dist/internal/passkey/registration-ceremony.mjs.map +1 -0
  65. package/dist/internal/passkey/registration-custody.d.mts +2 -0
  66. package/dist/internal/passkey/registration-custody.mjs +52 -0
  67. package/dist/internal/passkey/registration-custody.mjs.map +1 -0
  68. package/dist/internal/passkey/registration-write.mjs +211 -0
  69. package/dist/internal/passkey/registration-write.mjs.map +1 -0
  70. package/dist/internal/passkey/state.d.mts +10 -0
  71. package/dist/internal/passkey/state.mjs +234 -0
  72. package/dist/internal/passkey/state.mjs.map +1 -0
  73. package/dist/internal/passkey/target.d.mts +19 -0
  74. package/dist/internal/passkey/target.mjs +190 -0
  75. package/dist/internal/passkey/target.mjs.map +1 -0
  76. package/dist/internal/passkey/write-state.d.mts +17 -0
  77. package/dist/internal/passkey/write-state.mjs +345 -0
  78. package/dist/internal/passkey/write-state.mjs.map +1 -0
  79. package/dist/internal/passkey/write-target.mjs +192 -0
  80. package/dist/internal/passkey/write-target.mjs.map +1 -0
  81. package/dist/internal/passkey-kernel.d.mts +5592 -0
  82. package/dist/internal/passkey-kernel.mjs +49 -0
  83. package/dist/internal/passkey-kernel.mjs.map +1 -0
  84. package/dist/internal/passkeys.d.mts +7 -0
  85. package/dist/internal/passkeys.mjs +368 -0
  86. package/dist/internal/passkeys.mjs.map +1 -0
  87. package/dist/internal/password-kernel.d.mts +290 -0
  88. package/dist/internal/password-kernel.mjs +704 -0
  89. package/dist/internal/password-kernel.mjs.map +1 -0
  90. package/dist/internal/persistence.d.mts +25 -0
  91. package/dist/internal/persistence.mjs +291 -0
  92. package/dist/internal/persistence.mjs.map +1 -0
  93. package/dist/internal/phone-kernel.d.mts +162 -0
  94. package/dist/internal/phone-kernel.mjs +434 -0
  95. package/dist/internal/phone-kernel.mjs.map +1 -0
  96. package/dist/internal/proof-kernel.d.mts +93 -0
  97. package/dist/internal/proof-kernel.mjs +619 -0
  98. package/dist/internal/proof-kernel.mjs.map +1 -0
  99. package/dist/internal/query-operations.d.mts +61 -0
  100. package/dist/internal/registration-contract.d.mts +16 -0
  101. package/dist/internal/registration.mjs +66 -0
  102. package/dist/internal/registration.mjs.map +1 -0
  103. package/dist/internal/session-kernel.d.mts +48 -0
  104. package/dist/internal/session-kernel.mjs +737 -0
  105. package/dist/internal/session-kernel.mjs.map +1 -0
  106. package/dist/internal/sql-persistence.d.mts +10 -0
  107. package/dist/internal/sql-persistence.mjs +37 -0
  108. package/dist/internal/sql-persistence.mjs.map +1 -0
  109. package/dist/internal/sql-query.mjs +207 -0
  110. package/dist/internal/sql-query.mjs.map +1 -0
  111. package/dist/internal/sql-table.d.mts +36 -0
  112. package/dist/internal/sql-table.mjs +81 -0
  113. package/dist/internal/sql-table.mjs.map +1 -0
  114. package/dist/internal/standalone.d.mts +9 -0
  115. package/dist/internal/standalone.mjs +13 -0
  116. package/dist/internal/standalone.mjs.map +1 -0
  117. package/dist/internal/step-up-state.d.mts +49 -0
  118. package/dist/internal/step-up-state.mjs +32 -0
  119. package/dist/internal/step-up-state.mjs.map +1 -0
  120. package/dist/internal/storage-mapping.mjs +686 -0
  121. package/dist/internal/storage-mapping.mjs.map +1 -0
  122. package/dist/internal/storage-tables.d.mts +913 -0
  123. package/dist/internal/storage-tables.mjs +387 -0
  124. package/dist/internal/storage-tables.mjs.map +1 -0
  125. package/dist/internal/storage-validation.mjs +58 -0
  126. package/dist/internal/storage-validation.mjs.map +1 -0
  127. package/dist/internal/transaction-execution-kernel.d.mts +38 -0
  128. package/dist/internal/transaction-execution-kernel.mjs +116 -0
  129. package/dist/internal/transaction-execution-kernel.mjs.map +1 -0
  130. package/dist/internal/transaction-kernel.d.mts +77 -0
  131. package/dist/internal/transaction-kernel.mjs +260 -0
  132. package/dist/internal/transaction-kernel.mjs.map +1 -0
  133. package/package.json +1 -0
  134. package/src/Adapter.ts +291 -0
  135. package/src/index.ts +6 -0
  136. package/src/internal/PasswordPreparedPostconditions.ts +30 -0
  137. package/src/internal/configuration.ts +282 -0
  138. package/src/internal/email-kernel.ts +1535 -0
  139. package/src/internal/mapping-error.ts +36 -0
  140. package/src/internal/models/common.ts +11 -0
  141. package/src/internal/models/email-model.ts +559 -0
  142. package/src/internal/models/passkey-model.ts +390 -0
  143. package/src/internal/models/passkey-registration-ceremony-model.ts +72 -0
  144. package/src/internal/models/passkey-write-model.ts +297 -0
  145. package/src/internal/models/password-model.ts +513 -0
  146. package/src/internal/models/proof-model.ts +424 -0
  147. package/src/internal/models/session-model.ts +375 -0
  148. package/src/internal/models/step-up-model.ts +135 -0
  149. package/src/internal/oauth-app.ts +82 -0
  150. package/src/internal/oauth-server.ts +89 -0
  151. package/src/internal/passkey/admission.ts +361 -0
  152. package/src/internal/passkey/credentials.ts +511 -0
  153. package/src/internal/passkey/enrollment.ts +326 -0
  154. package/src/internal/passkey/flow.ts +1062 -0
  155. package/src/internal/passkey/management.ts +421 -0
  156. package/src/internal/passkey/registration-ceremony.ts +283 -0
  157. package/src/internal/passkey/registration-custody.ts +91 -0
  158. package/src/internal/passkey/registration-write.ts +426 -0
  159. package/src/internal/passkey/state.ts +353 -0
  160. package/src/internal/passkey/target.ts +586 -0
  161. package/src/internal/passkey/write-state.ts +681 -0
  162. package/src/internal/passkey/write-target.ts +452 -0
  163. package/src/internal/passkey-kernel.ts +104 -0
  164. package/src/internal/passkeys.ts +606 -0
  165. package/src/internal/password-kernel.ts +2124 -0
  166. package/src/internal/persistence.ts +588 -0
  167. package/src/internal/phone-kernel.ts +846 -0
  168. package/src/internal/proof-kernel.ts +1954 -0
  169. package/src/internal/query-operations.ts +81 -0
  170. package/src/internal/registration-contract.ts +22 -0
  171. package/src/internal/registration.ts +161 -0
  172. package/src/internal/session-kernel.ts +2217 -0
  173. package/src/internal/sql-persistence.ts +45 -0
  174. package/src/internal/sql-query.ts +298 -0
  175. package/src/internal/sql-table.ts +104 -0
  176. package/src/internal/standalone.ts +30 -0
  177. package/src/internal/step-up-state.ts +139 -0
  178. package/src/internal/storage-mapping.ts +708 -0
  179. package/src/internal/storage-tables.ts +408 -0
  180. package/src/internal/storage-validation.ts +117 -0
  181. package/src/internal/transaction-execution-kernel.ts +313 -0
  182. package/src/internal/transaction-kernel.ts +593 -0
@@ -0,0 +1,275 @@
1
+ import { QueryFailure, QueryOperations, SqlColumn, SqlFragment } from "./query-operations.mjs";
2
+ import { PersistenceMappingError } from "./mapping-error.mjs";
3
+ import { AnyEmailAddressMapping, AnyEmailSignInMapping } from "./models/email-model.mjs";
4
+ import { ProofSqlConfiguration, makeProofKernel } from "./proof-kernel.mjs";
5
+ import { Context, DateTime, Effect, Option } from "effect";
6
+ import { LifecycleHooks, PreparedCommit } from "@yielded/auth/Hooks";
7
+ import { AuthenticationRevision, SecurityRevision } from "@yielded/auth/Sessions";
8
+ import { EmailAddressMutation, EmailCredentialSnapshot, EmailUnavailable } from "@yielded/auth/Email";
9
+ import { ProofCompletionInput } from "@yielded/auth/Proofs";
10
+ import { LoginIdentifier } from "@yielded/auth/Identity";
11
+ import * as SqlError$1 from "effect/unstable/sql/SqlError";
12
+ //#region src/internal/email-kernel.d.ts
13
+ type AdapterFailure = QueryFailure | PersistenceMappingError | SqlError$1.SqlError;
14
+ type SignInMapping = AnyEmailSignInMapping;
15
+ export interface EmailSqlQuery<A = ReadonlyArray<any>> extends Effect.Effect<A, AdapterFailure> {
16
+ readonly getSQL: () => ReturnType<QueryOperations["sql"]>;
17
+ readonly from: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
18
+ readonly where: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
19
+ readonly limit: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
20
+ readonly orderBy: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
21
+ readonly for: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
22
+ readonly set: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
23
+ readonly values: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
24
+ readonly returning: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
25
+ readonly innerJoin: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
26
+ readonly onConflictDoNothing: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
27
+ readonly onDuplicateKeyUpdate: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
28
+ readonly $returningId: (...args: ReadonlyArray<any>) => EmailSqlQuery<A>;
29
+ }
30
+ export interface EmailSqlDatabase {
31
+ readonly select: (...args: ReadonlyArray<any>) => EmailSqlQuery;
32
+ readonly insert: (...args: ReadonlyArray<any>) => EmailSqlQuery;
33
+ readonly update: (...args: ReadonlyArray<any>) => EmailSqlQuery;
34
+ readonly delete: (...args: ReadonlyArray<any>) => EmailSqlQuery;
35
+ readonly transaction: <A, E, R>(body: (transaction: EmailSqlDatabase) => Effect.Effect<A, E, R>) => Effect.Effect<A, E | SqlError$1.SqlError, R>;
36
+ }
37
+ declare const CurrentEmailSql_base: Context.ServiceClass<CurrentEmailSql, "effect-auth/CurrentEmailSql", EmailSqlDatabase>;
38
+ export declare class CurrentEmailSql extends CurrentEmailSql_base {}
39
+ export interface EmailSqlConfiguration {
40
+ readonly mode: "interactive" | "synchronous";
41
+ readonly locking: boolean;
42
+ readonly standaloneGuard: Effect.Effect<void, EmailUnavailable>;
43
+ readonly coordinated?: boolean;
44
+ readonly proof?: {
45
+ readonly mapping: any;
46
+ readonly configuration: ProofSqlConfiguration;
47
+ };
48
+ }
49
+ export interface CurrentAddress {
50
+ readonly nativeSubjectId: unknown;
51
+ readonly subject: any;
52
+ readonly revision: AuthenticationRevision;
53
+ readonly source?: {
54
+ readonly credential: any;
55
+ readonly identifier: any;
56
+ readonly snapshot: EmailCredentialSnapshot;
57
+ };
58
+ readonly targetIdentifier?: any;
59
+ readonly targetCredential?: any;
60
+ readonly targetIdentifierRevision?: SecurityRevision;
61
+ readonly eligible: boolean;
62
+ }
63
+ export declare const makeEmailKernel: <Fragment extends SqlFragment = SqlFragment, Column extends SqlColumn = SqlColumn>(operations: QueryOperations<Fragment, Column>, proofs: Pick<ReturnType<typeof makeProofKernel>, "completeProofPlanIn">) => {
64
+ validEmailSignInConstraints: (mapping: SignInMapping) => boolean;
65
+ emailLookupQuery: (mapping: SignInMapping, moduleId: string, identifier: LoginIdentifier) => {
66
+ fields: {
67
+ subject: any;
68
+ identifier: any;
69
+ credential: any;
70
+ };
71
+ from: any;
72
+ subjectTable: any;
73
+ subjectJoin: Fragment;
74
+ credentialTable: any;
75
+ credentialJoin: Fragment | undefined;
76
+ predicate: Fragment | undefined;
77
+ limit: number;
78
+ };
79
+ decodeEmailSnapshot: (mapping: AnyEmailSignInMapping, moduleId: string, requested: LoginIdentifier, row: any) => Effect.Effect<Readonly<{
80
+ moduleId: string;
81
+ identifierRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
82
+ verifiedAtMillis: number;
83
+ credentialId: string;
84
+ credentialRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
85
+ identifier: Readonly<LoginIdentifier>;
86
+ revision: {
87
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
88
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
89
+ readonly credentials: readonly {
90
+ readonly credentialId: string;
91
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
92
+ }[];
93
+ };
94
+ }> | undefined, EmailUnavailable | PersistenceMappingError, never>;
95
+ makeSqlEmailSignInTargets: (database: EmailSqlDatabase, mapping: AnyEmailSignInMapping, configuration: EmailSqlConfiguration) => Effect.Effect<{
96
+ readonly lookup: (input: {
97
+ readonly moduleId: string;
98
+ readonly identifier: LoginIdentifier;
99
+ }) => Effect.Effect<Option.Option<EmailCredentialSnapshot>, EmailUnavailable>;
100
+ }, never, never>;
101
+ currentAddress: (mapping: AnyEmailAddressMapping<Fragment>, input: {
102
+ readonly moduleId: string;
103
+ readonly subjectId: string;
104
+ readonly target: LoginIdentifier;
105
+ readonly sourceCredentialId?: string;
106
+ }, locking: boolean) => Effect.Effect<{
107
+ nativeSubjectId: unknown;
108
+ subject: any;
109
+ revision: {
110
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
111
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
112
+ readonly credentials: readonly {
113
+ readonly credentialId: string;
114
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
115
+ }[];
116
+ };
117
+ source?: {
118
+ readonly credential: any;
119
+ readonly identifier: any;
120
+ readonly snapshot: EmailCredentialSnapshot;
121
+ } | undefined;
122
+ targetIdentifier?: any;
123
+ targetCredential?: any;
124
+ targetIdentifierRevision?: any;
125
+ eligible: boolean;
126
+ } | undefined, EmailUnavailable | QueryFailure, CurrentEmailSql>;
127
+ sameEmailRevision: (left: AuthenticationRevision, right: AuthenticationRevision) => boolean;
128
+ snapshotEmailMutation: (input: EmailAddressMutation) => Effect.Effect<Readonly<{
129
+ moduleId: string;
130
+ commandId: import("@yielded/auth/Email").EmailCommandId;
131
+ completion: import("@yielded/auth/Proofs").ProofCompletionPlan;
132
+ invalidation?: Readonly<{
133
+ trigger: "all-session-revocation" | "credential-change" | "factor-reset" | "identifier-change" | "password-reset" | "subject-delete" | "subject-disable";
134
+ existingSessions: "immediate" | "original-absolute-expiry";
135
+ maximumExposureMillis: number;
136
+ oldAuthenticationEvidence: "rejected";
137
+ }> | undefined;
138
+ target: Readonly<{
139
+ namespace: string;
140
+ value: string;
141
+ }>;
142
+ captured: Readonly<{
143
+ eligible: boolean;
144
+ revision: {
145
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
146
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
147
+ readonly credentials: readonly {
148
+ readonly credentialId: string;
149
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
150
+ }[];
151
+ };
152
+ targetIdentifierRevision?: (string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">) | undefined;
153
+ source?: Readonly<{
154
+ moduleId: string;
155
+ identifierRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
156
+ verifiedAtMillis: number;
157
+ credentialId: string;
158
+ credentialRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
159
+ identifier: Readonly<LoginIdentifier>;
160
+ revision: {
161
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
162
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
163
+ readonly credentials: readonly {
164
+ readonly credentialId: string;
165
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
166
+ }[];
167
+ };
168
+ }> | undefined;
169
+ }>;
170
+ authorization: Readonly<{
171
+ challenge: Readonly<{
172
+ moduleId: string;
173
+ action: "change-address" | "verify-address";
174
+ commandId: string & import("effect/Brand").Brand<"effect-auth/EmailCommandId">;
175
+ sourceCredentialId?: string | undefined;
176
+ targetIdentifierRevision?: (string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">) | undefined;
177
+ bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
178
+ target: Readonly<{
179
+ namespace: string;
180
+ value: string;
181
+ }>;
182
+ revision: {
183
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
184
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
185
+ readonly credentials: readonly {
186
+ readonly credentialId: string;
187
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
188
+ }[];
189
+ };
190
+ }>;
191
+ evidence: Readonly<{
192
+ flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
193
+ bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
194
+ revision: Readonly<{
195
+ subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
196
+ securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
197
+ credentials: readonly Readonly<{
198
+ credentialId: string;
199
+ revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
200
+ }>[];
201
+ }>;
202
+ proofs: readonly [Readonly<{
203
+ method: string;
204
+ credentialId: string;
205
+ userVerified: boolean;
206
+ phishingResistant: boolean;
207
+ factors: readonly ("inherence" | "knowledge" | "possession")[];
208
+ verifiedAt: DateTime.Utc;
209
+ }>, ...Readonly<{
210
+ method: string;
211
+ credentialId: string;
212
+ userVerified: boolean;
213
+ phishingResistant: boolean;
214
+ factors: readonly ("inherence" | "knowledge" | "possession")[];
215
+ verifiedAt: DateTime.Utc;
216
+ }>[]];
217
+ }>;
218
+ requirement: Readonly<{
219
+ maximumAgeMillis: number;
220
+ alternatives: readonly [Readonly<{
221
+ userVerified: boolean;
222
+ phishingResistant: boolean;
223
+ minimumCredentials: number;
224
+ factors: readonly ("inherence" | "knowledge" | "possession")[];
225
+ }>, ...Readonly<{
226
+ userVerified: boolean;
227
+ phishingResistant: boolean;
228
+ minimumCredentials: number;
229
+ factors: readonly ("inherence" | "knowledge" | "possession")[];
230
+ }>[]];
231
+ }>;
232
+ }>;
233
+ }>, EmailUnavailable, never>;
234
+ validateEmailAuthority: (mapping: AnyEmailAddressMapping<Fragment>, configuration: EmailSqlConfiguration, input: EmailAddressMutation, action: "change-address" | "verify-address") => Effect.Effect<{
235
+ nativeSubjectId: unknown;
236
+ subject: any;
237
+ revision: {
238
+ readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
239
+ readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
240
+ readonly credentials: readonly {
241
+ readonly credentialId: string;
242
+ readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
243
+ }[];
244
+ };
245
+ source?: {
246
+ readonly credential: any;
247
+ readonly identifier: any;
248
+ readonly snapshot: EmailCredentialSnapshot;
249
+ } | undefined;
250
+ targetIdentifier?: any;
251
+ targetCredential?: any;
252
+ targetIdentifierRevision?: any;
253
+ eligible: boolean;
254
+ } | undefined, EmailUnavailable | QueryFailure, CurrentEmailSql>;
255
+ makeSqlEmailAddressPersistence: (database: EmailSqlDatabase, mapping: AnyEmailAddressMapping<Fragment>, configuration: EmailSqlConfiguration) => Effect.Effect<{
256
+ readonly target: (input: {
257
+ readonly moduleId: string;
258
+ readonly subjectId: import("@yielded/auth/Schema").SubjectId;
259
+ readonly target: LoginIdentifier;
260
+ readonly sourceCredentialId?: string;
261
+ }) => Effect.Effect<import("@yielded/auth/Email").EmailAddressTarget, EmailUnavailable>;
262
+ readonly checkCompletion: (input: ProofCompletionInput) => Effect.Effect<boolean, EmailUnavailable>;
263
+ readonly verifyWithProof: <A>(input: EmailAddressMutation, prepare: import("@yielded/auth/Email").PrepareEmailCommit<import("@yielded/auth/Email").EmailAddressDecision, A>) => Effect.Effect<PreparedCommit<A>, EmailUnavailable>;
264
+ readonly changeWithProof: <A>(input: EmailAddressMutation, prepare: import("@yielded/auth/Email").PrepareEmailCommit<import("@yielded/auth/Email").EmailAddressDecision, A>) => Effect.Effect<PreparedCommit<A>, EmailUnavailable>;
265
+ readonly cleanup: <A>(input: {
266
+ readonly moduleId: string;
267
+ readonly limit: number;
268
+ }, prepare: import("@yielded/auth/Email").PrepareEmailCommit<{
269
+ readonly removed: number;
270
+ readonly hasMore: boolean;
271
+ }, A>) => Effect.Effect<PreparedCommit<A>, EmailUnavailable>;
272
+ }, never, LifecycleHooks>;
273
+ };
274
+ //#endregion
275
+ //# sourceMappingURL=email-kernel.d.mts.map