import { Ref, ComputedRef } from 'vue';
import { IContextSlots } from '../context';
import { NTable } from '../interface';
export interface IUseColumns<RecordType> {
    filledColumns: NTable.NColumn.TTransformColumns<RecordType>;
}
export declare function useColumns<RecordType>(contextSlots: Ref<IContextSlots>): IUseColumns<RecordType>;
/**
 * Parse `columns` & `children` into `columns`.
 */
export declare function useParseColumns<RecordType>({ columns: baseColumns, expandable, expandedKeys, getRowKey, onTriggerExpand, expandIcon, rowExpandable, expandIconColumnIndex, expandRowByClick, expandColumnWidth, expandFixed }: {
    columns: Ref<NTable.NColumn.TColumns<RecordType>>;
    expandable: Ref<boolean>;
    expandedKeys: Ref<Set<NTable.TKey>>;
    getRowKey: Ref<NTable.NRow.TGetRowKey<RecordType>>;
    onTriggerExpand: NTable.TTriggerEventHandler<RecordType>;
    expandIcon: Ref<NTable.NExpand.TRenderExpandIcon<RecordType>>;
    rowExpandable: Ref<((record: RecordType) => boolean) | undefined>;
    expandIconColumnIndex?: Ref<number>;
    expandRowByClick: Ref<boolean | undefined>;
    expandColumnWidth: Ref<number | string | undefined>;
    expandFixed: Ref<NTable.TFixed | undefined>;
}, transformColumns: Ref<(columns: NTable.NColumn.TColumns<RecordType>) => NTable.NColumn.TColumns<RecordType>>): {
    columns: ComputedRef<NTable.NColumn.TColumns<RecordType>>;
    flattenColumns: ComputedRef<readonly NTable.NColumn.IColumn<RecordType>[]>;
};
export declare function useTitleColumns<RecordType>(columnTitleProps: Ref<NTable.NColumn.ITitleProps<RecordType>>): IUseColumns<RecordType>;
export declare function useColumnWidth(colWidthsRef: Ref<readonly (string | number | undefined)[]>, columnCountRef: Ref<number>): ComputedRef<string[] | number[] | null>;
