import { RollUpFuncType } from '../enums';
import { IField } from './field';
/**
 * Field property.
 */
export interface ISingleTextFieldFieldProperty {
    defaultValue?: string;
}
export interface INumberFieldProperty {
    defaultValue?: string;
    precision: number;
}
export interface ICurrencyFieldProperty {
    defaultValue?: string;
    precision: number;
    symbol: string;
}
export interface IPercentFieldProperty {
    defaultValue?: string;
    precision: number;
}
export interface ISelectOption {
    id: string;
    name: string;
    color: {
        name: string;
        value: string;
    };
}
export interface ISingleSelectFieldProperty {
    options?: ISelectOption[];
}
export declare type IMultiSelectFieldProperty = ISingleSelectFieldProperty;
export interface IMember {
    id: string;
    name: string;
    type: 'member' | 'team';
    avatar?: string;
}
export interface IMemberFieldProperty {
    options?: IMember[];
    isMulti?: boolean;
    shouldSendMsg?: boolean;
}
export interface IUser {
    id: string | 'Anonymous' | 'Bot';
    name: string;
    avatar: string;
}
export interface ICreateByFieldProperty {
    options?: IUser[];
}
export interface ILastModifiedByFieldProperty {
    options?: IUser[];
}
export interface ICheckboxFieldProperty {
    icon: string;
}
export interface IRatingFieldProperty {
    icon: string;
    max: number;
}
export interface IDateTimeFieldProperty {
    format: string;
    autoFill: boolean;
    includeTime: boolean;
}
export declare type ICreatedTimeFieldProperty = IDateTimeFieldProperty;
export declare type ILastModifiedTimeFieldProperty = IDateTimeFieldProperty;
export interface IMagicLinkFieldProperty {
    foreignDatasheetId: string;
    brotherFieldId: string;
    limitToViewId?: string;
    limitSingleRecord?: boolean;
}
export interface IFieldWithDatasheetId {
    datasheetId: string;
    field: IField;
}
export declare type ValueType = 'string' | 'boolean' | 'number' | 'datetime' | 'array';
export interface IDateTimeFormat {
    dateFormat: string;
    timeFormat: string;
    includeTime: boolean;
}
export interface INumberFormat {
    precision: number;
}
export declare type IPercentFormat = INumberFormat;
export interface ICurrencyFormat {
    precision: number;
    symbol?: string;
}
export declare type IFormat = IDateTimeFormat | INumberFormat | IPercentFormat | ICurrencyFormat;
export interface IDateTimeFormat {
    dateFormat: string;
    timeFormat: string;
    includeTime: boolean;
}
export interface INoneStringValueFormat {
    type: 'datetime' | 'number' | 'percent' | 'currency';
    format: IFormat;
}
export interface IMagicLookupFieldProperty {
    relatedLinkFieldId: string;
    targetFieldId: string;
    hasError?: boolean;
    entityField?: IFieldWithDatasheetId;
    rollupFunction?: RollUpFuncType;
    valueType: ValueType;
    format?: INoneStringValueFormat;
}
export interface IFormulaFieldProperty {
    expression: string;
    valueType: ValueType;
    hasError?: boolean;
    format?: INoneStringValueFormat;
}
export declare type IFieldProperty = ISingleTextFieldFieldProperty | INumberFieldProperty | ICurrencyFieldProperty | IPercentFieldProperty | ISingleSelectFieldProperty | IMultiSelectFieldProperty | IMemberFieldProperty | ICreateByFieldProperty | ILastModifiedByFieldProperty | ICheckboxFieldProperty | IRatingFieldProperty | IDateTimeFieldProperty | ICreatedTimeFieldProperty | ILastModifiedTimeFieldProperty | IMagicLinkFieldProperty | IMagicLookupFieldProperty | IFormulaFieldProperty;
