export interface Account {
  id: string
  accountNumber: string | null
  name: string
  primaryMemberId: string | null
  email: string | null
  phone: string | null
  address: {
    street?: string
    city?: string
    state?: string
    zip?: string
  } | null
  billingMode: 'consolidated' | 'split'
  notes: string | null
  isActive: boolean
  legacyId: string | null
  legacySource: string | null
  migratedAt: string | null
  createdAt: string
  updatedAt: string
}

export interface Member {
  id: string
  accountId: string
  memberNumber: string | null
  firstName: string
  lastName: string
  dateOfBirth: string | null
  isMinor: boolean
  email: string | null
  phone: string | null
  notes: string | null
  legacyId: string | null
  createdAt: string
  updatedAt: string
}

export interface ProcessorLink {
  id: string
  accountId: string
  processor: 'stripe' | 'global_payments'
  processorCustomerId: string
  isActive: boolean
  createdAt: string
}

export interface PaymentMethod {
  id: string
  accountId: string
  processor: 'stripe' | 'global_payments'
  processorPaymentMethodId: string
  cardBrand: string | null
  lastFour: string | null
  expMonth: number | null
  expYear: number | null
  isDefault: boolean
  requiresUpdate: boolean
  createdAt: string
}

export interface MemberIdentifier {
  id: string
  memberId: string
  type: 'drivers_license' | 'passport' | 'school_id'
  label: string | null
  value: string
  issuingAuthority: string | null
  issuedDate: string | null
  expiresAt: string | null
  imageFrontFileId: string | null
  imageBackFileId: string | null
  notes: string | null
  isPrimary: boolean
  createdAt: string
  updatedAt: string
}

export interface TaxExemption {
  id: string
  accountId: string
  status: 'none' | 'pending' | 'approved'
  certificateNumber: string
  certificateType: string | null
  issuingState: string | null
  expiresAt: string | null
  approvedBy: string | null
  approvedAt: string | null
  revokedBy: string | null
  revokedAt: string | null
  revokedReason: string | null
  notes: string | null
  createdAt: string
  updatedAt: string
}
