/**
 * Synapse REST API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { FacetColumnSortConfig } from './FacetColumnSortConfig';
import type { JsonSubColumnModel } from './JsonSubColumnModel';
/**
 * A column model contains the metadata of a single column of a table or view.
 * @export
 * @interface ColumnModel
 */
export interface ColumnModel {
    /**
     * The display name of the column
     * @type {string}
     * @memberof ColumnModel
     */
    name?: string;
    /**
     * The column type determines the type of data that can be stored in a column. Switching between types (using <a href="${POST.entity.id.table.transaction.async.start}">a transaction</a> with <a href="${org.sagebionetworks.repo.model.table.TableUpdateTransactionRequest}">TableUpdateTransactionRequest</a> in the "changes" list) is generally allowed except for switching to "_LIST" suffixed types. In such cases, a new column must be created and data must be copied over manually
     * @type {string}
     * @memberof ColumnModel
     */
    columnType?: ColumnModelColumnTypeEnum;
    /**
     * Set to one of the enumerated values to indicate a column should be treated as a facet
     * @type {string}
     * @memberof ColumnModel
     */
    facetType?: ColumnModelFacetTypeEnum;
    /**
     *
     * @type {FacetColumnSortConfig}
     * @memberof ColumnModel
     */
    facetSortConfig?: FacetColumnSortConfig;
    /**
     * The immutable ID issued to new columns
     * @type {string}
     * @memberof ColumnModel
     */
    id?: string;
    /**
     * The default value for this column. Columns of type ENTITYID, FILEHANDLEID, USERID, and LARGETEXT are not allowed to have default values.
     * @type {string}
     * @memberof ColumnModel
     */
    defaultValue?: string;
    /**
     * A parameter for columnTypes with a maximum size.  For example, ColumnType.STRINGs have a default maximum size of 50 characters, but can be set to a maximumSize of 1 to 1000 characters. For columnType of STRING_LIST, this limits the size of individual string elements in the list
     * @type {number}
     * @memberof ColumnModel
     */
    maximumSize?: number;
    /**
     * Required if using a columnType with a "_LIST" suffix. Describes the maximum number of values that will appear in that list. The maximum allowed value is determined by a total character budget of 100,000: for STRING_LIST, maximumListLength * maximumSize must not exceed 100,000; for other list types the per-element character size is fixed (INTEGER_LIST/DATE_LIST/USERID_LIST: 20, BOOLEAN_LIST: 5, ENTITYID_LIST: 44) and maximumListLength * that size must not exceed 100,000. Default 100.
     * @type {number}
     * @memberof ColumnModel
     */
    maximumListLength?: number;
    /**
     * Columns of type STRING can be constrained to an enumeration values set on this list. The maximum number of entries for an enum is 100
     * @type {Array<string>}
     * @memberof ColumnModel
     */
    enumValues?: Array<string>;
    /**
     * For column of type JSON that represents the combination of multiple sub-columns, this property is used to define each sub-column.
     * @type {Array<JsonSubColumnModel>}
     * @memberof ColumnModel
     */
    jsonSubColumns?: Array<JsonSubColumnModel>;
}
/**
 * @export
 */
export declare const ColumnModelColumnTypeEnum: {
    readonly STRING: "STRING";
    readonly DOUBLE: "DOUBLE";
    readonly INTEGER: "INTEGER";
    readonly BOOLEAN: "BOOLEAN";
    readonly DATE: "DATE";
    readonly FILEHANDLEID: "FILEHANDLEID";
    readonly ENTITYID: "ENTITYID";
    readonly SUBMISSIONID: "SUBMISSIONID";
    readonly EVALUATIONID: "EVALUATIONID";
    readonly LINK: "LINK";
    readonly MEDIUMTEXT: "MEDIUMTEXT";
    readonly LARGETEXT: "LARGETEXT";
    readonly USERID: "USERID";
    readonly STRING_LIST: "STRING_LIST";
    readonly INTEGER_LIST: "INTEGER_LIST";
    readonly BOOLEAN_LIST: "BOOLEAN_LIST";
    readonly DATE_LIST: "DATE_LIST";
    readonly ENTITYID_LIST: "ENTITYID_LIST";
    readonly USERID_LIST: "USERID_LIST";
    readonly JSON: "JSON";
};
export type ColumnModelColumnTypeEnum = typeof ColumnModelColumnTypeEnum[keyof typeof ColumnModelColumnTypeEnum];
/**
 * @export
 */
export declare const ColumnModelFacetTypeEnum: {
    readonly enumeration: "enumeration";
    readonly range: "range";
};
export type ColumnModelFacetTypeEnum = typeof ColumnModelFacetTypeEnum[keyof typeof ColumnModelFacetTypeEnum];
/**
 * Check if a given object implements the ColumnModel interface.
 */
export declare function instanceOfColumnModel(value: object): value is ColumnModel;
export declare function ColumnModelFromJSON(json: any): ColumnModel;
export declare function ColumnModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnModel;
export declare function ColumnModelToJSON(json: any): ColumnModel;
export declare function ColumnModelToJSONTyped(value?: ColumnModel | null, ignoreDiscriminator?: boolean): any;
