import { AfterContentInit, ElementRef, EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
import { Subscription } from 'rxjs';
import { CoreBaseComponent } from '../common/base.component';
import { Layout } from '../common/layout';
import { SplitViewResizerMargin } from './split-view-responsive-window-manager';
import * as i0 from "@angular/core";
/**
 * The pane orientation of the split view.
 */
export declare type SplitViewOrientation = 'top' | 'left' | 'right' | 'bottom';
/**
 * The component definition of the split view content.
 */
export declare class SplitViewContentComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<SplitViewContentComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SplitViewContentComponent, "sme-split-view-content", never, {}, {}, never, ["*"], false, never>;
}
/**
 * The component definition of the split view pane.
 */
export declare class SplitViewPaneComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<SplitViewPaneComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SplitViewPaneComponent, "sme-split-view-pane", never, {}, {}, never, ["*"], false, never>;
}
/**
 * The component definition of the split view.
 */
export declare class SplitViewComponent extends CoreBaseComponent implements AfterContentInit, Layout, OnInit, OnDestroy {
    private elementReference;
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    /**
     * Container for active subscriptions that should be cleaned up in the OnDestroy call.
     */
    protected subscriptions: Subscription[];
    /**
     * It defines the actual pane distance that the control uses for rendering.
     */
    private internalPaneDistance;
    /**
     * It defines whether the pane distance value is set.
     * It will not set it twice if set because only need to remember the initial value.
     */
    private isPaneDistanceSet;
    /**
     * It remembers the pane distance that has been set initially.
     * The intention is for recovering the value on window size changes and layout changes.
     */
    private defaultPaneDistance;
    /**
     * It defines whether the split view has been expanded.
     */
    private internalIsExpanded;
    /**
     * Defines whether the split view component has been initialized.
     */
    private isComponentInitialized;
    /**
     * The window responsive manager for the split view.
     */
    private splitViewResponsiveWindowManager;
    /**
     * The orientation of the pane.
     */
    private internalOrientation;
    /**
     * 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>;
    /**
     * The content of the component.
     */
    content: SplitViewContentComponent;
    /**
     * The pane of the component.
     */
    pane: SplitViewPaneComponent;
    /**
     * The section html element that wraps the sme-split-view-pane
     */
    paneContainerElement: ElementRef;
    /**
     * The section html element that wraps the sme-split-view-container
     */
    contentContainerElement: ElementRef;
    /**
     * It indicates whether to show the scrollbar when it's needed.
     */
    showScrollbar: boolean;
    /**
     * It indicates whether to show the border for the splitter.
     */
    showSplitterBorder: boolean;
    /**
     * Set this to true means on smaller window, will respect the original pane value
     * It is not suggested to be used other than the shell side nav bar.
     */
    disablePaneDistanceResponsiveWindow: boolean;
    /**
     * It indicates the distance between the start and end of the pane.
     * It is a hardcoded value, not fully working on window responsive design.
     * By design, this value will not be respected on smaller screen, phone down.
     */
    get paneDistance(): number;
    set paneDistance(value: number);
    /**
     * Set to true to disable the resize margin to go window responsive.
     */
    disabledResizeMarginResponsiveWindow: boolean;
    /**
     * It indicates the min value of the pane size.
     */
    resizeLowerMargin: number;
    /**
     * It indicates the min value of the content size.
     */
    resizeUpperMargin: number;
    /**
     * It defines the orientation of the element which holds the resizer in the resizing layout.
     */
    set orientation(input: SplitViewOrientation);
    /**
     * Set this to true to disable the orientation change on window size change.
     */
    disableOrientationResponsiveWindow: boolean;
    /**
     * Hides the split view pane
     */
    hideSplitViewPane: boolean;
    /**
     * Getter for orientation
     */
    get orientation(): SplitViewOrientation;
    /**
     * Remember the previous window responsive value for orientation for the on orientation changed event.
     */
    private previousOrientationResponsiveWindow;
    /**
     * Getter for the window responsive value for the orientation
     */
    get orientationResponsiveWindow(): string;
    /**
     * The event fired when the pane's expanded state is being toggled.
     */
    paneToggling: EventEmitter<{
        isExpanded: boolean;
    }>;
    /**
     * The event fired when the pane's expanded state has been toggled.
     */
    paneToggled: EventEmitter<{
        isExpanded: boolean;
    }>;
    constructor(injector: Injector, elementReference: ElementRef, layout: Layout);
    /**
     * Gets the CSS classes of the component.
     *
     * TODO: setting the class this way prevent any custom class from being applied.
     * Change to setting class in the constructor using Renderer2 and ElementRef
     *
     * On phone down, the layout for split view can only be top and bottom, in this case, we will allow y scroll.
     */
    get hostClass(): string;
    /**
     * Gets the flex direction of the component.
     */
    get flexDirection(): string;
    /**
     * Gets whether the pane has been expanded.
     */
    get isExpanded(): boolean;
    /**
     * Sets whether the pane has been expanded.
     */
    set isExpanded(value: boolean);
    /**
     * The Angular ngOnInit function.
     */
    ngOnInit(): void;
    /**
     * The Angular ngOnDestroy function.
     */
    ngOnDestroy(): void;
    /**
     * The method called after content is initialized.
     */
    ngAfterContentInit(): void;
    /**
     * Gets the window responsive value for the pane distance.
     */
    getPaneDistanceResponsiveWindow(): number;
    /**
     * Gets the window responsive value for the resizer margin.
     */
    getSplitViewResizerMarginResponsiveWindow(): SplitViewResizerMargin;
    /**
     * The on window breakpoint changed handler.
     * Adding yield for component to get ElementRef after initialization.
     */
    onWindowBreakpointChanged(): void;
    /**
     * The deferred layout changed handler.
     */
    private deferredOnLayoutChanged;
    /**
     * Handles the change event coming from parent control from the layout component.
     */
    private onParentLayoutChanged;
    /**
     * Toggles the expanded state of the pane.
     */
    togglePane(): void;
    /**
     * The implementation for after the control gets signal for confirmation for resize.
     * @param $event the event for resizing
     */
    onResized($event: any): void;
    /**
     * Gets the value for the pane's distance for accessibility purposes.
     * @returns number that indicates the pane's rendering value.
     */
    getAriaValueNow(): number;
    /**
     * Handles the orientation changed events. This usually happens on layout change behavior such as resizing the window.
     * This function has to be called with component initialized.
     * @param cur the current layout, could be top, bottom, left, right.
     * @returns void.
     */
    private onOrientationChanged;
    /**
     * It has to be a debounce value in between 0 - 250 to wait for children component.
     * Ideally should be promise implemented.
     */
    private deferredRefreshUI;
    /**
     * The function to refresh the split view from UI.
     * @returns void
     */
    private refreshUI;
    /**
     * Sets the pane distance that would be used for rendering the pane.
     * pane's height on top, bottom layout.
     * pane's width on left, right layout.
     * @returns void;
     */
    private setInternalPaneDistance;
    /**
     * Sets the max value that the pane can grow.
     * Sets pane's height value on top, bottom layout.
     * Sets pane's width value on left, right layout.
     * @returns void.
     */
    private setPaneMaxSize;
    /**
     * Resets the max value that the pane can grow.
     * @returns void.
     */
    private resetPaneMaxSize;
    static ɵfac: i0.ɵɵFactoryDeclaration<SplitViewComponent, [null, null, { optional: true; skipSelf: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SplitViewComponent, "sme-split-view", never, { "showScrollbar": "showScrollbar"; "showSplitterBorder": "showSplitterBorder"; "disablePaneDistanceResponsiveWindow": "disablePaneDistanceResponsiveWindow"; "paneDistance": "paneDistance"; "disabledResizeMarginResponsiveWindow": "disabledResizeMarginResponsiveWindow"; "resizeLowerMargin": "resizeLowerMargin"; "resizeUpperMargin": "resizeUpperMargin"; "orientation": "orientation"; "disableOrientationResponsiveWindow": "disableOrientationResponsiveWindow"; "hideSplitViewPane": "hideSplitViewPane"; "isExpanded": "isExpanded"; }, { "layoutChanged": "layoutChanged"; "windowBreakpointChanged": "windowBreakpointChanged"; "paneToggling": "paneToggling"; "paneToggled": "paneToggled"; }, ["content", "pane"], ["sme-split-view-content", "sme-split-view-pane"], false, never>;
}
