import { CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';
import { ElementRef, EventEmitter, QueryList } from '@angular/core';
import { SplitterPaneComponent } from './splitter-pane/splitter-pane.component';
import * as i0 from "@angular/core";
export declare const SPLITTER_INTERACTION_KEYS: Set<string>;
export declare enum DragDirection {
    VERTICAL = "y",
    HORIZONTAL = "x"
}
/**
 * An enumeration that defines the `SplitterComponent` panes orientation.
 */
export declare enum SplitterType {
    Horizontal = 0,
    Vertical = 1
}
export declare class SplitterComponent {
    private readonly element;
    private _type;
    /**
     * Gets/Sets the splitter orientation.
     * @example
     * ```html
     * <ngm-splitter [type]="type">...</ngm-splitter>
     * ```
     */
    get type(): SplitterType;
    set type(value: SplitterType);
    /**
     * Gets the list of splitter panes.
     * @example
     * ```typescript
     * const panes = this.splitter.panes;
     * ```
     */
    panes: QueryList<SplitterPaneComponent>;
    /**
     * @hidden @internal
     * Gets the `flex-direction` property of the current `SplitterComponent`.
     */
    get direction(): string;
    /**
     * @hidden @internal
     * Gets/Sets the `overflow` property of the current splitter.
     */
    overflow: string;
    /**
     * @hidden @internal
     * Sets/Gets the `display` property of the current splitter.
     */
    display: string;
    /**
     * @hidden @internal
     * A field that holds the initial size of the main `SplitterPaneComponent` in each pair of panes divided by a splitter bar.
     */
    private initialPaneSize;
    /**
     * @hidden @internal
     * A field that holds the initial size of the sibling pane in each pair of panes divided by a gripper.
     * @memberof SplitterComponent
     */
    private initialSiblingSize;
    /**
     * @hidden @internal
     * The main pane in each pair of panes divided by a gripper.
     */
    private pane;
    /**
     * The sibling pane in each pair of panes divided by a splitter bar.
     */
    private sibling;
    clientWidth: number;
    clientHeight: number;
    constructor(element: ElementRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    _resizeCallback(entry: any): void;
    /** @hidden @internal */
    ngAfterContentInit(): void;
    /**
     * @hidden @internal
     * This method performs  initialization logic when the user starts dragging the splitter bar between each pair of panes.
     * @param pane - the main pane associated with the currently dragged bar.
     */
    onMoveStart(pane: SplitterPaneComponent): void;
    /**
     * @hidden @internal
     * This method performs calculations concerning the sizes of each pair of panes when the bar between them is dragged.
     * @param delta - The difference along the X (or Y) axis between the initial and the current point when dragging the bar.
     */
    onMoving(delta: number): void;
    /**
     * @hidden @internal
     * This method assigns the order of each pane.
     */
    private assignFlexOrder;
    /** @hidden @internal */
    getPaneSiblingsByOrder(order: number, barIndex: number): Array<SplitterPaneComponent>;
    static ɵfac: i0.ɵɵFactoryDeclaration<SplitterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SplitterComponent, "ngm-splitter", never, { "type": { "alias": "type"; "required": false; }; }, {}, ["panes"], ["ngm-splitter-pane"], false, never>;
}
/**
 * @hidden @internal
 * Represents the draggable bar that visually separates panes and allows for changing their sizes.
 */
export declare class SplitterBarComponent {
    /**
     * Set css class to the host element.
     */
    cssClass: string;
    /**
     * Gets/Sets the orientation.
     */
    type: SplitterType;
    /**
     * Sets/gets the element order.
     */
    order: number;
    /**
     * @hidden
     * @internal
     */
    get tabindex(): number;
    /**
     * @hidden
     * @internal
     */
    get orientation(): "horizontal" | "vertical";
    /**
     * @hidden
     * @internal
     */
    get cursor(): "" | "row-resize" | "col-resize";
    /**
     * Sets/gets the `SplitPaneComponent` associated with the current `SplitBarComponent`.
     * @memberof SplitBarComponent
     */
    pane: SplitterPaneComponent;
    /**
     * Sets/Gets the `SplitPaneComponent` sibling components associated with the current `SplitBarComponent`.
     */
    siblings: Array<SplitterPaneComponent>;
    /**
     * An event that is emitted whenever we start dragging the current `SplitBarComponent`.
     */
    moveStart: EventEmitter<SplitterPaneComponent>;
    /**
     * An event that is emitted while we are dragging the current `SplitBarComponent`.
     */
    moving: EventEmitter<number>;
    /**
     * A temporary holder for the pointer coordinates.
     */
    private startPoint;
    /**
     * @hidden @internal
     */
    get prevButtonHidden(): boolean;
    /**
     * @hidden @internal
     */
    keyEvent(event: KeyboardEvent): void;
    /**
     * @hidden @internal
     */
    get dragDir(): DragDirection;
    /**
     * @hidden @internal
     */
    get nextButtonHidden(): boolean;
    /**
     * @hidden @internal
     */
    onDragStart(event: CdkDragStart): void;
    /**
     * @hidden @internal
     */
    onDragMove(event: CdkDragMove): void;
    protected get resizeDisallowed(): boolean;
    /**
     * @hidden @internal
     */
    onCollapsing(next: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SplitterBarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SplitterBarComponent, "ngm-splitter-bar", never, { "type": { "alias": "type"; "required": false; }; "order": { "alias": "order"; "required": false; }; "pane": { "alias": "pane"; "required": false; }; "siblings": { "alias": "siblings"; "required": false; }; }, { "moveStart": "moveStart"; "moving": "moving"; }, never, never, false, never>;
}
