﻿/**
* DevExpress HTML/JS Reporting (viewer\utils\initializer.d.ts)
* Version:  20.2.13
* Build date: Apr 10, 2023
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { IGeneratedDocumentData } from '../internal/_previewRequestWrapper';
import { IReportParametersInfo, PreviewParametersViewModel } from '../parameters/previewParametersViewModel';
import { ReportPreview } from '../reportPreview';
import { IParameterDescriptor, IParameter } from '../parameters/parameterHelper';
import { IKeyValuePair } from '../../common/types';
import { IBrickNode } from './utils';
import { EditingField } from '../editing/editingField';
import { ExportOptionsPreview } from '../exportOptions/exportOptionsPreview';
import { ISerializationInfo, IDisplayedValue, TabPanel } from '@devexpress/analytics-core/analytics-utils';
import { ILocalizationSettings, ICommonCustomizationHandler, IDesignerPart, IGlobalizeSettings } from '@devexpress/analytics-core/analytics-internal';
export interface IPreviewInitialize {
    reportId?: string;
    documentData?: IGeneratedDocumentData;
    reportUrl?: string;
    documentId?: string;
    pageSettings?: IPreviewPageInitialSettings;
    exportOptions?: string;
    parametersInfo?: IReportParametersInfo;
    rtlReport?: boolean;
    error?: any;
}
export interface IPreviewModel {
    tabPanel: TabPanel;
    reportPreview: ReportPreview;
    Close: () => void;
    ExportTo: (format?: string, inlineResult?: boolean) => void;
    GetCurrentPageIndex: () => number;
    GetParametersModel: () => PreviewParametersViewModel;
    GoToPage: (pageIndex: number) => void;
    OpenReport: (reportUrl: string) => void;
    Print: (pageIndex?: number) => JQueryPromise<boolean>;
    ResetParameters: () => void;
    StartBuild: () => void;
}
export interface IPreviewPageInitialSettings {
    height?: number;
    width?: number;
    color?: string;
}
export interface IParametersCustomizationHandler {
    customizeParameterEditors?: (parameter: IParameterDescriptor, info: ISerializationInfo) => void;
    customizeParameterLookUpSource?: (parameter: IParameterDescriptor, items: Array<IDisplayedValue>) => any;
    parametersReset?: (parametersViewModel: PreviewParametersViewModel, parameters: IParameter[]) => void;
    parametersSubmitted?: (parametersViewModel: PreviewParametersViewModel, parameters: Array<IKeyValuePair<any>>) => void;
}
export interface IPreviewCustomizationHandler extends IParametersCustomizationHandler, ICommonCustomizationHandler {
    customizeParts?: (parts: IDesignerPart[]) => void;
    previewClick?: (pageIndex: number, brick: IBrickNode, defaultHandler: () => void) => boolean;
    editingFieldChanged?: (field: EditingField, oldValue: any, newValue: any) => any;
    documentReady?: (documentId: string, reportId: string, pageCount: number) => void;
    customizeExportOptions?: (options: IPreviewExportOptionsCustomizationArgs) => void;
}
export interface IPreviewExportOptionsCustomizationArgs {
    exportOptions: ExportOptionsPreview;
    panelVisible: boolean;
}
export interface IMobileModeSettings {
    readerMode?: boolean;
    animationEnabled?: boolean;
}
export interface ITabPanelSettings {
    position?: string;
    width?: number | string;
}
export interface IProgressBarSettings {
    position?: string;
    keepOnVisibleArea?: boolean;
}
export interface IRemoteSettings {
    authToken?: string;
    serverUri?: string;
}
export interface IWebDocumentViewerSettings extends ILocalizationSettings {
    handlerUri?: string;
    allowURLsWithJSContent?: boolean;
    rtl?: boolean;
    accessibilityCompliant?: boolean;
    isMobile?: boolean;
    mobileModeSettings?: IMobileModeSettings;
    remoteSettings?: IRemoteSettings;
    tabPanelSettings?: ITabPanelSettings;
    progressBarSettings?: IProgressBarSettings;
}
export interface IWebDocumentViewerModel extends IPreviewInitialize, IWebDocumentViewerSettings, IGlobalizeSettings {
    cultureInfoList?: {
        [key: string]: string;
    };
    previewVisible?: boolean;
}
export interface IBindingSettings {
    element: Element;
    model: IWebDocumentViewerModel;
    callbacks?: IPreviewCustomizationHandler;
    applyBindings?: boolean;
}
