import { ComputedRef, InjectionKey, Ref } from 'vue';
import { TableResolvedColumn } from './table.js';
export interface TableColumnRegistration<T = Record<string, unknown>> {
    uid: string;
    order: Ref<number>;
    descriptor: ComputedRef<TableResolvedColumn<T>>;
}
export interface TableContext<T = Record<string, unknown>> {
    registerColumn: (column: TableColumnRegistration<T>) => void;
    unregisterColumn: (uid: string) => void;
}
export interface TableColumnContext<T = Record<string, unknown>> {
    uid: string;
    level: number;
    registerChildColumn: (column: TableColumnRegistration<T>) => void;
    unregisterChildColumn: (uid: string) => void;
}
export declare const tableContextKey: InjectionKey<TableContext<Record<string, unknown>>>;
export declare const tableColumnContextKey: InjectionKey<TableColumnContext<Record<string, unknown>>>;
