import { AdaptableForm } from '../PredefinedConfig/Common/AdaptableForm';
import { ExportState, Report, ReportData, ReportSchedule, SystemReportNames } from '../PredefinedConfig/ExportState';
import { CustomDestination, ExternalReport, ExportFormContext } from '../AdaptableOptions/ExportOptions';
import { ExportDestination } from '../PredefinedConfig/Common/Enums';
import { AdaptableColumnBase } from '../types';
/**
 * Provides run-time access to the Export Module and Report state
 */
export interface ExportApi {
    /**
     * Retrieves Export section from Adaptable State
     */
    getExportState(): ExportState;
    /**
     * Retrieves currently selected Report
     * @returns report
     */
    getCurrentReport(): Report;
    /**
     * Retrieves Report with the given name
     * @param reportName report to retrieve
     * @returns report
     */
    getReportByName(reportName: string): Report | undefined;
    /**
     * Retrieves Report by Id
     * @param id report id
     * @returns report
     */
    getReportById(id: Report['Uuid']): Report;
    /**
     * Retrieves Destination with the given name
     * @param destinationName destination to retrieve
     * @returns export destination
     */
    getDestinationByName(destinationName: ExportDestination | string): ExportDestination | CustomDestination | undefined;
    /**
     * Retrieves the current Export destination
     */
    getCurrentDestination(): ExportDestination | CustomDestination | undefined;
    /**
     * Retrieves name of currently selected Report
     */
    getCurrentReportName(): string;
    /**
     * Retrieves all Reports in State - System, External and User-created Reports
     * @returns reports
     */
    getReports(): Report[];
    /**
     * Returns all External Reports that have been provided to Export Options
     */
    getExternalReports(): ExternalReport[];
    /**
     * Retrieves System Reports section of Export State
     */
    getAvailableSystemReports(): SystemReportNames;
    /**
     * Retrieves the available export destinations
     * @returns export destinations
     */
    getAvailableExportDestinations(): ExportDestination[];
    /**
     * Retrieves all Report Schedules
     * @returns report schedule
     */
    getReportSchedules(): ReportSchedule[];
    /**
     * Sends a Report to a given destination
     * @param reportName name of Report to send
     * @param destination destination to which Report will be sent
     */
    runReport(reportName: string, destination: 'Excel' | 'CSV' | 'Clipboard' | 'JSON' | string): void;
    /**
     * Sends a Report to a given destination
     * @param systemReportName name of System Report to send
     * @param destination destination to which Report will be sent
     */
    runSystemReport(systemReportName: 'Visual Data' | 'All Data' | 'Current Data' | 'Selected Cells' | 'Selected Rows', destination: 'Excel' | 'CSV' | 'Clipboard' | 'JSON' | string): void;
    /**
     * Selects the report in the dashboard and statusbar UI
     *
     * @param reportName name of Report to select
     */
    selectReport(reportName: string): void;
    /**
     * Selects the report destination in the dashboard and statusbar UI
     *
     * @param destinationName name of Report to select
     */
    selectDestination(destinationName: string): void;
    /**
     * If this AdapTable instance can to export to Excel; if false, the Export to Excel option will not be visible
     */
    canExportToExcel(): boolean;
    /**
     * Exports data to Excel
     *
     * @param columnIds columns to include in the Sheet
     * @param data data to export
     * @param fileName name of spreadsheet that is created
     */
    exportDataToExcel(reportData: ReportData, fileName: string): void;
    /**
     * Open Settings Panel with Export section selected
     */
    openExportSettingsPanel(): void;
    /**
     * Edits an existing report
     * @param report report to edit
     * @returns report
     */
    editReport(report: Report): Report;
    /**
     * Edits existing reports
     * @param report reports to edit
     * @returns reports
     */
    editReports(reports: Report[]): Report[];
    /**
     * Retrieves all Custom Destinations from Export Options
     * @returns custom destinations
     */
    getCustomDestinations(): CustomDestination[];
    /**
     * If the given destination is a Custom one
     * @param destination destination to check
     */
    isExportDestinationCustom(destinationName: string): boolean;
    /**
     * Form Data entered by the User in the UI for a Custom Destination
     * @param destination Custom Destination for which to get Form Def
     */
    getExportDestinationForm(destinationName: string): AdaptableForm<ExportFormContext> | undefined;
    /**
     * Exports data currently in grid to Excel as WYSIWYG
     */
    exportVisualDataToExcel(): void;
    /**
     * Is given Report user-generated
     * @param report Report to Check
     */
    isExternalReport(report: Report): boolean;
    /**
     * Runs the report function of the ExternalReport with the given reportName
     * @param reportName external report name
     */
    runExternalReport(reportName: string): ReportData | undefined;
    /**
     * Returns the ReportData for the Report with the given name
     * @param reportName - the name of the report
     */
    getReportDataForReport(reportName: string): ReportData | undefined;
    /**
     * Returns whether the given column is exportable
     */
    isColumnExportable(adaptablColumn: AdaptableColumnBase): boolean;
}
