import { ColumnDef } from "@tanstack/react-table";
import { ColumnTypes } from '../engine/registerColumn';
import { GetSchema200ResponseQueriesInner, GetSchema200ResponseTablesInner, GetSchema200ResponseTablesInnerColumnsInner, GetSchema200ResponseTablesInnerColumnsInnerReferences, GetSchema200ResponseTablesInnerInsightsInner, GetSchema200ResponseTablesInnerTriggersInner, GetSchema200ResponseTablesInnerViewsInner } from "../client/api";
export type ColumnType = ColumnDef<Record<string, any>>;
export type SchemaColumn = {
    id?: string;
    type: ColumnTypes | "rowId";
    references?: GetSchema200ResponseTablesInnerColumnsInnerReferences | null;
    definition?: GetSchema200ResponseTablesInnerColumnsInner["definition"] | null;
    description?: string;
    isDisabled: boolean;
    size?: number;
    idx: number;
    accessor?: string;
    accessorKey?: string;
    isShown?: boolean;
};
export type TableColumn<T> = Partial<T> & SchemaColumn;
export type ParamsType = {
    tableName: string;
    viewName: string;
    insightName: string;
    externalDataName: string;
    triggerName: string;
    queryName: string;
    settings: string;
    roles: string;
};
export type VariantTableDefinition = GetSchema200ResponseTablesInnerInsightsInner | GetSchema200ResponseTablesInner | GetSchema200ResponseQueriesInner | GetSchema200ResponseTablesInnerTriggersInner | GetSchema200ResponseTablesInnerViewsInner;
export interface SchemaData<TOptions extends VariantTableDefinition = any> {
    id: string;
    isOpen?: boolean;
    type?: "tables" | "insights" | "queries" | "grids" | "triggers" | "externals";
    name: string;
    source_type?: "database" | "http" | "relation";
    tableName?: string;
    schema?: string;
    definition?: TOptions;
    children?: Array<SchemaData<TOptions>>;
}
export interface SortAndFilterFields {
    type: ColumnTypes;
    name: string;
    references?: Record<string, any> | null;
    definition?: Record<string, any> | null;
}
export interface SettingsToolbarType {
    addRow?: boolean;
    dateIntervalButton?: boolean;
    filter?: boolean;
    sort?: boolean;
    parameter?: boolean;
    hideField?: boolean;
}
export interface Role {
    id: string;
    name: string;
    createdAt: Date;
    updatedAt: Date;
    deletionProtection: boolean;
    permissions: any;
}
