import { EventEmitter } from '../../stencil-public-runtime';
import { FileInfo } from '../../global/shared-types/file.types';
import { Icon } from '../../global/shared-types/icon.types';
import { Languages } from '../date-picker/date.types';
import { ResizeOptions } from '../../util/image-resize';
/**
 * This component displays a profile picture, while allowing the user
 * to change it via a file input or drag-and-drop.
 *
 * It supports client-side image resizing and conversion,
 * as well as a simple lazy-loading mechanism.
 *
 * @exampleComponent limel-example-profile-picture-basic
 * @exampleComponent limel-example-profile-picture-helper-text
 * @exampleComponent limel-example-profile-picture-icon
 * @exampleComponent limel-example-profile-picture-with-value
 * @exampleComponent limel-example-profile-picture-loading
 * @exampleComponent limel-example-profile-picture-image-fit
 * @exampleComponent limel-example-profile-picture-composite
 * @exampleComponent limel-example-profile-picture-resize-contain
 * @exampleComponent limel-example-profile-picture-resize-cover
 * @exampleComponent limel-example-profile-picture-resize-fallback
 * @exampleComponent limel-example-profile-picture-styling
 * @beta
 */
export declare class ProfilePicture {
  /**
   * Defines the language for translations.
   * Will translate the translatable strings on the components.
   */
  language: Languages;
  /**
   * Accessible label for the the browse button.
   */
  label: string;
  /**
   * Placeholder icon of the component, displayed when no image is present.
   */
  icon: string | Icon;
  /**
   * Helper text shown as a tooltip on hover or focus.
   */
  helperText?: string;
  /**
   * Disables user interaction.
   * Prevents uploading new pictures or removing existing ones.
   */
  disabled: boolean;
  /**
   * Readonly prevents changing the value but allows interaction like focus.
   */
  readonly: boolean;
  /**
   * Marks the control as required.
   */
  required: boolean;
  /**
   * Marks the control as invalid.
   */
  invalid: boolean;
  /**
   * Set to `true` to put the component in the `loading` state,
   * and render an indeterminate progress indicator inside.
   * This does _not_ disable the interactivity of the component!
   */
  loading: boolean;
  /**
   * Current image to display. Either a URL string or a `FileInfo` with an href.
   */
  value?: string | FileInfo;
  /**
   * How the image should fit within the container.
   * - `cover` will fill the container and crop excess parts.
   * - `contain` will scale the image to fit within the container without cropping.
   */
  imageFit: 'cover' | 'contain';
  /**
   * A comma-separated list of accepted file types.
   */
  accept: string;
  /**
   * Optional client-side resize before emitting the file.
   * If provided, the selected image will be resized on the client device.
   * :::note
   * HEIC may not decode in all browsers; when decoding fails, the original
   * file will be emitted. See the examples for more info.
   * :::
   */
  resize?: ResizeOptions;
  /**
   * Emitted when the picture changes (first FileInfo only).
   */
  change: EventEmitter<FileInfo | undefined>;
  /**
   * Emitted when a file is rejected by accept filter.
   */
  filesRejected: EventEmitter<FileInfo[]>;
  private objectUrl?;
  private imageError;
  private isErrorMessagePopoverOpen;
  private removeButtonId;
  private browseButtonId;
  disconnectedCallback(): void;
  protected handleValueChange(): void;
  render(): any;
  private get hasValue();
  private renderBrowseButton;
  private renderAvatar;
  private renderIcon;
  private renderClearButton;
  private renderSpinner;
  private renderHelperText;
  private getUnsupportedPreviewContext;
  private shouldShowErrorMessage;
  private renderErrorMessage;
  private handleNewFiles;
  private handleRejectedFiles;
  private getImageSrc;
  private revokeObjectUrl;
  private handleClear;
  private onImageError;
  private openPopover;
  private onPopoverClose;
  private getTranslation;
}
//# sourceMappingURL=profile-picture.d.ts.map