import { ElementRef } from '@angular/core';
import { ControlValueAccessor, FormGroup } from '@angular/forms';
import { InputSizeProps, InputVariantProps } from '@sixbell-telco/sdk/components/forms/input';
import { FileExtension } from '../shared/types/file-upload';
import * as i0 from "@angular/core";
/** Possible style variants for the file uploader component */
export type FileUploaderVariantProps = InputVariantProps;
/** Possible size variants for the file uploader component */
export type FileUploaderSizeProps = InputSizeProps;
/** Configuration object for file uploader styling */
export type FileUploaderProps = {
variant?: FileUploaderVariantProps;
size?: FileUploaderSizeProps;
};
/**
* A customizable file upload component with form integration and validation support
*
* @remarks
* Supports file type restrictions, form control integration, and visual validation states.
* Implements ControlValueAccessor for Angular form compatibility.
*
* @example
* ```html
*
*
* ```
*
* @example
* ```html
*
*
* ```
*/
export declare class FileUploaderComponent implements ControlValueAccessor {
/**
* Visual style variant
* @defaultValue 'secondary'
*/
variant: import("@angular/core").InputSignal;
/**
* Component size variant
* @defaultValue 'md'
*/
size: import("@angular/core").InputSignal;
/**
* Label displayed above the uploader
*/
label: import("@angular/core").InputSignal;
/**
* HTML name attribute for the input
*/
name: import("@angular/core").InputSignal;
/**
* Placeholder text when no file is selected
*/
placeholder: import("@angular/core").InputSignal;
/**
* Whether to show allowed file extensions
* @defaultValue true
*/
showExtensions: import("@angular/core").InputSignal;
/**
* Allowed file extensions (e.g., ['.pdf', '.docx'])
*/
extensions: import("@angular/core").InputSignal;
/**
* Computed accept attribute for native file input
* @internal
*/
accept: import("@angular/core").Signal;
/**
* Event emitted when a valid file is selected
*/
fileUpdated: import("@angular/core").OutputEmitterRef;
/**
* Stop event propagation for activation events
* @defaultValue false
*/
stopPropagation: import("@angular/core").InputSignal;
/**
* Event emitted on click
*/
clicked: import("@angular/core").OutputEmitterRef;
/**
* Event emitted on Enter keydown
*/
keyDownEnter: import("@angular/core").OutputEmitterRef;
/**
* Event emitted on Space keydown
*/
keyDownSpace: import("@angular/core").OutputEmitterRef;
/**
* Event emitted on activation (click or keyboard)
*/
triggered: import("@angular/core").OutputEmitterRef;
/**
* Current selected filename
* @internal
*/
filename: string;
/**
* Current file value
* @internal
*/
fileValue: File | null;
/**
* Formatted extensions string for display
* @internal
*/
formattedExtensions: import("@angular/core").Signal;
/**
* Reference to the hidden file input
* @internal
*/
fileInput: import("@angular/core").Signal | undefined>;
/**
* Event emitted on component blur
*/
blurred: import("@angular/core").OutputEmitterRef;
/**
* Whether the component is disabled
* @defaultValue false
*/
disabled: import("@angular/core").ModelSignal;
/** @internal Track blur events for validation */
private readonly blurTrigger;
/**
* Parent form group for reactive forms
*/
parentForm: import("@angular/core").InputSignal | null>;
/**
* Form control name for reactive forms
*/
formControlName: import("@angular/core").InputSignal;
/**
* Two-way bindable file value
*/
value: import("@angular/core").ModelSignal;
/** @internal */
private onControlChange;
/** @internal */
private onControlTouch;
/**
* Writes form value to component
* @param obj - The incoming form value
*/
writeValue(obj: any): void;
/**
* Registers change callback
* @param fn - Callback function for value changes
*/
registerOnChange(fn: any): void;
/**
* Registers touch callback
* @param fn - Callback function for touch events
*/
registerOnTouched(fn: any): void;
/**
* Sets disabled state
* @param isDisabled - Whether the component should be disabled
*/
setDisabledState(isDisabled: boolean): void;
/**
* Handles click event on the upload area
* @internal
*/
handleClick(event: MouseEvent): void;
/**
* @internal
* Handle Enter key activation
*/
handleKeyDownEnter(event: Event): void;
/**
* @internal
* Handle Space key activation
*/
handleKeyDownSpace(event: Event): void;
/**
* Notifies form control of value changes
* @internal
*/
handleChange(): void;
/**
* Handles file selection from input
* @param event - File input change event
* @internal
*/
handleFileChange(event: Event): void;
/**
* Clears selected file
* @internal
*/
removeFile(): void;
/**
* @internal
* Returns base component classes
*/
componentClass(): FileUploaderProps;
/**
* @internal
* Returns error state classes
*/
errorClass(): FileUploaderProps;
/**
* @internal
* Returns success state classes
*/
successClass(): FileUploaderProps;
/**
* Handles blur events and validation
* @internal
*/
handleBlur(): void;
/** @internal */
private readonly formControl;
/** @internal */
private readonly formControl$;
/** @internal */
private readonly statusChanges$;
/** @internal */
private readonly stateChanges$;
/** @internal */
private readonly statusSignal;
/** @internal */
private readonly stateSignal;
/**
* Computes validation classes based on form state
* @internal
*/
validationClass: import("@angular/core").Signal;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}