import { Component } from 'react';
import * as ArDesignerNs from '@mescius/activereportsjs/reportdesigner';
import { Report, NewReportInfo, WhenDirty, DocumentChangedEventArgs } from '@mescius/activereportsjs/reportdesigner';
import { ResourceLocator } from '@mescius/activereportsjs/core';
export interface DesignerProps {
    /** Sets the current report. */
    report?: ArDesignerNs.Report;
    /**
     * Called on open report.
     * @returns Promise with report info or 'undefined' if operation was cancelled.
     */
    onCreate?: () => Promise<ArDesignerNs.Report | ArDesignerNs.NewReport | undefined>;
    /**
     * Called on opening report.
     * @returns Promise with report info or 'undefined' if operation was cancelled.
     */
    onOpen?: () => Promise<ArDesignerNs.Report | undefined>;
    /**
     * Called on saving report.
     * @param options Current report info.
     * @returns Promise with new report info if report was saved or 'undefined' if operation was cancelled.
     */
    onSave?: (options: ArDesignerNs.SaveReportInfo) => Promise<ArDesignerNs.SaveResult | undefined>;
    /**
     * Called on saving report as new.
     * @param options Current report info.
     * @returns Promise with new report info if report was saved or 'undefined' if operation was cancelled.
     */
    onSaveAs?: (options: ArDesignerNs.SaveNewReportInfo) => Promise<ArDesignerNs.SaveAsResult | undefined>;
    /**
     * Called on render current report.
     * @param report Current report info.
     * @param resourceLocator ResourceLocator instance.
     */
    onRender?: (report: ArDesignerNs.ReportDefinition, resourceLocator?: Partial<ResourceLocator>) => Promise<void>;
    /**
     * Called on open custom file menu.
     */
    onOpenFileMenu?: () => void;
    /** Sets the list of available images. */
    imageList?: ArDesignerNs.ImageResourceInfo[];
    /** Sets the list of available reports. */
    reportList?: ArDesignerNs.ReportResourceInfo[];
    /** Sets the list of available master reports. */
    masterReportList?: ArDesignerNs.ReportResourceInfo[];
    /** Sets the list of available themes. */
    themeList?: ArDesignerNs.ThemeResourceInfo[];
    /** Sets the list of datasource templates. */
    dataSources?: ArDesignerNs.DataSourceTemplate[];
    /** Sets the handler for documentChanged event. */
    documentChanged?: (args: DocumentChangedEventArgs) => void;
    /**
     * Called before designer initialization.
     * @returns DesignerConfig to initialize designer instance.
     */
    onInit?(): ArDesignerNs.DesignerConfig;
}
export type ReportInfo = ArDesignerNs.ReportInfo;
export type DesignerCommand = ArDesignerNs.DesignerCommand;
export { ColorThemes } from '@mescius/activereportsjs/reportdesigner';
export type ColorTheme = ArDesignerNs.ColorTheme;
export declare class Designer extends Component<DesignerProps, {}> {
    private _host;
    private _designer?;
    private _eventsRegistry;
    componentDidMount(): Promise<void>;
    componentDidUpdate(prevProps: DesignerProps): Promise<void>;
    private areDeepEqual;
    private isReportDef;
    private shouldReportUpdate;
    private applyProps;
    /**
     * Sets report.
     * @param report Report info to load.
     * @param whenDirty Action to perform in case of 'dirty' report.
     * @param isDirtyInitial Initial value for 'dirty' state after load.
     */
    setReport(report: Report, whenDirty?: WhenDirty, isDirtyInitial?: boolean): Promise<void>;
    /**
     * Gets report.
     * @returns Promise with current report information.
     */
    getReport(): Promise<ReportInfo>;
    /**
     * Creates report.
     * @param reportInfo Report info to load.
     * @param whenDirty Action to perform in case of 'dirty' report.
     */
    createReport(reportInfo: NewReportInfo, whenDirty?: WhenDirty): Promise<void>;
    /**
     * Process command.
     * @param cmd Command name.
     */
    processCommand(cmd: DesignerCommand): Promise<void>;
    /**
     * Returns focus to Designer.
     */
    focus(): void;
    /**
     * Gets API to manipulate designer.
     */
    getEditorAPI(): Promise<ArDesignerNs.EditorAPI>;
    getPanelsAPI(): Promise<ArDesignerNs.PanelsAPI>;
    getNotificationsAPI(): Promise<ArDesignerNs.NotificationsAPI>;
    render(): JSX.Element;
}
