/**
 * URL Builder MCP Types
 *
 * Types for URL construction following project-specific rules
 */

export interface UrlParams {
  checkIn: string; // YYYY-MM-DD (required)
  checkOut: string; // YYYY-MM-DD (required)
  adults?: number; // Number of adults (optional, default: 2)
  children?: number; // Number of children (optional, default: 0)
  roomType?: string; // Room type name (optional) - e.g., 'garden-deluxe', 'standard', 'suite'
  guestName?: string; // Guest name (optional)
  guestEmail?: string; // Guest email (optional)
  guestPhone?: string; // Guest phone (optional)
}

export interface BookingUrlParams extends UrlParams {
  guestName: string; // Guest name (required for booking URLs)
  guestPhone: string; // Guest phone (required for booking URLs)
}

export interface ValidationResult {
  valid: boolean;
  errors: string[];
}

export interface UrlBuilderConfig {
  /** Base domain/URL for all URL generation. Replaces both BOOKING_URL_BASE and BASE_DOMAIN */
  bookingUrlBase: string;
  /** Default currency for booking URLs */
  defaultCurrency: string;
  /** Base domain for complete URLs (same as bookingUrlBase for consistency) */
  baseDomain: string;
}

export interface UtmParams {
  utm_source?: string; // Traffic source (e.g., 'claude-desktop', 'mcp-server')
  utm_medium?: string; // Marketing medium (e.g., 'ai-assistant', 'mcp')
  utm_campaign?: string; // Campaign name (e.g., 'url-builder-mcp')
  utm_term?: string; // Paid search keywords (optional)
  utm_content?: string; // Content differentiation (optional)
}

export interface UrlOptions {
  useBaseDomain?: boolean;
  addUtmTracking?: boolean;
  customUtm?: Partial<UtmParams>;
}
