import type { DataField, Pages } from '../store/store';
export interface Options {
    label: string;
    value: string | null;
}
export interface ImageAttributeData {
    componentId: string;
    imageId: string;
    imageUrl: string;
}
export interface BaseComponentAttributes {
    mapping?: DataField | null;
}
export interface ImageComponentAttributes extends BaseComponentAttributes {
    imageUrl: string;
    imageId: number | string;
    label: string;
    css: {
        alignment: 'left' | 'center' | 'right';
        width: number;
    };
}
export interface ButtonComponentAttributes extends BaseComponentAttributes {
    label: string | null;
    action: {
        name: string | null;
        target: {
            id: number | null;
            page: string;
        };
    };
}
export interface CheckboxComponentAttributes extends BaseComponentAttributes {
    label: string;
    required: boolean;
    isChecked?: boolean | 'false' | 'mixed' | 'true';
}
export interface MultipleChoiceComponentAttributes extends BaseComponentAttributes {
    label: string;
    disabled: boolean;
    required: boolean;
    options: Array<Options>;
}
export interface InputComponentAttributes extends BaseComponentAttributes {
    label: string | null;
    placeholder: string | null;
    required: boolean;
    validation?: string | null;
    mapping?: DataField | null;
}
export interface SingleChoiceComponentAttributes extends BaseComponentAttributes {
    label: string | null;
    disabled: boolean;
    required: boolean;
    options: Array<Options>;
}
export interface TextComponentAttributes extends BaseComponentAttributes {
    text: string | null;
}
export interface RatingComponentAttributes extends BaseComponentAttributes {
    label: string | null;
    required: boolean;
    total?: number;
}
export interface SelectComponentAttributes extends BaseComponentAttributes {
    label: string | null;
    required: boolean;
    options: Array<Options>;
}
export interface TextareaComponentAttributes extends BaseComponentAttributes {
    label: string | null;
    placeholder: string | null;
    required: boolean;
    value: string | undefined;
}
export declare enum ComponentTypes {
    TEXT = "text",
    SINGLE_CHOICE = "checkbox",
    SHORT_ANSWER = "input",
    MULTIPLE_CHOICE = "radio",
    LONG_ANSWER = "textarea",
    DROPDOWN_LIST = "select",
    BUTTON = "button",
    IMAGE = "image",
    RATING = "rating"
}
export declare enum ComponentFieldName {
    TEXT = "Text",
    SINGLE_CHOICE = "Single choice",
    SHORT_ANSWER = "Short answer",
    MULTIPLE_CHOICE = "Multiple choice",
    LONG_ANSWER = "Long answer",
    DROPDOWN_LIST = "Dropdown list",
    BUTTON = "Button",
    IMAGE = "Image",
    RATING = "Rating"
}
export declare enum ComponentIcon {
    TEXT = "ico-draft",
    SINGLE_CHOICE = "ico-recording",
    SHORT_ANSWER = "ico-text-field",
    MULTIPLE_CHOICE = "ico-checkbox",
    LONG_ANSWER = "ico-textarea",
    DROPDOWN_LIST = "ico-select",
    BUTTON = "ico-submit-button",
    IMAGE = "ico-image-file",
    RATING = "ico-star-stroke"
}
export interface BaseComponent {
    id: string;
    component: ComponentTypes;
    icon?: ComponentIcon | undefined;
    field: ComponentFieldName;
    meta?: {
        pages: Array<Pages>;
        fields: {
            contact: Array<DataField>;
            activity: Array<DataField>;
        };
    };
}
export interface Component extends BaseComponent {
    attributes: BaseComponentAttributes | ButtonComponentAttributes | CheckboxComponentAttributes | SingleChoiceComponentAttributes | InputComponentAttributes | ImageComponentAttributes | MultipleChoiceComponentAttributes | TextComponentAttributes | RatingComponentAttributes | SelectComponentAttributes | TextareaComponentAttributes;
}
