import { CustomDriver } from '../../../results-driver/src/types';
import { loadDataSetsCallback } from '../../../shared-logic/src/Callbacks/types';
import { QueryEngineEndpoint } from '../../../shared-logic/src/QueryEngineConfig/types';
import { VariablesCallback } from '../../../shared-logic/src/Variables/types';
import { EditorBehaviour } from '../../../shared-ui/src/components/Editor/types';
import { StudioProps } from '../../../shared-ui/src/components/Studio/StudioContexts';
import { DashboardBehaviour } from '../../../shared-ui/src/contexts/DashboardBehaviour/types';
import { VizzlyComponents, VizzlyTheming, trackEventCallback } from '../types';
export type { FilterConfig } from '../../../shared-logic/src/AdditionalFilter/types';
export declare type SharedEditorProps = {
    /**
     * Optionally, return the `Component` that will be rendered in the Editor.
     *
     * returning `null` will render an editor with a predicted view.
     */
    view: EditorBehaviour['view'];
    onSave?: EditorBehaviour['onSave'];
    vizzlyApiHost?: string;
    featureToggles?: Partial<Omit<DashboardBehaviour['featureToggles'], 'disableAutoSave' | 'canAddNewRows' | 'canAddNewCells' | 'canUseComponentLibrary' | 'canEditComponentLibrary' | 'canEditComponentsOnDashboard' | 'canRemoveComponentsFromDashboard' | 'forceMobile'>>;
    customViews?: DashboardBehaviour['customViews'];
    excludeComponents?: StudioProps['excludeComponents'];
    includeComponents?: StudioProps['includeComponents'];
    numberFormatOptions?: DashboardBehaviour['numberFormatOptions'];
    valueAlias?: DashboardBehaviour['valueAlias'];
    dateTimeFormatOptions?: DashboardBehaviour['dateTimeFormatOptions'];
    developerTools?: DashboardBehaviour['developerTools'];
    textOverrides?: DashboardBehaviour['textOverrides'];
    dataPanel?: DashboardBehaviour['dataPanel'];
    id?: string;
    /**
     * @deprecated This property is being deprecated. Use dateFilterOptions for dates.
     */
    dateTimeFilterOptions?: DashboardBehaviour['dateFilterOptions'];
    dateFilterOptions?: DashboardBehaviour['dateFilterOptions'];
    formatPanel?: DashboardBehaviour['formatPanel'];
    onEditorUpdate?: DashboardBehaviour['onEditorUpdate'];
    theme?: VizzlyTheming.Base;
    onError?: VizzlyComponents.OnError;
    onViewClick?: DashboardBehaviour['onViewClick'];
    trackEvent?: trackEventCallback;
    labelFormat?: DashboardBehaviour['labelFormat'];
    renderTableCell?: DashboardBehaviour['renderTableCell'];
} & Partial<VizzlyComponents.ComponentOverrides>;
export declare type SharedDashboardProps = {
    vizzlyApiHost?: string;
    featureToggles?: Partial<DashboardBehaviour['featureToggles']>;
    variables?: VariablesCallback;
    customViews?: DashboardBehaviour['customViews'];
    excludeComponents?: StudioProps['excludeComponents'];
    includeComponents?: StudioProps['includeComponents'];
    reportScheduleOptions?: DashboardBehaviour['reportScheduleOptions'];
    valueAlias?: DashboardBehaviour['valueAlias'];
    numberFormatOptions?: DashboardBehaviour['numberFormatOptions'];
    dateTimeFormatOptions?: DashboardBehaviour['dateTimeFormatOptions'];
    datePickerFormat?: DashboardBehaviour['datePickerFormat'];
    defaultFormats?: DashboardBehaviour['defaultFormats'];
    developerTools?: DashboardBehaviour['developerTools'];
    textOverrides?: DashboardBehaviour['textOverrides'];
    dataPanel?: DashboardBehaviour['dataPanel'];
    /** @deprecated for hidden filters, instead use hiddenDashboardFilters if the filter is not shown on the UI */
    dashboardFilters?: DashboardBehaviour['dashboardFilters'];
    /** Callback function called for every query initiated. */
    hiddenDashboardFilters?: DashboardBehaviour['hiddenDashboardFilters'];
    onDashboardFilterChange?: DashboardBehaviour['onDashboardFilterChange'];
    onDashboardLoad?: DashboardBehaviour['onDashboardLoad'];
    timeZone?: DashboardBehaviour['timeZone'];
    id?: string;
    /**
     * @deprecated This property is being deprecated. Use dateFilterOptions for dates.
     */
    dateTimeFilterOptions?: DashboardBehaviour['dateFilterOptions'];
    dateFilterOptions?: DashboardBehaviour['dateFilterOptions'];
    formatPanel?: DashboardBehaviour['formatPanel'];
    onEditorUpdate?: DashboardBehaviour['onEditorUpdate'];
    maxCSVDownloadLimit?: number;
    theme?: VizzlyTheming.Base;
    /** This will appear to your users in the application. */
    organizationName?: string;
    renderTableCell?: DashboardBehaviour['renderTableCell'];
    onError?: VizzlyComponents.OnError;
    onViewClick?: DashboardBehaviour['onViewClick'];
    parentDashboardId?: string;
    /**
     * Child Dashboard ID. If your user has multiple copies of a parent dashboard, you
     * will need to specify the ID of the dashboard copy here to render the correct one.
     * You can use the services functionality to manage your user's dashboards
     * https://docs.vizzly.co/services
     *
     * Or learn more about child dashboards
     * https://docs.vizzly.co/concepts/parent-and-child-dashboards
     */
    dashboardId?: string;
    cascadeFilterSelection?: boolean;
    parentDashboard?: DashboardBehaviour['parentDashboard'];
    trackEvent?: trackEventCallback;
    pdfSettings?: DashboardBehaviour['pdfSettings'];
    labelFormat?: DashboardBehaviour['labelFormat'];
    filterLibrary?: DashboardBehaviour['filterLibrary'];
    onDashboardUpdate?: DashboardBehaviour['onDashboardUpdate'];
    customFields?: DashboardBehaviour['customFields'];
} & Partial<VizzlyComponents.ComponentOverrides>;
export declare type CustomDashboardProps = CustomProps & SharedDashboardProps;
export declare type CustomEditorProps = CustomProps & SharedEditorProps;
export declare type CustomProps = {
    runQueries: CustomDriver['runQueries'];
    identity: VizzlyComponents.identityCallback;
    dataSets: loadDataSetsCallback;
    queryEngineConfig: VizzlyComponents.loadQueryEngineConfigCallback;
    data?: never;
    queryEngineEndpoint?: QueryEngineEndpoint;
};
export declare type InBrowserDashboardProps = InBrowserProps & SharedDashboardProps;
export declare type InBrowserEditorProps = InBrowserProps & SharedEditorProps;
export declare type InBrowserProps = {
    identity: VizzlyComponents.identityCallback;
    dataSets: loadDataSetsCallback;
    data: VizzlyComponents.loadDataCallback;
    runQueries?: never;
    queryEngineConfig?: never;
    queryEngineEndpoint?: QueryEngineEndpoint;
};
export declare type SelfHostedDashboardProps = SelfHostedProps & SharedDashboardProps;
export declare type SelfHostedEditorProps = SelfHostedProps & SharedEditorProps;
export declare type SelfHostedProps = {
    queryEngineEndpoint?: QueryEngineEndpoint;
    identity: VizzlyComponents.identityCallback;
    runQueries?: never;
    dataSets?: loadDataSetsCallback;
    data?: never;
    queryEngineConfig?: never;
};
export declare type DashboardProps = InBrowserDashboardProps | SelfHostedDashboardProps | CustomDashboardProps;
export declare type EditorProps = InBrowserEditorProps | SelfHostedEditorProps | CustomEditorProps;
