import * as _angular_core from '@angular/core';
import { OnInit, ChangeDetectorRef, OnDestroy, OnChanges, AfterContentChecked, ElementRef, SimpleChanges, WritableSignal } from '@angular/core';
import { ThemePalette, MatOptionSelectionChange } from '@angular/material/core';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatTableDataSource } from '@angular/material/table';
import { MatPaginator } from '@angular/material/paginator';
import { MatDialogRef } from '@angular/material/dialog';
import { MatIconRegistry } from '@angular/material/icon';
import { DomSanitizer } from '@angular/platform-browser';
import { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';

interface ProgressState {
    isLoading: boolean;
    isSuccess: boolean;
    isError: boolean;
    isComplete?: boolean;
    message: string;
}

type AlertType = 'info' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'dark' | 'light';
/**
 * Boostrap Alert component that can be used to alert messages to the user
 *
 * @author Pavan Kumar Jadda
 * @since 12.0.0
 */
declare class AlertComponent implements OnInit {
    cdr: ChangeDetectorRef;
    /**
     * Type of the BootStrap Alert. Following values are supported. See BootStrap docs for more information
     */
    type: _angular_core.InputSignal<AlertType>;
    /**
     *  Is alert visible or open
     */
    isOpen: _angular_core.InputSignal<boolean>;
    /**
     *  Writable signal for isOpen
     */
    open: _angular_core.WritableSignal<boolean>;
    /**
     * If set, displays an inline “Close” button
     */
    dismissible: _angular_core.InputSignal<boolean>;
    /**
     * If set, dismisses the alert after Dismiss Timeout
     */
    dismissOnTimeout: _angular_core.InputSignal<boolean>;
    /**
     * Number in milliseconds, after which alert will be closed. Default value is 5000 ms
     */
    dismissTimeout: _angular_core.InputSignal<number>;
    /**
     * Additional classes to be added to the alert. This can be used to add custom styles to the alert
     */
    class: _angular_core.InputSignal<string>;
    /**
     * Emits when the alert is closed.
     */
    closed: _angular_core.OutputEmitterRef<void>;
    constructor();
    /**
     * Initialize the component and settings
     *
     * @author Pavan Kumar Jadda
     * @since 12.0.0
     */
    ngOnInit(): void;
    /**
     * Closes BootStrap Alert if not open
     *
     * @author Pavan Kumar Jadda
     * @since 12.0.0
     */
    closeAlert(): void;
    /**
     * Opens Bootstrap Alert
     *
     * @author Pavan Kumar Jadda
     * @since 12.0.0
     */
    private openAlert;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "lib-alert, alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissOnTimeout": { "alias": "dismissOnTimeout"; "required": false; "isSignal": true; }; "dismissTimeout": { "alias": "dismissTimeout"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
}

declare class SpinnerComponent {
    /**
     *  Use Boostrap Spinner. Default `true`
     */
    bootstrapSpinner: _angular_core.InputSignal<boolean>;
    /**
     * Diameter of the Angular Material spinner
     */
    diameter: _angular_core.InputSignal<number>;
    /**
     *  Color of the Angular Material spinner
     */
    color: _angular_core.InputSignal<ThemePalette>;
    /**
     *  Stroke Width of the Angular Material spinner
     */
    strokeWidth: _angular_core.InputSignal<number>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinnerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpinnerComponent, "spinner,lib-spinner", never, { "bootstrapSpinner": { "alias": "bootstrapSpinner"; "required": false; "isSignal": true; }; "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

type Size = 'default' | 'small' | 'medium' | 'large';
interface Spinner {
    bdColor?: string;
    size?: Size;
    color?: string;
    type?: string;
    fullScreen?: boolean;
    zIndex?: number;
    template?: string;
    showSpinner?: boolean;
}
declare class NgxSpinner {
    name?: string;
    bdColor?: string;
    size?: Size;
    color?: string;
    type?: string;
    class?: string;
    divCount?: number;
    divArray?: number[];
    fullScreen?: boolean;
    show?: boolean;
    zIndex?: number;
    template?: string;
    showSpinner?: boolean;
    constructor(init?: Partial<NgxSpinner>);
}

declare class NgxSpinnerService {
    /**
     * Spinner observable
     *
     * @memberof NgxSpinnerService
     */
    spinnerObservable: BehaviorSubject<NgxSpinner | undefined>;
    /**
     * Creates an instance of NgxSpinnerService.
     * @memberof NgxSpinnerService
     */
    /**
     * Get subscription of desired spinner
     * @memberof NgxSpinnerService
     **/
    getSpinner(name: string): Observable<NgxSpinner>;
    /**
     * To show spinner
     *
     * @memberof NgxSpinnerService
     */
    show(name?: string, spinner?: Spinner): Promise<unknown>;
    /**
     * To hide spinner
     *
     * @memberof NgxSpinnerService
     */
    hide(name?: string, debounce?: number): Promise<unknown>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxSpinnerService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgxSpinnerService>;
}

declare class NgxSpinnerComponent implements OnDestroy, OnInit {
    private readonly spinnerService;
    private readonly changeDetector;
    /**
     * To set backdrop color
     * Only supports RGBA color format
     */
    bdColor: _angular_core.InputSignal<string>;
    /**
     * To set spinner size
     */
    size: _angular_core.InputSignal<Size>;
    /**
     * To set spinner color(DEFAULTS.SPINNER_COLOR)
     */
    color: _angular_core.InputSignal<string>;
    /**
     * To set type of spinner
     */
    type: _angular_core.InputSignal<string>;
    /**
     * To toggle fullscreen mode
     */
    fullScreen: _angular_core.InputSignal<boolean>;
    /**
     * Spinner name
     */
    name: _angular_core.InputSignal<string>;
    /**
     * z-index value
     */
    zIndex: _angular_core.InputSignal<number>;
    /**
     * Custom template for spinner/loader
     */
    template: _angular_core.InputSignal<string>;
    /**
     * Show/Hide the spinner
     */
    showSpinner: _angular_core.InputSignal<boolean>;
    /**
     * To enable/disable animation
     */
    disableAnimation: _angular_core.InputSignal<boolean>;
    /**
     * Spinner Object
     */
    spinner: NgxSpinner;
    /**
     * Array for spinner's div
     */
    divArray: number[];
    /**
     * Counter for div
     */
    divCount: number;
    /**
     * Show spinner
     **/
    show: boolean;
    /**
     * Unsubscribe from spinner's observable
     **/
    ngUnsubscribe: Subject<void>;
    /**
     * Element Reference
     */
    spinnerDOM: any;
    /**
     * Creates an instance of NgxSpinnerComponent.
     */
    constructor(spinnerService: NgxSpinnerService, changeDetector: ChangeDetectorRef);
    handleKeyboardEvent(event: KeyboardEvent): void;
    /**
     * Initialization method
     */
    ngOnInit(): void;
    /**
     * To set default ngx-spinner options
     */
    setDefaultOptions: () => void;
    /**
     * To get class for spinner
     */
    getClass(type: string, size: Size): string;
    /**
     * Check if input variables have changed
     */
    onInputChange(): void;
    /**
     * Component destroy event
     */
    ngOnDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxSpinnerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxSpinnerComponent, "ngx-spinner", never, { "bdColor": { "alias": "bdColor"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; "showSpinner": { "alias": "showSpinner"; "required": false; "isSignal": true; }; "disableAnimation": { "alias": "disableAnimation"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
}

/**
 * Reusable Auto Complete component that extends MatAutoComplete to show Clear icon and Arrow buttons
 *
 * @author Pavan Kumar Jadda
 * @since 12.0.0
 */
declare class AutocompleteComponent implements OnInit, OnChanges, AfterContentChecked, ControlValueAccessor {
    /**
     * Gets reference inputAutoComplete HTML attribute
     */
    inputAutoComplete: ElementRef;
    cdRef: ChangeDetectorRef;
    /**
     * Internal form control for the autocomplete
     */
    control: FormControl<string | null>;
    /**
     * Label of the AutoComplete
     */
    label: _angular_core.InputSignal<string>;
    /**
     * Placeholder of the AutoComplete
     */
    placeHolder: _angular_core.InputSignal<string>;
    /**
     * Appearance of the AutoComplete, defaults to `fill`
     */
    appearance: _angular_core.InputSignal<string>;
    /**
     * List of CSS classes that need to applied to autocomplete
     */
    classes: _angular_core.InputSignal<string>;
    /**
     * Attribute of the Object whose value would be shown when searching for data. Defaults to `ID`
     */
    bindLabel: _angular_core.InputSignal<string>;
    /**
     * Attribute of the Object whose value would be used for search
     */
    bindValue: _angular_core.InputSignal<string>;
    /**
     * Function that maps an option's control value to its display value in the trigger.
     */
    displayWith: ((value: any) => string) | null;
    /**
     * Specifies if the autocomplete is required. Default is not required.
     */
    required: _angular_core.InputSignal<boolean>;
    /**
     * Specifies if the autocomplete is disabled. Default is not required.
     */
    disabled: _angular_core.InputSignal<boolean>;
    /**
     * List of Objects that need to be bind and searched for
     */
    data: _angular_core.InputSignal<any[] | string[] | undefined>;
    /**
     * Emit selected value on selection changes
     */
    onSelectionChange: _angular_core.OutputEmitterRef<any>;
    /**
     * BehaviorSubject that shows the current active arrow icon
     */
    arrowIconSubject: BehaviorSubject<string>;
    /**
     * Filtered options when user types
     */
    filteredOptions: Observable<any[] | undefined> | undefined;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    ngAfterContentChecked(): void;
    ngOnInit(): void;
    ngOnChanges(_changes: SimpleChanges): void;
    clearInput(evt: any): void;
    openOrClosePanel(evt: any, trigger: MatAutocompleteTrigger): void;
    displayFn(object: any): string;
    emitSelectedValue($event: MatOptionSelectionChange): void;
    private onChange;
    private onTouched;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent, "autocomplete, lib-autocomplete", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeHolder": { "alias": "placeHolder"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindValue": { "alias": "bindValue"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "onSelectionChange": "onSelectionChange"; }, never, never, true, never>;
}

declare class PrintOptions {
    printSectionId: string;
    printTitle: string;
    useExistingCss: boolean;
    bodyClass: string;
    openNewTab: boolean;
    previewOnly: boolean;
    closeWindow: boolean;
    printDelay: number;
    constructor(options?: Partial<PrintOptions>);
}

/**
 * Reusable Angular directory that prints given contents of HTML element
 *
 * @since 12.0.0
 * @author Pavan Kumar Jadda
 */
declare class NgxPrintDirective {
    /**
     * ID of the HTML element those contents need to be printed
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    printSectionId: string | undefined;
    /**
     * Title of the HTML element those contents need to be printed
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    printTitle: string | undefined;
    /**
     * If `true`, uses CSS of HTMl element, otherwise no CSS applied
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    useExistingCss: boolean;
    /**
     * A delay in milliseconds to force the print dialog to wait before opened. Default: 0
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    printDelay: number;
    /**
     * Instance of the Mat Table Data Source
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    matTableDataSource: MatTableDataSource<any>;
    /**
     * Instance of the Mat Paginator
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    paginator: MatPaginator;
    /**
     * ID of the Mat Paginator
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    paginatorId: string;
    /**
     * HTML tag ID of the Mat-Table Input Filter
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    inputFilterId: string;
    /**
     * If `true`, referenced table is Mat-Table
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    isMatTable: boolean;
    /**
     * If `true` Mat-Table paginator will be hidden
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    hideMatTablePaginator: boolean;
    printStyleArray: never[];
    printOptions: PrintOptions;
    /**
     * List of Style sheet files
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    private styleSheetFileArray;
    /**
     * Prevents the print dialog from opening on the window
     *
     * @memberof NgxPrintDirective
     */
    set previewOnly(value: boolean);
    /**
     * List of CSS properties that needs to be applied while printing the document
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    set printStyle({ values }: PrintStyleParams);
    /**
     * Sets given style sheet files to print document
     *
     * @param cssList Comma separated value of CSS file names
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    set styleSheetFile(cssList: string);
    /**
     * Build link HTMl tag based on given file name
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    private static linkTagFn;
    /**
     * Gets HTML element by tag name
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    private static getElementTag;
    /**
     * Print the element upon clicking the button
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    print(): void;
    /**
     * Hide Mat Paginator before Printing
     *
     * @since 12.0.1
     * @author Pavan Kumar Jadda
     */
    private hideMatPaginatorBeforePrinting;
    /**
     * Show Mat Paginator after Printing
     *
     * @since 12.0.1
     * @author Pavan Kumar Jadda
     */
    private showMatPaginatorAfterPrinting;
    /**
     * @returns the string that create the stylesheet which will be injected later within <style></style> tag. Join/replace to transform an array objects to css-styled string
     *
     * @since 12.0.0
     * @author Pavan Kumar Jadda
     */
    private returnStyleValues;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxPrintDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxPrintDirective, "button[ngxPrint], button[print]", never, { "printSectionId": { "alias": "printSectionId"; "required": false; }; "printTitle": { "alias": "printTitle"; "required": false; }; "useExistingCss": { "alias": "useExistingCss"; "required": false; }; "printDelay": { "alias": "printDelay"; "required": false; }; "matTableDataSource": { "alias": "matTableDataSource"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; "paginatorId": { "alias": "paginatorId"; "required": false; }; "inputFilterId": { "alias": "inputFilterId"; "required": false; }; "isMatTable": { "alias": "isMatTable"; "required": false; }; "hideMatTablePaginator": { "alias": "hideMatTablePaginator"; "required": false; }; "previewOnly": { "alias": "previewOnly"; "required": false; }; "printStyle": { "alias": "printStyle"; "required": false; }; "styleSheetFile": { "alias": "styleSheetFile"; "required": false; }; }, {}, never, never, true, never>;
}
interface PrintStyleParams {
    values: Record<string, Record<string, string>>;
}

declare class PreventMultipleClicksDirective implements OnInit, OnDestroy {
    throttleTime: _angular_core.InputSignal<number>;
    throttleClick: _angular_core.OutputEmitterRef<Event>;
    private readonly clicks;
    private subscription;
    /**
     * Intercepts click event and stops default navigation. After first click set {@link throttleTime} to 2000 to prevent duplicate clicks
     *
     * @param event DOM event
     *
     * @author Pavan Kumar Jadda
     * @since 2.3.27
     */
    clickEvent(event: Event): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PreventMultipleClicksDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PreventMultipleClicksDirective, "[preventMultipleClicks]", never, { "throttleTime": { "alias": "throttleTime"; "required": false; "isSignal": true; }; }, { "throttleClick": "throttleClick"; }, never, never, true, never>;
}

declare class BaseButtonComponent {
    /**
     *  Is search in progress and loading the data
     */
    loading: _angular_core.InputSignalWithTransform<boolean, boolean | undefined>;
    /**
     *  Is button disabled
     */
    disabled: _angular_core.InputSignal<boolean>;
    /**
     * Type of the button. Following values are supported. See BootStrap docs for more information
     * <pre>
     *   1. button
     *   2. submit
     * </pre>
     */
    type: _angular_core.InputSignal<string>;
    /**
     * If set, shows when action in Progress
     */
    loadingLabel: _angular_core.InputSignal<string>;
    /**
     * If set, shows when Delete is not in progress
     */
    label: _angular_core.InputSignal<string>;
    /**
     * If set, shows the icon. Otherwise, shows delete icon
     */
    icon: _angular_core.InputSignal<string>;
    /**
     * If set, shows material icon otherwise hides the icons
     */
    showIcon: _angular_core.InputSignal<boolean>;
    /**
     * If set, sets the style of the button
     */
    style: _angular_core.InputSignal<any>;
    /**
     * If set, sets the class of the button
     */
    classes: _angular_core.InputSignal<string>;
    /**
     * If set, sets the data-cy attribute for the button
     */
    dataCy: _angular_core.InputSignal<string>;
    /**
     *  Output event when button is clicked
     */
    onClick: _angular_core.OutputEmitterRef<MouseEvent>;
    /**
     *  Output event when button is focused
     */
    onFocus: _angular_core.OutputEmitterRef<FocusEvent>;
    /**
     * Output event when button is blurred
     */
    onBlur: _angular_core.OutputEmitterRef<FocusEvent>;
    /**
     *  Output event when key is pressed
     */
    onKeyDown: _angular_core.OutputEmitterRef<KeyboardEvent>;
    /**
     *  Output event when key is up
     */
    onKeyUp: _angular_core.OutputEmitterRef<KeyboardEvent>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseButtonComponent, "ng-component", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; "dataCy": { "alias": "dataCy"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onKeyDown": "onKeyDown"; "onKeyUp": "onKeyUp"; }, never, never, true, never>;
}

declare class BsLinkButtonComponent extends BaseButtonComponent {
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsLinkButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsLinkButtonComponent, "bs-link-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class DeleteButtonComponent extends BaseButtonComponent {
    loadingLabel: _angular_core.InputSignal<string>;
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<DeleteButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<DeleteButtonComponent, "delete-button", never, { "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class EditButtonComponent extends BaseButtonComponent {
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditButtonComponent, "edit-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class EditBsButtonComponent extends BaseButtonComponent {
    label: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditBsButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditBsButtonComponent, "edit-bs-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class EditSvgIconButtonComponent extends BaseButtonComponent {
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditSvgIconButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditSvgIconButtonComponent, "edit-svg-icon-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class ManageButtonComponent extends BaseButtonComponent {
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ManageButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ManageButtonComponent, "manage-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SavePrimaryButtonComponent extends BaseButtonComponent {
    loadingLabel: _angular_core.InputSignal<string>;
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SavePrimaryButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SavePrimaryButtonComponent, "save-primary-button", never, { "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SearchButtonComponent extends BaseButtonComponent {
    loadingLabel: _angular_core.InputSignal<string>;
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchButtonComponent, "search-button", never, { "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SuccessButtonComponent extends BaseButtonComponent {
    loadingLabel: _angular_core.InputSignal<string>;
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SuccessButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SuccessButtonComponent, "success-button", never, { "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class ViewButtonComponent extends BaseButtonComponent {
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ViewButtonComponent, "view-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class ViewPrimaryButtonComponent extends BaseButtonComponent {
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewPrimaryButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ViewPrimaryButtonComponent, "view-primary-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class PrimaryButtonComponent extends BaseButtonComponent {
    loadingLabel: _angular_core.InputSignal<string>;
    label: _angular_core.InputSignal<string>;
    icon: _angular_core.InputSignal<string>;
    showIcon: _angular_core.InputSignal<boolean>;
    classes: _angular_core.InputSignal<string>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PrimaryButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<PrimaryButtonComponent, "primary-button", never, { "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class PdfExportButtonComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PdfExportButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<PdfExportButtonComponent, "pdf-export-button", never, {}, {}, never, never, true, never>;
}

declare class ExcelExportButtonComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExcelExportButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ExcelExportButtonComponent, "excel-export-button", never, {}, {}, never, never, true, never>;
}

declare class ConfirmDialogComponent {
    data: ConfirmDialogData;
    dialogRef: MatDialogRef<ConfirmDialogComponent>;
    title: string;
    message: string;
    constructor(data: ConfirmDialogData, dialogRef: MatDialogRef<ConfirmDialogComponent>);
    onDismiss(): void;
    onConfirm(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmDialogComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmDialogComponent, "app-confirm-dialog", never, {}, {}, never, never, true, never>;
}
/**
 * Class to represent confirm dialog model.
 */
interface ConfirmDialogData {
    title: string;
    message: string;
}

declare class EditSolidSvgComponent {
    constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer);
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditSolidSvgComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditSolidSvgComponent, "edit-solid-svg", never, {}, {}, never, never, true, never>;
}

declare class MatSnackBarService {
    snackBar: MatSnackBar;
    /**
     * Duration (in milliseconds) of the Snack Bar to be open. Defaults to 5 seconds (5000 milliseconds)
     */
    duration: number;
    /**
     * Horizontal Position of the MatSnackBar. Defaults to right side
     */
    horizontalPosition: MatSnackBarHorizontalPosition;
    /**
     * Vertical Position of the MatSnackBar. Defaults to top of the page
     */
    verticalPosition: MatSnackBarVerticalPosition;
    /**
     * Opens Success Snack Bar
     *
     * @param message Message to display on Snack Bar
     * @param options Options of the Snack Bar
     *
     * @author Pavan Kumar Jadda
     * @since 2.2.3
     */
    success(message: string, options?: MatSnackBarOptions): void;
    /**
     * Opens Error Snack Bar
     *
     * @param message Message to display on Snack Bar
     * @param options Options of the Snack Bar
     *
     * @author Pavan Kumar Jadda
     * @since 2.2.3
     */
    error(message: string, options?: MatSnackBarOptions): void;
    /**
     * Opens Generic Snack Bar
     *
     * @param message Message to display on Snack Bar
     *
     * @author Pavan Kumar Jadda
     * @since 2.2.3
     */
    open(message: string): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatSnackBarService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<MatSnackBarService>;
}
/**
 * MatSnackBarOptions for Snack Bar
 *
 * Available panelClass options:
 * - 'success-snackbar': Green background (default for success)
 * - 'error-snackbar': Red background (default for error)
 * - 'light-success-snackbar': Light green background
 * - 'light-error-snackbar': Light red background
 * - 'primary-snackbar': Primary theme color
 * - 'info-snackbar': Blue background
 * - 'warning-snackbar': Yellow background
 * - Custom CSS class names for additional styling
 *
 * @author Pavan Kumar Jadda
 * @since 2.7.19
 */
interface MatSnackBarOptions {
    duration?: number;
    horizontalPosition?: MatSnackBarHorizontalPosition;
    verticalPosition?: MatSnackBarVerticalPosition;
    panelClass?: string | string[];
}

/**
 * A core store class that can be used to store any object
 *
 * @author Pavan Kumar Jadda
 * @since 17.1.0
 */
declare class Store<T extends object> {
    _data: _angular_core.WritableSignal<T | undefined>;
    data: _angular_core.Signal<T | undefined>;
    /**
     * Update the data in the store with the new data
     *
     * @param newData The new data to be stored/updated
     *
     * @author Pavan Kumar Jadda
     * @since 17.1.0
     */
    update(newData: T): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Store<any>, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<Store<any>>;
}

interface IdType {
    id: number;
}

/**
 * A core entity store class that stores a list of objects. This has list of methods to perform CRUD operations on the list of objects.
 *
 * @author Pavan Kumar Jadda
 * @since 17.1.0
 */
declare class EntityStore<T extends IdType> {
    _data: _angular_core.WritableSignal<T[]>;
    data: _angular_core.Signal<T[]>;
    /**
     * Find an item in the store by id
     *
     * @param id The id of the item to be found
     *
     * @returns The item if found, undefined otherwise
     *
     * @author Pavan Kumar Jadda
     * @since 17.1.0
     */
    findById(id: number): T | undefined;
    /**
     * Set the list of items in the store with the new data
     *
     * @param data The new list of items to be stored
     *
     * @author Pavan Kumar Jadda
     * @since 17.1.0
     */
    setData(data: T[]): void;
    /**
     * Update an item in the store. If the item does not exist in new list, add it. Otherwise, update it.
     *
     * @param data The item to added or updated
     *
     * @author Pavan Kumar Jadda
     * @since 17.1.0
     */
    upsert(data: T): void;
    /**
     * Update or insert the given list of items in the store
     *
     * @param newData The list of items to be updated or inserted
     *
     * @author Pavan Kumar Jadda
     * @since 17.1.0
     */
    upsertMulti(newData: T[]): void;
    /**
     * Remove an item from the store
     *
     * @param id The id of the item to be removed
     *
     * @author Pavan Kumar Jadda
     * @since 17.1.0
     */
    remove(id: number): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityStore<any>, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<EntityStore<any>>;
}

/**
 * Initialize Loading or Update ProgressState
 *
 * @return Updated State Object
 *
 * @author Pavan Kumar Jadda
 * @since 2.7.16
 */
declare const initializeState: () => WritableSignal<ProgressState>;
/**
 * Initialize Loading or Update ProgressState
 *
 * @param progressState Object to initialize
 * @return ProgressState Updated State Object
 *
 * @author Pavan Kumar Jadda
 * @since 2.7.16
 */
declare const markLoading: (progressState: WritableSignal<ProgressState>) => void;
/**
 * Update state as isSuccess
 *
 * @return ProgressState Updated State Object
 *
 * @author Pavan Kumar Jadda
 * @since 2.7.16
 */
declare const markSuccess: (progressState: WritableSignal<ProgressState>, message?: string) => void;
/**
 * Update state as failure or isError
 *
 * @return ProgressState Updated State Object
 *
 * @author Pavan Kumar Jadda
 * @since 2.7.16
 */
declare const markError: (progressState: WritableSignal<ProgressState>, message?: string) => void;

export { AlertComponent, AutocompleteComponent, BsLinkButtonComponent, ConfirmDialogComponent, DeleteButtonComponent, EditBsButtonComponent, EditButtonComponent, EditSolidSvgComponent, EditSvgIconButtonComponent, EntityStore, ExcelExportButtonComponent, ManageButtonComponent, MatSnackBarService, NgxPrintDirective, NgxSpinnerComponent, NgxSpinnerService, PdfExportButtonComponent, PreventMultipleClicksDirective, PrimaryButtonComponent, SavePrimaryButtonComponent, SearchButtonComponent, SpinnerComponent, Store, SuccessButtonComponent, ViewButtonComponent, ViewPrimaryButtonComponent, initializeState, markError, markLoading, markSuccess };
export type { AlertType, ConfirmDialogData, MatSnackBarOptions, ProgressState };
