import * as rxjs from 'rxjs';
import * as primeng_api from 'primeng/api';
import { OverlayOptions, Translation, PassThroughOptions } from 'primeng/api';
import * as primeng_config from 'primeng/config';
import * as _angular_core from '@angular/core';
import { ElementRef, TemplateRef, InjectionToken, EnvironmentProviders } from '@angular/core';
import { AccordionPassThrough } from 'primeng/types/accordion';
import { AutoCompletePassThrough } from 'primeng/types/autocomplete';
import { AvatarPassThrough } from 'primeng/types/avatar';
import { AvatarGroupPassThrough } from 'primeng/types/avatargroup';
import { BadgePassThrough } from 'primeng/types/badge';
import { BlockUIPassThrough } from 'primeng/types/blockui';
import { BreadcrumbPassThrough } from 'primeng/types/breadcrumb';
import { ButtonPassThrough } from 'primeng/types/button';
import { CardPassThrough } from 'primeng/types/card';
import { CarouselPassThrough } from 'primeng/types/carousel';
import { CascadeSelectPassThrough } from 'primeng/types/cascadeselect';
import { CheckboxPassThrough } from 'primeng/types/checkbox';
import { ChipPassThrough } from 'primeng/types/chip';
import { ColorPickerPassThrough } from 'primeng/types/colorpicker';
import { ConfirmDialogPassThrough } from 'primeng/types/confirmdialog';
import { ConfirmPopupPassThrough } from 'primeng/types/confirmpopup';
import { DialogPassThrough } from 'primeng/types/dialog';
import { DividerPassThrough } from 'primeng/types/divider';
import { DockPassThrough } from 'primeng/types/dock';
import { DrawerPassThrough } from 'primeng/types/drawer';
import { EditorPassThrough } from 'primeng/types/editor';
import { FieldsetPassThrough } from 'primeng/types/fieldset';
import { FileUploadPassThrough } from 'primeng/types/fileupload';
import { FloatLabelPassThrough } from 'primeng/types/floatlabel';
import { FluidPassThrough } from 'primeng/types/fluid';
import { GalleriaPassThrough } from 'primeng/types/galleria';
import { IconFieldPassThrough } from 'primeng/types/iconfield';
import { IftaLabelPassThrough } from 'primeng/types/iftalabel';
import { ImagePassThrough } from 'primeng/types/image';
import { ImageComparePassThrough } from 'primeng/types/imagecompare';
import { InplacePassThrough } from 'primeng/types/inplace';
import { InputGroupPassThrough } from 'primeng/types/inputgroup';
import { InputGroupAddonPassThrough } from 'primeng/types/inputgroupaddon';
import { InputIconPassThrough } from 'primeng/types/inputicon';
import { InputMaskPassThrough } from 'primeng/types/inputmask';
import { InputNumberPassThrough } from 'primeng/types/inputnumber';
import { InputOtpPassThrough } from 'primeng/types/inputotp';
import { InputTextPassThrough } from 'primeng/types/inputtext';
import { KnobPassThrough } from 'primeng/types/knob';
import { MegaMenuPassThrough } from 'primeng/types/megamenu';
import { MenuPassThrough } from 'primeng/types/menu';
import { MenubarPassThrough } from 'primeng/types/menubar';
import { MessagePassThrough } from 'primeng/types/message';
import { MeterGroupPassThrough } from 'primeng/types/metergroup';
import { OrderListPassThrough } from 'primeng/types/orderlist';
import { OrganizationChartPassThrough } from 'primeng/types/organizationchart';
import { OverlayBadgePassThrough } from 'primeng/types/overlaybadge';
import { PanelPassThrough } from 'primeng/types/panel';
import { PanelMenuPassThrough } from 'primeng/types/panelmenu';
import { PopoverPassThrough } from 'primeng/types/popover';
import { ProgressBarPassThrough } from 'primeng/types/progressbar';
import { ProgressSpinnerPassThrough } from 'primeng/types/progressspinner';
import { RadioButtonPassThrough } from 'primeng/types/radiobutton';
import { RatingPassThrough } from 'primeng/types/rating';
import { VirtualScrollerPassThrough } from 'primeng/types/scroller';
import { ScrollPanelPassThrough } from 'primeng/types/scrollpanel';
import { ScrollTopPassThrough } from 'primeng/types/scrolltop';
import { SelectPassThrough } from 'primeng/types/select';
import { SelectButtonPassThrough } from 'primeng/types/selectbutton';
import { SkeletonPassThrough } from 'primeng/types/skeleton';
import { SliderPassThrough } from 'primeng/types/slider';
import { SpeedDialPassThrough } from 'primeng/types/speeddial';
import { SplitButtonPassThrough } from 'primeng/types/splitbutton';
import { SplitterPassThrough } from 'primeng/types/splitter';
import { StepperPassThrough } from 'primeng/types/stepper';
import { ColumnFilterPassThrough, TablePassThrough } from 'primeng/types/table';
import { TabsPassThrough, TabPassThrough, TabListPassThrough, TabPanelPassThrough, TabPanelsPassThrough } from 'primeng/types/tabs';
import { TagPassThrough } from 'primeng/types/tag';
import { TerminalPassThrough } from 'primeng/types/terminal';
import { TieredMenuPassThrough } from 'primeng/types/tieredmenu';
import { TimelinePassThrough } from 'primeng/types/timeline';
import { ToastPassThrough } from 'primeng/types/toast';
import { ToggleButtonPassThrough } from 'primeng/types/togglebutton';
import { ToggleSwitchPassThrough } from 'primeng/types/toggleswitch';
import { ToolbarPassThrough } from 'primeng/types/toolbar';
import { TreePassThrough } from 'primeng/types/tree';
import { TreeSelectPassThrough } from 'primeng/types/treeselect';
import { TreeTablePassThrough } from 'primeng/types/treetable';
import { BaseStyle } from 'primeng/base';

/** ZIndex configuration */
type ZIndex = {
    modal: number;
    overlay: number;
    menu: number;
    tooltip: number;
};
/** Theme configuration */
type ThemeType = {
    preset?: any;
    options?: any;
} | 'none' | boolean | undefined;
type ThemeConfigType = {
    theme?: ThemeType;
    csp?: {
        nonce: string | undefined;
    };
};
interface GlobalPassThrough {
    accordion?: AccordionPassThrough;
    autoComplete?: AutoCompletePassThrough;
    avatar?: AvatarPassThrough;
    avatarGroup?: AvatarGroupPassThrough;
    blockUI?: BlockUIPassThrough;
    breadcrumb?: BreadcrumbPassThrough;
    card?: CardPassThrough;
    carousel?: CarouselPassThrough;
    cascadeSelect?: CascadeSelectPassThrough;
    checkbox?: CheckboxPassThrough;
    chip?: ChipPassThrough;
    colorPicker?: ColorPickerPassThrough;
    columnFilter?: ColumnFilterPassThrough;
    confirmDialog?: ConfirmDialogPassThrough;
    confirmPopup?: ConfirmPopupPassThrough;
    dialog?: DialogPassThrough;
    divider?: DividerPassThrough;
    dock?: DockPassThrough;
    megaMenu?: MegaMenuPassThrough;
    drawer?: DrawerPassThrough;
    editor?: EditorPassThrough;
    fileUpload?: FileUploadPassThrough;
    floatLabel?: FloatLabelPassThrough;
    menu?: MenuPassThrough;
    menubar?: MenubarPassThrough;
    fluid?: FluidPassThrough;
    galleria?: GalleriaPassThrough;
    iconField?: IconFieldPassThrough;
    iftaLabel?: IftaLabelPassThrough;
    inputIcon?: InputIconPassThrough;
    image?: ImagePassThrough;
    imageCompare?: ImageComparePassThrough;
    inplace?: InplacePassThrough;
    inputText?: InputTextPassThrough;
    inputGroup?: InputGroupPassThrough;
    inputGroupAddon?: InputGroupAddonPassThrough;
    inputMask?: InputMaskPassThrough;
    inputNumber?: InputNumberPassThrough;
    inputOtp?: InputOtpPassThrough;
    knob?: KnobPassThrough;
    popover?: PopoverPassThrough;
    message?: MessagePassThrough;
    meterGroup?: MeterGroupPassThrough;
    orderList?: OrderListPassThrough;
    organizationChart?: OrganizationChartPassThrough;
    overlayBadge?: OverlayBadgePassThrough;
    progressBar?: ProgressBarPassThrough;
    progressSpinner?: ProgressSpinnerPassThrough;
    radioButton?: RadioButtonPassThrough;
    rating?: RatingPassThrough;
    virtualScroller?: VirtualScrollerPassThrough;
    scrollPanel?: ScrollPanelPassThrough;
    scrollTop?: ScrollTopPassThrough;
    select?: SelectPassThrough;
    selectButton?: SelectButtonPassThrough;
    skeleton?: SkeletonPassThrough;
    slider?: SliderPassThrough;
    speedDial?: SpeedDialPassThrough;
    splitButton?: SplitButtonPassThrough;
    splitter?: SplitterPassThrough;
    stepper?: StepperPassThrough;
    tabs?: TabsPassThrough;
    tab?: TabPassThrough;
    tabList?: TabListPassThrough;
    tabPanel?: TabPanelPassThrough;
    tabPanels?: TabPanelsPassThrough;
    table?: TablePassThrough;
    tieredMenu?: TieredMenuPassThrough;
    timeline?: TimelinePassThrough;
    tag?: TagPassThrough;
    terminal?: TerminalPassThrough;
    toast?: ToastPassThrough;
    toggleButton?: ToggleButtonPassThrough;
    toggleSwitch?: ToggleSwitchPassThrough;
    toolbar?: ToolbarPassThrough;
    tree?: TreePassThrough;
    treeSelect?: TreeSelectPassThrough;
    treeTable?: TreeTablePassThrough;
    panel?: PanelPassThrough;
    panelMenu?: PanelMenuPassThrough;
    button?: ButtonPassThrough;
    badge?: BadgePassThrough;
    fieldset?: FieldsetPassThrough;
    global?: {
        css?: string;
    };
    [key: string]: any;
}
type PrimeNGConfigType = {
    ripple?: boolean;
    overlayAppendTo?: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;
    /**
     * @deprecated Since v20. Use `inputVariant` instead.
     */
    inputStyle?: 'outlined' | 'filled';
    inputVariant?: 'outlined' | 'filled';
    overlayOptions?: OverlayOptions;
    translation?: Translation;
    /**
     * @experimental
     * This property is not yet implemented. It will be available in a future release.
     */
    unstyled?: boolean;
    zIndex?: ZIndex | null | undefined;
    pt?: GlobalPassThrough | null | undefined;
    ptOptions?: PassThroughOptions | null | undefined;
    filterMatchModeOptions?: any;
} & ThemeConfigType;

declare class ThemeProvider {
    theme: _angular_core.WritableSignal<any>;
    csp: _angular_core.WritableSignal<{
        nonce: string | undefined;
    }>;
    isThemeChanged: boolean;
    document: Document;
    baseStyle: BaseStyle;
    constructor();
    ngOnDestroy(): void;
    onThemeChange(value: any): void;
    loadCommonTheme(): void;
    setThemeConfig(config: ThemeConfigType): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeProvider, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeProvider>;
}

declare class PrimeNG extends ThemeProvider {
    ripple: _angular_core.WritableSignal<boolean>;
    platformId: any;
    /**
     * @deprecated Since v20. Use `inputVariant` instead.
     */
    inputStyle: _angular_core.WritableSignal<"outlined" | "filled" | null>;
    inputVariant: _angular_core.WritableSignal<"outlined" | "filled" | null>;
    overlayAppendTo: _angular_core.WritableSignal<any>;
    overlayOptions: OverlayOptions;
    csp: _angular_core.WritableSignal<{
        nonce: string | undefined;
    }>;
    unstyled: _angular_core.WritableSignal<boolean | undefined>;
    pt: _angular_core.WritableSignal<primeng_config.GlobalPassThrough | null | undefined>;
    ptOptions: _angular_core.WritableSignal<primeng_api.PassThroughOptions | null | undefined>;
    filterMatchModeOptions: {
        text: string[];
        numeric: string[];
        date: string[];
    };
    translation: Translation;
    zIndex: ZIndex;
    private translationSource;
    translationObserver: rxjs.Observable<any>;
    getTranslation(key: string): any;
    setTranslation(value: Translation): void;
    setConfig(config: PrimeNGConfigType): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PrimeNG, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<PrimeNG>;
}

declare const PRIME_NG_CONFIG: InjectionToken<PrimeNGConfigType>;
declare function providePrimeNG(...features: PrimeNGConfigType[]): EnvironmentProviders;

export { PRIME_NG_CONFIG, PrimeNG, ThemeProvider, providePrimeNG };
export type { GlobalPassThrough, PrimeNGConfigType, ThemeConfigType, ThemeType, ZIndex };
