/**
 *              Copyright (c) 2025 Visa, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 **/
import { BooleanInput } from '@angular/cdk/coercion';
import { AfterContentInit, ChangeDetectorRef, EventEmitter, QueryList } from '@angular/core';
import { FlexDirective } from '../flex/flex.directive';
import { AccordionHeadingDirective } from '../accordion-heading/accordion-heading.directive';
import { AccordionDetailsDirective } from '../accordion-item/accordion-item.directive';
import { AccordionPanelDirective } from '../accordion-panel/accordion-panel.directive';
import { ButtonDirective } from '../button/button.directive';
import { WizardDirective } from '../wizard/wizard.directive';
import { AccordionService } from './accordion.service';
import { UUIDService } from '../_utilities/services/uuid.service';
import * as i0 from "@angular/core";
export declare class AccordionDirective implements AfterContentInit {
    private accordionService;
    private cdRef;
    private uuidService;
    private flex?;
    private wizard?;
    headings: QueryList<AccordionHeadingDirective>;
    panels: QueryList<AccordionPanelDirective>;
    buttonClickedSubscriptions: any[];
    accordionItems: QueryList<AccordionDetailsDirective>;
    _removeDefaultFlex: boolean | undefined;
    _removeDefaultGap: boolean | undefined | null | any;
    /**
     * Provides custom class&#40;es&#41; for custom styling.
     * @default .v-accordion
     */
    get class(): string;
    set class(value: string);
    _class: string;
    get hostClass(): string;
    /**
     * Allows multiple accordion items to be expanded when true.
     * @default false
     */
    get multiselect(): boolean;
    set multiselect(value: BooleanInput);
    _multiselect: boolean;
    /**
     * Applies subtle accordion styling when true.
     * @default false
     */
    get subtle(): boolean;
    set subtle(value: BooleanInput);
    _subtle: boolean;
    /**
     * Emits indexes of expanded items when an accordion item is toggled.
     */
    itemsChanged: EventEmitter<number[]>;
    /** variable that maintains the array of indexes of expanded items */
    itemsExpanded: Array<number>;
    constructor(accordionService: AccordionService, cdRef: ChangeDetectorRef, uuidService: UUIDService, flex?: FlexDirective | undefined, wizard?: WizardDirective | undefined);
    ngAfterContentInit(): void;
    setUpAccordionItems(): void;
    setUpHeadings(): void;
    setAsSubtle(): void;
    buttonSubscribe(button: ButtonDirective, index: number): void;
    accordionItemsChanged(): void;
    handleToggle(index: number, expanded: boolean, isDetails: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AccordionDirective, [null, null, null, { optional: true; }, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AccordionDirective, "[v-accordion]", never, { "class": { "alias": "class"; "required": false; }; "multiselect": { "alias": "multiselect"; "required": false; }; "subtle": { "alias": "subtle"; "required": false; }; }, { "itemsChanged": "itemsChanged"; }, ["headings", "panels", "accordionItems"], never, true, never>;
}
