All files / src/types accounts.types.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34                                                                   
type UserTypes = "user" | "merchant";
type MerchantTypes = "acquirer" | "enterprise" | "submerchant";
 
type TUserCommons = {
  id: number;
  userAccID: number;
  name: string;
  userRole: string;
  createdAt: number;
  updatedAt: number;
};
 
interface TUserRaw extends TUserCommons {
  type: Extract<UserTypes, "user">;
  userEmail: string;
}
 
interface TMerchantRaw extends TUserCommons {
  type: Extract<UserTypes, "merchant">;
  merchType: MerchantTypes;
  avatarURL: string;
}
 
type Maps = {
  user: TUserRaw;
  merchant: TMerchantRaw;
};
 
type UserMapper<T extends UserTypes> = Maps[T];
 
export type TAccounts<T extends UserTypes = UserTypes> = T extends UserTypes
  ? UserMapper<T>
  : never;