import React, { ReactNode } from 'react';
import { UploadSource } from '../features/UploadData/main';
import { IModel } from '../features/UploadData/Components/SelectDataFromRLEF/interfaces/models';
import { IProject } from '../features/UploadData/Components/SelectDataFromRLEF/interfaces/projects';
import { ICollection } from '../features/UploadData/Components/SelectDataFromRLEF/interfaces/collections';
import { IData } from '../features/UploadData/Components/SelectDataFromRLEF/interfaces/data';
export interface IDataCartProjectsState {
    availableProjects: Array<IProject>;
    isFetchingProjects: boolean;
    selectedProject: IProject | null;
    searchTerm: string;
}
export interface IDataCartTasksState {
    availableTasks: Array<IModel>;
    isFetchingTasks: boolean;
    selectedTask: IModel | null;
    searchTerm: string;
}
export interface IDataSetState {
    availableDataSets: ICollection[];
    isFetchingDataSets: boolean;
    selectedDataSet: ICollection | null;
    datasetCollectionTotalCount?: number;
}
interface DataSelectedContextType {
    selectedModeOfUploadData: UploadSource | null;
    setSelectedModeOfUploadData: (source: UploadSource) => void;
    projectsState: IDataCartProjectsState;
    tasksState: IDataCartTasksState;
    fetchAllProjects: () => Promise<void>;
    fetchAllTasks: (projectId: string) => Promise<void>;
    selectTask: (task: IModel | null) => void;
    selectProject: (project: IProject | null) => void;
    setProjectsSearchTerm: (term: string) => void;
    setTasksSearchTerm: (term: string) => void;
    selectOrUnselectAnRlefResource: (resource: IData) => void;
    breadcrumbs: Breadcrumb[];
    setBreadcrumbs: React.Dispatch<React.SetStateAction<Breadcrumb[]>>;
    currentScreenState: ScreenState;
    setCurrentScreenState: React.Dispatch<React.SetStateAction<ScreenState>>;
    selectedLocalFiles: File[];
    setSelectedLocalFiles: React.Dispatch<React.SetStateAction<File[]>>;
    dataSetState: IDataSetState;
    setDataSetState: React.Dispatch<React.SetStateAction<IDataSetState>>;
    selectedRlefResources: Array<IData>;
    setSelectedRlefResources: React.Dispatch<React.SetStateAction<IData[]>>;
    tempSelectedRlefResources: Array<IData>;
    setTempSelectedRlefResources: React.Dispatch<React.SetStateAction<IData[]>>;
    selectedSavedDataSetIds: Set<string>;
    setSelectedSavedDataSetIds: React.Dispatch<React.SetStateAction<Set<string>>>;
    activeRlefDataTab: TActiveRlefDataTab;
    setActiveRlefDataTab: React.Dispatch<React.SetStateAction<TActiveRlefDataTab>>;
}
type Breadcrumb = {
    label: string;
    path?: string;
    onClick: () => void;
};
export type ScreenState = "" | "dataSelectOptionsScreen" | "selectedDataListScreen" | "projectAndTaskSelectionScreen" | "rlefDataSetCollectionsScreen" | "rlefDataPointsInSelectedDataSetCollectionScreen" | "savedDataSetListScreen" | "viewSavedDataSetScreen" | "rlefHistoricalCopilotDataScreen";
export type TActiveRlefDataTab = "collections" | "data";
interface DataSelectedProviderProps {
    children: ReactNode;
}
export declare var currentScreenStateRef: {
    current?: ScreenState;
};
export declare var currentScreenStateSetterRef: {
    current?: React.Dispatch<React.SetStateAction<ScreenState>>;
};
export declare const DataSelectedProvider: React.FC<DataSelectedProviderProps>;
export declare const useSelectDataContext: () => DataSelectedContextType;
export {};
//# sourceMappingURL=DataSelectedContext.d.ts.map