import { AfterViewInit, DoCheck, ElementRef, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ActionBarComponent } from '../actions/containers/action-bar/action-bar.component';
import { Layout } from '../common/layout';
import { SpacerBaseDirective } from '../common/spacer-base.component';
import { DataTableDownloadDataType, DataTableDownloadService } from '../data-table/data-table-download.service';
import { DataTableComponent, TreeTableComponent } from '../data-table/data-table.component';
import { SearchFormFieldComponent } from '../form/form-field/search/search-form-field.component';
import { PivotComponent } from '../pivot/pivot.component';
import { SplitViewComponent } from '../split-view/split-view.component';
import { MasterViewContentDirective } from './master-view-content/master-view-content.component';
import * as i0 from "@angular/core";
export declare class MasterViewComponent extends SpacerBaseDirective implements AfterViewInit, DoCheck, OnChanges, OnDestroy, OnInit {
    hostElement: ElementRef;
    private dataTableDownloadService;
    private splitView;
    private pivotComponent;
    /**
     * Getter for data table minimum width class in string.
     */
    get dataTableMinWidthClassString(): string;
    /**
     * Getter for whether to render the search box based on window size.
     */
    get searchBoxAutoWrapOnWindowSizeChanges(): boolean;
    /**
     * Getter for whether to set the overflow or not based on window size.
     */
    get shouldDataTableParentOverflowHide(): boolean;
    /**
     * Getter for whether the table would be rendered with padding horizontally.
     */
    get shouldDataTableSlim(): boolean;
    /**
     * Getter for whether teh table would be rendered with bottom margin.
     */
    get shouldDataTableRenderWithBottomMargin(): boolean;
    /**
     * The localization strings object for master view.
     */
    resourceStrings: {
        oneItem: string;
        items: string;
        results: string;
        selected: string;
        selectedAria: string;
        selectedTitle: string;
        refresh: {
            title: string;
            ariaLabel: {
                header: string;
                noHeader: string;
            };
        };
        columnPicker: {
            title: string;
        };
        filter: {
            title: string;
        };
        group: {
            title: string;
        };
    };
    /**
     * The localization strings object from angular common.
     */
    commonStrings: {
        add: string;
        apply: string;
        back: string;
        skip: string;
        cancel: string;
        close: string;
        clear: string;
        continue: string;
        details: string;
        disable: string;
        disabled: string;
        discard: string;
        discarded: string;
        enable: string;
        enabled: string;
        exit: string;
        failed: string;
        failure: string;
        finish: string;
        free: string;
        inProgress: string;
        message: string;
        next: string;
        no: string;
        remove: string;
        save: string;
        search: string;
        succeeded: string;
        success: string;
        submit: string;
        total: string;
        used: string;
        yes: string;
        more: string;
        actions: string;
        expand: string;
        collapse: string;
        on: string;
        off: string;
        reset: string;
        none: string;
        OK: {
            affirmative: string;
            state: string;
        };
        Capacity: {
            /**
             * Getter for whether the table would be rendered with padding horizontally.
             */
            criticalState: string;
            warningState: string;
            normalState: string;
        };
        Form: {
            Validation: {
                required: string;
                UnknownFieldName: string;
                IllegalNumber: string;
                AlertTypes: {
                    error: string;
                    warn: string;
                    info: string;
                    success: string;
                    pending: string;
                };
                Required: {
                    label: string;
                    format: string;
                };
                Min: {
                    /**
                     * The view child reference for the main content div wrapper.
                     */
                    format: string;
                };
                Max: {
                    format: string;
                };
                Email: {
                    format: string;
                };
                MinLength: {
                    format: string;
                };
                MaxLength: {
                    format: string;
                };
                Pattern: {
                    format: string;
                };
                Capslock: {
                    message: string;
                };
                isNumber: {
                    format: string;
                };
                Input: {
                    UnknownRegex: {
                        /**
                         * The value of the header in string.
                         */
                        invalidCharacters: string;
                    }; /**
                     * It determines whether to show the number of selections.
                     */
                    DefaultRegex: {
                        invalidCharacters: string;
                    };
                };
                MachineName: {
                    invalidCharacters: string;
                    invalidCharactersWithSpace: string;
                    whitespaceWillBeTrimmed: string;
                    noStartWithPeriod: string;
                };
                MatchField: {
                    noMatch: string;
                };
                Pending: {
                    message: string;
                };
            };
            Loading: {
                message: string;
            };
        };
        InfoBubble: {
            title: string;
        };
    };
    /**
     * The content child reference for the search element.
     */
    searchElement: SearchFormFieldComponent;
    /**
     * The content child reference for the action bar element.
     */
    actionBarComponent: ActionBarComponent;
    /**
     * The view child reference for the main content div wrapper.
     */
    containerElement: ElementRef;
    /**
     * The view child reference for the main data view that normally contains a data-table component.
     */
    dataView: ElementRef;
    /**
     * The directive component for the master view data view where normally a data-table exists.
     */
    smeMasterViewContentDirective: MasterViewContentDirective;
    /**
     * The getter content child reference for the data-table component.
     */
    get smeDataTable(): DataTableComponent;
    /**
     * The setter for the data table.
     */
    set smeDataTable(value: DataTableComponent);
    /**
     * The content child reference for the tree table component.
     */
    smeTreeTable: TreeTableComponent;
    /**
     * True is to show the header.
     */
    hideHeader: boolean;
    /**
     * The value of the header in string.
     */
    header: string;
    /**
     * The total count of table items in number.
     */
    total: number;
    /**
     * It determines whether to show the number of selections.
     */
    showSelection: boolean;
    /**
     * It determine whether to show the column picker.
     */
    showColumnPicker: boolean;
    /**
     * True is to show the download button.
     */
    showDownloadButton: boolean;
    /**
     * It determines whether extra context parameter will be used for the download.
     * This usually associates with the 'download' emitter.
     */
    getDownloadContextParameters: boolean;
    /**
     * It determines the state when the column picker dialog is opened.
     */
    columnPickerActive: boolean;
    /**
     * It determines whether to show the refresh button.
     */
    showRefresh: boolean;
    /**
     * It determines whether to disable the refresh button.
     */
    disableRefresh: boolean;
    /**
     * It determines the data table min width level.
     */
    dataTableMinWidth: string;
    /**
     * It determines whether to show the filter button.
     */
    showFilter: boolean;
    /**
     * It determines whether the filter dialog is opened.
     */
    filterActive: boolean;
    /**
     * It determines there is a worker downloading in progress.
     */
    downloadActive: boolean;
    /**
     * It determines whether to show up the query editor extension.
     */
    enableQueryEditor: boolean;
    /**
     * Setter for the selection count for the data-table.
     */
    set selection(selection: any);
    /**
     * The event emitter when selection(s) changed.
     */
    selectionChange: EventEmitter<any>;
    /**
     * It determines whether the data-table should respect the same item as two different rows.
     */
    requireDataItemUniqueId: (item: any) => string;
    /**
     * @deprecated since 7/13/18. Please use [showGroup], [groupActive], and (group) instead
     */
    set showCustomFilter(value: boolean);
    get showCustomFilter(): boolean;
    private internalShowCustomFilter;
    /**
     * It determines the group button has been clicked.
     */
    groupActive: boolean;
    /**
     * If the value is false, the master view always renders in relative layout regardless of window size changes.
     */
    stretchToAbsolute: boolean;
    /**
     * It determines whether to expand the details pane on first time landing on the page.
     */
    autoExpandDetailsPane: boolean;
    /**
     * It determines whether to show up the group button.
     */
    showGroup?: boolean;
    /**
     * It determines the download data type.
     */
    downloadDataType: DataTableDownloadDataType;
    /**
     * Used to set the tooltip text for the refresh button
     */
    refreshTooltipText: string;
    /**
     * The event emitter for download has been prompted.
     */
    downloadPrompted: EventEmitter<void>;
    /**
     * The event emitter for when the download has been finished.
     */
    downloadFinished: EventEmitter<void>;
    /**
     * The event emitter for the column picker to render a dialog.
     */
    columnPicker: EventEmitter<void>;
    /**
     * The event emitter for the refreshing function to happen.
     */
    refresh: EventEmitter<void>;
    /**
     * The event emitter for the filter dialog to open.
     */
    filter: EventEmitter<void>;
    /**
     * The event emitter for the grouping dialog to open.
     */
    group: EventEmitter<void>;
    /**
     * The event emitter for the clear selection from the table to happen.
     */
    clearSelection: EventEmitter<void>;
    /**
     * The event emitter for when the data-view has been ready after ngAfterViewInit life cycle.
     */
    smeDataTableFromTemplateReady: EventEmitter<boolean>;
    /**
     * It implements the ILayout interface. It's triggered when the layout is changed.
     * It's used to tell the child components to coordinate with the layout change.
    */
    layoutChanged: EventEmitter<void>;
    /**
     * Implementation of the Layout interface
     */
    windowBreakpointChanged: EventEmitter<void>;
    useSearch: boolean;
    selectedItemCount: number;
    dataViewHeight: number;
    isDataListScrolledToTop: boolean;
    headerId: string;
    refreshButtonAriaLabel: string;
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    private splitViewPaneToggledSubscription;
    private dataTableOnFilterSubscription;
    private masterViewResponsiveWindowManager;
    private isInitialized;
    private currentDataSelection;
    private internalSmeDataTable;
    constructor(injector: Injector, hostElement: ElementRef, dataTableDownloadService: DataTableDownloadService, splitView: SplitViewComponent, pivotComponent: PivotComponent, layout: Layout);
    /**
     * The method to run after the component view initialized
     */
    ngAfterViewInit(): void;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    /**
     * Emit the event from the master view for the readiness of the templates passed in to the master view content.
     * This can better handling the rendering life cycle from child to parent.
     */
    onSmeDataTableFromTemplateReady(): void;
    /**
     * The on window breakpoint changed handler.
     * Adding yield for component to get ElementRef after initialization.
     */
    private onLayoutChanged;
    /**
     * The deferred layout changed handler.
     */
    private deferredOnLayoutChanged;
    /**
     * The implementation after interaction with the download button from the master view.
     * @param $event the button clicked event.
     */
    onDownloadButtonClicked($event: any): void;
    /**
     * The function for executing the download context from data-table.
     * @param contextParameters the context parameter passed in from extension from outer scope.
     */
    onDownloadPrompted(contextParameters?: any): void;
    /**
     * The on window breakpoint changed handler.
     * Adding yield for component to get ElementRef after initialization.
     */
    onWindowBreakpointChanged(): void;
    /**
     * It updates the master view's layout and emits layout changed event to children.
     */
    updateLayout(): void;
    ngDoCheck(): void;
    doClearSelection(event: MouseEvent): void;
    /**
     * Gets the item count in string.
     * @returns string value for the total count.
     */
    getItemCountText(): string;
    /**
     * Gets selected item count in string.
     * @returns string value for the selected count.
     */
    getSelectedCountText(): string;
    /**
     * Gets selected item count in string for aria support.
     * @returns string value for the selected count.
     */
    getSelectedCountAriaText(): string;
    /**
     * Gets filter item count in string for aria support.
     * @returns string value for the filtered count.
     */
    getFilterAriaLabel(): string;
    getColumnPickerAriaLabel(): string;
    /**
     * Update the action bar
     */
    updateActionBar(): void;
    /**
     * Handles clicking on the refresh button
     */
    refreshButtonClicked(): void;
    /**
     * Creates the idBag used by this master view to store unique element ids.
     * id values will be assigned be the @see MasterViewComponent super class.
     */
    protected createIdBag(): MsftSme.StringMap<string>;
    private handleDetailPaneExpanding;
    private setupDataTableAccessibility;
    static ɵfac: i0.ɵɵFactoryDeclaration<MasterViewComponent, [null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; skipSelf: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MasterViewComponent, "sme-master-view", never, { "hideHeader": "hideHeader"; "header": "header"; "total": "total"; "showSelection": "showSelection"; "showColumnPicker": "showColumnPicker"; "showDownloadButton": "showDownloadButton"; "getDownloadContextParameters": "getDownloadContextParameters"; "columnPickerActive": "columnPickerActive"; "showRefresh": "showRefresh"; "disableRefresh": "disableRefresh"; "dataTableMinWidth": "dataTableMinWidth"; "showFilter": "showFilter"; "filterActive": "filterActive"; "downloadActive": "downloadActive"; "enableQueryEditor": "enableQueryEditor"; "selection": "selection"; "requireDataItemUniqueId": "requireDataItemUniqueId"; "showCustomFilter": "showCustomFilter"; "groupActive": "groupActive"; "stretchToAbsolute": "stretchToAbsolute"; "autoExpandDetailsPane": "autoExpandDetailsPane"; "showGroup": "showGroup"; "downloadDataType": "downloadDataType"; "refreshTooltipText": "refreshTooltipText"; }, { "selectionChange": "selectionChange"; "downloadPrompted": "downloadPrompted"; "downloadFinished": "downloadFinished"; "columnPicker": "columnPicker"; "refresh": "refresh"; "filter": "filter"; "group": "group"; "clearSelection": "clearSelection"; "smeDataTableFromTemplateReady": "smeDataTableFromTemplateReady"; "layoutChanged": "layoutChanged"; "windowBreakpointChanged": "windowBreakpointChanged"; }, ["searchElement", "actionBarComponent", "smeDataTable", "smeTreeTable"], ["sme-query-editor", "sme-action-bar,.action-bar", ".sme-master-view-custom-filter", "sme-form-field[type=\"search\"]", "*"], false, never>;
}
