import { XhrModule } from "./xhr";
import { IAnalyticalDashboardContent } from "@gooddata/typings";
/**
 * Modify how and what should be copied to the cloned dashboard
 */
export interface ICopyDashboardOptions {
    /** copy new kpi and reference it in the cloned dashboard */
    copyKpi?: boolean;
    /** copy new visualization object and reference it in the cloned widget */
    copyVisObj?: boolean;
    /** optional, default value of name is "Copy of (current dashboard title)" */
    name?: string;
    /** optional, default value of summary is (current dashboard summary) */
    summary?: string;
    /** optional, if true, the isLocked flag will be cleared for the newly created dashboard, defaults to false */
    clearLockedFlag?: boolean;
}
declare type UriTranslator = (oldUri: string) => string;
export declare function createTranslator(kpiMap: Map<string, string>, visWidgetMap: Map<string, string>): UriTranslator;
/**
 * Updates content of the dashboard
 *
 * @param {string} dashboardUri uri of dashboard
 * @param {UriTranslator} uriTranslator gets updated widgets and kpis uri
 * @param {string} filterContext updated filter context uri
 * @experimental
 */
export declare function updateContent(analyticalDashboard: any, uriTranslator: UriTranslator, filterContext: string): IAnalyticalDashboardContent;
export declare class MetadataModuleExt {
    private metadataModule;
    private userModule;
    private xhr;
    constructor(xhr: XhrModule);
    /**
     * @param {string} projectId id of the project
     * @param {string} dashboardUri uri of the dashboard
     * @param {ICopyDashboardOptions} options object with options:
     *          - default {} dashboard is cloned with new kpi reference and visualization widget is cloned with new
     *              visualization object reference
     *          - copyKpi {boolean} choose whether dashboard is cloned with new Kpi reference
     *          - copyVisObj {boolean} choose whether visualization widget is cloned with new visualization object reference
     *          - name {string} optional - choose name, default value is "Copy of (old title of the dashboard)"
     * @returns {string} uri of cloned dashboard
     * @experimental
     */
    saveDashboardAs(projectId: string, dashboardUri: string, options: ICopyDashboardOptions): Promise<string>;
    /**
     * Deletes dashboard and its objects
     * (only the author of the dashboard can delete the dashboard and its objects)
     *
     * @method deleteAllObjects
     * @param {string} projectId Project identifier
     * @param {string} dashboardUri Uri of a dashboard to be deleted
     * @experimental
     */
    cascadingDelete(projectID: string, dashboardUri: string): Promise<any>;
    private getDashboardDetailObject;
    private getDashboardName;
    private getDashboardSummary;
    private duplicateOrKeepKpis;
    private duplicateWidgets;
    private createAndUpdateWidgets;
    private duplicateFilterContext;
    private getSanitizedMeta;
    private getObjectsFromDashboard;
    private getObjectsUrisInDashboard;
    private unwrapObj;
    private shouldCopyVisObj;
    private shouldCopyKpi;
}
export {};
