import * as polytype from 'polytype';
import { MXBaseComponent, MXLookComponent, AXClickEvent, MXInteractiveComponent } from '@acorex/cdk/common';
import * as i0 from '@angular/core';
import { AfterViewInit, OnDestroy, EventEmitter, TemplateRef } from '@angular/core';

declare const AXCollapseGroupComponent_base: polytype.Polytype.ClusteredConstructor<[typeof MXBaseComponent, typeof MXLookComponent]>;
/**
 * Container for collapsible items with configurable styling.
 *
 * @category Components
 */
declare class AXCollapseGroupComponent extends AXCollapseGroupComponent_base implements AfterViewInit, OnDestroy {
    /**
     * Emitted when the accordion state changes.
     *
     * @event
     */
    accordionChange: EventEmitter<boolean>;
    /**
     *  @ignore
     */
    private _accordion?;
    /**
     *  Enables accordion behavior, allowing only one collapsible item to be expanded at a time
     */
    get accordion(): boolean | undefined;
    set accordion(value: boolean);
    /**
     * Emits when the active index changes.
     * @event
     */
    activeIndexChange: EventEmitter<number>;
    /**
     *  @ignore
     */
    private _activeIndex;
    /**
     *  Index of the currently active item within the group
     */
    get activeIndex(): number;
    set activeIndex(value: number);
    private _items;
    /**
     *  @ignore
     */
    private _subs;
    /**
     *  @ignore
     */
    ngAfterViewInit(): void;
    /**
     *  @ignore
     */
    private applyAccordion;
    /**
     *  @ignore
     */
    private removeAccordion;
    /**
     *  @ignore
     */
    ngOnDestroy(): void;
    /**
     *  @ignore
     */
    private get __hostClass();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCollapseGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCollapseGroupComponent, "ax-collapse-group", never, { "look": { "alias": "look"; "required": false; }; "accordion": { "alias": "accordion"; "required": false; }; "activeIndex": { "alias": "activeIndex"; "required": false; }; }, { "accordionChange": "accordionChange"; "activeIndexChange": "activeIndexChange"; }, ["_items"], ["ax-collapse"], true, never>;
}

declare class AXCollapseClickEvent extends AXClickEvent {
    handled: boolean;
}
declare const AXCollapseComponent_base: polytype.Polytype.ClusteredConstructor<[typeof MXInteractiveComponent, typeof MXLookComponent]>;
/**
 * A component that provides a collapsible section with animated transitions.
 *
 * @category Components
 */
declare class AXCollapseComponent extends AXCollapseComponent_base {
    private parent;
    /**
     *  Fires each time the user clicks the panel header.
     *  @event
     */
    onClick: EventEmitter<AXCollapseClickEvent>;
    /**
     * Fires an event when the collapse state changes.
     *
     * @event
     */
    isCollapsedChange: EventEmitter<any>;
    /**
     *  @ignore
     */
    private _isCollapsed;
    /**
     *  Providing a boolean value for its collapse state
     */
    get isCollapsed(): boolean;
    set isCollapsed(v: boolean);
    /**
     *  @ignore
     */
    private _showHeader;
    /**
     *  Providing a boolean value for show or hide header
     */
    get showHeader(): boolean;
    set showHeader(v: boolean);
    /**
     * Sets the caption for the collapse component.
     *
     * @defaultValue ''
     */
    caption: string;
    /**
     * Specifies the icon to display in the collapse component.
     *
     * @defaultValue ''
     */
    icon: string;
    /**
     *  @ignore
     */
    private _isLoading;
    /**
     *  Providing a boolean value for its collapse state
     */
    get isLoading(): boolean;
    set isLoading(v: boolean);
    /**
     * Template used for the collapse component's header.
     */
    headerTemplate: TemplateRef<any>;
    /**
     * Handles header clicks, emitting a click event and toggling collapse state if not handled.
     *
     * @param e - The native mouse event.
     */
    handleHeaderClick(e: MouseEvent): void;
    /**
     * Expands the collapse component.
     *
     * @returns void - No return value. Sets `isCollapsed` to false and expands the body.
     */
    open(): void;
    /**
     * Collapses the collapse component.
     *
     * @returns void - No return value. Sets `isCollapsed` to true and hides the body.
     */
    close(): void;
    /**
     * Toggles the collapse state between expanded and collapsed.
     *
     * @returns void - No return value. Flips the `isCollapsed` state.
     */
    toggle(): void;
    /**
     *  @ignore
     */
    get __hostClass(): string[];
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCollapseComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCollapseComponent, "ax-collapse", never, { "disabled": { "alias": "disabled"; "required": false; }; "look": { "alias": "look"; "required": false; }; "isCollapsed": { "alias": "isCollapsed"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; }, { "onClick": "onClick"; "isCollapsedChange": "isCollapsedChange"; }, never, ["*"], true, never>;
}

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

export { AXCollapseClickEvent, AXCollapseComponent, AXCollapseGroupComponent, AXCollapseModule };
