import { ScrollAreaPassThrough, ScrollAreaVariant } from 'primeng/types/scrollarea';
export * from 'primeng/types/scrollarea';
import * as _angular_core from '@angular/core';
import { InjectionToken } from '@angular/core';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { BaseStyle } from 'primeng/base';
import * as i7 from 'primeng/api';

/**
 *
 * ScrollArea is a cross browser, lightweight and themable alternative to native browser scrollbar.
 *
 * [Live Demo](https://www.primeng.org/scrollarea)
 *
 * @module scrollareastyle
 *
 */
declare enum ScrollAreaClasses {
    /**
     * Class name of the root element
     */
    root = "p-scrollarea",
    /**
     * Class name of the viewport element
     */
    viewport = "p-scrollarea-viewport",
    /**
     * Class name of the content element
     */
    content = "p-scrollarea-content",
    /**
     * Class name of the scrollbar element
     */
    scrollbar = "p-scrollarea-scrollbar",
    /**
     * Class name of the handle element
     */
    handle = "p-scrollarea-handle",
    /**
     * Class name of the corner element
     */
    corner = "p-scrollarea-corner"
}
declare class ScrollAreaStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: ({ instance }: any) => (string | {
            'p-scrollarea-mask': any;
        })[];
        viewport: string;
        content: string;
        scrollbar: string;
        handle: string;
        corner: string;
    };
    inlineStyles: {
        root: {
            position: string;
        };
        viewport: {
            overflow: string;
            scrollbarWidth: string;
        };
        scrollbar: ({ instance }: any) => {
            position: string;
            touchAction: string;
            userSelect: string;
            WebkitUserSelect: string;
            display: string | undefined;
            top: number | undefined;
            bottom: string | number;
            insetInlineEnd: string | number;
            insetInlineStart: number | undefined;
        };
        corner: ({ instance }: any) => {
            position: string;
            bottom: number;
            insetInlineEnd: number;
            display: string | undefined;
        };
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<ScrollAreaStyle>;
}
interface ScrollAreaStyle extends BaseStyle {
}

/**
 * ScrollAreaViewport is a helper component for ScrollArea component.
 * @group Components
 */
declare class ScrollAreaViewport extends BaseComponent {
    componentName: string;
    $pcScrollAreaViewport: ScrollAreaViewport | undefined;
    bindDirectiveInstance: Bind;
    pcScrollArea: ScrollArea;
    _componentStyle: ScrollAreaStyle;
    private hostEl;
    viewportTabindex: _angular_core.Signal<number | null>;
    dataScrollYBefore: _angular_core.Signal<"" | null>;
    dataScrollYAfter: _angular_core.Signal<"" | null>;
    dataScrollXBefore: _angular_core.Signal<"" | null>;
    dataScrollXAfter: _angular_core.Signal<"" | null>;
    onAfterViewChecked(): void;
    onAfterViewInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaViewport, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollAreaViewport, "p-scrollarea-viewport, p-scroll-area-viewport", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}

/**
 * ScrollAreaContent is a helper component for ScrollArea component.
 * @group Components
 */
declare class ScrollAreaContent extends BaseComponent {
    componentName: string;
    bindDirectiveInstance: Bind;
    pcScrollArea: ScrollArea;
    _componentStyle: ScrollAreaStyle;
    contentMinWidth: _angular_core.Signal<"fit-content" | null>;
    contentMinHeight: _angular_core.Signal<"fit-content" | null>;
    onAfterViewChecked(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaContent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollAreaContent, "p-scrollarea-content, p-scroll-area-content", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}

/**
 * ScrollAreaScrollbar is a helper component for ScrollArea component.
 * @group Components
 */
declare class ScrollAreaScrollbar extends BaseComponent {
    componentName: string;
    $pcScrollAreaScrollbar: ScrollAreaScrollbar | undefined;
    bindDirectiveInstance: Bind;
    pcScrollArea: ScrollArea;
    _componentStyle: ScrollAreaStyle;
    private hostEl;
    /**
     * Orientation of the scrollbar.
     * @group Props
     */
    orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
    isVertical: _angular_core.Signal<boolean>;
    isHidden: _angular_core.Signal<boolean>;
    dataHovering: _angular_core.Signal<"" | null>;
    dataScrolling: _angular_core.Signal<"" | null>;
    onAfterViewChecked(): void;
    onAfterViewInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaScrollbar, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollAreaScrollbar, "p-scrollarea-scrollbar, p-scroll-area-scrollbar", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}

/**
 * ScrollAreaHandle is a helper component for ScrollArea component.
 * @group Components
 */
declare class ScrollAreaHandle extends BaseComponent {
    componentName: string;
    bindDirectiveInstance: Bind;
    pcScrollArea: ScrollArea;
    pcScrollbar: ScrollAreaScrollbar;
    _componentStyle: ScrollAreaStyle;
    private hostEl;
    orientation: _angular_core.Signal<"vertical" | "horizontal">;
    isVertical: _angular_core.Signal<boolean>;
    handleHeight: _angular_core.Signal<"var(--px-handle-height, 0px)" | undefined>;
    handleWidth: _angular_core.Signal<"var(--px-handle-width, 0px)" | undefined>;
    handleTransform: _angular_core.Signal<"translate3d(0, var(--px-handle-offset, 0px), 0)" | "translate3d(var(--px-handle-offset, 0px), 0, 0)">;
    onAfterViewChecked(): void;
    onAfterViewInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaHandle, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollAreaHandle, "p-scrollarea-handle, p-scroll-area-handle", never, {}, {}, never, never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}

/**
 * ScrollAreaCorner is a helper component for ScrollArea component.
 * @group Components
 */
declare class ScrollAreaCorner extends BaseComponent {
    componentName: string;
    bindDirectiveInstance: Bind;
    pcScrollArea: ScrollArea;
    _componentStyle: ScrollAreaStyle;
    private hostEl;
    isHidden: _angular_core.Signal<boolean>;
    onAfterViewChecked(): void;
    onAfterViewInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaCorner, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollAreaCorner, "p-scrollarea-corner, p-scroll-area-corner", never, {}, {}, never, never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}

/**
 * ScrollArea is a cross browser, lightweight and themable alternative to native browser scrollbar.
 * @group Components
 */
declare class ScrollArea extends BaseComponent<ScrollAreaPassThrough> {
    componentName: string;
    $pcScrollArea: ScrollArea | undefined;
    bindDirectiveInstance: Bind;
    /**
     * Scrollbar visibility variant.
     * @group Props
     */
    variant: _angular_core.InputSignal<ScrollAreaVariant>;
    /**
     * Whether to show gradient mask at scroll edges.
     * @group Props
     */
    mask: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Tabindex of the viewport when content overflows.
     * @defaultValue 0
     * @group Props
     */
    tabindex: _angular_core.InputSignalWithTransform<number, unknown>;
    _componentStyle: ScrollAreaStyle;
    hovering: _angular_core.WritableSignal<boolean>;
    scrollingX: _angular_core.WritableSignal<boolean>;
    scrollingY: _angular_core.WritableSignal<boolean>;
    touchModality: _angular_core.WritableSignal<boolean>;
    hiddenX: _angular_core.WritableSignal<boolean>;
    hiddenY: _angular_core.WritableSignal<boolean>;
    cornerHidden: _angular_core.WritableSignal<boolean>;
    hasOverflowX: _angular_core.WritableSignal<boolean>;
    hasOverflowY: _angular_core.WritableSignal<boolean>;
    yBefore: _angular_core.WritableSignal<boolean>;
    yAfter: _angular_core.WritableSignal<boolean>;
    xBefore: _angular_core.WritableSignal<boolean>;
    xAfter: _angular_core.WritableSignal<boolean>;
    cornerWidthValue: _angular_core.WritableSignal<number>;
    cornerHeightValue: _angular_core.WritableSignal<number>;
    cornerWidthPx: _angular_core.Signal<string>;
    cornerHeightPx: _angular_core.Signal<string>;
    dataHovering: _angular_core.Signal<"" | null>;
    dataScrollingY: _angular_core.Signal<"" | null>;
    dataScrollingX: _angular_core.Signal<"" | null>;
    viewportEl: HTMLElement | null;
    scrollbarYEl: HTMLElement | null;
    scrollbarXEl: HTMLElement | null;
    handleYEl: HTMLElement | null;
    handleXEl: HTMLElement | null;
    cornerEl: HTMLElement | null;
    private isDragging;
    private dragOrientation;
    private dragStart;
    private prevScroll;
    private scrollXTimeout;
    private scrollYTimeout;
    private rafId;
    private resizeObserver;
    onAfterViewChecked(): void;
    onAfterViewInit(): void;
    onDestroy(): void;
    private setupResizeObserver;
    computeHandle(): void;
    onScroll(): void;
    onHandlePointerDown(event: PointerEvent, orientation: 'vertical' | 'horizontal'): void;
    onScrollbarPointerDown(event: PointerEvent, orientation: 'vertical' | 'horizontal'): void;
    onScrollbarPointerMove(event: PointerEvent): void;
    onScrollbarPointerUp(event: PointerEvent): void;
    onScrollbarWheel(event: WheelEvent, orientation: 'vertical' | 'horizontal'): void;
    onRootPointerEnter(event: PointerEvent): void;
    onRootPointerLeave(): void;
    onRootPointerDown(event: PointerEvent): void;
    /**
     * Refreshes the position and size of the scrollbar.
     * @group Method
     */
    refresh(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollArea, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollArea, "p-scrollarea, p-scroll-area", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class ScrollAreaModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<ScrollAreaModule, never, [typeof ScrollArea, typeof ScrollAreaViewport, typeof ScrollAreaContent, typeof ScrollAreaScrollbar, typeof ScrollAreaHandle, typeof ScrollAreaCorner, typeof i7.SharedModule, typeof i1.BindModule], [typeof ScrollArea, typeof ScrollAreaViewport, typeof ScrollAreaContent, typeof ScrollAreaScrollbar, typeof ScrollAreaHandle, typeof ScrollAreaCorner, typeof i7.SharedModule, typeof i1.BindModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<ScrollAreaModule>;
}

declare const SCROLLAREA_INSTANCE: InjectionToken<any>;
declare const SCROLLAREA_VIEWPORT_INSTANCE: InjectionToken<any>;
declare const SCROLLAREA_SCROLLBAR_INSTANCE: InjectionToken<any>;

export { SCROLLAREA_INSTANCE, SCROLLAREA_SCROLLBAR_INSTANCE, SCROLLAREA_VIEWPORT_INSTANCE, ScrollArea, ScrollAreaClasses, ScrollAreaContent, ScrollAreaCorner, ScrollAreaHandle, ScrollAreaModule, ScrollAreaScrollbar, ScrollAreaStyle, ScrollAreaViewport };
