import type { Ghost } from './classes.ghost.js'; export interface IMember { id: string; uuid: string; email: string; name?: string; note?: string; geolocation?: string; enable_comment_notifications?: boolean; subscribed?: boolean; email_count?: number; email_opened_count?: number; email_open_rate?: number; status?: string; created_at: string; updated_at: string; labels?: Array<{ id: string; name: string; slug: string; }>; subscriptions?: any[]; avatar_image?: string; comped?: boolean; email_suppression?: { suppressed: boolean; info?: string; }; } export class Member { public ghostInstanceRef: Ghost; public memberData: IMember; constructor(ghostInstanceRefArg: Ghost, memberData: IMember) { this.ghostInstanceRef = ghostInstanceRefArg; this.memberData = memberData; } public getId(): string { return this.memberData.id; } public getEmail(): string { return this.memberData.email; } public getName(): string | undefined { return this.memberData.name; } public getStatus(): string | undefined { return this.memberData.status; } public getLabels(): Array<{ id: string; name: string; slug: string }> | undefined { return this.memberData.labels; } public toJson(): IMember { return this.memberData; } public async update(memberData: Partial): Promise { try { const updatedMemberData = await this.ghostInstanceRef.adminApi.members.edit({ ...memberData, id: this.getId() }); this.memberData = updatedMemberData; return this; } catch (error) { throw error; } } public async delete(): Promise { try { await this.ghostInstanceRef.adminApi.members.delete({ id: this.getId() }); } catch (error) { throw error; } } }