import * as i0 from '@angular/core';
import { OnDestroy, EnvironmentProviders } from '@angular/core';
import { IDateComp, IDateParams, INoRowsOverlayParams, GridOptions, Theme } from 'ag-grid-community';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/**
 * Custom AG Grid date component using Element datepicker.
 * This component replaces the native HTML date input with the Element design system datepicker.
 */
declare class AgDateInputComponent implements IDateComp, OnDestroy {
    private elementRef;
    /**
     * The selected date value.
     */
    date: Date | undefined;
    /**
     * AG Grid date filter parameters.
     * @internal
     */
    private params;
    /**
     * Document click event listener for calendar overlay.
     * @internal
     */
    private documentClickListener?;
    /**
     * Notifies AG Grid when the date value changes.
     * @internal
     */
    onDateChange(): void;
    /**
     * Lifecycle hook called after the component GUI is attached.
     * Sets up event listeners to prevent filter popup from closing when interacting with calendar.
     */
    afterGuiAttached(): void;
    ngOnDestroy(): void;
    agInit(params: IDateParams): void;
    getDate(): Date | null;
    getGui(): HTMLElement;
    setDate(date: Date | null): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AgDateInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AgDateInputComponent, "si-ag-date-input", never, {}, {}, never, never, true, never>;
}

/**
 * Custom AG Grid no rows overlay component using Element Empty State.
 * This component is displayed when the grid has no data to show.
 *
 * @example
 * Using with custom parameters
 * ```typescript
 * <ag-grid-angular
 *   [noRowsOverlayComponent]="AgNoRowsOverlayComponent"
 *   [noRowsOverlayComponentParams]="{
 *     icon: 'element-technical-search',
 *     heading: 'No results found',
 *     content: 'Try adjusting your filters.'
 *   }"
 * />
 * ```
 */
declare class AgNoRowsOverlayComponent {
    /**
     * Icon to display in the empty state.
     *
     */
    protected readonly icon: i0.WritableSignal<string>;
    /**
     * Heading text for the empty state.
     *
     */
    protected readonly heading: i0.WritableSignal<string>;
    /**
     * Description text for the empty state.
     *
     */
    protected readonly content: i0.WritableSignal<string | undefined>;
    agInit(params: INoRowsOverlayParams & {
        icon: string;
        heading: string;
        content?: string;
    }): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AgNoRowsOverlayComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AgNoRowsOverlayComponent, "si-ag-no-rows-overlay", never, {}, {}, never, never, true, never>;
}

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/**
 * Provides AG Grid global configuration with Element design system theme.
 *
 * This provider configures AG Grid with the Element theme, custom components,
 * and density-specific styling. Use it in your application providers.
 *
 * @param density - The density variant to use. Options:
 *   - 'compact': Minimal spacing (28px row height, 32px header height, 4px spacing)
 *   - 'standard': Default spacing (42px row height, 48px header height, 8px spacing)
 *   - 'comfort': Generous spacing (84px row height, 96px header height, 12px spacing)
 * @param gridOptions - Optional AG Grid options to merge with Element defaults.
 *   These options will override Element defaults if specified.
 * @returns Environment providers for dependency injection
 *
 * @example
 * ```typescript
 * // In app.config.ts
 * export const appConfig: ApplicationConfig = {
 *   providers: [
 *     provideSiAgGridConfig()
 *   ]
 * };
 *
 * // With custom options
 * export const appConfig: ApplicationConfig = {
 *   providers: [
 *     provideSiAgGridConfig('compact', {
 *       rowHeight: 30,
 *       suppressMenuHide: true
 *     })
 *   ]
 * };
 * ```
 */
declare const provideSiAgGridConfig: (density?: "compact" | "comfort" | "standard", gridOptions?: GridOptions) => EnvironmentProviders;

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/**
 * Standard density Element AG Grid theme.
 * Provides balanced spacing suitable for most use cases.
 * - Row height: 42px
 * - Header height: 48px
 * - Spacing: 8px
 */
declare const elementTheme: Theme;
/**
 * Compact density Element AG Grid theme.
 * Optimized for displaying more data in limited space.
 * - Row height: 28px
 * - Header height: 32px
 * - Spacing: 4px
 */
declare const elementThemeCompact: Theme;
/**
 * Comfort density Element AG Grid theme.
 * Provides generous spacing for enhanced readability and touch interactions.
 * - Row height: 84px
 * - Header height: 96px
 * - Spacing: 12px
 */
declare const elementThemeComfort: Theme;

export { AgDateInputComponent, AgNoRowsOverlayComponent, elementTheme, elementThemeComfort, elementThemeCompact, provideSiAgGridConfig };
