import type { BoundingBox, DatasetStatus, PaginatedResponse, PaginationParams } from './common.js';

/**
 * Fares dataset information
 */
export interface Fares {
  /** Dataset ID */
  id: number;
  /** Creation timestamp */
  created: string;
  /** Last modified timestamp */
  modified: string;
  /** Operator name */
  operatorName: string;
  /** National Operator Codes */
  noc: string[];
  /** Dataset name */
  name: string;
  /** Dataset description */
  description: string;
  /** Comment about the dataset */
  comment: string;
  /** Dataset status */
  status: DatasetStatus;
  /** Download URL */
  url: string;
  /** File extension */
  extension: string;
  /** Service start date */
  startDate: string;
  /** Service end date */
  endDate: string;
  /** Number of lines in the dataset */
  numOfLines: number;
  /** Number of fare zones */
  numOfFareZones: number;
  /** Number of sales offer packages */
  numOfSalesOfferPackages: number;
  /** Number of fare products */
  numOfFareProducts: number;
  /** Number of user types */
  numOfUserTypes: number;
}

/**
 * Response structure for fares queries
 */
export type FaresResponse = PaginatedResponse<Fares>;

/**
 * Parameters for searching fares
 */
export interface FaresSearchParams extends PaginationParams {
  /** National Operator Codes to filter by */
  noc?: string[];
  /** Dataset status to filter by */
  status?: DatasetStatus;
  /** Geographic bounding box to filter by */
  boundingBox?: BoundingBox;
}
