import { SharedModels } from '../shared/shared-models';
import { SharedContracts, WorkflowContracts } from '../../contracts';
import { LanguageVariantModels } from '../language-variants/language-variant.models';
export declare namespace WorkflowModels {
    interface LanguageVariantWorkflow {
        workflowOdentifier: SharedContracts.ICodenameIdReferenceContract;
        stepIdentifier: SharedContracts.ICodenameIdReferenceContract;
    }
    class WorkflowStep implements SharedModels.IBaseModel<WorkflowContracts.IWorkflowStepContract> {
        id: string;
        name: string;
        codename: string;
        transitionsTo: string[];
        _raw: WorkflowContracts.IWorkflowStepContract;
        constructor(data: {
            id: string;
            name: string;
            codename: string;
            transitionsTo: string[];
            _raw: WorkflowContracts.IWorkflowStepContract;
        });
    }
    class Workflow implements SharedModels.IBaseModel<WorkflowContracts.IWorkflowContract> {
        id: string;
        name: string;
        codename: string;
        scopes: WorkflowContracts.IWorkflowScopeContract[];
        steps: WorkflowContracts.IWorkflowStepNewContract[];
        publishedStep: WorkflowContracts.IWorkflowPublishedStepContract;
        scheduledStep: WorkflowContracts.IWorkflowScheduledStepContract;
        archivedStep: WorkflowContracts.IWorkflowArchivedStepContract;
        _raw: WorkflowContracts.IWorkflowContract;
        constructor(data: {
            id: string;
            name: string;
            codename: string;
            scopes: WorkflowContracts.IWorkflowScopeContract[];
            steps: WorkflowContracts.IWorkflowStepNewContract[];
            publishedStep: WorkflowContracts.IWorkflowPublishedStepContract;
            scheduledStep: WorkflowContracts.IWorkflowScheduledStepContract;
            archivedStep: WorkflowContracts.IWorkflowArchivedStepContract;
            _raw: WorkflowContracts.IWorkflowContract;
        });
    }
    interface IPublishLanguageVariantData {
        /**
         * ISO-8601 formatted date/time. Example: 2019-01-31T11:00:00+01:00.
         * If you do not provide this property, the specified language variant is published immediately.
         */
        scheduled_to?: string;
        display_timezone?: string;
    }
    interface IUnpublishLanguageVarianthData {
        /**
         * ISO-8601 formatted date/time. Example: 2019-01-31T11:00:00+01:00.
         * If you do not provide this property, the specified language variant is published immediately.
         */
        scheduled_to?: string;
        display_timezone?: string;
    }
    interface IChangeWorkflowOfLanguageVariantData {
        workflow_identifier: {
            id?: string;
            codename?: string;
        };
        step_identifier: SharedContracts.IReferenceObjectContract;
        due_date?: LanguageVariantModels.ILanguageVariantDueDate;
        contributors?: SharedContracts.UserReferenceDataContract[];
        note?: string;
    }
    interface IAddWorkflowData {
        name: string;
        codename?: string;
        scopes: {
            content_types: SharedContracts.IReferenceObjectContract[];
            collections?: SharedContracts.IReferenceObjectContract[];
        }[];
        steps: {
            name: string;
            codename: string;
            color: WorkflowContracts.WorkflowColor;
            transitions_to: {
                step: {
                    codename?: string;
                };
            }[];
            role_ids: string[];
        }[];
        published_step: {
            id?: string;
            name?: string;
            codename?: string;
            create_new_version_role_ids?: string[];
            unpublish_role_ids?: string[];
        };
        archived_step: {
            id?: string;
            name?: string;
            codename?: string;
            role_ids?: string[];
        };
    }
    interface IUpdateWorkflowData {
        name: string;
        codename?: string;
        scopes: {
            content_types: SharedContracts.IReferenceObjectContract[];
            collections?: SharedContracts.IReferenceObjectContract[];
        }[];
        steps: {
            id?: string;
            name: string;
            codename: string;
            color: WorkflowContracts.WorkflowColor;
            transitions_to: {
                step: {
                    id?: string;
                    codename?: string;
                };
            }[];
            role_ids: string[];
        }[];
        published_step: {
            id?: string;
            name?: string;
            codename?: string;
            create_new_version_role_ids?: string[];
            unpublish_role_ids?: string[];
        };
        archived_step: {
            id?: string;
            name?: string;
            codename?: string;
            role_ids?: string[];
        };
    }
}
