import { Keys, Extends, PropSelector, } from "@onebro/oba-common"; import { Model, ModelSignature, ModelBaseTypeSig, Stages, ModelMiscReference, } from "@onebro/oba-mongoose"; import {DocStatuses,LocationObj} from "./00-common"; export type FinancialDocItemProps = { _type_:"financial-document-item"; domain:string; slug:string; amt:number; reason:string; parent:ModelMiscReference<"FinancialDoc">; kind:string; type:FinancialDocItemType; method:FinancialDocItemMethodType; info:FinancialDocItemInfo; loc:LocationObj; published:Date; }; export type FinancialDocItemConfigKeys = |"domain"|"kind"|"type"|"amt"|"reason"|"parent"; export type FinancialDocItemConfigOptKeys = |"method"|"info"|"loc"|"slug"; export type FinancialDocItemInstanceKeys = FinancialDocItemConfigKeys|FinancialDocItemConfigOptKeys; export type FinancialDocItemJsonKeys = FinancialDocItemInstanceKeys|"_type_"|"published"; export type FinancialDocItemPreviewKeys = |"slug"|"domain"|"type"|"kind"|"amt"|"method"|"published"; export type FinancialDocItemSelfRefs = {}; export type FinancialDocItemMethods = {}; export type FinancialDocItemPropKeys = Keys>; export type FinancialDocItemPropSelector< t extends Stages, k extends FinancialDocItemPropKeys = undefined, j extends FinancialDocItemPropKeys = undefined> = PropSelector,k,j>; export type FinancialDocItemSignature = ModelSignature< FinancialDocItemPropSelector<"C",FinancialDocItemConfigKeys,FinancialDocItemConfigOptKeys>, FinancialDocItemPropSelector<"I",FinancialDocItemInstanceKeys> & FinancialDocItemMethods, FinancialDocItemPropSelector<"J",FinancialDocItemJsonKeys>, FinancialDocItemPropSelector<"J",FinancialDocItemPreviewKeys>, DocStatuses, FinancialDocItemSelfRefs>; export type FinancialDocItem = Model; export type FinancialDocItemAsProp = ModelBaseTypeSig< Extends<[IsArr],[true|1],string[],string>, Extends<[IsArr],[true|1],FinancialDocItem["instance"][],FinancialDocItem["instance"]>, Extends<[IsArr],[true|1],FinancialDocItem["preview"][],FinancialDocItem["preview"]>>; export type FinancialDocItemType = | "credit"| "debit"| "revenue"| "expense"| "asset"| "liability"| "withdrawl"| "deposit"; export type FinancialDocItemMethodType = | "VISA"| "MC"| "DISC"| "AMEX"| "GOOGLEPAY"| "APPLEPAY"| "PAYPAL"| "ACH"| "TRANSFER"| "NA"; export type FinancialDocItemInfo = Partial<{ realized:boolean; recurring:boolean; fiscalYr:number; dueDate:Date; order:string; institution:any; confirmation:string; viaStripe:boolean; lastFour:string; }>;