import { InjectionToken, EventEmitter, DoCheck, OnInit } from '@angular/core';
import { IBaseEventArgs } from './utils';
import * as i0 from "@angular/core";
/**
 * Defines the possible values of the components' display density.
 */
export declare const DisplayDensity: {
    comfortable: "comfortable";
    cosy: "cosy";
    compact: "compact";
};
export type DisplayDensity = (typeof DisplayDensity)[keyof typeof DisplayDensity];
/**
 * Describes the object used to configure the DisplayDensity in Angular DI.
 */
export interface IDisplayDensityOptions {
    displayDensity: DisplayDensity;
}
export interface IDensityChangedEventArgs extends IBaseEventArgs {
    oldDensity: DisplayDensity;
    newDensity: DisplayDensity;
}
/**
 * Defines the DisplayDensity DI token.
 */
export declare const DisplayDensityToken: InjectionToken<IDisplayDensityOptions>;
/**
 * Base class containing all logic required for implementing DisplayDensity.
 */
export declare class DisplayDensityBase implements DoCheck, OnInit {
    protected displayDensityOptions: IDisplayDensityOptions;
    densityChanged: EventEmitter<IDensityChangedEventArgs>;
    /**
     * Returns the theme of the component.
     * The default theme is `comfortable`.
     * Available options are `comfortable`, `cosy`, `compact`.
     * ```typescript
     * let componentTheme = this.component.displayDensity;
     * ```
     */
    get displayDensity(): DisplayDensity;
    /**
     * Sets the theme of the component.
     */
    set displayDensity(val: DisplayDensity);
    /**
     * @hidden
     */
    initialDensity: DisplayDensity;
    protected oldDisplayDensityOptions: IDisplayDensityOptions;
    protected _displayDensity: DisplayDensity;
    constructor(displayDensityOptions: IDisplayDensityOptions);
    /**
     * @hidden
     */
    ngOnInit(): void;
    ngDoCheck(): void;
    /**
     * Given a style class of a component/element returns the modified version of it based
     * on the current display density.
     */
    protected getComponentDensityClass(baseStyleClass: string): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DisplayDensityBase, [{ optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DisplayDensityBase, "[igxDisplayDensityBase]", never, { "displayDensity": "displayDensity"; }, { "densityChanged": "densityChanged"; }, never, never, false, never>;
}
export declare class IgxDisplayDensityModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxDisplayDensityModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<IgxDisplayDensityModule, [typeof DisplayDensityBase], never, [typeof DisplayDensityBase]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<IgxDisplayDensityModule>;
}
