export interface SchemaFormFieldCondition {
    targetFieldId: string;
    operator: 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'greater_than' | 'less_than' | 'is_empty' | 'is_not_empty' | 'is_true' | 'is_false';
    value?: any;
    logicalOperator?: 'AND' | 'OR';
}
export interface TableColumn {
    id: string;
    title: string;
    type: 'string' | 'number' | 'boolean' | 'date';
    required?: boolean;
    width?: string;
}
export interface SchemaFormField {
    type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object' | 'table';
    title?: string;
    description?: string;
    default?: any;
    enum?: any[];
    enumNames?: string[];
    format?: 'email' | 'date' | 'date-time' | 'uri' | 'textarea' | 'file' | 'select' | 'radio' | 'combobox' | 'checkbox' | 'switch' | 'checkboxes' | 'multiselect';
    minimum?: number;
    maximum?: number;
    minLength?: number;
    maxLength?: number;
    pattern?: string;
    items?: SchemaFormField;
    properties?: Record<string, SchemaFormField>;
    required?: string[];
    conditions?: SchemaFormFieldCondition[];
    showWhen?: 'all' | 'any';
    columns?: TableColumn[];
    minRows?: number;
    maxRows?: number;
}
export interface SchemaFormUIConfig {
    'ui:widget'?: 'text' | 'textarea' | 'select' | 'radio' | 'checkboxes' | 'file' | 'email' | 'date' | 'number' | 'checkbox' | 'switch' | 'combobox' | 'multiselect' | 'table';
    'ui:placeholder'?: string;
    'ui:help'?: string;
    'ui:disabled'?: boolean;
    'ui:options'?: {
        label?: boolean;
        rows?: number;
        accept?: string;
    };
    'ui:order'?: string[];
}
export interface SchemaFormUISchema {
    [key: string]: SchemaFormUIConfig | SchemaFormUISchema;
}
export interface SchemaFormConfig {
    id?: string;
    title: string;
    description: string;
    schema: {
        type: 'object';
        properties: Record<string, SchemaFormField>;
        required?: string[];
    };
    uiSchema: SchemaFormUISchema;
    storage: Record<string, 'private' | 'public' | 'proof' | 'personal'>;
    settings: {
        allowMultipleSubmissions: boolean;
        requireAuthentication: boolean;
        showProgressBar: boolean;
        submitButtonText: string;
        successMessage: string;
    };
    styling: {
        theme: 'default' | 'modern' | 'minimal';
        primaryColor: string;
        backgroundColor: string;
    };
    fieldOrder?: string[];
    createdAt?: string;
    updatedAt?: string;
}
export interface TableInputProps {
    columns: TableColumn[];
    value: Record<string, any>[];
    onChange: (value: Record<string, any>[]) => void;
    minRows?: number;
    maxRows?: number;
    className?: string;
}
export interface SchemaFormRendererProps {
    config: SchemaFormConfig;
    onSubmit: (data: Record<string, any>) => void;
    isSubmitting?: boolean;
    className?: string;
    initialData?: Record<string, any>;
    components?: {
        Button?: React.ComponentType<any>;
        Input?: React.ComponentType<any>;
        Textarea?: React.ComponentType<any>;
        Select?: React.ComponentType<any>;
        Checkbox?: React.ComponentType<any>;
        RadioGroup?: React.ComponentType<any>;
        Switch?: React.ComponentType<any>;
        Label?: React.ComponentType<any>;
        TableInput?: React.ComponentType<TableInputProps>;
    };
}
export interface FormEditorValidationResult {
    valid: boolean;
    errors: string[];
}
export interface FormEditorState {
    formConfig: SchemaFormConfig;
    setFormConfig: React.Dispatch<React.SetStateAction<SchemaFormConfig>>;
    fieldOrder: string[];
    validate: () => FormEditorValidationResult;
    generateUniqueId: (baseLabel?: string) => string;
    addField: () => void;
    updateField: (fieldId: string, updates: Partial<SchemaFormField>) => void;
    updateFieldUI: (fieldId: string, uiUpdates: any) => void;
    updateFieldStorage: (fieldId: string, storage: 'private' | 'public' | 'proof' | 'personal') => void;
    updateFieldId: (oldId: string, newId: string) => FormEditorValidationResult;
    removeField: (fieldId: string) => void;
    toggleRequired: (fieldId: string, required: boolean) => void;
    reorderFields: (newFieldOrder: string[]) => void;
}
export interface FormEditorStateOptions {
    existingForm?: SchemaFormConfig;
    isCreating: boolean;
}
export interface FormEditorActionsOptions {
    formConfig: SchemaFormConfig;
    setFormConfig: React.Dispatch<React.SetStateAction<SchemaFormConfig>>;
}
export interface FormEditorActions {
    exportSchema: () => void;
    importSchema: (event: React.ChangeEvent<HTMLInputElement>) => {
        success: boolean;
        error?: string;
    };
}
//# sourceMappingURL=types.d.ts.map