import { SharedContracts, ContentTypeContracts } from '../../contracts';
import { ContentTypeElements } from '../elements/content-type-element.models';
import { SharedModels } from '../shared/shared-models';
export declare namespace ContentTypeModels {
    type ModifyContentTypeOperation = 'addInto' | 'remove' | 'replace' | 'move';
    interface IModifyContentTypeData {
        op: ModifyContentTypeOperation;
        path: string;
        value?: any;
        before?: SharedModels.IReferenceObject;
        after?: SharedModels.IReferenceObject;
    }
    class ContentTypeGroup {
        name: string;
        codename?: string;
        externalId?: string;
        id?: string;
        constructor(data: {
            name: string;
            codename?: string;
            externalId?: string;
            id?: string;
        });
    }
    class ContentType implements SharedModels.IBaseModel<ContentTypeContracts.IContentTypeContract> {
        id: string;
        name: string;
        codename: string;
        lastModified: Date;
        elements: ContentTypeElements.ContentTypeElementModel[];
        contentGroups?: ContentTypeGroup[];
        externalId?: string;
        _raw: ContentTypeContracts.IContentTypeContract;
        constructor(data: {
            id: string;
            name: string;
            codename: string;
            lastModified: Date;
            elements: ContentTypeElements.ContentTypeElementModel[];
            externalId?: string;
            contentGroups?: ContentTypeGroup[];
            _raw: ContentTypeContracts.IContentTypeContract;
        });
    }
    interface IAddContentTypeContentGroup {
        name: string;
        external_id?: string;
        codename?: string;
    }
    interface IAddContentTypeData {
        name: string;
        elements: ContentTypeElements.Element[];
        external_id?: string;
        codename?: string;
        content_groups?: IAddContentTypeContentGroup[];
    }
    interface IAddContentTypeCustomElementData {
        sourceUrl: string;
        json_parameters?: string;
    }
    interface IAddContentTypeElementDependsOnData {
        element?: SharedContracts.IReferenceObjectContract;
        snippet?: SharedContracts.IReferenceObjectContract;
    }
    interface IAddContentTypeElementMultipleChoiceElementOptionsData {
        name: string;
    }
}
