import { Nullable } from 'tsdef';
import { Action, Store, ThunkAction, ThunkDispatch } from '@reduxjs/toolkit';
import { GenericFileActionHandler } from './action-handler.types';
import { FileActionMenuItem } from './action-menus.types';
import { FileAction, FileActionMap } from './action.types';
import { ContextMenuConfig } from './context-menu.types';
import { FileViewConfig } from './file-view.types';
import { FileArray, FileIdTrueMap, FileMap } from './file.types';
import { OptionMap } from './options.types';
import { FileSelection } from './selection.types';
import { SortOrder } from './sort.types';
import { CancelSearchCallback, SearchPredicate, SearchInputCallback } from './search.types';
import { RenamingSanitizer } from './rename.types';
export type RootState = {
    instanceId: string;
    externalFileActionHandler: Nullable<GenericFileActionHandler<FileAction>>;
    rawFileActions: FileAction[] | any;
    fileActionsErrorMessages: string[];
    fileActionMap: FileActionMap;
    fileActionIds: string[];
    toolbarItems: FileActionMenuItem[];
    contextMenuItems: FileActionMenuItem[];
    rawFolderChain: Nullable<FileArray> | any;
    folderChainErrorMessages: string[];
    folderChain: FileArray;
    rawFiles: FileArray | any;
    filesErrorMessages: string[];
    fileMap: FileMap;
    fileIds: Nullable<string>[];
    cleanFileIds: string[];
    sortedFileIds: Nullable<string>[];
    hiddenFileIdMap: FileIdTrueMap;
    focusSearchInput: Nullable<() => void>;
    onSearchInput: Nullable<SearchInputCallback>;
    onCancelSearch: Nullable<CancelSearchCallback>;
    searchPredicate: Nullable<SearchPredicate>;
    searchString: string;
    searchMode: 'currentFolder';
    selectionMap: FileSelection;
    disableSelection: boolean;
    disableSimpleDeselection: boolean;
    fileViewConfig: FileViewConfig;
    sortActionId: Nullable<string>;
    sortOrder: SortOrder;
    optionMap: OptionMap;
    sortCollator: Nullable<Intl.Collator>;
    doubleClickDelay: number;
    disableDragAndDrop: boolean;
    clearSelectionOnOutsideClick: boolean;
    forceEnableOpenParent: boolean;
    hideToolbarInfo: boolean;
    lastClick: Nullable<{
        index: number;
        fileId: string;
    }>;
    contextMenuMounted: boolean;
    contextMenuConfig: Nullable<ContextMenuConfig>;
    renamingFileId: Nullable<string>;
    renamingSanitizer: Nullable<RenamingSanitizer>;
    disableRenaming: boolean;
};
export type ChonkyThunk<ReturnType = void> = ThunkAction<ReturnType, RootState, null, Action<string>>;
export type ChonkyDispatch = ThunkDispatch<RootState, null, Action<string>>;
export type ChonkyStore = Store<RootState>;
