import { RawUser } from '../raw/RawUser.ts';import { toApiCasing, fromApiCasing } from '../internals/casing.ts';import { userMethods }Â from '../extensions/userMethods.ts';import { UserId, ImageData, UserFlag, parseUserFlagInteger, unparseUserFlagInteger,} from '../internals/type-aliases.ts';import { PremiumType } from '../enum/PremiumType.ts';
export interface User extends ReturnType<typeof userMethods> { id: UserId; username: string; discriminator: string; avatar: ImageData; bot?: boolean; system?: boolean; mfaEnabled?: boolean; locale?: string; verified?: boolean; email?: string; flags?: UserFlag[]; premiumType?: PremiumType; publicFlags?: UserFlag[]; }
export function wrapUser(x: RawUser): User { return { ...fromApiCasing(x), flags: x.flags && parseUserFlagInteger(x.flags), publicFlags: x.public_flags && parseUserFlagInteger(x.public_flags), ...userMethods(x), };}
export function unwrapUser(x: User): RawUser { return { ...toApiCasing(x), flags: x.flags && unparseUserFlagInteger(x.flags), public_flags: x.publicFlags && unparseUserFlagInteger(x.publicFlags), };}
export const wrapUserPartial = wrapUser as (x: Partial<RawUser>) => Partial<User>;
export const unwrapUserPartial = unwrapUser as (x: Partial<User>) => Partial<RawUser>;