export type WorkspaceType = 'standard' | 'rescue'; export type WorkspaceRole = 'owner' | 'assistant' | 'caregiver' | 'viewer'; export type BillingPlan = 'rescue_free' | 'household_basic' | 'household_plus' | 'household_macaw'; export type BillingInterval = 'monthly' | 'yearly'; export type SubscriptionStatus = 'active' | 'trialing' | 'past_due' | 'canceled' | 'unpaid' | 'none'; export type RescueVerificationStatus = 'not_required' | 'pending' | 'approved' | 'rejected'; export type ProviderKey = 'google' | 'microsoft' | 'apple'; export type IntegrationTokenScope = 'read_only' | 'read_write'; export type BirdGender = 'unknown' | 'male' | 'female'; export type UserRow = { id: string; email: string; password_hash: string | null; name: string; created_at: string; }; export type WorkspaceRow = { id: number; name: string; workspace_type: WorkspaceType; billing_email: string | null; billing_plan: BillingPlan; billing_interval: BillingInterval; subscription_status: SubscriptionStatus; stripe_customer_id: string | null; stripe_subscription_id: string | null; rescue_verification_status: RescueVerificationStatus; created_at: string; updated_at: string; }; export type WorkspaceMemberRow = { id: string; workspace_id: number; user_id: string | null; invite_email: string; name: string; role: WorkspaceRole; accepted_at: string | null; created_at: string; }; export type AuthSessionRow = { id: string; user_id: string; active_workspace_id: number; token_hash: string; expires_at: string; created_at: string; }; export type AuthAccountRow = { id: string; user_id: string; provider_key: ProviderKey; provider_subject: string; provider_email: string | null; created_at: string; }; export type OAuthStateRow = { id: string; provider_key: ProviderKey; code_verifier: string; redirect_to: string; expires_at: string; }; export type MagicLinkTokenRow = { id: string; email: string; name: string | null; token_hash: string; redirect_to: string; expires_at: string; created_at: string; }; export type IntegrationTokenRow = { id: string; user_id: string; workspace_id: number; name: string; token_hash: string; token_prefix: string; scope: IntegrationTokenScope; last_used_at: string | null; expires_at: string | null; revoked_at: string | null; created_at: string; }; export type BirdRow = { id: string; workspace_id: number; name: string; tag_id: string | null; species: string; motivators: string | null; demotivators: string | null; favorite_snack: string | null; gender: BirdGender; date_of_birth: string | null; gotcha_day: string | null; chart_color: string; photo_data_url: string | null; notify_on_dob: boolean; notify_on_gotcha_day: boolean; memorialized_at: string | null; memorialized_on: string | null; memorial_note: string | null; notify_on_memorial_day: boolean; created_at: string; latest_weight_grams: string | null; latest_recorded_on: string | null; }; export type LostBirdMatchRow = BirdRow & { workspace_name: string; workspace_billing_email: string | null; }; export type BirdMilestoneReminderType = 'hatch_day' | 'gotcha_day' | 'memorial_day'; export type BirdMilestoneReminderCandidateRow = BirdRow & { workspace_name: string; reminder_type: BirdMilestoneReminderType; reminder_date: string; reminder_year: number; }; export type BirdMilestoneReminderDeliveryRow = { id: string; bird_id: string; workspace_id: number; reminder_type: BirdMilestoneReminderType; reminder_year: number; delivered_on: string; created_at: string; }; export type PendingBirdTransferRow = { id: string; bird_id: string; source_workspace_id: number; destination_owner_email: string; requested_by_user_id: string; completed_at: string | null; completed_workspace_id: number | null; last_error: string | null; created_at: string; }; export type WeightRow = { id: string; bird_id: string; weight_grams: string; recorded_on: string; notes: string | null; }; export type VetVisitRow = { id: string; bird_id: string; visited_on: string; clinic_name: string; reason: string; notes: string | null; }; export type MedicationRow = { id: string; bird_id: string; name: string; dosage: string; frequency: string; dose_schedule: MedicationDoseScheduleItem[]; route: string | null; start_date: string; end_date: string | null; notes: string | null; }; export type MedicationDoseScheduleItem = { key: string; label: string; time: string; }; export type MedicationAdministrationRow = { id: string; medication_id: string; bird_id: string; administered_on: string; administration_slot: string; status: 'administered' | 'missed'; notes: string | null; created_by_user_id: string | null; created_at: string; }; export type AuthContext = { user: UserRow; session: AuthSessionRow; workspace: WorkspaceRow; membership: WorkspaceMemberRow; token: string; authType: 'session' | 'integration_token'; integrationToken?: IntegrationTokenRow; };