import { ColumnType, FormulaResultType, IDFormat, NumberFormat, StatusType } from './graphql-global-types'; declare type ITypeOptionNotDefined = `Some ColumnType not defined in ITypeOptions`; export declare type ITypeOptions = /** * If a column has no special type options, it is given Generic Type Options * which just has the columns Type in it. */ T extends ColumnType.NOOP | ColumnType.INTEGRATION_REFERENCE | ColumnType.AUTO_NUMBER | ColumnType.CREATED_BY ? IGenericTypeOptions : T extends ColumnType.CHECKBOX | ColumnType.LONG_TEXT | ColumnType.MULTI_ATTACHMENT | ColumnType.TEXT | ColumnType.PHONE | ColumnType.EMAIL ? IGenericRequiredColumnTypeOptions : T extends ColumnType.NUMBER | ColumnType.CURRENCY | ColumnType.DATETIME | ColumnType.STATUS | ColumnType.SELECT | ColumnType.MULTI_SELECT | ColumnType.RECORD_REFERENCE ? T extends ColumnType.NUMBER ? INumberTypeOptions : T extends ColumnType.CURRENCY ? ICurrencyTypeOptions : T extends ColumnType.DATETIME ? IDateTimeTypeOptions : T extends ColumnType.SELECT | ColumnType.MULTI_SELECT ? ISelectTypeOptions : T extends ColumnType.STATUS ? IStatusTypeOptions : T extends ColumnType.RECORD_REFERENCE ? IRecordReferenceTypeOptions : T extends never ? never : ITypeOptionNotDefined : T extends ColumnType.LOOKUP ? ILookupTypeOptions : T extends ColumnType.ROLLUP ? IRollupTypeOptions : T extends ColumnType.UNIQUE_ID ? IUniqueIdOptions : T extends ColumnType.RATING ? IRatingOptions : T extends ColumnType.FORMULA ? IFormulaOptions : T extends ColumnType.PROGRESS ? IProgressOptions : T extends ColumnType.COLLABORATOR ? ICollaboratorTypeOptions : T extends ColumnType.CREATED_AT ? ICreatedAtTypeOptions : T extends ColumnType.SUBTABLE ? ISubTableTypeOptions : T extends never ? never : ITypeOptionNotDefined; /********************************* GENERIC ***********************************/ interface IGenericTypeOptions { type: T; } interface IGenericRequiredColumnTypeOptions extends IGenericTypeOptions { required?: boolean; } /********************************* NUMERIC ***********************************/ interface IGenericNumericTypeOptions { defaultNumber?: number; precision: number; } interface INumberTypeOptions extends IGenericRequiredColumnTypeOptions, IGenericNumericTypeOptions { numberFormat: NumberFormat; } interface ICurrencyTypeOptions extends IGenericRequiredColumnTypeOptions, IGenericNumericTypeOptions { currencyFormat: string; } /********************************* DATETIME **********************************/ export declare enum DateFormat { LOCAL = "LOCAL", FRIENDLY = "FRIENDLY", SLASH = "SLASH", ISO = "ISO", FORMULA_PARSE_FORMAT = "FORMULA_PARSE_FORMAT" } export declare enum TimeFormat { TWELVE_HOUR = "TWELVE_HOUR", TWOFOUR_HOUR = "TWOFOUR_HOUR" } interface IGenericDateTimeTypeOptions { dateFormat: DateFormat; includeTime: boolean; timeFormat: TimeFormat; useGMT: boolean; useCurrentDateTime?: boolean; } interface IDateTimeTypeOptions extends IGenericRequiredColumnTypeOptions, IGenericDateTimeTypeOptions { } /******************************** FORMULAIC **********************************/ interface IFormulaicTypeOptions extends Partial, Partial>, Partial> { formula: string; errorCode?: string; resultType: FormulaResultType; } interface IFormulaOptions extends IGenericTypeOptions, IFormulaicTypeOptions { } interface IProgressOptions extends IGenericTypeOptions, IProgressTypeOptions { } interface IProgressTypeOptions { type: ColumnType.PROGRESS; formula: string; numberFormat?: NumberFormat; resultType: FormulaResultType.NUMBER; precision?: number; showBarProgress?: boolean; } interface IRollupTypeOptions extends IGenericTypeOptions, IFormulaicTypeOptions { recordReferenceColumnId?: string; } /********************************** SELECT ***********************************/ export declare enum SelectColor { blueDarkest = "blueDarkest", peacockDarkest = "peacockDarkest", tiffanyDarkest = "tiffanyDarkest", greenDarkest = "greenDarkest", yellowDarkest = "yellowDarkest", orangeDarkest = "orangeDarkest", redDarkest = "redDarkest", pinkDarkest = "pinkDarkest", purpleDarkest = "purpleDarkest", bluishVioletDarkest = "bluishVioletDarkest", greyDarkest = "greyDarkest", blackDarkest = "blackDarkest", blueLightest = "blueLightest", peacockLightest = "peacockLightest", tiffanyLightest = "tiffanyLightest", greenLightest = "greenLightest", yellowLightest = "yellowLightest", orangeLightest = "orangeLightest", redLightest = "redLightest", pinkLightest = "pinkLightest", purpleLightest = "purpleLightest", bluishVioletLightest = "bluishVioletLightest", greyLightest = "greyLightest", blackLightest = "blackLightest" } export interface ISelect { color: SelectColor; name: string; optionId: string; order?: number; } interface ISelectTypeOptions extends IGenericRequiredColumnTypeOptions { options: ISelect[]; } /********************************** STATUS ***********************************/ export interface IStatus { name: string; order: number; type: StatusType; statusId: string; color?: SelectColor; icon?: string; } interface IStatusTypeOptions extends IGenericRequiredColumnTypeOptions { statuses: IStatus[]; statusColumnId?: string; assigneeColumnId?: string; endTimeColumnId?: string; } /***************************** RECORD_REFERENCE ******************************/ interface IRecordReferenceTypeOptions extends IGenericRequiredColumnTypeOptions { foreignWorkspaceId?: string; foreignTableId: string; foreignViewId?: string; useMultiple?: boolean; symmetricColumnId?: string; } /********************************** LOOKUP ***********************************/ declare type NonLookupableColumnTypes = ColumnType.NOOP | ColumnType.LOOKUP | ColumnType.INTEGRATION_REFERENCE; declare type LookupableColumnTypes = Exclude; export interface ILookupTypeOptions extends IGenericTypeOptions { recordReferenceColumnId: string; foreignLookupColumnId: string; errorCode?: string; lookupColumnType: LookupableColumnTypes; lookupTypeOptions: ITypeOptions; } /********************************** RATING ***********************************/ interface IRatingOptions extends IGenericRequiredColumnTypeOptions { ratingMax: number; } /******************************** UNIQUE_ID **********************************/ interface IUniqueIdOptions extends IGenericTypeOptions { idFormat?: IDFormat; } /******************************* COLLABORATOR ********************************/ interface ICollaboratorTypeOptions extends IGenericRequiredColumnTypeOptions { useMultiple: boolean; useGroup: boolean; useNotify: boolean; groups: string[]; } /******************************* CREATED_AT ********************************/ interface ICreatedAtTypeOptions { type: ColumnType.CREATED_AT | ColumnType.LOOKUP; dateFormat: DateFormat; includeTime: boolean; timeFormat: TimeFormat; useGMT: boolean; } /******************************* SUBTABLE ********************************/ export interface ISubTableTypeOptions extends IGenericRequiredColumnTypeOptions { type: ColumnType.SUBTABLE; symmetricColumnId?: string; foreignWorkspaceId?: string; foreignTableId: string; foreignViewId?: string; subTableBatchAddForeignColumnId?: string | null; isSubTable?: boolean; } export {};