/**
 * @ai-summary Type definitions for Community Gas Stations feature
 */

/** Status for community station submissions */
export type CommunityStationStatus = 'pending' | 'approved' | 'rejected' | 'removed';

/** Octane submission type for radio button selection */
export type OctaneSubmissionType =
  | 'has_93_with_ethanol'
  | 'has_93_without_ethanol'
  | 'no_longer_has_93';

export interface CommunityStation {
  id: string;
  submittedBy: string;
  name: string;
  address: string;
  city?: string;
  state?: string;
  zipCode?: string;
  latitude: number;
  longitude: number;
  brand?: string;
  has93Octane: boolean;
  has93OctaneEthanolFree: boolean;
  price93?: number;
  notes?: string;
  status: CommunityStationStatus;
  reviewedBy?: string;
  reviewedAt?: string;
  rejectionReason?: string;
  removalReportCount?: number;
  removedAt?: string;
  createdAt: string;
  updatedAt: string;
}

export interface SubmitStationData {
  name: string;
  address: string;
  city?: string;
  state?: string;
  zipCode?: string;
  latitude: number;
  longitude: number;
  brand?: string;
  has93Octane: boolean;
  has93OctaneEthanolFree: boolean;
  price93?: number;
  notes?: string;
}

export interface ReviewDecision {
  status: 'approved' | 'rejected';
  rejectionReason?: string;
}

export interface CommunityStationsListResponse {
  stations: CommunityStation[];
  total: number;
  page: number;
  limit: number;
}

/** Bounding box for map-based station queries */
export interface StationBounds {
  north: number;
  south: number;
  east: number;
  west: number;
}

/** Response from submitting a removal report */
export interface RemovalReportResponse {
  reportCount: number;
  stationRemoved: boolean;
}
