import { BaseGridPlugin } from '../../core/plugin/base-plugin';
import { AggregationRowConfig, PinnedRowsConfig, PinnedRowsContext, PinnedRowsPanel } from './types';
/**
 * Pinned Rows (Status Bar) Plugin for tbw-grid
 *
 * Creates fixed status bars at the top or bottom of the grid for displaying aggregations,
 * row counts, or custom content. Think of it as the "totals row" you'd see in a spreadsheet—
 * always visible regardless of scroll position.
 *
 * ## Installation
 *
 * ```ts
 * import { PinnedRowsPlugin } from '@toolbox-web/grid/plugins/pinned-rows';
 * ```
 *
 * ## Configuration Options
 *
 * | Option | Type | Default | Description |
 * |--------|------|---------|-------------|
 * | `position` | `'top' \| 'bottom'` | `'bottom'` | Status bar position |
 * | `showRowCount` | `boolean` | `true` | Show total row count |
 * | `showSelectedCount` | `boolean` | `true` | Show selected row count |
 * | `showFilteredCount` | `boolean` | `true` | Show filtered row count |
 * | `aggregationRows` | `AggregationRowConfig[]` | - | Aggregation row configs |
 *
 * ## Built-in Aggregation Functions
 *
 * | Function | Description |
 * |----------|-------------|
 * | `sum` | Sum of values |
 * | `avg` | Average of values |
 * | `count` | Count of rows |
 * | `min` | Minimum value |
 * | `max` | Maximum value |
 *
 * ## CSS Custom Properties
 *
 * | Property | Default | Description |
 * |----------|---------|-------------|
 * | `--tbw-pinned-rows-bg` | `var(--tbw-color-panel-bg)` | Status bar background |
 * | `--tbw-pinned-rows-border` | `var(--tbw-color-border)` | Status bar border |
 *
 * @example Status Bar with Aggregation
 * ```ts
 * import '@toolbox-web/grid';
 * import { PinnedRowsPlugin } from '@toolbox-web/grid/plugins/pinned-rows';
 *
 * grid.gridConfig = {
 *   columns: [
 *     { field: 'product', header: 'Product' },
 *     { field: 'quantity', header: 'Qty', type: 'number' },
 *     { field: 'price', header: 'Price', type: 'currency' },
 *   ],
 *   plugins: [
 *     new PinnedRowsPlugin({
 *       position: 'bottom',
 *       showRowCount: true,
 *       aggregationRows: [
 *         {
 *           id: 'totals',
 *           aggregators: { quantity: 'sum', price: 'sum' },
 *           cells: { product: 'Totals:' },
 *         },
 *       ],
 *     }),
 *   ],
 * };
 * ```
 *
 * @see {@link PinnedRowsConfig} for all configuration options
 * @see {@link AggregationRowConfig} for aggregation row structure
 *
 * @internal Extends BaseGridPlugin
 */
export declare class PinnedRowsPlugin extends BaseGridPlugin<PinnedRowsConfig> {
    /** @internal */
    readonly name = "pinnedRows";
    /** @internal */
    readonly styles: string;
    /** @internal */
    protected get defaultConfig(): Partial<PinnedRowsConfig>;
    private infoBarElement;
    private topAggregationContainer;
    private bottomAggregationContainer;
    private footerWrapper;
    /** @internal */
    detach(): void;
    /** @internal */
    afterRender(): void;
    private cleanup;
    private cleanupFooter;
    private getSelectionState;
    private getFilterState;
    /**
     * Refresh the status bar to reflect current grid state.
     */
    refresh(): void;
    /**
     * Get the current status bar context.
     * @returns The context with row counts and other info
     */
    getContext(): PinnedRowsContext;
    /**
     * Add a custom panel to the info bar.
     * @param panel - The panel configuration to add
     */
    addPanel(panel: PinnedRowsPanel): void;
    /**
     * Remove a custom panel by ID.
     * @param id - The panel ID to remove
     */
    removePanel(id: string): void;
    /**
     * Add an aggregation row.
     * @param row - The aggregation row configuration
     */
    addAggregationRow(row: AggregationRowConfig): void;
    /**
     * Remove an aggregation row by ID.
     * @param id - The aggregation row ID to remove
     */
    removeAggregationRow(id: string): void;
}
//# sourceMappingURL=PinnedRowsPlugin.d.ts.map