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

declare const DYNAMIC_SIDE_CONTENT_CLASS_NAME: {
    readonly container: "fd-dynamic-side";
    readonly containerSizeSm: "fd-dynamic-side--sm";
    readonly containerSizeMd: "fd-dynamic-side--md";
    readonly containerSizeXl: "fd-dynamic-side--xl";
    readonly containerSideBelow: "fd-dynamic-side--below";
    readonly containerSideEqual: "fd-dynamic-side--equal-split";
    readonly side: "fd-dynamic-side__side";
    readonly main: "fd-dynamic-side__main";
};
type DynamicSideContentPosition = 'left' | 'right' | 'bottom' | 'equalSplit' | 'none';
type DynamicSideContentSize = 'sm' | 'md' | 'lg' | 'xl';
declare const DYNAMIC_SIDE_CONTENT_CHILD_TOKEN: InjectionToken<string>;

declare class DynamicSideContentMainComponent implements OnInit {
    private _elementRef;
    private _render;
    /** Unique element Id, by default it's auto generated */
    id: string;
    /** @hidden */
    constructor(_elementRef: ElementRef<HTMLElement>, _render: Renderer2);
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    private _addClassName;
    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicSideContentMainComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DynamicSideContentMainComponent, "fd-dynamic-side-content-main", never, { "id": { "alias": "id"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DynamicSideContentSideComponent implements OnInit {
    private _elementRef;
    private _render;
    /** Unique element Id, by default it's auto generated */
    id: string;
    /** @hidden */
    constructor(_elementRef: ElementRef<HTMLElement>, _render: Renderer2);
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    private _addClassName;
    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicSideContentSideComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DynamicSideContentSideComponent, "fd-dynamic-side-content-side", never, { "id": { "alias": "id"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DynamicSideContentComponent implements CssClassBuilder, OnChanges, OnInit, AfterContentInit {
    readonly elementRef: ElementRef<HTMLElement>;
    private readonly _changeDetectorRef;
    /**
     * Side content position, can be 'left' | 'right' | 'bottom' | 'equalSplit' | 'none'.
     */
    set position(position: DynamicSideContentPosition);
    get position(): DynamicSideContentPosition;
    /**
     * Screen size, can be 'sm' | 'md' | 'lg' | 'xl'.
     */
    size: DynamicSideContentSize;
    /** Unique element Id, by default it's auto generated */
    id: string;
    /** @hidden */
    private _children;
    /**
     * @hidden
     * required by CssClassBuilder
     */
    class: string;
    /**
     * @hidden
     * Indicates when side content should be rendered before or after main content
     */
    _isSideBefore: boolean;
    /** @hidden */
    private _isSideProjectedAsFirst;
    /** @hidden */
    private _position;
    /** @hidden */
    constructor(elementRef: ElementRef<HTMLElement>, _changeDetectorRef: ChangeDetectorRef);
    /** @hidden */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngAfterContentInit(): void;
    /** @hidden */
    private _listenToChildrenOrder;
    /** @hidden */
    private _calculateSidePosition;
    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicSideContentComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DynamicSideContentComponent, "fd-dynamic-side-content", never, { "position": { "alias": "position"; "required": false; }; "size": { "alias": "size"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, {}, ["_children"], ["fd-dynamic-side-content-main", "fd-dynamic-side-content-side"], true, never>;
}

/**
 * @deprecated
 */
declare class DynamicSideContentModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicSideContentModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DynamicSideContentModule, never, [typeof DynamicSideContentComponent, typeof DynamicSideContentSideComponent, typeof DynamicSideContentMainComponent], [typeof DynamicSideContentComponent, typeof DynamicSideContentSideComponent, typeof DynamicSideContentMainComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DynamicSideContentModule>;
}

export { DYNAMIC_SIDE_CONTENT_CHILD_TOKEN, DYNAMIC_SIDE_CONTENT_CLASS_NAME, DynamicSideContentComponent, DynamicSideContentMainComponent, DynamicSideContentModule, DynamicSideContentSideComponent };
export type { DynamicSideContentPosition, DynamicSideContentSize };
