/// <reference path="../../index.d.ts" />
import type Map from "@arcgis/core/Map.js";
import type { IExportInfos } from "../../utils/interfaces.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class PdfDownload extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: { pdfLabel: string; } & T9nMeta<{ pdfLabel: string; }>;
  /** number: The default number of labels per page to export */
  accessor defaultNumLabelsPerPage: number | undefined;
  /**
   * boolean: Controls the enabled/disabled state of download
   *
   * @default false
   */
  accessor disabled: boolean;
  /**
   * Downloads csv of mailing labels for the provided list of ids
   *
   * @param webmap - Webmap containing layer
   * @param exportInfos - Information about items to be exported
   * @param removeDuplicates - When true a single label is generated when multiple featues have a shared address value
   * @param addColumnTitle - Indicates if column headings should be included in output
   * @returns Promise resolving when function is done
   */
  downloadCSV(webmap: Map, exportInfos: IExportInfos, removeDuplicates: boolean, addColumnTitle?: boolean): Promise<void>;
  /**
   * Downloads pdf of mailing labels for the provided list of ids
   *
   * @param webmap - Webmap containing layer
   * @param exportInfos - Information about items to be exported
   * @param removeDuplicates - When true a single label is generated when multiple featues have a shared address value
   * @param title - Title for each page
   * @param initialImageDataUrl - Data URL of image for first page
   * @returns Promise resolving when function is done
   */
  downloadPDF(webmap: Map, exportInfos: IExportInfos, removeDuplicates?: boolean, title?: string, initialImageDataUrl?: string): Promise<void>;
}