import { SelectSizeProps } from '@sixbell-telco/sdk/components/forms/select';
import { PaginationType, PaginatorSizeProps } from '@sixbell-telco/sdk/components/paginator';
import { TableContainerHeightProps, TableContentSizeProps, TableFooterLayoutTokens, TableResolvedSize, TableSizeTokens } from '@sixbell-telco/sdk/components/table';
import { TextPreset } from '@sixbell-telco/sdk/directives/text';
import { TranslateService } from '@sixbell-telco/sdk/utils/translation';
import { DataTableContextService } from './data-table-context.service';
import { DataTablePagination } from './models';
import * as i0 from "@angular/core";
/** Configuration object for data table styling variants */
export type DataTableVariantProps = {
size?: TableContentSizeProps;
containerHeight?: TableContainerHeightProps;
};
/**
* @internal
* Generates data table classes with size and height variants
*/
export declare const dataTableContent: (props?: ({
size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
/**
* A styled container component for data tables - provides styling shell only
*
* This component is similar to st-table but with additional data table specific styling.
* Users should compose their own table structure using TanStack Table and SDK components.
*
* @example
* ```html
*
*
*
*
* | Name |
*
*
*
*
* | John Doe |
*
*
*
*
* ```
*/
export declare class DataTableContainerComponent {
readonly translationService: TranslateService;
readonly dataTableContext: DataTableContextService;
readonly resolvedSize: import("@angular/core").Signal;
/**
* Empty state icon for no data state
* @defaultValue heroDocumentText
*/
noDataIcon: import("@angular/core").InputSignal;
/**
* Empty state icon for no results state
* @defaultValue matSearchOff
*/
noResultsIcon: import("@angular/core").InputSignal;
/**
* Table size variant
* @defaultValue 'sm'
*/
size: import("@angular/core").InputSignal;
constructor();
/**
* Enable sticky header row
* @defaultValue false
*/
pinRows: import("@angular/core").InputSignal;
/**
* Enable sticky first column
* @defaultValue false
*/
pinColumns: import("@angular/core").InputSignal;
/**
* Apply zebra-striping to rows
* @defaultValue false
*/
zebra: import("@angular/core").InputSignal;
/**
* Show row dividers (borders) between rows
* @defaultValue false
*/
bordered: import("@angular/core").InputSignal;
/**
* Pagination control display variant
* @defaultValue 'default'
*/
paginatorType: import("@angular/core").InputSignal;
/**
* Total number of items across all pages
* @defaultValue 0
*/
totalItems: import("@angular/core").InputSignal;
/**
* Pagination configuration
* @defaultValue { id: 'paginator', currentPage: 1, itemsPerPage: 10, search: '', sortColumn: null, sortDirection: null, filters: {} }
*/
pagination: import("@angular/core").InputSignal;
/**
* Maximum number of pagination buttons to display
* @defaultValue 4
*/
maxSize: import("@angular/core").InputSignal;
/** Event emitted when page changes */
pageChanged: import("@angular/core").OutputEmitterRef;
/** Event emitted when page size changes */
pageSizeChanged: import("@angular/core").OutputEmitterRef;
readonly ENTRIES: readonly [5, 10, 20, 50, 100];
readonly entriesPerPageOptions: import("@angular/core").Signal<{
value: 10 | 5 | 20 | 50 | 100;
text: any;
}[]>;
/**
* Computed total number of pages for the internal paginator.
* Calculated from totalItems and itemsPerPage.
*/
readonly totalPages: import("@angular/core").Signal;
/**
* Computed display range for current page entries
* @example "1-10" of 100 entries
*/
paginationRange: import("@angular/core").Signal;
/**
* Function to determine if any filters are currently active
* This allows the parent component to define what constitutes an "active filter"
*/
hasActiveFiltersCallback: import("@angular/core").InputSignal<(() => boolean) | undefined>;
/**
* Computed boolean indicating if any filters are currently active
*/
readonly hasActiveFilters: import("@angular/core").Signal;
/**
* Computed boolean indicating if we should show "no results" vs "no data"
*/
readonly hasNoResults: import("@angular/core").Signal;
/**
* Computed boolean indicating if we should show "no data" state
*/
readonly hasNoData: import("@angular/core").Signal;
/**
* Handles page navigation events
* @param page - New page number
*/
handlePageChange(page: number): void;
/**
* Handles page size changes
* @param size - New items per page value
*/
handlePageSizeChange(size: unknown): void;
/**
* @internal
* Computes typography variant for paginator text based on table size
*/
readonly paginatorTextSize: import("@angular/core").Signal;
readonly sizeTokens: import("@angular/core").Signal;
readonly footerLayoutTokens: import("@angular/core").Signal;
readonly footerSelectSize: import("@angular/core").Signal;
readonly footerPaginatorSize: import("@angular/core").Signal;
readonly footerWrapperClass: import("@angular/core").Signal;
readonly footerDividerClass: import("@angular/core").Signal;
readonly footerContentClass: import("@angular/core").Signal;
/**
* @internal
* Computes table element classes based on current configuration
*/
readonly tableClass: import("@angular/core").Signal;
/**
* @internal
* Computes table container classes based on height input
*/
readonly tableContainerClass: import("@angular/core").Signal;
/**
* @internal
* Computes outer container classes based on size
*/
readonly containerClass: import("@angular/core").Signal;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}