/**
 * @file SearchParamTypes.ts
 * Pure type definitions for search parameters
 * No logic, just types
 */

export interface SearchParamSpec {
  name: string;
  description?: string;
  defaultValue?: string | null;
}

export type SearchParamMap = Record<string, SearchParamSpec>;

// Auth page search params
export interface AuthSearchParams {
  returnTo: SearchParamSpec;
  token: SearchParamSpec;
  email: SearchParamSpec;
  error: SearchParamSpec;
  message: SearchParamSpec;
}

// Sponsor campaign search params
export interface SponsorCampaignSearchParams {
  type: SearchParamSpec;
  campaignId: SearchParamSpec;
}

// Pagination search params
export interface PaginationSearchParams {
  page: SearchParamSpec;
  limit: SearchParamSpec;
  offset: SearchParamSpec;
}

// Sorting search params
export interface SortingSearchParams {
  sortBy: SearchParamSpec;
  order: SearchParamSpec;
}

// Generic filter params
export interface FilterSearchParams {
  status: SearchParamSpec;
  role: SearchParamSpec;
  tier: SearchParamSpec;
}
