import { CdkDrag, CdkDragEnd, CdkDragStart } from '@angular/cdk/drag-drop';
import { ElementRef, EventEmitter } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { Subscription } from 'rxjs';
import { DashboardComponent } from './dashboard.component';
import { DashboardChildDimension, Widget } from './dashboard.model';
/**
 * A dashboard child allows to position elements
 * correctly on a grid. The user can then resize and
 * rearrange the elements, as long as they are not `frozen`.
 *
 * By setting `c8y-dashboard-child-actions` and
 * `c8y-dashboard-child-title` on the element you can add
 * custom actions or a custom title to the current child.
 *
 * By adding the correct branded classes, you can define
 * the look and feel of the child. By default it is displayed
 * as a card.
 *
 * Example:
 *
 * ```html
 *   <c8y-dashboard-child
 *     #cpWidget3
 *     [isFrozen]="isFrozen"
 *     [x]="0"
 *     [y]="3"
 *     [width]="4"
 *     [height]="4"
 *     [class]="'card-dashboard panel-content-transparent'"
 *   >
 *     <c8y-dashboard-child-title *ngIf="showTitle">
 *       <span>Transparent!</span>
 *     </c8y-dashboard-child-title>
 *     <c8y-dashboard-child-action>
 *       <a href="" (click)="showTitle = !showTitle; (false)">
 *         <i [c8yIcon]="'heading'"></i> Hide/show title
 *       </a>
 *     </c8y-dashboard-child-action>
 *     <c8y-dashboard-child-action>
 *       <a href="" (click)="cpWidget3.isFrozen = !cpWidget3.isFrozen; (false)">
 *         <i [c8yIcon]="cpWidget3.isFrozen ? 'lock' : 'unlock'"></i> Toggle freeze
 *       </a>
 *     </c8y-dashboard-child-action>
 *     x: {{ cpWidget3.x }}<br />
 *     y: {{ cpWidget3.y }}<br />
 *     width: {{ cpWidget3.width }}<br />
 *     height: {{ cpWidget3.height }}<br />
 *   </c8y-dashboard-child>
 * ```
 */
export declare class DashboardChildComponent implements DashboardChildDimension {
    dashboard: DashboardComponent;
    private sanitizer;
    element: ElementRef;
    actions: any[];
    dragSource: CdkDrag;
    isResize: boolean;
    isDragging: boolean;
    klasses: {};
    _pxWidth: string;
    _pxHeight: string;
    /**
     * The x position of the child.
     */
    x: any;
    /**
     * The y position of the child.
     */
    y: any;
    /**
     * The width of the component in grid-columns.
     */
    width: number;
    /**
     * The height of the component in grid-rows.
     */
    height: number;
    /**
     * The data object can be used as a dataTransfer object for events of the child.
     */
    data: Widget | any;
    /**
     * The margin of the child in pixel.
     */
    margin: number;
    /**
     * If a dashboard is frozen, all children cannot be moved
     * or resized.
     */
    isFrozen: boolean;
    /**
     * The child content is initialized, as soon it is scrolled into viewport
     */
    useIntersection: boolean;
    /**
     * An event fired if a child change is started (dragging or resizing)
     */
    changeStart: EventEmitter<DashboardChildComponent>;
    /**
     * An event fired if a child change is ended
     */
    changeEnd: EventEmitter<DashboardChildComponent>;
    /**
     * All classes added to this child
     */
    class: string[] | {
        [key: string]: boolean;
    };
    /**
     * Updates the pixel width of the child (used for resizing)
     */
    set pxWidth(value: any);
    /**
     * Updates the pixel height of the child (used for resizing)
     */
    set pxHeight(value: any);
    /**
     * An indicator if the child is intersected (that mean visible for the user)
     */
    intersected: boolean;
    /**
     * nasty workaround for that issue:
     * https://github.com/angular/angular/issues/9343
     */
    get inlineStyle(): import("@angular/platform-browser").SafeStyle;
    /**
     * The observable subscription which is listen to
     * on changes (drag or resize).
     */
    changeSubscription: Subscription;
    constructor(dashboard: DashboardComponent, sanitizer: DomSanitizer, element: ElementRef);
    ngOnChanges(): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    setDynamicDimension(): void;
    resizeStarted($event: CdkDragStart): void;
    dragStarted($event: CdkDragStart): void;
    reset($event?: CdkDragEnd): void;
    ngOnDestroy(): void;
    private getOrder;
    private childInView;
}
