import type { Dispatch, MutableRefObject, SetStateAction } from 'react';
import type { OffsetWell, OffsetSettingsInput } from '../../OffsetWellPickerV5.types';
import type { FilterState, FilterMutationSource } from '../../stores/filter-store/types';
import type { SelectionZone } from '../../types/SelectionZone';
export type ExternalOffsetsWells = Record<string, number[]>;
export type BatchSelectResult = {
    attempted: number;
    added: number;
};
export type UseWellSelectionParams = {
    subjectWellId: number | undefined;
    subjectWell: OffsetWell | null;
    wells: OffsetWell[] | null;
    filteredWells: OffsetWell[] | null;
    externalOffsets: ExternalOffsetsWells | null;
    rawWellsWithSubject: OffsetWell[] | null;
    offsetSettings: OffsetSettingsInput | undefined;
    maxOffsetWellNumber: number;
    maxOffsetSize: number;
    open: boolean;
    isAllWellsLoaded: boolean;
    fetchSearchedWells: (wellIds: number[]) => Promise<OffsetWell[]>;
    filters: FilterState | null;
    filterMutationSeq: number;
    lastFilterMutationSource: FilterMutationSource;
    includeHidden: boolean;
};
export type UseWellSelectionReturn = {
    selectedWells: OffsetWell[];
    setSelectedWells: Dispatch<SetStateAction<OffsetWell[]>>;
    selectedWellsCount: number;
    selectedWellIds: number[];
    isReconciled: boolean;
    currentSelectionZone: SelectionZone | null;
    setCurrentSelectionZone: Dispatch<SetStateAction<SelectionZone | null>>;
    selectedWellSection: string;
    setSelectedWellSection: Dispatch<SetStateAction<string>>;
    loadingAssetIds: number[];
    setLoadingAssetIds: Dispatch<SetStateAction<number[]>>;
    searchGenerationRef: MutableRefObject<number>;
    hasUserSelectionEditsRef: MutableRefObject<boolean>;
    markUserEdit: () => void;
    abandonPendingSearch: () => void;
    handleChangeOffsetWell: (well: OffsetWell, checked: boolean) => void;
    handleChangeAllOffsetWells: (checked: boolean) => void;
    handleBatchSelectWells: (wellsToSelect: OffsetWell[], onComplete?: (result: BatchSelectResult) => void, options?: {
        override?: boolean;
    }) => void;
    handleSelectionZoneConfirm: (zone: SelectionZone | null) => void;
    handleChangeWellSection: (section: string) => Promise<void>;
    updateSelectedWellsBySection: (section: string) => Promise<void>;
};
//# sourceMappingURL=useWellSelection.types.d.ts.map