import { type Atom } from "@cn-ui/reactive";
import type { Accessor } from "solid-js";
import type { JSX } from "solid-js";
import type { useScroll } from "solidjs-use";
import type { MagicTableProps } from "./interface";
import type { CellContext, RowSelectionState, Table } from "./solidTable";
import type { useStaticTableDefine } from "./useStaticTableDefine";
import type { useSticky } from "./useSticky";
export interface MagicTableCtxType<T = unknown> extends ReturnType<typeof useSticky>, ReturnType<typeof useStaticTableDefine<T>> {
    tableProps: MagicTableProps<T>;
    table: Table<T>;
    rowSelection: Atom<RowSelectionState>;
    tableScroll: ReturnType<typeof useScroll>;
    selection: Accessor<MagicTableProps<T>["selection"]>;
    estimateHeight: Accessor<number | undefined>;
    width: Accessor<number>;
    defaultCell?: <T, D>(props: CellContext<T, D>) => JSX.Element;
}
export declare const MagicTableCtx: {
    use<D = MagicTableCtxType<unknown>>(): D;
    id: symbol;
    Provider: import("solid-js").ContextProviderComponent<MagicTableCtxType<unknown> | undefined>;
    defaultValue: MagicTableCtxType<unknown> | undefined;
};
export declare const MagicVirtualTableCtx: {
    use<D = {
        rowVirtualizer: import("./virtual").CNVirtualizer<HTMLDivElement, Element>;
        columnVirtualizer: import("./virtual").CNVirtualizer<HTMLDivElement, Element>;
        tableWidth(): number;
        rows: Accessor<import("@cn-ui/table-core/build/lib/types").Row<unknown>[]>;
    }>(): D;
    id: symbol;
    Provider: import("solid-js").ContextProviderComponent<{
        rowVirtualizer: import("./virtual").CNVirtualizer<HTMLDivElement, Element>;
        columnVirtualizer: import("./virtual").CNVirtualizer<HTMLDivElement, Element>;
        tableWidth(): number;
        rows: Accessor<import("@cn-ui/table-core/build/lib/types").Row<unknown>[]>;
    } | undefined>;
    defaultValue: {
        rowVirtualizer: import("./virtual").CNVirtualizer<HTMLDivElement, Element>;
        columnVirtualizer: import("./virtual").CNVirtualizer<HTMLDivElement, Element>;
        tableWidth(): number;
        rows: Accessor<import("@cn-ui/table-core/build/lib/types").Row<unknown>[]>;
    } | undefined;
};
