import { VNode } from '../../stencil-public-runtime';
import { getNestedProperty } from './table.property-utils';
import type { TableTypes } from './table-interface';
type ValidRenderTypes = 'tr' | 'th' | 'td';
export { getNestedProperty };
/**
 * Get a model object for custom cell / property renderers.
 * @param rowIndex - the current row index being rendered
 * @param colIndex - the current column index being rendered
 * @returns a model object which will be passed to custom renderers
 */
export declare function colDataModel(rowIndex: number, colIndex: number): TableTypes.RenderModel;
/**
 * Get a model object for custom row renderers.
 * @param rowIndex
 * @returns a model object passed to custom row renderers
 */
export declare function rowDataModel(rowIndex: number): TableTypes.RowDataSchemaModel;
/**
 * Merges 2 objects of properties together
 * @param current - property object
 * @param extra - additional object property
 * @returns - merged properties that can be applied to a node
 */
export declare function mergeProperties<T extends TableTypes.CellProps>(current: T, extra: T): T;
/**
 * Returns the current nano-data-table's stores.
 * @returns the current nano-data-table stores
 */
export declare function fetchStores(): import("./table.store").TableStores;
/**
 * Merges any defined cell properties with properties
 * required by `nano-data-table` functionality
 * @param rowIndex - the current row index being rendered
 * @param colIndex = the current column index being rendered
 * @param defaultProps - default properties required by `nano-data-table`
 * @returns - the merged properties that will be applied to a node
 */
export declare function mergeCellProperties(rowIndex: number, colIndex: number, defaultProps: TableTypes.CellProps): TableTypes.CellProps;
/**
 * Renders a table header (within a thead) using a custom template if set.
 * @param col - the current column config object
 * @returns - a JSX node
 */
export declare function colheadFootRender(col: TableTypes.ColumnConfig): VNode;
/**
 * Renders a class string or map for pinned classes on the v axis.
 * @param type - element tagName
 * @param vPinned - whether element is currently pinned vertically to top or bottom
 * @param toString - render as a string (defaults to class map)
 * @returns a class string or class map
 */
export declare function headerPinClasses(type: ValidRenderTypes, vPinned?: TableTypes.Position, toString?: false): {
    [key: string]: boolean;
};
export declare function headerPinClasses(type: ValidRenderTypes, vPinned?: TableTypes.Position, toString?: true): string;
/**
 * Turns a class map {'string': boolean} to class string
 * @param classes - the class map to convert
 * @returns a class string
 */
export declare function classListToStr(classes: {
    [key: string]: boolean;
}): string;
