import { Keys, Extends, PropSelector, SpecialType, Settings, InfoMap, Info,Digit, } from "@onebro/oba-common"; import { Model, ModelSignature, ModelBaseTypeSig, Stages, StageGuard, StageGuardAB, IsObjectId, } from "@onebro/oba-mongoose"; import { UserStatuses, UserRoles, LocationObj } from "./00-common"; import { VendorItemAsProp } from "./04-vendor-item"; export type VendorAppSettings = Partial<{ canActivate:boolean; canShare:boolean; acceptInvites:boolean; sendInvites:boolean; createSnippets:boolean; maxSessions:number; }>; export type VendorVirtuals = { memberSince:Date; }; export type VendorProps = VendorVirtuals & { _type_:"vendor"; name:string; email:string; phn:string; addr:string; settings:Settings & Info<"data">; items:VendorItemAsProp[t]; }; export type VendorConfigKeys = |"name"|"phn"|"email"|"addr"|"settings"; export type VendorConfigOptKeys = |"items"; export type VendorInstanceKeys = VendorConfigKeys|VendorConfigOptKeys|"memberSince"; export type VendorJsonKeys = VendorInstanceKeys|"_type_"; export type VendorPreviewKeys = |"name"|"email"|"phn"|"addr"|"items"; export type VendorSelfRefs = {}; export type VendorMethods = {jsonAuth:(auth?:boolean) => Vendor["json"];}; export type VendorPropKeys = Keys>; export type VendorPropSelector< t extends Stages, k extends VendorPropKeys = undefined, j extends VendorPropKeys = undefined> = PropSelector,k,j>; export type VendorSignature = ModelSignature< VendorPropSelector<"C",VendorConfigKeys,VendorConfigOptKeys>, VendorPropSelector<"I",VendorInstanceKeys> & VendorMethods, VendorPropSelector<"J",VendorJsonKeys>, VendorPropSelector<"J",VendorPreviewKeys>, UserStatuses, VendorSelfRefs>; export type Vendor = Model; export type VendorAsProp = ModelBaseTypeSig< Extends<[IsArr],[true|1],IsObjectId[],IsObjectId>, Extends<[IsArr],[true|1],Vendor["instance"][],Vendor["instance"]>, Extends<[IsArr],[true|1], Extends<[IsUser],[true|1],Vendor["json"][],Vendor["preview"][]>, Extends<[IsUser],[true|1],Vendor["json"],Vendor["preview"]>>>;