import { IgcDragMoveEventArguments, IgcDragResizeEventArguments } from '../drag-drop/drag.service';
import { IgcContextMenuItem, IgcDockManagerComponentBase, IgcPinBehavior, IgcTabRectsInfo } from './dockmanager.interfaces';
import { IgcContentPane, IgcDockManagerPane, IgcDockManagerPoint, IgcDockingIndicator, IgcDockingIndicatorPosition, IgcDocumentHost, IgcResizerLocation, IgcSplitPane, IgcTabGroupPane, IgcUnpinnedLocation } from './dockmanager.public-interfaces';
/**
 * @hidden
 */
export declare class IgcDockManagerService {
  dockManager: IgcDockManagerComponentBase;
  private paneParentMap;
  private initialFloatingPaneLocation;
  private initialFloatingPaneWidth;
  private initialFloatingPaneHeight;
  private initialTabHeaderClickOffset;
  private initialDragClientPoint;
  private draggedPanes;
  private draggedTab;
  private shiftLeftThreshold;
  private shiftRightThreshold;
  private documentsCache;
  private contentPanesCache;
  visibleDocuments: IgcContentPane[];
  visibleContentPanes: IgcContentPane[];
  documentHosts: IgcDocumentHost[];
  clientContentPanesMap: Map<string, IgcContentPane>;
  dropTargetParentRect: DOMRect;
  dockingIndicator: IgcDockingIndicator;
  forceDragPane: IgcSplitPane;
  forceDragTabHeader: IgcContentPane;
  unpinnedLocationMap: Map<IgcContentPane, IgcUnpinnedLocation>;
  constructor(dockManager: IgcDockManagerComponentBase);
  getContent(contentId: string): IgcDockManagerPane;
  private generateUuid;
  private populatePaneParents;
  private populatePinLocations;
  private resolvePaneUnpinLocation;
  private addContentPanePinLocation;
  private findClosestDocumentHost;
  private findPaneUnpinLocation;
  removePane(pane: IgcDockManagerPane): void;
  private removeFloatingPaneIfEmpty;
  private isFloatingPane;
  private addFloatingPane;
  getChildContentPanes(pane: IgcSplitPane | IgcTabGroupPane): IgcContentPane[];
  private getChildContentPanesRecursive;
  getChildDocHostRecursive(pane: IgcSplitPane): IgcDocumentHost;
  getVisibleContentPanes(parent: IgcTabGroupPane): IgcContentPane[];
  private getPaneToDock;
  private removeDocumentHost;
  private dockToCenter;
  private dockToEdge;
  private updateLayout;
  processLayout(): void;
  getParent(pane: IgcDockManagerPane): IgcDockManagerPane;
  getRootParent(pane: IgcDockManagerPane): IgcSplitPane;
  getPanePath(pane: IgcDockManagerPane): IgcDockManagerPane[];
  getDocHostParent(pane: IgcDockManagerPane): IgcDocumentHost;
  resizeFlyoutPane(delta: number): void;
  resizePane(pane: IgcDockManagerPane, deltaPercentage: number): void;
  togglePin(pane: IgcContentPane, pinBehavior?: IgcPinBehavior): void;
  closePane(pane: IgcContentPane): void;
  closeFloatingPane(pane: IgcSplitPane): void;
  private emitPaneClose;
  private removeAllowedPanes;
  flyoutPane(pane: IgcContentPane): void;
  maximizePane(pane: any): void;
  moveFloatingPane(pane: IgcSplitPane, location: IgcDockManagerPoint): void;
  resizeFloatingPaneStart(pane: IgcSplitPane, resizerLocation: IgcResizerLocation): boolean;
  resizeFloatingPane(pane: IgcSplitPane, args: IgcDragResizeEventArguments): void;
  resizeFloatingPaneEnd(pane: IgcSplitPane, resizerLocation: IgcResizerLocation): void;
  floatPane(pane: IgcContentPane, x: number, y: number, width: number, height: number): void;
  floatTab(pane: IgcContentPane, x: number, y: number, width: number, height: number): void;
  hasFloatingPaneHeader(pane: IgcSplitPane): boolean;
  rootDockPane(position: IgcDockingIndicatorPosition): void;
  dockPane(position: IgcDockingIndicatorPosition): void;
  getActualIsPinned(pane: IgcContentPane): boolean;
  getActualAllowClose(pane: IgcContentPane): boolean;
  isContentPaneVisible(pane: IgcContentPane): boolean;
  getSplitPaneVisibleChildren(pane: IgcSplitPane): IgcDockManagerPane[];
  closeTabPane(pane: IgcContentPane): void;
  bringFloatingPaneOnTop(pane: IgcSplitPane): void;
  createContextMenuItems(pane: IgcContentPane): IgcContextMenuItem[];
  dragPaneStart(pane: IgcSplitPane | IgcContentPane, rect: DOMRect, clientX: number, clientY: number): boolean;
  dragPaneMove(clientX: number, clientY: number): boolean;
  dragPaneEnd(): boolean;
  private dragOver;
  dragTabStart(pane: IgcContentPane): boolean;
  dragTabMove(pane: IgcContentPane, args: IgcDragMoveEventArguments, rects: IgcTabRectsInfo): boolean;
  private floatTabHeader;
  private resolveChildPanesAllowMaximize;
  normalizeMaximizedPane(pane: IgcContentPane): void;
  resolveAllowMaximize(pane: IgcDockManagerPane): boolean;
  getDropShadowRect(): DOMRect;
  getDropShadowRectRoot(): DOMRect;
  selectHiddenTab(tabGroup: IgcTabGroupPane, pane: IgcContentPane): void;
  shiftTabLeft(pane: IgcContentPane): void;
  shiftTabRight(pane: IgcContentPane): void;
  cacheDocumentsOrder(): void;
  cacheContentPanesOrder(): void;
  focusPrevContentPane(isInDocHost: boolean): void;
  focusNextContentPane(isInDocHost: boolean): void;
}
