import React, { PropsWithChildren } from "react";
import { DInputProps, T_d_input_possible_all } from "../..";
type NumberAttr = number | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12';
type ColOrderNumber = number | '1' | '2' | '3' | '4' | '5';
type ColOrder = ColOrderNumber | 'first' | 'last';
type ColSize = boolean | 'auto' | NumberAttr;
type ColSpec = ColSize | {
    span?: ColSize;
    offset?: NumberAttr;
    order?: ColOrder;
};
export interface DFormContextProps {
    data: Record<string, T_d_input_possible_all | unknown>;
    setData: React.Dispatch<React.SetStateAction<Record<string, T_d_input_possible_all | unknown>>>;
}
export interface DFormProps extends DFormContextProps, PropsWithChildren {
    onSubmit?: React.FormEventHandler<HTMLFormElement>;
    onInvalid?: React.FormEventHandler<HTMLFormElement>;
    className?: string;
    isNotForm?: boolean;
}
export interface DFormInputProps extends Omit<DInputProps, "value" | "onChange"> {
    name: string;
    maxDateKeyName?: string;
    minDateKeyName?: string;
    col?: boolean;
    xs?: ColSpec;
    sm?: ColSpec;
    md?: ColSpec;
    lg?: ColSpec;
    xl?: ColSpec;
    xxl?: ColSpec;
    arrayKey?: string;
    arrayFilter?: (filterData: Record<string, T_d_input_possible_all | unknown>) => boolean;
}
type omit_dform_input = Omit<DFormInputProps, "col" | "name" | "maxDateKeyName" | "minDateKeyName" | "onkeyEnter">;
export interface DFormColumnsProps_columns<T extends Record<string, T_d_input_possible_all | unknown>> extends omit_dform_input {
    name?: keyof T;
    maxDateKeyName?: keyof T;
    minDateKeyName?: keyof T;
}
export type DFormColumnsProps_options = Partial<Pick<omit_dform_input, "border" | "readOnly" | "required" | "borderVariant" | "variant" | "labelAlignSelf" | "labelColumnLetter" | "labelTextPosition" | "labelType" | "labelVaraint" | "showLabel" | "useFeedBack" | "xs" | "sm" | "md" | "lg" | "xl" | "xxl" | "size" | "onKeyEnter">>;
export interface DFormColumnsProps<T extends Record<string, T_d_input_possible_all | unknown>> extends PropsWithChildren {
    lookupData?: T;
    options?: DFormColumnsProps_options;
    columns?: DFormColumnsProps_columns<T>[];
    wrapperClassName?: string;
    size?: "lg" | "sm";
}
export {};
