
import { Trip, TripStep, Comment, Document, StepValidationStatus } from "../../types";

export interface TripContextType {
  // Trips related
  trips: Trip[];
  getUserTrips: () => Trip[];
  getTrip: (tripId: string) => Trip | null;
  createTrip: (tripData: Omit<Trip, "id" | "steps" | "documents">) => Promise<Trip | null>;
  updateTrip: (tripId: string, tripData: Partial<Trip>) => Promise<Trip | null>;
  deleteTrip: (tripId: string) => Promise<boolean>;

  // Steps related
  addTripStep: (tripId: string, stepData: Omit<TripStep, "id" | "comments" | "tripId">) => Promise<TripStep | null>;
  updateTripStep: (tripId: string, stepId: string, stepData: Partial<TripStep>) => Promise<TripStep | null>;
  deleteTripStep: (tripId: string, stepId: string) => Promise<boolean>;
  validateTripStep: (tripId: string, stepId: string, status: Exclude<StepValidationStatus, "pending">) => Promise<boolean>;
  publishTripStep: (tripId: string, stepId: string, isPublished: boolean) => Promise<boolean>;
  addStepComment: (tripId: string, stepId: string, comment: Omit<Comment, "id" | "userId" | "userName" | "createdAt">) => Promise<Comment | null>;

  // Documents related
  addDocument: (tripId: string, document: Omit<Document, "uploadedAt">) => Promise<Document | null>;
  deleteDocument: (tripId: string, documentId: string) => Promise<boolean>;

  // Status and error states
  isLoading: boolean;
  error: string | null;
  activityError: string | null;
  refetchTrips: () => void;
}
