import * as React from 'react';
import { service, Embed, IQnaEmbedConfiguration, IVisualEmbedConfiguration, IReportEmbedConfiguration, IDashboardEmbedConfiguration, ITileEmbedConfiguration } from 'powerbi-client';
import { IReportCreateConfiguration, IPaginatedReportLoadConfiguration } from 'powerbi-models';
/**
 * Type for event handler function of embedded entity
 */
export type EventHandler = ((event?: service.ICustomEvent<any>, embeddedEntity?: Embed) => void) | null;
/**
 * Props interface for PowerBIEmbed component
 */
export interface EmbedProps {
    embedConfig: IReportEmbedConfiguration | IDashboardEmbedConfiguration | ITileEmbedConfiguration | IQnaEmbedConfiguration | IVisualEmbedConfiguration | IPaginatedReportLoadConfiguration | IReportCreateConfiguration;
    getEmbeddedComponent?: {
        (embeddedComponent: Embed): void;
    };
    eventHandlers?: Map<string, EventHandler>;
    cssClassName?: string;
    phasedEmbedding?: boolean;
    service?: service.Service;
}
export declare enum EmbedType {
    Create = "create",
    Report = "report",
    Dashboard = "dashboard",
    Tile = "tile",
    Qna = "qna",
    Visual = "visual"
}
/**
 * Base react component to embed Power BI entities like: reports, dashboards, tiles, visual and qna containers.
 */
export declare class PowerBIEmbed extends React.Component<EmbedProps> {
    private _embed?;
    private powerbi;
    private containerRef;
    private prevEventHandlerMapString;
    private get embed();
    private set embed(value);
    constructor(props: EmbedProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: EmbedProps): Promise<void>;
    componentWillUnmount(): void;
    render(): JSX.Element;
    /**
     * Embed the powerbi entity (Load for phased embedding)
     */
    private embedEntity;
    /**
     * Sets all event handlers from the props on the embedded entity
     *
     * @param embed Embedded object
     * @param eventHandlers Array of eventhandlers to be set on embedded entity
     * @returns void
     */
    private setEventHandlers;
    /**
     * Returns the embedded object via _getEmbed_ callback method provided in props
     *
     * @returns void
     */
    private invokeGetEmbedCallback;
}
