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 { UserAcctAsProp } from "./01-user-acct"; import { FinancialDocItemAsProp } from "./06-fin-doc-item"; export type FinancialDocVirtuals = { published:Date; }; export type FinancialDocProps = FinancialDocVirtuals & { _type_:"financial-document"; name:string; type:FinancialDocType; yr:`${"20"}${Digit}${Digit}`; items:FinancialDocItemAsProp[t]; owner:UserAcctAsProp[t]; }; export type FinancialDocConfigKeys = |"owner"|"name"|"type"|"yr"; export type FinancialDocConfigOptKeys = |"items"; export type FinancialDocInstanceKeys = FinancialDocConfigKeys|FinancialDocConfigOptKeys|"published"; export type FinancialDocJsonKeys = FinancialDocInstanceKeys|"_type_"; export type FinancialDocPreviewKeys = Extract; export type FinancialDocSelfRefs = {}; export type FinancialDocMethods = {jsonAuth:(auth?:boolean) => FinancialDoc["json"];}; export type FinancialDocPropKeys = Keys>; export type FinancialDocPropSelector< t extends Stages, k extends FinancialDocPropKeys = undefined, j extends FinancialDocPropKeys = undefined> = PropSelector,k,j>; export type FinancialDocSignature = ModelSignature< FinancialDocPropSelector<"C",FinancialDocConfigKeys,FinancialDocConfigOptKeys>, FinancialDocPropSelector<"I",FinancialDocInstanceKeys> & FinancialDocMethods, FinancialDocPropSelector<"J",FinancialDocJsonKeys>, FinancialDocPropSelector<"J",FinancialDocPreviewKeys>, UserStatuses, FinancialDocSelfRefs>; export type FinancialDoc = Model; export type FinancialDocAsProp = ModelBaseTypeSig< Extends<[IsArr],[true|1],IsObjectId[],IsObjectId>, Extends<[IsArr],[true|1],FinancialDoc["instance"][],FinancialDoc["instance"]>, Extends<[IsArr],[true|1], Extends<[IsUser],[true|1],FinancialDoc["json"][],FinancialDoc["preview"][]>, Extends<[IsUser],[true|1],FinancialDoc["json"],FinancialDoc["preview"]>>>; export type FinancialDocType = | "banking"| "budget"| "bal-sheet"| "income-stmt"| "cash-flow"| "ledger"| "invoice"| "receipt";