/** Mirrors StaffDto. */ export interface StaffMember { staffId: string userId: string userName?: string | null email?: string | null phoneNumber?: string | null clientId: string clientName?: string | null gymRoleId?: string | null gymRoleName?: string | null staffPosition?: string | null department?: string | null hireDate: string isActive: boolean createdAt: string fingerprintId?: number | null fingerprintName?: string | null accessProfileId?: number | null accessNumber?: string | null accessProvisionStatus?: "NotConfigured" | "NoDevice" | "Pending" | "Synced" | "Failed" actualAccessState?: "Unknown" | "Enabled" | "Disabled" | "Mixed" desiredAccessState?: "Enabled" | "Disabled" fingerprintCount?: number accessLastError?: string | null } export interface StaffInput { userName: string email: string phoneNumber: string staffPosition?: string department?: string /** "yyyy-MM-dd" — create only. */ hireDate?: string /** Create only. Left unset, the new staff member has no dashboard access until a role * is assigned later via Roles & Permissions. */ gymRoleId?: string } export type StaffRateType = "Monthly" | "Hourly" /** Mirrors StaffPayRateDto. */ export interface StaffPayRate { id: string rateType: StaffRateType amount: number effectiveFrom: string } export interface UpsertStaffPayRateInput { rateType: StaffRateType amount: number } /** Mirrors StaffPaymentDto. */ export interface StaffPayment { id: string amount: number note?: string | null paidAt: string } export interface RecordStaffPaymentInput { amount: number note?: string }