import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
import { AfterViewInit, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ActionDirection, DashboardService } from '../dashboard.service';
import { DashboardStackMode } from './dashboard-stack-mode.enum';
import * as i0 from "@angular/core";
export declare class DashboardWidgetComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
    readonly dashboardService: DashboardService;
    /** Sets the ID of the widget. Each widget should be given a unique ID. */
    id: string;
    /** Defines a name for the widget used for accessibility */
    name: string;
    /** Defines the column the widget is placed in */
    set col(col: number);
    get col(): number;
    /** Defines the row the widget is placed in */
    set row(row: number);
    get row(): number;
    /** Defines the number of columns this widget should occupy. */
    get colSpan(): number;
    set colSpan(colSpan: number);
    /** Defines the number of rows this widget should occupy. */
    get rowSpan(): number;
    set rowSpan(rowSpan: number);
    /** Defines the minimum number of columns this widget should occupy. */
    get minColSpan(): number;
    set minColSpan(minColumns: number);
    /** Defines the minimum number of rows this widget should occupy. */
    get minRowSpan(): number;
    set minRowSpan(minRows: number);
    /** Defines whether or not this widget can be resized. */
    resizable: boolean;
    /** Defines whether or not this widget will be automatically repositioned */
    set autoPositioning(autoPositioning: boolean);
    get autoPositioning(): boolean;
    /** Defines a function that returns an aria label for the widget */
    widgetAriaLabel: (widgets: DashboardWidgetComponent) => string | string;
    x: number;
    y: number;
    width: number;
    height: number;
    padding: number;
    zIndex: number;
    ariaLabel: string;
    role: string;
    isDragging: boolean;
    isGrabbing: boolean;
    isResizing: boolean;
    isDraggable: boolean;
    private readonly _column;
    private readonly _row;
    private readonly _columnSpan;
    private readonly _rowSpan;
    private _minColSpan;
    private _minRowSpan;
    private _autoPositioning;
    private readonly _onDestroy;
    constructor();
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * If component is removed, then unregister it from the service
     */
    ngOnDestroy(): void;
    /**
     * Apply the current dashboard options
     */
    update(): void;
    /**
     * Set the actual position and size values
     */
    render(): void;
    getColumn(mode?: DashboardStackMode): number;
    getRow(mode?: DashboardStackMode): number;
    setColumn(column: number, render?: boolean): void;
    setRow(row: number, render?: boolean): void;
    getColumnSpan(): number;
    getRowSpan(): number;
    setColumnSpan(columnSpan: number, render?: boolean): void;
    setRowSpan(rowSpan: number, render?: boolean): void;
    bringToFront(): void;
    sendToBack(): void;
    setBounds(x: number, y: number, width: number, height: number): void;
    dragstart(handle: HTMLElement, event: MouseEvent, direction: ActionDirection): void;
    drag(handle: HTMLElement, event: MouseEvent, direction: ActionDirection): void;
    dragend(): void;
    getAriaLabel(): string;
    private getDefaultAriaLabel;
    /**
     * Allows automatic setting of stackable value
     * @param property The current StackableValue object
     * @param value The value to set in the appropriate field
     */
    private setStackableValue;
    /**
     * Return the appropriate value from a stackable value
     * @param property The Stackable value object
     */
    private getStackableValue;
    /** Determine if the layout has been performed yet */
    private hasPosition;
    static ngAcceptInputType_autoPositioning: BooleanInput;
    static ngAcceptInputType_col: NumberInput;
    static ngAcceptInputType_row: NumberInput;
    static ngAcceptInputType_colSpan: NumberInput;
    static ngAcceptInputType_rowSpan: NumberInput;
    static ngAcceptInputType_minColSpan: NumberInput;
    static ngAcceptInputType_minRowSpan: NumberInput;
    static ɵfac: i0.ɵɵFactoryDeclaration<DashboardWidgetComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DashboardWidgetComponent, "ux-dashboard-widget", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "col": { "alias": "col"; "required": false; }; "row": { "alias": "row"; "required": false; }; "colSpan": { "alias": "colSpan"; "required": false; }; "rowSpan": { "alias": "rowSpan"; "required": false; }; "minColSpan": { "alias": "minColSpan"; "required": false; }; "minRowSpan": { "alias": "minRowSpan"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "autoPositioning": { "alias": "autoPositioning"; "required": false; }; "widgetAriaLabel": { "alias": "widgetAriaLabel"; "required": false; }; "role": { "alias": "role"; "required": false; }; }, {}, never, ["*"], false, never>;
}
export interface StackableValue {
    regular: number;
    stacked: number;
}
