import { SharedContracts } from './shared-contracts';

export namespace ElementContracts {
    export interface IContentTypeElementMultipleChoiceElementOptionsContract {
        name: string;
        id: string;
        codename: string;
    }

    export type ElementValueContract = string | number | SharedContracts.IIdReferenceContract[];

    export type IContentTypeElementModeTypeContract = 'single' | 'multiple';

    export interface IContentTypeElementContract {
        name: string;
        type: string;
        id?: string;
        external_id?: string;
        codename?: string;
        content_group?: SharedContracts.IReferenceObjectContract;
    }

    export interface IContentItemElementContract {
        element: SharedContracts.IIdReferenceContract;
        value: ElementValueContract;
        components?: IContentItemElementComponent[];
        searchable_value?: string | null;
        display_timezone?: string | null;
        mode?: 'autogenerated' | 'custom';
    }

    export interface IContentItemElementComponent {
        id: string;
        type: SharedContracts.IIdReferenceContract;
        elements: IContentItemElementContract[];
    }
}
