import { SdOperator } from '@sd-angular/core/utilities/models';
import { SdFormGenericComponent, SdFormGenericGroup } from './form-generic-component.model';
export interface SdFormGenericExpression {
    key: string;
    type: 'combinator';
    combinator: '&&' | '||';
    conditions: (SdFormGenericExpression | SdFormGenericExpressionCondition)[];
}
export interface SdFormGenericExpressionCondition {
    key: string;
    type: 'condition';
    field?: string;
    operator: SdOperator;
    value: any;
    dayInfo: DayInfo;
}
export type Operator = 'EQUAL' | 'NOT_EQUAL' | 'GREATER_THAN' | 'LESS_THAN' | 'GREATER_OR_EQUAL' | 'LESS_OR_EQUAL' | 'NULL' | 'NOT_NULL';
export declare const Operators: {
    value: Operator;
    symbol?: string;
    display: string;
}[];
export type Attribute = AttributeBase | AttributeBoolean | AttributeDate | AttributeValues;
interface AttributeBase {
    value: string;
    display: string;
    type: 'string' | 'number';
}
interface AttributeBoolean {
    value: string;
    display: string;
    type: 'boolean';
    displayOnTrue: string;
    displayOnFalse: string;
}
interface AttributeDate {
    value: string;
    display: string;
    type: 'datetime';
}
export interface DayInfo {
    type?: 'RELATED' | 'NOW' | 'DATETIME' | 'ATTRIBUTE';
    related?: 'LASTDAY' | 'NEXTDAY' | 'LASTWEEK' | 'NEXTWEEK' | 'LASTMONTH' | 'NEXTMONTH';
    relatedValue?: number;
}
export declare const DayInfoTypes: {
    value: string;
    display: string;
}[];
export declare const DayInfoPreviouses: {
    value: string;
    display: string;
    format: (n: number) => string;
}[];
export declare const GetDatetimeValue: (value: string) => string | undefined;
interface AttributeValues {
    value: string;
    display: string;
    type: 'values';
    values: {
        value: string;
        display: string;
    }[];
}
export declare const AttributeOperators: Record<Attribute['type'], {
    value: Operator;
    symbol?: string;
    display: string;
}[]>;
export declare const GetAttributes: (components: (SdFormGenericComponent | SdFormGenericGroup)[]) => Attribute[];
export declare const TemplateToCondition: (template: string | undefined | null, entity: Record<string, any>) => string | undefined;
export declare const ExpressionToJavascriptExpression: (condition: SdFormGenericExpression | SdFormGenericExpressionCondition) => string | undefined;
export {};
