import type {
  HelpSection,
  CreateHelpSectionPayload,
  UpdateHelpSectionPayload
} from "@/domain/entities/help-section";

export interface HelpSectionFindAllOptions {
  all?: boolean;
  page?: number;
  per_page?: number;
  search?: string;
  sort_by?: string;
  sort_dir?: "asc" | "desc";
  order_by?: string;
  order?: "ASC" | "DESC";
}

export interface HelpSectionsPaginatorMeta {
  current_page: number;
  last_page: number;
  per_page: number;
  total: number;
  from?: number | null;
  to?: number | null;
}

export interface HelpSectionsResponse {
  data: HelpSection[];
  meta?: HelpSectionsPaginatorMeta;
  links?: Record<string, string | null>;
}

export interface HelpSectionRepository {
  findAll(options?: HelpSectionFindAllOptions): Promise<HelpSectionsResponse>;
  findById(id: string | number): Promise<HelpSection>;
  create(payload: CreateHelpSectionPayload): Promise<HelpSection>;
  update(id: string | number, payload: UpdateHelpSectionPayload): Promise<HelpSection>;
  delete(id: string | number): Promise<void>;
}
