import { FormControl } from '@angular/forms';
import { Color } from '@ionic/core';
import { ComponentState } from '../../types';
/**
 * Metadata for the file input component.
 */
export interface FileInputMetadata {
    /** Form control for the file (stores File object, optional when used in val-form) */
    control?: FormControl<File | null>;
    /** Unique token for the input */
    token?: string;
    /** Display label */
    label?: string;
    /** Field name */
    name?: string;
    /** Help text */
    hint?: string;
    /** Field state */
    state?: ComponentState;
    /** Accepted file types (e.g., 'image/*', '.pdf,.doc') */
    accept?: string;
    /** Allow multiple files */
    multiple?: boolean;
    /** Maximum file size in bytes */
    maxSize?: number;
    /** Maximum number of files (when multiple is true) */
    maxFiles?: number;
    /** Button text for selecting file */
    buttonText?: string;
    /** Text shown when no file is selected */
    noFileText?: string;
    /** Component color */
    color?: Color;
    /** Button color */
    buttonColor?: Color;
    /** Custom CSS class */
    cssClass?: string;
    /** Content key for reactive label */
    contentKey?: string;
    /** Component class name for content lookup */
    contentClass?: string;
    /** Fallback text if content key is not found */
    contentFallback?: string;
    /** Custom error messages */
    errors?: Record<string, string>;
    /** Show validation errors */
    showErrors?: boolean;
}
/**
 * Event emitted when file is selected.
 */
export interface FileInputChangeEvent {
    /** Selected file */
    file: File | null;
    /** File name */
    fileName: string | null;
    /** File size in bytes */
    fileSize: number | null;
    /** File type/MIME */
    fileType: string | null;
}
/**
 * Event emitted when multiple files are selected.
 */
export interface FilesInputChangeEvent {
    /** Selected files */
    files: File[];
    /** Total count */
    count: number;
    /** Total size in bytes */
    totalSize: number;
}
