import { NTable } from '../interface';
import { Ref, ComputedRef } from 'vue';
export declare const SELECTION_COLUMN: {};
export declare const SELECTION_ALL: "SELECT_ALL";
export declare const SELECTION_INVERT: "SELECT_INVERT";
export declare const SELECTION_NONE: "SELECT_NONE";
export declare const EXPAND_COLUMN: {};
export type INTERNAL_SELECTION_ITEM = NTable.NRow.ISelectionItem | typeof SELECTION_ALL | typeof SELECTION_INVERT | typeof SELECTION_NONE;
export interface ISelectionOptions<RecordType> {
    pageData: Ref<RecordType[]>;
    data: Ref<RecordType[]>;
    getRowKey: Ref<NTable.NRow.TGetRowKey<RecordType>>;
    getRecordByKey: (key: NTable.TKey) => RecordType;
    expandType: Ref<NTable.NExpand.TExpandableType>;
    childrenColumnName: Ref<string>;
    locale: Ref<NTable.ILocale>;
    getPopupContainer?: ComputedRef<NTable.NCustomize.TGetPopupContainer | undefined>;
}
export interface IUseSelection<RecordType> {
    transformColumns: NTable.NColumn.TTransformColumns<RecordType>;
    selectedKeySet: Ref<Set<NTable.TKey>>;
}
export declare function useSelection<RecordType>(rowSelectionRef: Ref<NTable.NRow.IRowSelection<RecordType> | undefined>, configRef: ISelectionOptions<RecordType>): IUseSelection<RecordType>;
