import { Keys, Extends, PropSelector, SpecialType, Settings, InfoMap, Info, Digit } from "@onebro/oba-common"; import { Model, ModelSignature, ModelBaseTypeSig, Stages, StageGuard, IsObjectId } from "@onebro/oba-mongoose"; import { UserStatuses, UserRoles } from "./00-common"; export declare type AuthActions = { A1: "registered"; A2: "loggedIn"; A3: "loggedOut"; A4: "verified"; A5: "reset"; }; export declare const AuthActions: AuthActions; export declare type AuthIdProps = SpecialType, "role"> & { email: string; username: string; role: string; scopes: string[]; next: string; meta: InfoMap>; }; export declare type AuthPin = `${Digit}${Digit}${Digit}${Digit}`; export declare type AuthCredsVirtuals = { device: string; }; export declare type AuthCredsProps = AuthCredsVirtuals & { pin: AuthPin; reset: string | null; verification: string | null; attempts: number | null; devices: string[]; device: string; }; export declare type UserAppSettings = Partial<{ canActivate: boolean; canShare: boolean; acceptInvites: boolean; sendInvites: boolean; createSnippets: boolean; maxSessions: number; }>; export declare type UserAcctPermissions = { p1: "cookies"; p2: "location"; p3: "gallery"; p4: "camera"; p5: "video"; p6: "files"; }; export declare const UserAcctPermissions: UserAcctPermissions; export declare type UserAcctVirtuals = { age: number | null; fullname: string; memberSince: Date; }; export declare type UserAcctProps = AuthIdProps & AuthCredsProps & UserAcctVirtuals & { _type_: "user-acct"; name: { first: string; last: string; }; phn: string; dob: string; hometown: string; settings: Settings & Info<"data">; permissions: InfoMap>; next: string; }; export declare type UserAcctConfigKeys = "email" | "role" | "devices" | "settings"; export declare type UserAcctConfigOptKeys = "username" | "scopes" | "name" | "phn" | "hometown" | "permissions" | "dob" | "pin" | "verification" | "reset" | "meta"; export declare type UserAcctInstanceKeys = UserAcctConfigKeys | UserAcctConfigOptKeys | "fullname" | "age" | "memberSince" | "attempts" | "device" | "next"; export declare type UserAcctJsonKeys = UserAcctInstanceKeys | "_type_"; export declare type UserAcctPreviewKeys = "meta" | "email" | "username" | "role" | "fullname" | "age" | "memberSince" | "phn" | "hometown"; export declare type UserAcctSelfRefs = {}; export declare type UserAcctMethods = { jsonAuth: (auth?: boolean) => UserAcct["json"]; }; export declare type UserAcctPropKeys = Keys>; export declare type UserAcctPropSelector = undefined, j extends UserAcctPropKeys = undefined> = PropSelector, k, j>; export declare type UserAcctSignature = ModelSignature, UserAcctPropSelector<"I", UserAcctInstanceKeys> & UserAcctMethods, UserAcctPropSelector<"J", UserAcctJsonKeys>, UserAcctPropSelector<"J", UserAcctPreviewKeys>, UserStatuses, UserAcctSelfRefs>; export declare type UserAcct = Model; export declare type UserAcctAsProp = ModelBaseTypeSig, Extends<[IsArr], [true | 1], UserAcct["instance"][], UserAcct["instance"]>, Extends<[IsArr], [true | 1], Extends<[IsUser], [true | 1], UserAcct["json"][], UserAcct["preview"][]>, Extends<[IsUser], [true | 1], UserAcct["json"], UserAcct["preview"]>>>;