import { ColumnModel, ColumnTypeEnum } from '@sage-bionetworks/synapse-types';
import { ColumnModelFormData, JsonSubColumnModelFormData } from './Validators/ColumnModelValidator';
export declare function getIsAllSelected(formData: ColumnModelFormData[]): boolean;
export declare function getNumberOfSelectedItems(formData: ColumnModelFormData[]): number;
export declare function getDefaultColumnModelFormData(): ColumnModelFormData;
export declare function getDefaultJsonSubColumnFormData(): JsonSubColumnModelFormData;
type TableColumnSchemaFormReducerAction = {
    type: 'setValue';
    value: ColumnModelFormData[];
} | {
    type: 'toggleSelect';
    columnModelIndex: number;
    jsonSubColumnModelIndex?: number;
} | {
    type: 'toggleSelectAll';
} | {
    type: 'appendColumn';
} | {
    type: 'appendJsonSubColumn';
    columnModelIndex: number;
} | {
    type: 'setColumnModelValue';
    columnModelIndex: number;
    jsonSubColumnModelIndex?: number;
    value: ColumnModelFormData | JsonSubColumnModelFormData;
} | {
    type: 'changeColumnModelType';
    newColumnType: ColumnTypeEnum;
    columnModelIndex: number;
    jsonSubColumnModelIndex?: number;
} | {
    type: 'move';
    from: {
        columnModelIndex: number;
        jsonSubColumnModelIndex?: number;
    };
    to: {
        columnModelIndex: number;
        jsonSubColumnModelIndex?: number;
    };
} | {
    type: 'moveUp';
} | {
    type: 'moveDown';
} | {
    type: 'delete';
} | {
    type: 'updateColumnSizesToRecommendedValues';
    annotationColumnModels: ColumnModel[];
};
export declare function reducer(prevState: ColumnModelFormData[], action: TableColumnSchemaFormReducerAction): {
    name: string;
    columnType: ColumnTypeEnum;
    isSelected: boolean;
    isOriginallyDefaultColumn: boolean;
    defaultValue?: string | any[] | undefined;
    id?: string | undefined;
    maximumSize?: string | number | undefined;
    maximumListLength?: string | number | undefined;
    enumValues?: (string | number)[] | undefined;
    facetType?: "range" | "enumeration" | undefined;
    jsonSubColumns?: {
        name: string;
        columnType: ColumnTypeEnum;
        facetType: "range" | "enumeration";
        jsonPath: string;
        isSelected: boolean;
    }[] | undefined;
    facetSortConfig?: {
        direction?: "ASC" | "DESC" | undefined;
        property?: "FREQUENCY" | "VALUE" | undefined;
    } | undefined;
}[];
export declare const tableColumnSchemaFormDataAtom: import("jotai").WritableAtom<{
    name: string;
    columnType: ColumnTypeEnum;
    isSelected: boolean;
    isOriginallyDefaultColumn: boolean;
    defaultValue?: string | any[] | undefined;
    id?: string | undefined;
    maximumSize?: string | number | undefined;
    maximumListLength?: string | number | undefined;
    enumValues?: (string | number)[] | undefined;
    facetType?: "range" | "enumeration" | undefined;
    jsonSubColumns?: {
        name: string;
        columnType: ColumnTypeEnum;
        facetType: "range" | "enumeration";
        jsonPath: string;
        isSelected: boolean;
    }[] | undefined;
    facetSortConfig?: {
        direction?: "ASC" | "DESC" | undefined;
        property?: "FREQUENCY" | "VALUE" | undefined;
    } | undefined;
}[], [TableColumnSchemaFormReducerAction], void>;
export {};
//# sourceMappingURL=TableColumnSchemaFormReducer.d.ts.map