import { Schema } from "mongoose"; import { EnumMap, IJson, IDocument, IObject, IInstance, IModel, IAction, IActionTypes, ISettings, MiscInfo } from "@onebro/oba-common"; export declare enum SwiftTradersUserProfileStatuses { N = "New", S = "Saved", Y = "Sent", Z = "Seen/Read", A = "Accepted", D = "Declined", R = "Revised", E = "Expired", C = "Cancelled" } export declare type SwiftTradersUserProfileStatus = keyof typeof SwiftTradersUserProfileStatuses; export declare enum SwiftTradersRoles { G = "GUEST", U = "USER", A = "ADMIN", S = "SUPER", SA = "SYSADMIN" } export declare type SwiftTradersRole = keyof typeof SwiftTradersRoles; export declare type SwiftTradersExperienceLevel = "novice" | "beginner" | "intermediate" | "advanced" | "expert"; export declare type SwiftTradersUserProfileConfig = { username: string; role: SwiftTradersRole; settings: ISettings<"location" | "cookies">; img?: string; }; export declare type SwiftTradersUserProfileType = IObject & SwiftTradersUserProfileConfig & { bio: string; motto: string; socials?: MiscInfo; stats?: MiscInfo; expYrs?: number; expLvl?: SwiftTradersExperienceLevel; rating?: number; followers?: SwiftTradersUserProfile[]; following?: SwiftTradersUserProfile[]; }; export interface SwiftTradersUserProfileDocument extends IDocument, SwiftTradersUserProfileType { lang: string; } export interface SwiftTradersUserProfile extends IInstance, SwiftTradersUserProfileDocument { following: SwiftTradersUserProfile[]; followers: SwiftTradersUserProfile[]; preview(): SwiftTradersUserProfilePreview; follow(o: any): Promise; unfollow(o: any): Promise; rate(o: any): Promise; invite(o: any): Promise; respond(o: any): Promise; } export interface SwiftTradersUserProfileModel extends IModel { } export declare type SwiftTradersUSerProfilePublicKeys = "username" | "bio" | "motto" | "expYrs" | "expLvl" | "rating" | "settings" | "img" | "socials" | "lang"; export declare type SwiftTradersUSerProfilePublicData = Pick; export declare type SwiftTradersUserProfilePreview = Pick & { role: SwiftTradersRoles; }; export declare type SwiftTradersUserProfileJson = IJson & SwiftTradersUSerProfilePublicData & { role: SwiftTradersRoles; memberSince: Date; followers: SwiftTradersUserProfilePreview[]; following: SwiftTradersUserProfilePreview[]; }; export declare type SwiftTradersUserProfileModelMap = { SwiftTradersUserProfile: SwiftTradersUserProfileModel; }; export declare type SwiftTradersUserProfileInstanceMap = { profile: SwiftTradersUserProfile; }; export declare type SwiftTradersUserProfileSchemaMap = { profile: Schema; }; export declare type SwiftTradersUserProfileActionTypes = IActionTypes | "fetchByUsername$"; export declare type SwiftTradersUserProfileActions = EnumMap; export declare type SwiftTradersUserProfileUpdateFollowersOrFollowing = Partial<{ addFollowers?: string[]; removeFollowers?: string[]; addFollowing?: string[]; removeFollowing?: string[]; }>;