@aooth/auth-moost 0.1.8 → 0.1.9

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aooth/auth-moost",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Moost auth integration for aoothjs — AuthGuard interceptor, useAuth composable, REST endpoints, workflows",
5
5
  "keywords": [
6
6
  "aoothjs",
@@ -57,27 +57,27 @@
57
57
  "access": "public"
58
58
  },
59
59
  "dependencies": {
60
- "@atscript/moost-wf": "^0.1.88",
60
+ "@atscript/moost-wf": "^0.1.90",
61
61
  "@wooksjs/http-body": "^0.7.17",
62
- "@aooth/arbac-moost": "^0.1.8",
63
- "@aooth/idp": "0.1.8",
64
- "@aooth/auth": "0.1.8",
65
- "@aooth/user": "0.1.8"
62
+ "@aooth/arbac-moost": "^0.1.9",
63
+ "@aooth/idp": "0.1.9",
64
+ "@aooth/auth": "0.1.9",
65
+ "@aooth/user": "0.1.9"
66
66
  },
67
67
  "devDependencies": {
68
- "@atscript/core": "^0.1.69",
69
- "@atscript/typescript": "^0.1.69",
70
- "@atscript/ui": "^0.1.88",
71
- "@atscript/ui-fns": "^0.1.88",
68
+ "@atscript/core": "^0.1.70",
69
+ "@atscript/typescript": "^0.1.70",
70
+ "@atscript/ui": "^0.1.90",
71
+ "@atscript/ui-fns": "^0.1.90",
72
72
  "@moostjs/event-http": "^0.6.23",
73
73
  "@moostjs/event-wf": "^0.6.23",
74
74
  "moost": "^0.6.23",
75
- "unplugin-atscript": "^0.1.69",
75
+ "unplugin-atscript": "^0.1.70",
76
76
  "wooks": "^0.7.17"
77
77
  },
78
78
  "peerDependencies": {
79
- "@atscript/moost-wf": "^0.1.88",
80
- "@atscript/typescript": "^0.1.69",
79
+ "@atscript/moost-wf": "^0.1.90",
80
+ "@atscript/typescript": "^0.1.70",
81
81
  "@moostjs/event-http": "^0.6.23",
82
82
  "@moostjs/event-wf": "^0.6.23",
83
83
  "@wooksjs/event-core": "^0.7.17",
@@ -506,6 +506,7 @@ export interface AskPhoneForm extends WithInlineConsentForm {
506
506
  @meta.label 'Set up two-factor authentication'
507
507
  @meta.description 'Pick a method to receive your verification codes.'
508
508
  @wf.context.pass 'public'
509
+ @ui.form.submit.text 'Continue'
509
510
  export interface EnrollPickMethodForm {
510
511
  @ui.form.order 10
511
512
  @ui.form.type 'radio'
@@ -514,9 +515,16 @@ export interface EnrollPickMethodForm {
514
515
  @meta.required
515
516
  method: string
516
517
 
518
+ // Login/invite opt-in only: a user who chose to defer MFA backs out here.
517
519
  @ui.form.action 'skip', 'Skip for now'
518
520
  @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "optional"'
519
521
  skip?: ui.action
522
+
523
+ // Manage-MFA only: the user opened this on purpose, so "Skip" makes no
524
+ // sense — offer a clean cancel instead.
525
+ @ui.form.action 'cancel', 'Cancel'
526
+ @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "manage"'
527
+ cancel?: ui.action
520
528
  }
521
529
 
522
530
  /**
@@ -530,34 +538,38 @@ export interface EnrollPickMethodForm {
530
538
  @ui.form.fn.title '(_, _d, ctx) => ctx.public?.mfaEnroll?.method === "sms" ? "Add your phone number" : "Add your email"'
531
539
  @meta.description 'We will send you a one-time code to confirm.'
532
540
  @wf.context.pass 'public'
541
+ @ui.form.submit.text 'Send code'
533
542
  export interface EnrollAddressForm {
534
543
  @ui.form.order 10
535
544
  @ui.form.type 'text'
536
545
  @meta.label 'Address'
537
546
  @meta.required
547
+ // Client-side format hint — email branch must look like an email; the SMS
548
+ // branch stays free-form (server-side E.164 normalization). The robust
549
+ // check is server-side in the `enroll-address` step regardless of client.
550
+ @ui.form.validate '(v, _d, ctx) => ctx.public?.mfaEnroll?.method !== "email" || /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(v) || "Enter a valid email address"'
538
551
  address: string
539
552
 
540
553
  @ui.form.action 'skip', 'Skip for now'
541
554
  @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "optional"'
542
555
  skip?: ui.action
543
556
 
557
+ @ui.form.action 'cancel', 'Cancel'
558
+ @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "manage"'
559
+ cancel?: ui.action
560
+
544
561
  @ui.form.action 'useDifferentMethod', 'Use a different method'
545
- @ui.form.fn.hidden '(_, _d, ctx) => (ctx.public?.mfaEnroll?.availableTransports?.length ?? 0) < 2'
562
+ @ui.form.fn.hidden '(_, _d, ctx) => (ctx.public?.mfaEnroll?.availableTransports?.length ?? 0) < 2 || ctx.public?.mfaEnroll?.mode === "manage"'
546
563
  useDifferentMethod?: ui.action
547
564
  }
548
565
 
549
566
  /**
550
- * Forced MFA enrollment — confirm code, shared by all three transports.
567
+ * MFA enrollment — confirm code, shared by all three transports.
551
568
  *
552
- * **TOTP branch.** `ctx.public.mfaEnroll.secret` holds the base32 secret and
553
- * `ctx.public.mfaEnroll.uri` the `otpauth://` URI both are produced server-side by
554
- * `setup-mfa-method` and ride the `@wf.context.pass 'public'` whitelist.
555
- * The `qrCode` field renders the `otpauth://` URI as a scannable QR image via
556
- * the `AsQrCode` component (from `@atscript/vue-aooth`, registered on
557
- * `<AsWfForm :components>`); its `@ui.form.fn.value` exposes the URI string the
558
- * component consumes. `AsQrCode` ALSO extracts the base32 secret from the URI
559
- * and renders it for manual entry (its `manualSecret` prop defaults on), so
560
- * users whose authenticator app lacks a QR scanner can still set up.
569
+ * **TOTP branch.** The scannable QR + manual base32 secret are shown on the
570
+ * PRECEDING `enroll-totp-qr` step ({@link EnrollTotpQrForm}), so this form only
571
+ * collects the 6-digit code the authenticator generates — `transportHint`
572
+ * reminds the user to enter it.
561
573
  *
562
574
  * **SMS / email branch.** Single `transportHint` paragraph shows the masked
563
575
  * recipient.
@@ -567,22 +579,9 @@ export interface EnrollAddressForm {
567
579
  @ui.form.submit.text 'Confirm'
568
580
  export interface EnrollConfirmForm {
569
581
  @ui.form.order 1
570
- @ui.form.fn.value '(_, _d, ctx) => ctx.public?.mfaEnroll?.method === "totp" ? "Add the account to your authenticator app, then enter the 6-digit code it generates." : ctx.public?.pincode?.sentTo ? "Code sent to " + ctx.public.pincode.sentTo + ". Enter it below to confirm." : "Enter the code to confirm enrollment."'
582
+ @ui.form.fn.value '(_, _d, ctx) => ctx.public?.mfaEnroll?.method === "totp" ? "Enter the 6-digit code from your authenticator app." : ctx.public?.pincode?.sentTo ? "Code sent to " + ctx.public.pincode.sentTo + ". Enter it below to confirm." : "Enter the code to confirm enrollment."'
571
583
  transportHint?: ui.paragraph
572
584
 
573
- /**
574
- * Phantom field — `otpauth://` URI rendered as a scannable QR image by the
575
- * `AsQrCode` component. `AsQrCode` also extracts the base32 secret from the
576
- * URI and shows it for manual entry (its `manualSecret` prop defaults on),
577
- * so there is no separate manual-secret field.
578
- */
579
- @ui.form.order 5
580
- @ui.form.component 'AsQrCode'
581
- @ui.form.fn.attr 'size', '() => 180'
582
- @ui.form.fn.value '(_, _d, ctx) => ctx.public?.mfaEnroll?.uri || ""'
583
- @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.method !== "totp" || !ctx.public?.mfaEnroll?.uri'
584
- qrCode: ui.paragraph
585
-
586
585
  @ui.form.order 10
587
586
  @ui.form.type 'text'
588
587
  @meta.label 'Code'
@@ -599,14 +598,130 @@ export interface EnrollConfirmForm {
599
598
  resend?: ui.action
600
599
 
601
600
  @ui.form.action 'useDifferentMethod', 'Use a different method'
602
- @ui.form.fn.hidden '(_, _d, ctx) => (ctx.public?.mfaEnroll?.availableTransports?.length ?? 0) < 2'
601
+ @ui.form.fn.hidden '(_, _d, ctx) => (ctx.public?.mfaEnroll?.availableTransports?.length ?? 0) < 2 || ctx.public?.mfaEnroll?.mode === "manage"'
603
602
  useDifferentMethod?: ui.action
604
603
 
604
+ @ui.form.action 'cancel', 'Cancel'
605
+ @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "manage"'
606
+ cancel?: ui.action
607
+
605
608
  @ui.form.action 'skip', 'Skip for now'
606
609
  @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "optional"'
607
610
  skip?: ui.action
608
611
  }
609
612
 
613
+ /**
614
+ * MFA enrollment — TOTP QR step. Shown on its OWN pause (the `enroll-totp-qr`
615
+ * step) BETWEEN method-pick and code-entry, so the user scans first and types
616
+ * the code on the next screen — instead of QR + input crowded on one form.
617
+ *
618
+ * `ctx.public.mfaEnroll.uri` carries the `otpauth://` URI (provisioned
619
+ * server-side). The `qrCode` field renders it as a scannable image via the
620
+ * `AsQrCode` component (`@atscript/vue-aooth`); `AsQrCode` also extracts the
621
+ * base32 secret from the URI and shows it for manual entry (its `manualSecret`
622
+ * prop defaults on), so users whose app lacks a scanner can still set up.
623
+ */
624
+ @meta.label 'Scan this QR code'
625
+ @meta.description 'Open your authenticator app and scan the code (or enter the key manually), then continue to enter the code it shows.'
626
+ @wf.context.pass 'public'
627
+ @ui.form.submit.text 'Continue'
628
+ export interface EnrollTotpQrForm {
629
+ @ui.form.order 5
630
+ @ui.form.component 'AsQrCode'
631
+ @ui.form.fn.attr 'size', '() => 180'
632
+ @ui.form.fn.value '(_, _d, ctx) => ctx.public?.mfaEnroll?.uri || ""'
633
+ qrCode: ui.paragraph
634
+
635
+ @ui.form.action 'useDifferentMethod', 'Use a different method'
636
+ @ui.form.fn.hidden '(_, _d, ctx) => (ctx.public?.mfaEnroll?.availableTransports?.length ?? 0) < 2 || ctx.public?.mfaEnroll?.mode === "manage"'
637
+ useDifferentMethod?: ui.action
638
+
639
+ @ui.form.action 'cancel', 'Cancel'
640
+ @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "manage"'
641
+ cancel?: ui.action
642
+
643
+ @ui.form.action 'skip', 'Skip for now'
644
+ @ui.form.fn.hidden '(_, _d, ctx) => ctx.public?.mfaEnroll?.mode !== "optional"'
645
+ skip?: ui.action
646
+ }
647
+
648
+ /**
649
+ * Manage-MFA menu — the authenticated user's hub for the standalone
650
+ * `auth/add-mfa/flow` once they have ≥1 confirmed factor (shown after the
651
+ * step-up challenge). A single radio whose value encodes both action and
652
+ * target (`add:totp` / `replace:email` / `remove:sms`):
653
+ * - **Add** options come from `ctx.public.manage.candidates` (un-enrolled).
654
+ * - **Change / Remove** options come from `ctx.public.mfa.enrolledMethods`,
655
+ * with any transport in `ctx.public.manage.locked` omitted (a handle-bound
656
+ * factor the consumer forbids changing here — `lockedNote` explains why).
657
+ *
658
+ * A zero-MFA user never sees this form — the flow routes straight to the
659
+ * enrol picker (first-time opt-in).
660
+ */
661
+ @meta.label 'Manage two-factor authentication'
662
+ @meta.description 'Add, change, or remove a verification method.'
663
+ @wf.context.pass 'public'
664
+ @ui.form.submit.text 'Continue'
665
+ export interface ManageMfaForm {
666
+ @ui.form.order 5
667
+ @ui.form.fn.value '(_, _d, ctx) => (ctx.public?.manage?.locked?.length ?? 0) > 0 ? "Some methods are also used to sign in and can’t be changed here." : ""'
668
+ @ui.form.fn.hidden '(_, _d, ctx) => (ctx.public?.manage?.locked?.length ?? 0) === 0'
669
+ lockedNote: ui.paragraph
670
+
671
+ @ui.form.order 10
672
+ @ui.form.type 'radio'
673
+ @ui.form.fn.options '(_, _d, ctx) => { const lbl = (t) => t === "totp" ? "authenticator app" : t === "sms" ? "SMS" : t === "email" ? "email" : t; const locked = ctx.public?.manage?.locked ?? []; const out = []; for (const t of (ctx.public?.manage?.candidates ?? [])) out.push({ key: "add:" + t, label: "Add " + lbl(t) }); for (const m of (ctx.public?.mfa?.enrolledMethods ?? [])) { if (locked.includes(m.kind)) continue; out.push({ key: "replace:" + m.kind, label: "Change " + lbl(m.kind) + (m.masked ? " (" + m.masked + ")" : "") }); out.push({ key: "remove:" + m.kind, label: "Remove " + lbl(m.kind) }); } return out; }'
674
+ @meta.label 'What would you like to do?'
675
+ @meta.required
676
+ operation: string
677
+
678
+ @ui.form.action 'cancel', 'Cancel'
679
+ cancel?: ui.action
680
+ }
681
+
682
+ /**
683
+ * Manage-MFA — confirm removing a factor. Fieldless apart from the explanatory
684
+ * paragraph; the primary submit ('Remove') performs the removal, 'Cancel'
685
+ * backs out. `manage-menu` has already bound the target transport on
686
+ * `ctx.addMfa.target`; the description reads it back for the user.
687
+ */
688
+ @meta.label 'Remove this method?'
689
+ @wf.context.pass 'public'
690
+ @ui.form.submit.text 'Remove'
691
+ export interface RemoveMfaConfirmForm {
692
+ @ui.form.order 1
693
+ @ui.form.fn.value '(_, _d, ctx) => { const t = ctx.public?.mfaEnroll?.method; const lbl = t === "totp" ? "your authenticator app" : t === "sms" ? "SMS codes" : t === "email" ? "email codes" : "this method"; return "Remove " + lbl + " as a two-factor method? You can set it up again later."; }'
694
+ notice: ui.paragraph
695
+
696
+ @ui.form.action 'cancel', 'Cancel'
697
+ cancel?: ui.action
698
+ }
699
+
700
+ /**
701
+ * Manage-MFA password re-auth — the step-up FALLBACK rendered when the user's
702
+ * only confirmed factor(s) are of kinds the policy no longer allows, so nothing
703
+ * is MFA-challengeable (`ctx.addMfa.stepUpMode === "password"`). A single
704
+ * current-password field; the submit verifies it via `UserService.verifyPassword`
705
+ * and 'Cancel' backs out. See `AuthWorkflow.managePasswordReauth`.
706
+ */
707
+ @meta.label 'Confirm your password'
708
+ @meta.description 'Re-enter your account password to manage your two-factor methods.'
709
+ @wf.context.pass 'public'
710
+ @ui.form.submit.text 'Verify'
711
+ export interface PasswordReauthForm {
712
+ @ui.form.order 10
713
+ @ui.form.type 'password'
714
+ @meta.label 'Password'
715
+ @ui.form.autocomplete 'current-password'
716
+ @meta.sensitive
717
+ @meta.required
718
+ @expect.minLength 1
719
+ password: string
720
+
721
+ @ui.form.action 'cancel', 'Cancel'
722
+ cancel?: ui.action
723
+ }
724
+
610
725
  /**
611
726
  * Standalone consent-bump prompt. Fires for returning users with pending
612
727
  * consents (set by `prepare-consents` from `ConsentStore.getPendingConsents`)
@@ -209,11 +209,12 @@ export declare class AskPhoneForm extends WithInlineConsentForm {
209
209
 
210
210
  /**
211
211
  * Atscript interface **EnrollPickMethodForm**
212
- * @see {@link ./forms.as:509:18}
212
+ * @see {@link ./forms.as:510:18}
213
213
  */
214
214
  export declare class EnrollPickMethodForm {
215
215
  method: string
216
216
  // skip: ui.action
217
+ // cancel: ui.action
217
218
  static __is_atscript_annotated_type: true
218
219
  static type: TAtscriptTypeObject<keyof EnrollPickMethodForm, EnrollPickMethodForm>
219
220
  static metadata: TMetadataMap<AtscriptMetadata>
@@ -226,11 +227,12 @@ export declare class EnrollPickMethodForm {
226
227
 
227
228
  /**
228
229
  * Atscript interface **EnrollAddressForm**
229
- * @see {@link ./forms.as:533:18}
230
+ * @see {@link ./forms.as:542:18}
230
231
  */
231
232
  export declare class EnrollAddressForm {
232
233
  address: string
233
234
  // skip: ui.action
235
+ // cancel: ui.action
234
236
  // useDifferentMethod: ui.action
235
237
  static __is_atscript_annotated_type: true
236
238
  static type: TAtscriptTypeObject<keyof EnrollAddressForm, EnrollAddressForm>
@@ -244,14 +246,14 @@ export declare class EnrollAddressForm {
244
246
 
245
247
  /**
246
248
  * Atscript interface **EnrollConfirmForm**
247
- * @see {@link ./forms.as:568:18}
249
+ * @see {@link ./forms.as:580:18}
248
250
  */
249
251
  export declare class EnrollConfirmForm {
250
252
  // transportHint: ui.paragraph
251
- // qrCode: ui.paragraph
252
253
  code: string
253
254
  // resend: ui.action
254
255
  // useDifferentMethod: ui.action
256
+ // cancel: ui.action
255
257
  // skip: ui.action
256
258
  static __is_atscript_annotated_type: true
257
259
  static type: TAtscriptTypeObject<keyof EnrollConfirmForm, EnrollConfirmForm>
@@ -263,9 +265,80 @@ export declare class EnrollConfirmForm {
263
265
  static toExampleData?: () => any
264
266
  }
265
267
 
268
+ /**
269
+ * Atscript interface **EnrollTotpQrForm**
270
+ * @see {@link ./forms.as:628:18}
271
+ */
272
+ export declare class EnrollTotpQrForm {
273
+ // qrCode: ui.paragraph
274
+ // useDifferentMethod: ui.action
275
+ // cancel: ui.action
276
+ // skip: ui.action
277
+ static __is_atscript_annotated_type: true
278
+ static type: TAtscriptTypeObject<keyof EnrollTotpQrForm, EnrollTotpQrForm>
279
+ static metadata: TMetadataMap<AtscriptMetadata>
280
+ static validator: (opts?: Partial<TValidatorOptions>) => Validator<typeof EnrollTotpQrForm>
281
+ /** @deprecated JSON Schema support is disabled. Calling this method will throw a runtime error. To enable, set `jsonSchema: 'lazy'` or `jsonSchema: 'bundle'` in tsPlugin options, or add `@emit.jsonSchema` annotation to individual interfaces. */
282
+ static toJsonSchema: () => any
283
+ /** @deprecated Example Data support is disabled. To enable, set `exampleData: true` in tsPlugin options. */
284
+ static toExampleData?: () => any
285
+ }
286
+
287
+ /**
288
+ * Atscript interface **ManageMfaForm**
289
+ * @see {@link ./forms.as:665:18}
290
+ */
291
+ export declare class ManageMfaForm {
292
+ // lockedNote: ui.paragraph
293
+ operation: string
294
+ // cancel: ui.action
295
+ static __is_atscript_annotated_type: true
296
+ static type: TAtscriptTypeObject<keyof ManageMfaForm, ManageMfaForm>
297
+ static metadata: TMetadataMap<AtscriptMetadata>
298
+ static validator: (opts?: Partial<TValidatorOptions>) => Validator<typeof ManageMfaForm>
299
+ /** @deprecated JSON Schema support is disabled. Calling this method will throw a runtime error. To enable, set `jsonSchema: 'lazy'` or `jsonSchema: 'bundle'` in tsPlugin options, or add `@emit.jsonSchema` annotation to individual interfaces. */
300
+ static toJsonSchema: () => any
301
+ /** @deprecated Example Data support is disabled. To enable, set `exampleData: true` in tsPlugin options. */
302
+ static toExampleData?: () => any
303
+ }
304
+
305
+ /**
306
+ * Atscript interface **RemoveMfaConfirmForm**
307
+ * @see {@link ./forms.as:691:18}
308
+ */
309
+ export declare class RemoveMfaConfirmForm {
310
+ // notice: ui.paragraph
311
+ // cancel: ui.action
312
+ static __is_atscript_annotated_type: true
313
+ static type: TAtscriptTypeObject<keyof RemoveMfaConfirmForm, RemoveMfaConfirmForm>
314
+ static metadata: TMetadataMap<AtscriptMetadata>
315
+ static validator: (opts?: Partial<TValidatorOptions>) => Validator<typeof RemoveMfaConfirmForm>
316
+ /** @deprecated JSON Schema support is disabled. Calling this method will throw a runtime error. To enable, set `jsonSchema: 'lazy'` or `jsonSchema: 'bundle'` in tsPlugin options, or add `@emit.jsonSchema` annotation to individual interfaces. */
317
+ static toJsonSchema: () => any
318
+ /** @deprecated Example Data support is disabled. To enable, set `exampleData: true` in tsPlugin options. */
319
+ static toExampleData?: () => any
320
+ }
321
+
322
+ /**
323
+ * Atscript interface **PasswordReauthForm**
324
+ * @see {@link ./forms.as:711:18}
325
+ */
326
+ export declare class PasswordReauthForm {
327
+ password: string
328
+ // cancel: ui.action
329
+ static __is_atscript_annotated_type: true
330
+ static type: TAtscriptTypeObject<keyof PasswordReauthForm, PasswordReauthForm>
331
+ static metadata: TMetadataMap<AtscriptMetadata>
332
+ static validator: (opts?: Partial<TValidatorOptions>) => Validator<typeof PasswordReauthForm>
333
+ /** @deprecated JSON Schema support is disabled. Calling this method will throw a runtime error. To enable, set `jsonSchema: 'lazy'` or `jsonSchema: 'bundle'` in tsPlugin options, or add `@emit.jsonSchema` annotation to individual interfaces. */
334
+ static toJsonSchema: () => any
335
+ /** @deprecated Example Data support is disabled. To enable, set `exampleData: true` in tsPlugin options. */
336
+ static toExampleData?: () => any
337
+ }
338
+
266
339
  /**
267
340
  * Atscript interface **TermsBumpForm**
268
- * @see {@link ./forms.as:622:18}
341
+ * @see {@link ./forms.as:737:18}
269
342
  */
270
343
  export declare class TermsBumpForm extends WithInlineConsentForm {
271
344
  static __is_atscript_annotated_type: true
@@ -280,7 +353,7 @@ export declare class TermsBumpForm extends WithInlineConsentForm {
280
353
 
281
354
  /**
282
355
  * Atscript interface **ConcurrencyLimitForm**
283
- * @see {@link ./forms.as:635:18}
356
+ * @see {@link ./forms.as:750:18}
284
357
  */
285
358
  export declare class ConcurrencyLimitForm {
286
359
  static __is_atscript_annotated_type: true
@@ -295,7 +368,7 @@ export declare class ConcurrencyLimitForm {
295
368
 
296
369
  /**
297
370
  * Atscript interface **MagicLinkRequestForm**
298
- * @see {@link ./forms.as:645:18}
371
+ * @see {@link ./forms.as:760:18}
299
372
  */
300
373
  export declare class MagicLinkRequestForm {
301
374
  identifier: string
@@ -311,7 +384,7 @@ export declare class MagicLinkRequestForm {
311
384
 
312
385
  /**
313
386
  * Atscript interface **RecoveryModeSelectForm**
314
- * @see {@link ./forms.as:660:18}
387
+ * @see {@link ./forms.as:775:18}
315
388
  */
316
389
  export declare class RecoveryModeSelectForm {
317
390
  mode: string
@@ -327,7 +400,7 @@ export declare class RecoveryModeSelectForm {
327
400
 
328
401
  /**
329
402
  * Atscript interface **RecoveryFactorForm**
330
- * @see {@link ./forms.as:683:18}
403
+ * @see {@link ./forms.as:798:18}
331
404
  */
332
405
  export declare class RecoveryFactorForm {
333
406
  factor: string
@@ -344,7 +417,7 @@ export declare class RecoveryFactorForm {
344
417
 
345
418
  /**
346
419
  * Atscript interface **ChangePasswordForm**
347
- * @see {@link ./forms.as:717:18}
420
+ * @see {@link ./forms.as:832:18}
348
421
  */
349
422
  export declare class ChangePasswordForm {
350
423
  // intro: ui.paragraph
@@ -364,7 +437,7 @@ export declare class ChangePasswordForm {
364
437
 
365
438
  /**
366
439
  * Atscript interface **ProveControlForm**
367
- * @see {@link ./forms.as:782:18}
440
+ * @see {@link ./forms.as:897:18}
368
441
  */
369
442
  export declare class ProveControlForm {
370
443
  // intro: ui.paragraph
@@ -382,7 +455,7 @@ export declare class ProveControlForm {
382
455
 
383
456
  /**
384
457
  * Atscript interface **ProveControlOtpForm**
385
- * @see {@link ./forms.as:817:18}
458
+ * @see {@link ./forms.as:932:18}
386
459
  */
387
460
  export declare class ProveControlOtpForm {
388
461
  // intro: ui.paragraph