export type User = {name:string, desk:Set}; export type Role = {name:string, user:User[]}; export type Desk = {name:string, need:Part[], time:number[], make:Part[], pass:Map, mode:string, role:Role[]}; export type Pass = {name:string, path:string, live:boolean, load:()=>Promise, dump:()=>void}; export type Part = {name:string, pass:Mapvoid}>, need:Desk[], make:Desk[]}; export type Work = [time:number, data:string, user:User]; export type Flag = {need:number[], make:number[]} export type GraphBuilder= < Users extends Record, Roles extends Record]>, Parts extends Record, Desks extends Record, mode:"all"|"one", need:Partial>, ...make:Array]>, > ( params:{ meta?:{name:string}, user:Users, role:Roles, part:Parts, desk:Desks, pass:Record, }, folderName:string ) =>GraphParts export type GraphParts = { Desk:Record, Part:Record, User:Record, Role:Record, Pass:Record } export type MassDscription= ( params:Record[0]> ) =>()=>Record export type UserPassFile = Record> export type Scanner =(desk:Desk, pass:Pass)=>void;