import { DatePipe, DecimalPipe } from '@angular/common';
import { ChangeDetectorRef, ElementRef, NgZone, OnDestroy, OnInit, PipeTransform, Renderer2, TemplateRef } from '@angular/core';
import { Subject } from 'rxjs';
import { IgxColumnComponent } from './column.component';
import { IgxDragDirective, IgxDropDirective } from '../directives/dragdrop/dragdrop.directive';
import { ConnectedPositioningStrategy } from '../services';
import { PositionSettings } from '../services/overlay/utilities';
/**
 * @hidden
 */
export declare class IgxColumnResizerDirective implements OnInit, OnDestroy {
    element: ElementRef;
    document: any;
    zone: NgZone;
    restrictHResizeMin: number;
    restrictHResizeMax: number;
    resizeEndTimeout: number;
    resizeEnd: Subject<any>;
    resizeStart: Subject<any>;
    resize: Subject<any>;
    private _left;
    private _destroy;
    constructor(element: ElementRef, document: any, zone: NgZone);
    ngOnInit(): void;
    ngOnDestroy(): void;
    left: any;
    onMouseup(event: any): void;
    onMousedown(event: any): void;
    onMousemove(event: any): void;
}
export declare class IgxCellTemplateDirective {
    template: TemplateRef<any>;
    constructor(template: TemplateRef<any>);
}
export declare class IgxCellHeaderTemplateDirective {
    template: TemplateRef<any>;
    constructor(template: TemplateRef<any>);
}
/**
 * @hidden
 */
export declare class IgxCellFooterTemplateDirective {
    template: TemplateRef<any>;
    constructor(template: TemplateRef<any>);
}
export declare class IgxCellEditorTemplateDirective {
    template: TemplateRef<any>;
    constructor(template: TemplateRef<any>);
}
/**
 * @hidden
 */
export declare class IgxColumnMovingService {
    private _icon;
    private _column;
    cancelDrop: boolean;
    isColumnMoving: boolean;
    selection: {
        column: IgxColumnComponent;
        rowID: any;
    };
    activeElement: {
        tag: string;
        column: IgxColumnComponent;
        rowIndex: number;
    };
    column: IgxColumnComponent;
    icon: any;
}
/**
 * @hidden
 */
export declare enum DropPosition {
    BeforeDropTarget = 0,
    AfterDropTarget = 1,
    None = 2
}
/**
 * @hidden
 */
export declare class IgxColumnMovingDragDirective extends IgxDragDirective {
    private cms;
    data: any;
    readonly column: IgxColumnComponent;
    readonly draggable: boolean;
    readonly icon: HTMLElement;
    private _column;
    private _ghostImageClass;
    private _dragGhostImgIconClass;
    private _dragGhostImgIconGroupClass;
    onEscape(event: any): void;
    constructor(_element: ElementRef, _zone: NgZone, _renderer: Renderer2, _cdr: ChangeDetectorRef, cms: IgxColumnMovingService);
    onPointerDown(event: any): void;
    onPointerMove(event: any): void;
    onPointerUp(event: any): void;
    protected createDragGhost(event: any): void;
}
/**
 * @hidden
 */
export declare class IgxColumnMovingDropDirective extends IgxDropDirective implements OnDestroy {
    private elementRef;
    private renderer;
    private zone;
    private cms;
    data: any;
    readonly column: IgxColumnComponent;
    readonly isDropTarget: boolean;
    readonly horizontalScroll: any;
    private _dropPos;
    private _dropIndicator;
    private _lastDropIndicator;
    private _column;
    private _hVirtDir;
    private _dragLeave;
    private _dropIndicatorClass;
    constructor(elementRef: ElementRef, renderer: Renderer2, zone: NgZone, cms: IgxColumnMovingService);
    ngOnDestroy(): void;
    onDragOver(event: any): void;
    onDragEnter(event: any): void;
    onDragLeave(event: any): void;
    onDragDrop(event: any): void;
}
/**
 *@hidden
 */
export declare class IgxDatePipeComponent extends DatePipe implements PipeTransform {
    constructor(locale: string);
    transform(value: any, locale: string): string;
}
/**
 *@hidden
 */
export declare class IgxDecimalPipeComponent extends DecimalPipe implements PipeTransform {
    constructor(locale: string);
    transform(value: any, locale: string): string;
}
/**
 * @hidden
 */
export interface ContainerPositionSettings extends PositionSettings {
    container?: HTMLElement;
}
/**
 * @hidden
 */
export declare class ContainerPositioningStrategy extends ConnectedPositioningStrategy {
    isTop: boolean;
    isTopInitialPosition: any;
    settings: ContainerPositionSettings;
    position(contentElement: HTMLElement, size: {
        width: number;
        height: number;
    }, document?: Document, initialCall?: boolean): void;
}
