import { EventEmitter } from '../../stencil-public-runtime';
import { FormFieldValidationRule } from '../../helpers/validator/rules/form-field-validation-rule';
import { VegaFile, VegaFileOptional, VegaImageUploaderStatus } from './types';
import { VegaImageUploaderRenderer } from './slimmers/renderers/vega-image-uploader-renderer';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaImageUploaderInputRenderer } from './slimmers/renderers/vega-image-uploader-input-renderer';
import { VegaImageUploaderInputController } from './slimmers/controllers/vega-image-uploader-input-controller';
import { VegaImageUploaderActionsRenderer } from './slimmers/renderers/vega-image-uploader-actions-renderer';
import { VegaImageUploaderValueController } from './slimmers/controllers/vega-image-uploader-value-controller';
import { VegaImageUploaderPreviewController } from './slimmers/controllers/vega-image-uploader-preview-controller';
import { VegaImageUploaderPreviewContentRenderer } from './slimmers/renderers/vega-image-uploader-preview-content-renderer';
import { VegaImageUploaderUploadingContentRenderer } from './slimmers/renderers/vega-image-uploader-uploading-content-renderer';
import { VegaImageUploaderDefaultContentRenderer } from './slimmers/renderers/vega-image-uploader-default-content-renderer';
import { VegaImageUploaderRemoveController } from './slimmers/controllers/vega-image-uploader-remove-controller';
import { DropFileAcceptFilterSlimmer } from '../../helpers/slimmers/drop-file-accept-filter-slimmer';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { VegaImageUploaderActionsVisibilityController } from './slimmers/controllers/vega-image-uploader-actions-visibility-controller';
import { Nullable } from '../../types/general';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { ResponsiveType, SizeType } from '../../types/ui.type';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { DarkModeStateControllerSlimmer } from '../../helpers/slimmers/dark-mode-state-controller-slimmer';
/**
 * @vegaVersion 1.14.0
 */
export declare class VegaImageUploader {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected translationSlimmer: TranslationSlimmer<HTMLVegaImageUploaderElement>;
  protected vegaImageUploaderRenderer: VegaImageUploaderRenderer;
  protected vegaImageUploaderUploadingContentRenderer: VegaImageUploaderUploadingContentRenderer;
  protected vegaImageUploaderPreviewContentRenderer: VegaImageUploaderPreviewContentRenderer;
  protected vegaImageUploaderDefaultContentRenderer: VegaImageUploaderDefaultContentRenderer;
  protected vegaImageUploaderInputRenderer: VegaImageUploaderInputRenderer;
  protected vegaImageUploaderActionsRenderer: VegaImageUploaderActionsRenderer;
  protected vegaImageUploaderInputController: VegaImageUploaderInputController;
  protected vegaImageUploaderValueController: VegaImageUploaderValueController;
  protected vegaImageUploaderPreviewController: VegaImageUploaderPreviewController;
  protected vegaImageUploaderRemoveController: VegaImageUploaderRemoveController;
  protected dropFileFilterController: DropFileAcceptFilterSlimmer;
  protected actionsVisibilityController: VegaImageUploaderActionsVisibilityController;
  protected readonly darkModeStateControllerSlimmer: DarkModeStateControllerSlimmer;
  protected formFieldController: FormFieldControllerSlimmer<VegaFile>;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected removeEventEmitter: EventEmitSlimmerBase;
  protected cancelEventEmitter: EventEmitSlimmerBase;
  protected buttonCircleEventPrevent: ChildNodesEventPreventSlimmer;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaImageUploaderElement>;
  host: HTMLVegaImageUploaderElement;
  isInDarkMode: boolean;
  /**
   * Determines the visual content that is initially displayed in
   *    the image uploader component, thereby providing a preview of
   *    the uploaded image or a default placeholder.
   *
   * @vegaVersion 1.14.0
   */
  value: VegaFile | null;
  watchValue(): void;
  /**
   * Specifies the allowed file types for upload.
   *
   * @vegaVersion 1.14.0
   * @defaultValue .jpg,.png,.jpeg
   */
  accept: string;
  /**
   * Controls the display of the upload status (`uploading`, `done`).
   *    If not set, the status remains invisible.
   *
   * @vegaVersion 1.14.0
   */
  status: VegaImageUploaderStatus | undefined;
  /**
   * Determines whether to show the preview button.
   *
   * @vegaVersion 1.14.0
   */
  showPreviewButton: boolean;
  /**
   * Determines whether to show the remove button.
   *
   * @vegaVersion 1.14.0
   */
  showRemoveButton: boolean;
  /**
   * Determines whether to show the replace button.
   *
   * @vegaVersion 1.39.2
   */
  showReplaceButton: boolean;
  /**
   * Specifies whether the Image Uploader field is disabled.
   *
   * @vegaVersion 1.14.0
   */
  disabled: boolean;
  /**
   * Specifies whether uploading an image is mandatory.
   *
   * @vegaVersion 1.14.0
   */
  required: boolean;
  /**
   * Specifies the validation status.
   *
   * @vegaVersion 1.14.0
   */
  isValid: boolean | null;
  /**
   * Determines whether automatic validation should be
   *    implemented for image uploads.
   *
   * @vegaVersion 1.14.0
   */
  autoValidation: boolean;
  /**
   * Specifies custom validation rules for image uploads.
   *
   * @vegaVersion 1.14.0
   */
  validationRules: FormFieldValidationRule<unknown>[];
  watchValidationRules(): void;
  /**
   * Specifies the label or title for the image uploader.
   *    It provides descriptive text that helps identify
   *    the purpose of the image uploader.
   *
   * @vegaVersion 2.5.0
   */
  label: string;
  /**
   * Provides a supplementary prompt message that assists users in
   *    understanding the expected value for the image uploader field.
   *
   * @vegaVersion 2.9.0
   */
  hint: string;
  /**
   * Specifies the action title for the image uploader.
   *    This property provides descriptive text that identifies
   *    the intended action or function of the image uploader.
   *
   * @vegaVersion 2.9.0
   */
  actionTitle: string;
  /**
   * Specifies the action sub-title for the image uploader.
   *    This property provides descriptive text that identifies
   *    the intended action or function of the image uploader.
   *
   * @vegaVersion 2.9.0
   */
  actionSubTitle: string;
  /**
   * Defines the width of the image uploader field.
   *
   * @vegaVersion 2.9.0
   */
  width: ResponsiveType<SizeType>;
  /**
   * Defines the height of the image uploader field.
   *
   * @vegaVersion 2.9.0
   */
  height: ResponsiveType<SizeType>;
  /**
   * An event emitter notifying a value change.
   *
   * @vegaVersion 1.14.0
   */
  vegaChange: EventEmitter<VegaFileOptional>;
  /**
   * An event emitter notifying a value change.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  change: EventEmitter;
  /**
   * An event emitter notifying the removal of a value.
   *
   * @vegaVersion 1.14.0
   */
  vegaRemove: EventEmitter;
  /**
   * An event emitter notifying the removal of a value.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  remove: EventEmitter;
  /**
   * An event emitter notifying the cancellation of an uploading event.
   *
   * @vegaVersion 1.14.0
   */
  vegaCancel: EventEmitter;
  /**
   * An event emitter notifying the removal of a value.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  cancel: EventEmitter;
  disconnectedCallback(): void;
  /**
   * Invoke this method to retrieve the image preview URL for
   *    the current selection in the `vega-image-uploader` component.
   *
   * @vegaVersion 1.45.0
   */
  getContentURL(file?: VegaFile): Promise<Nullable<string>>;
  render(): VegaImageUploader;
}
