import {CustomPlantPage, Plant, SearchRequest} from "./schemas.ts";
import {FetchResult} from "./FetchResult.ts";

export interface IBackendConnector {
    getAllPlants(page?: number, pageSize?: number): Promise<FetchResult<CustomPlantPage>>;

    searchPlants(search: SearchRequest): Promise<FetchResult<Plant[]>>;

    getRandomPlants(amount: number): Promise<FetchResult<Plant[]>>;

    getSinglePlant(id: number): Promise<FetchResult<Plant | null>>;

    addToGarden(plantId: number): Promise<FetchResult<void>>;

    getGardenEntries(sort?: string): Promise<FetchResult<Plant[]>>;

    getGardenSize(): Promise<FetchResult<number>>;

    removeEntryFromGarden(entryId: number): Promise<FetchResult<void>>;

    clearGarden(): Promise<FetchResult<number>>;

    addToWishlist(plantId: number): Promise<FetchResult<void>>;

    getWishlistEntries(sort?: string): Promise<FetchResult<Plant[]>>

    getWishlistSize(): Promise<FetchResult<number>>;

    removeFromWishlist(entryId: number): Promise<FetchResult<void>>

    clearWishlist(): Promise<FetchResult<number>>;
}