import { ElementContracts } from '../../contracts';
import { SharedModels } from '../shared/shared-models';
export declare namespace ElementModels {
    type ElementMode = 'single' | 'multiple';
    type ElementType = 'text' | 'rich_text' | 'number' | 'multiple_choice' | 'date_time' | 'asset' | 'modular_content' | 'taxonomy' | 'url_slug' | 'guidelines' | 'snippet' | 'custom' | 'subpages';
    class ContentItemElement implements SharedModels.IBaseModel<ElementContracts.IContentItemElementContract> {
        element: SharedModels.ReferenceObject;
        value?: string | number | SharedModels.ReferenceObject[];
        searchableValue?: string | null;
        display_timezone?: string | null;
        components: ContentItemElementComponent[];
        mode?: 'autogenerated' | 'custom';
        _raw: ElementContracts.IContentItemElementContract;
        constructor(data: {
            element: SharedModels.ReferenceObject;
            value?: string | number | SharedModels.ReferenceObject[];
            components?: ContentItemElementComponent[];
            searchableValue?: string | null;
            display_timezone?: string | null;
            mode?: 'autogenerated' | 'custom';
            _raw: ElementContracts.IContentItemElementContract;
        });
    }
    class ContentItemElementComponent implements SharedModels.IBaseModel<ElementContracts.IContentItemElementComponent> {
        id: string;
        type: SharedModels.ReferenceObject;
        elements: ContentItemElement[];
        _raw: ElementContracts.IContentItemElementComponent;
        constructor(data: {
            id: string;
            type: SharedModels.ReferenceObject;
            elements: ContentItemElement[];
            _raw: ElementContracts.IContentItemElementComponent;
        });
    }
    interface IElementData {
        id: string;
        name?: string;
        codename: string;
        type: ElementType;
        guidelines: string;
    }
    interface IMultipleChoiceOptionData {
        name: string;
    }
    interface IMultipleChoiceElementData extends IElementData {
        options: IMultipleChoiceOptionData[];
        mode: ElementMode;
    }
}
