import * as _angular_core from '@angular/core';
import { TemplateRef, OnInit, AfterViewInit, OnDestroy, ElementRef } from '@angular/core';
import { ClassValue } from 'clsx';
import { ZIcon } from '@shival99/z-ui/components/z-icon';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';

declare class ZTabPanelDirective {
    readonly zTabPanel: _angular_core.InputSignal<string>;
    readonly template: TemplateRef<any>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTabPanelDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ZTabPanelDirective, "[z-tab-panel], [zTabPanel]", ["zTabPanel"], { "zTabPanel": { "alias": "zTabPanel"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

interface ZTab {
    label: string;
    value: string;
    icon?: ZIcon;
    disabled?: boolean;
    badge?: string | number;
    template?: TemplateRef<unknown>;
}
type ZTabsType = 'line' | 'soft' | 'segment' | 'folder' | 'folder-soft' | 'folder-solid' | 'underline' | 'underlined' | 'badge' | 'sharp' | 'sharp-line' | 'sharp-line-filled' | 'vertical-sharp' | 'code-line';
type ZTabsSize = 'xs' | 'sm' | 'default' | 'lg';
type ZTabsOrientation = 'horizontal' | 'vertical';

declare class ZTabsComponent implements OnInit, AfterViewInit, OnDestroy {
    readonly tabPanels: _angular_core.Signal<readonly ZTabPanelDirective[]>;
    readonly tabsListContainer: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
    readonly tabButtons: _angular_core.Signal<readonly ElementRef<HTMLButtonElement>[]>;
    readonly class: _angular_core.InputSignal<ClassValue>;
    readonly zTabs: _angular_core.InputSignal<ZTab[]>;
    readonly zType: _angular_core.InputSignal<ZTabsType>;
    readonly zSize: _angular_core.InputSignal<ZTabsSize>;
    readonly zOrientation: _angular_core.InputSignal<ZTabsOrientation>;
    readonly zLazy: _angular_core.InputSignal<boolean>;
    readonly zDestroyInactive: _angular_core.InputSignal<boolean>;
    readonly zTabsOnly: _angular_core.InputSignal<boolean>;
    readonly zShowContentWrapper: _angular_core.InputSignal<boolean>;
    readonly zReloadable: _angular_core.InputSignal<boolean>;
    readonly zEmitOnActiveClick: _angular_core.InputSignal<boolean>;
    readonly zCache: _angular_core.InputSignal<boolean>;
    readonly zCacheKey: _angular_core.InputSignal<string>;
    readonly activeTab: _angular_core.ModelSignal<string>;
    readonly zTabChange: _angular_core.OutputEmitterRef<string>;
    protected readonly loadedTabs: _angular_core.WritableSignal<Set<string>>;
    protected readonly canScrollLeft: _angular_core.WritableSignal<boolean>;
    protected readonly canScrollRight: _angular_core.WritableSignal<boolean>;
    protected readonly panelRenderStates: _angular_core.Signal<Map<string, boolean>>;
    private _resizeObserver?;
    private readonly _cacheInstanceId;
    constructor();
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    protected readonly tabsClasses: _angular_core.Signal<string>;
    protected readonly contentWrapperFramed: _angular_core.Signal<boolean>;
    protected readonly tabsListHasBottomPadding: _angular_core.Signal<boolean>;
    protected readonly verticalTabsScrollable: _angular_core.Signal<boolean>;
    protected getTabItemClasses(_tab: ZTab): string;
    protected selectTab(tab: ZTab, scrollToView?: boolean): void;
    protected isTabActive(tab: ZTab): boolean;
    protected onTabKeydown(event: KeyboardEvent, currentIndex: number): void;
    protected checkScroll(): void;
    protected scrollLeft(): void;
    protected scrollRight(): void;
    protected onTabsScroll(): void;
    private _setupResizeObserver;
    private _restoreActiveTabFromCache;
    private _saveActiveTabToCache;
    private _getCacheKey;
    protected scrollToActiveDropdownItem(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZTabsComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZTabsComponent, "z-tabs", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zTabs": { "alias": "zTabs"; "required": true; "isSignal": true; }; "zType": { "alias": "zType"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zOrientation": { "alias": "zOrientation"; "required": false; "isSignal": true; }; "zLazy": { "alias": "zLazy"; "required": false; "isSignal": true; }; "zDestroyInactive": { "alias": "zDestroyInactive"; "required": false; "isSignal": true; }; "zTabsOnly": { "alias": "zTabsOnly"; "required": false; "isSignal": true; }; "zShowContentWrapper": { "alias": "zShowContentWrapper"; "required": false; "isSignal": true; }; "zReloadable": { "alias": "zReloadable"; "required": false; "isSignal": true; }; "zEmitOnActiveClick": { "alias": "zEmitOnActiveClick"; "required": false; "isSignal": true; }; "zCache": { "alias": "zCache"; "required": false; "isSignal": true; }; "zCacheKey": { "alias": "zCacheKey"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; "zTabChange": "zTabChange"; }, ["tabPanels"], never, true, never>;
}

declare const zTabsVariants: (props?: ({
    zType?: "line" | "soft" | "segment" | "folder" | "folder-soft" | "folder-solid" | "underline" | "underlined" | "badge" | "sharp" | "sharp-line" | "sharp-line-filled" | "vertical-sharp" | "code-line" | null | undefined;
    zOrientation?: "horizontal" | "vertical" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
declare const zTabItemVariants: (props?: ({
    zType?: "line" | "soft" | "segment" | "folder" | "folder-soft" | "folder-solid" | "underline" | "underlined" | "badge" | "sharp" | "sharp-line" | "sharp-line-filled" | "vertical-sharp" | "code-line" | null | undefined;
    zSize?: "xs" | "sm" | "default" | "lg" | null | undefined;
    zOrientation?: "horizontal" | "vertical" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
type ZTabsVariants = VariantProps<typeof zTabsVariants>;
type ZTabItemVariants = VariantProps<typeof zTabItemVariants>;

export { ZTabPanelDirective, ZTabsComponent, zTabItemVariants, zTabsVariants };
export type { ZTab, ZTabItemVariants, ZTabsOrientation, ZTabsSize, ZTabsType, ZTabsVariants };
