type SharedColumnFields = { key: string; label: string; required: boolean; }; type NumberMeta = { min_value?: number; max_value?: number; disallow_decimals?: boolean; }; type DateRangeMeta = { min_value?: string; max_value?: string; }; type TextColumn = { type: 'text'; meta?: { max_length?: number; min_length?: number; alphanumeric_only?: boolean; fix_multiple_consecutive_spaces?: boolean; trim_leading_trailing_spaces?: boolean; letter_casing?: 'default' | 'uppercase' | 'lowercase'; disallowed_characters?: string; disallow_tabs?: boolean; disallow_linebreaks?: boolean; }; } & SharedColumnFields; type NameColumn = { type: 'name'; meta?: { max_length?: number; }; } & SharedColumnFields; type EmailColumn = { type: 'email'; } & SharedColumnFields; type URLColumn = { type: 'url'; } & SharedColumnFields; type InternationalPhoneNumberColumn = { type: 'phone'; } & SharedColumnFields; type USPhoneNumberColumn = { type: 'us_phone'; } & SharedColumnFields; type USPostcodeColumn = { type: 'email'; } & SharedColumnFields; type PicklistColumn = { type: 'picklist'; meta: { options: { label: string; value: string; }[]; }; } & SharedColumnFields; type NumberColumn = { type: 'number'; meta?: NumberMeta; } & SharedColumnFields; type PercentageColumn = { type: 'percentage'; meta?: NumberMeta; } & SharedColumnFields; type BooleanColumn = { type: 'boolean'; } & SharedColumnFields; type DateColumn = { type: 'date'; meta?: DateRangeMeta; } & SharedColumnFields; type DatetimeColumn = { type: 'datetime'; meta?: DateRangeMeta; } & SharedColumnFields; export type TemplateColumn = TextColumn | NameColumn | EmailColumn | URLColumn | InternationalPhoneNumberColumn | USPhoneNumberColumn | USPostcodeColumn | PicklistColumn | NumberColumn | PercentageColumn | BooleanColumn | DateColumn | DatetimeColumn; export {};