import type { Property } from "@rebasepro/types"; import type { AdminCollection } from "@rebasepro/cms-types"; export type PropertyColumnConfig = { key: string; disabled: boolean; }; export declare function getSubcollectionColumnId(collection: AdminCollection): string; /** * The jump-to-tab columns a collection table does not need, because the relation * behind them already has a column of its own. * * Every child view gets a 200px button column that opens its tab. For a relation * declared in `relations` that button is the relation's only presence in the * table. For one declared as a property it is the second: the property's own * column is already there, hydrated by the list fetch's `include: ["*"]`, showing * the child rows themselves — and carrying the *same heading*, because the tab * takes its name from the declaring property. Two columns called "Applications", * one of them a button, and nothing in the header to tell them apart. * * The property column wins: it shows what the children are, and each chip in it * opens one. The tab stays reachable by opening the record, which is what the * rest of the table's rows do anyway. * * Unless the author hid that column — `hideFromCollection` on the property, or a * `propertiesOrder` that omits it, is a statement about the column and not about * the relation, so the button comes back rather than the relation dropping out * of the table altogether. */ export declare function getRedundantChildViewColumnIds>(collection: AdminCollection): Set; export declare function useColumnIds>(collection: AdminCollection, includeSubcollections: boolean): PropertyColumnConfig[]; export declare function getColumnKeysForProperty(property: Property, key: string, disabled?: boolean): PropertyColumnConfig[]; export declare function getFormFieldKeys(collection: AdminCollection): string[];