import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaFileUploader } from '../../vega-file-uploader';
export declare class VegaFileUploaderContainerRenderer extends VegaSlimmer {
  protected variant: VegaFileUploader['variant'];
  protected accept: VegaFileUploader['accept'];
  protected disabled: VegaFileUploader['disabled'];
  protected value: VegaFileUploader['value'];
  protected selectFileChangeEventEmitter: VegaFileUploader['selectFileChangeEventEmitter'];
  protected vegaFileUploaderValueController: VegaFileUploader['vegaFileUploaderValueController'];
  protected dropFileFilterController: VegaFileUploader['dropFileFilterController'];
  protected translationSlimmer: VegaFileUploader['translationSlimmer'];
  protected fileLimitController: VegaFileUploader['fileLimitController'];
  protected maxCount: VegaFileUploader['maxCount'];
  private inputElementRef;
  private uploaderContainerRef;
  /**
   * The function `getUploaderContainerRef` returns a reference to an HTMLDivElement element.
   * @returns {HTMLDivElement} An HTMLDivElement with the reference to the uploader container.
   */
  getUploaderContainerRef(): HTMLDivElement;
  /**
   * generating the HTML structure of the file uploader component
   *
   * @returns {HTMLElement} uploader component upload area element
   */
  render(): HTMLElement;
  /**
   * An upload button element
   *
   * @returns {HTMLElement} html element
   */
  private renderUploadButton;
  /**
   * The uploader file drop area element
   *
   * @returns {HTMLElement} html element
   */
  private renderUploadDropArea;
  /**
   * An event handler function that is triggered when the drop area is clicked
   *
   * @param {MouseEvent} e click event object
   */
  private handleDropAreaClick;
  /**
   * Trigger a click event on the native input element.
   */
  private triggerFileInputClick;
  /**
   * An event handler function that is triggered when the input file is changed
   *
   * @param {MouseEvent} e change event object
   */
  private inputChangeHandler;
  /**
   * an event handler that is triggered when files are dropped onto the file uploader drop area
   *
   * @param {DragEvent} e drag event object
   */
  private dropHandler;
  /**
   * Used to prevent the default behavior of the browser when a drag event occurs, such as preventing the browser from opening the file when it is dropped onto the page.
   *
   * @param {DragEvent} e drag event object
   */
  private preventDefaultBehavior;
  /**
   * emits a custom event with selected files and updates the value if the event is not prevented.
   *
   * @param {VegaFileUploaderFile[]} files - The `files` parameter in the `selectFileChangeEventEmitHandler` method is an array of `VegaFileUploaderFile` objects.
   */
  private selectFileChangeEventEmitHandler;
  /**
   * extracting the files from a file list object. It first initializes an empty array `result` to store the extracted files
   *
   * @param {FileList|File[]|null} fileList file list object
   * @returns {VegaFileUploaderFile[]} the vega file array
   */
  private getVegaFilesFromFileList;
  /**
   * Determines if the upload button should be disabled based on the component's state.
   *
   * @returns {boolean} True if the upload button should be disabled, otherwise false.
   */
  private shouldDisableUploadButton;
  /**
   * Filters the selected files to ensure the total number of files does not exceed the maximum count.
   *
   * @param {VegaFileUploaderFile[]} selectedFiles - The files selected by the user.
   * @returns {VegaFileUploaderFile[]} The filtered list of files that do not exceed the maximum count.
   */
  private filterExceedLimitFiles;
}
