import Component from '@glimmer/component';
import { FlexRenderComponentConfig } from './flex-render-helpers.ts';
import type { Cell_Core, CellContext, CellData, Header_Core, HeaderContext, RowData, TableFeatures } from '@tanstack/table-core';
import type { ComponentLike, ContentValue } from '@glint/template';
type RenderOptions = Record<string, unknown> | undefined;
type CellRenderResult<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> = string | number | null | FlexRenderComponentConfig<TFeatures, TData, TValue, RenderOptions>;
type HeaderRenderResult<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> = string | number | null | FlexRenderComponentConfig<TFeatures, TData, TValue, RenderOptions>;
interface CellRenderSignature<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData> {
    Args: {
        ctx: CellContext<TFeatures, TData, TValue>;
        options?: Record<string, unknown>;
    };
}
interface HeaderRenderSignature<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData> {
    Args: {
        ctx: HeaderContext<TFeatures, TData, TValue>;
        options?: Record<string, unknown>;
    };
}
export interface FlexRenderCellSignature<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> {
    Args: {
        cell: Cell_Core<TFeatures, TData, TValue>;
    };
    Element: null;
}
export declare class FlexRenderCell<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> extends Component<FlexRenderCellSignature<TFeatures, TData, TValue>> {
    get result(): CellRenderResult<TFeatures, TData, TValue>;
    get resolvedContext(): CellContext<TFeatures, TData, TValue>;
    get isComponent(): boolean;
    get componentToRender(): ComponentLike<CellRenderSignature<TFeatures, TData, TValue>> | undefined;
    get componentOptions(): RenderOptions;
    get content(): ContentValue;
}
export interface FlexRenderHeaderSignature<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> {
    Args: {
        header: Header_Core<TFeatures, TData, TValue>;
    };
    Element: null;
}
export declare class FlexRenderHeader<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> extends Component<FlexRenderHeaderSignature<TFeatures, TData, TValue>> {
    get result(): HeaderRenderResult<TFeatures, TData, TValue>;
    get resolvedContext(): HeaderContext<TFeatures, TData, TValue>;
    get isComponent(): boolean;
    get componentToRender(): ComponentLike<HeaderRenderSignature<TFeatures, TData, TValue>> | undefined;
    get componentOptions(): RenderOptions;
    get content(): ContentValue;
}
export interface FlexRenderFooterSignature<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> {
    Args: {
        footer: Header_Core<TFeatures, TData, TValue>;
    };
    Element: null;
}
export declare class FlexRenderFooter<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> extends Component<FlexRenderFooterSignature<TFeatures, TData, TValue>> {
    get result(): HeaderRenderResult<TFeatures, TData, TValue>;
    get resolvedContext(): HeaderContext<TFeatures, TData, TValue>;
    get isComponent(): boolean;
    get componentToRender(): ComponentLike<HeaderRenderSignature<TFeatures, TData, TValue>> | undefined;
    get componentOptions(): RenderOptions;
    get content(): ContentValue;
}
export {};
//# sourceMappingURL=FlexRender.d.ts.map