import { type ReactNode } from 'react';
import type { HeaderAction } from './headerActionTypes';
export interface FieldActionPermissions {
    schemaEditable?: boolean;
    addDisabled?: boolean;
    editDisabled?: boolean;
    deleteDisabled?: boolean;
}
export interface FieldActionColumn {
    isPrimary?: boolean;
    isSystem?: boolean;
    cellType?: string;
}
export type FieldActionKey = 'editField' | 'makePrimary' | 'hideColumn' | 'duplicateField' | 'duplicateFieldWithContent' | 'sortAscending' | 'sortDescending' | 'filter' | 'delete';
export type FieldActionDisableReason = 'schemaNotEditable' | 'addDisabled' | 'editDisabled' | 'deleteDisabled' | 'alreadyPrimary' | 'systemField' | 'nonTextField';
interface FieldActionDef {
    label: string;
    icon: ReactNode;
    skin?: 'destructive';
    getDisableReason?: (col: FieldActionColumn, perms: FieldActionPermissions | undefined) => FieldActionDisableReason | null;
}
export declare const FIELD_ACTIONS: Record<FieldActionKey, FieldActionDef>;
export declare const FIELD_ACTION_DISABLE_REASON_TOOLTIPS: Record<FieldActionDisableReason, string>;
export declare function getFieldActionDisableReason(action: FieldActionKey, column: FieldActionColumn, permissions: FieldActionPermissions | undefined): FieldActionDisableReason | null;
export declare function getFieldActionDisableState(action: FieldActionKey, column: FieldActionColumn, permissions: FieldActionPermissions | undefined): {
    disabled: boolean;
    disabledTooltip: string | undefined;
};
export type FieldActionHandlers = Partial<Record<FieldActionKey, (id: string) => void>>;
export declare function buildFieldActionGroups(args: {
    column: FieldActionColumn & {
        id: string;
    };
    permissions?: FieldActionPermissions;
    handlers: FieldActionHandlers;
    loading?: Partial<Record<FieldActionKey, boolean>>;
    groups: FieldActionKey[][];
}): HeaderAction[][];
export {};
//# sourceMappingURL=FieldActions.d.ts.map