import * as i0 from '@angular/core';
import { OnChanges, AfterViewInit, OnInit, ElementRef, ChangeDetectorRef } from '@angular/core';
import { CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';

type StatusIndicatorSize = 'sm' | 'md' | 'lg' | 'xl';
type StatusIndicatorColor = 'negative' | 'critical' | 'positive';
type LablePosition = 'left' | 'right' | 'top' | 'bottom';
type FillingType = 'radial' | 'angled' | 'linearup' | 'lineardown' | 'linearleft';
type FillingDirection = 'clockwise' | 'counterclockwise';
declare class Point {
    x: number;
    y: number;
    /** @hidden */
    constructor(x: number, y: number);
}
declare class StatusIndicatorComponent implements OnChanges, AfterViewInit, CssClassBuilder, OnInit {
    readonly elementRef: ElementRef<HTMLElement>;
    private _cd;
    /**
     * value id defines the id of the object.
     */
    id: string;
    /**
     * defines the size of the status indicator.
     * Can be one of the following: 'sm' | 'md' | 'lg' | 'xl'
     * Default size is Medium(md).
     */
    size: StatusIndicatorSize;
    /**
     * The status represented by the Status Indicator.
     * Can be one of the following: 'negative' | 'critical' | 'informative'
     * For default Object Status omit this property
     */
    status: StatusIndicatorColor;
    /** Define the text content of the Status indicator*/
    statusLabel: string;
    /**
     * positioning of the status indicator image withing the defined height and width .
     */
    viewBox: string;
    /**
     * boolean value to be marked as a clickable
     */
    clickable: boolean;
    /**
     * defines the size of the status indicator.
     * Can be one of the following: 'sm' | 'md' | 'lg' | 'xl'
     */
    labelSize: StatusIndicatorSize;
    /** Aria label for the Status Indicator. */
    ariaLabel: Nullable<string>;
    /** Aria defines role description for the Status Indicator. */
    ariaRoleDescription: Nullable<string>;
    /** Aria Focusable for the Status Indicator. */
    focusable: boolean;
    /** Aria Role for the Status Indicator. */
    role: Nullable<string>;
    /** Aria Value Text for the Status Indicator. */
    ariaValueText: Nullable<string>;
    /** Aria title for the status indicator. */
    title: Nullable<string>;
    /** defines the label position the value can be 'left' | 'right' | 'top' | 'bottom' */
    labelPosition: LablePosition;
    /** Path for the status indicator */
    path: string[];
    /**
     * Offset value to be filled under the give percentatge value.
     */
    fillPercentage: number;
    /**
     * value to define fill direction
     */
    fillDirection: FillingDirection;
    /** @hidden */
    set _fillDirection(direction: FillingDirection);
    get _fillDirection(): FillingDirection;
    /**
     * FillingType to represent the fill pattern of the component
     */
    fillingType: FillingType;
    /** represent the degree of angle to project the filling of the component */
    angle: number;
    /** @hidden */
    fillCalculator: number;
    /** @hidden */
    binaryString: string;
    /** @hidden */
    x1: string;
    /** @hidden */
    y1: string;
    /** @hidden */
    x2: string;
    /** @hidden */
    y2: string;
    /** @hidden */
    pointsArray: string[];
    /** @hidden */
    class: string;
    /** @hidden */
    constructor(elementRef: ElementRef<HTMLElement>, _cd: ChangeDetectorRef);
    /** @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    private _calculateFilling;
    /** @hidden */
    private _angleCalculation;
    /** @hidden */
    private _convertAngleToBinary;
    /** @hidden */
    private _assignBinaryValue;
    /** @hidden */
    private _getPolygonPointsForCircularFilling;
    static ɵfac: i0.ɵɵFactoryDeclaration<StatusIndicatorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StatusIndicatorComponent, "fd-status-indicator", never, { "id": { "alias": "id"; "required": false; }; "size": { "alias": "size"; "required": false; }; "status": { "alias": "status"; "required": false; }; "statusLabel": { "alias": "statusLabel"; "required": false; }; "viewBox": { "alias": "viewBox"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "labelSize": { "alias": "labelSize"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaRoleDescription": { "alias": "ariaRoleDescription"; "required": false; }; "focusable": { "alias": "focusable"; "required": false; }; "role": { "alias": "role"; "required": false; }; "ariaValueText": { "alias": "ariaValueText"; "required": false; }; "title": { "alias": "title"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; }; "path": { "alias": "path"; "required": false; }; "fillPercentage": { "alias": "fillPercentage"; "required": false; }; "fillDirection": { "alias": "fillDirection"; "required": false; }; "fillingType": { "alias": "fillingType"; "required": false; }; "angle": { "alias": "angle"; "required": false; }; }, {}, never, never, true, never>;
}

declare class StatusIndicatorModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<StatusIndicatorModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<StatusIndicatorModule, never, [typeof StatusIndicatorComponent], [typeof StatusIndicatorComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<StatusIndicatorModule>;
}

export { Point, StatusIndicatorComponent, StatusIndicatorModule };
export type { FillingDirection, FillingType, LablePosition, StatusIndicatorColor, StatusIndicatorSize };
