import { ElementModels } from '../elements/elements.models';
import { SharedModels } from '../shared/shared-models';
import { LanguageVariantContracts, SharedContracts } from '../../contracts';
export declare namespace LanguageVariantModels {
    type FilterLanguageVariantsCompletionStatus = 'unfinished' | 'ready' | 'not_translated' | 'all_done';
    type FilterLanguageVariantsPublishingState = 'published' | 'unpublished' | 'not_published_yet';
    type FilterLanguageVariantsOrderBy = 'last_modified' | 'name' | 'due_date';
    type FilterLanguageVariantsOrderDirection = 'asc' | 'desc';
    interface IFilterItemsWithVariantsData {
        filters?: {
            search_phrase?: string;
            language?: SharedContracts.IReferenceObjectContract;
            content_types?: SharedContracts.IReferenceObjectContract[];
            contributors?: SharedContracts.UserReferenceDataContract[];
            has_no_contributors?: boolean;
            completion_statuses?: FilterLanguageVariantsCompletionStatus[];
            workflow_steps?: SharedContracts.IRequestWorkflowStepsReferenceContract[];
            taxonomy_groups?: SharedContracts.ITaxonomyGroupReferenceContract[];
            spaces?: SharedContracts.IReferenceObjectContract[];
            collections?: SharedContracts.IReferenceObjectContract[];
            publishing_states?: FilterLanguageVariantsPublishingState[];
            component_types?: SharedContracts.IReferenceObjectContract[];
        };
        order?: {
            by?: FilterLanguageVariantsOrderBy;
            direction?: FilterLanguageVariantsOrderDirection;
        };
    }
    interface IVariantIdentifier {
        item: SharedContracts.IReferenceObjectContract;
        language: SharedContracts.IReferenceObjectContract;
    }
    interface IBulkGetItemsWithVariantsData {
        variants: IVariantIdentifier[];
    }
    interface ILanguageVariantElementInfo {
        id?: string;
        codename?: string;
        external_id?: string;
    }
    interface ILanguageVariantSchedule {
        publishTime: string | null;
        publishDisplayTimezone: string | null;
        unpublishTime: string | null;
        unpublishDisplayTimezone: string | null;
    }
    interface ILanguageVariantDueDate {
        value: string | null;
    }
    class ContentItemLanguageVariant implements SharedModels.IBaseModel<LanguageVariantContracts.ILanguageVariantModelContract> {
        item: SharedModels.ReferenceObject;
        elements: ElementModels.ContentItemElement[];
        language: SharedModels.ReferenceObject;
        lastModified: Date;
        workflow: {
            workflowIdentifier: SharedModels.ReferenceObject;
            stepIdentifier: SharedModels.ReferenceObject;
        };
        schedule: ILanguageVariantSchedule;
        dueDate: ILanguageVariantDueDate;
        note?: string | null;
        contributors: SharedContracts.UserReferenceContract[];
        _raw: LanguageVariantContracts.ILanguageVariantModelContract;
        constructor(data: {
            item: SharedModels.ReferenceObject;
            elements: ElementModels.ContentItemElement[];
            language: SharedModels.ReferenceObject;
            lastModified: Date;
            schedule: ILanguageVariantSchedule;
            dueDate: ILanguageVariantDueDate;
            note?: string | null;
            contributors: SharedContracts.UserReferenceContract[];
            workflow: {
                workflowIdentifier: SharedModels.ReferenceObject;
                stepIdentifier: SharedModels.ReferenceObject;
            };
            _raw: LanguageVariantContracts.ILanguageVariantModelContract;
        });
    }
    class ContentItemLanguageWithComponentsVariant {
        item: SharedModels.ReferenceObject;
        elements: ElementModels.ContentItemElement[];
        language: SharedModels.ReferenceObject;
        lastModified: Date;
        schedule: ILanguageVariantSchedule;
        dueDate: ILanguageVariantDueDate;
        workflow: {
            workflowIdentifier: SharedModels.ReferenceObject;
            stepIdentifier: SharedModels.ReferenceObject;
        };
        _raw: LanguageVariantContracts.ILanguageVariantModelsContract;
        constructor(data: {
            rawElements: any;
            item: SharedModels.ReferenceObject;
            elements: ElementModels.ContentItemElement[];
            language: SharedModels.ReferenceObject;
            lastModified: Date;
            schedule: ILanguageVariantSchedule;
            dueDate: ILanguageVariantDueDate;
            workflow: {
                workflowIdentifier: SharedModels.ReferenceObject;
                stepIdentifier: SharedModels.ReferenceObject;
            };
            _raw: LanguageVariantContracts.ILanguageVariantModelsContract;
        });
    }
}
