services:
    oro_workflow.attribute_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\AttributeAssembler'
        arguments:
            - '@oro_action.attribute_guesser'
            - '@translator'

    Oro\Bundle\WorkflowBundle\Model\AttributeAssembler:
        alias: 'oro_workflow.attribute_assembler'

    oro_workflow.variable_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\VariableAssembler'
        public: false
        arguments:
            - '@oro_workflow.serializer.variable.normalizer'
            - '@oro_workflow.variable_guesser'
            - '@translator'

    oro_workflow.step_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\StepAssembler'

    Oro\Bundle\WorkflowBundle\Model\StepAssembler:
        alias: 'oro_workflow.step_assembler'

    oro_workflow.transition_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\TransitionAssembler'
        arguments:
            - '@oro_workflow.form_options_assembler'
            - '@oro_action.expression.factory'
            - '@oro_action.action_factory'
            - '@oro_workflow.form_options_configuration_assembler'
            - '@oro_workflow.resolver.transition_options_resolver'

    Oro\Bundle\WorkflowBundle\Model\TransitionAssembler:
        alias: 'oro_workflow.transition_assembler'

    oro_workflow.workflow_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\WorkflowAssembler'
        arguments:
            - '@Psr\Container\ContainerInterface'
        tags:
            - { name: container.service_subscriber }

    oro_workflow.form_options_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\FormOptionsAssembler'
        arguments:
            - '@oro_action.action_factory'
        calls:
            - [addConfigurationPass,  ['@oro_action.configuration_pass.replace_property_path']]

    oro_workflow.assembler.transition_trigger.cron:
        class: 'Oro\Bundle\WorkflowBundle\Model\TransitionTrigger\TransitionCronTriggerAssembler'
        public: false
        arguments:
            - '@oro_workflow.transition_trigger.trigger_cron_verifier'

    oro_workflow.assembler.transition_trigger.event:
        class: 'Oro\Bundle\WorkflowBundle\Model\TransitionTrigger\TransitionEventTriggerAssembler'
        public: false
        arguments:
            - '@oro_workflow.transition_trigger.trigger_event_verifier'

    oro_workflow.transition_trigger_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\WorkflowTransitionTriggersAssembler'
        calls:
            - [registerAssembler, ['@oro_workflow.assembler.transition_trigger.event']]
            - [registerAssembler, ['@oro_workflow.assembler.transition_trigger.cron']]

    oro_workflow.restriction_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\RestrictionAssembler'

    Oro\Bundle\WorkflowBundle\Model\RestrictionAssembler:
        alias: 'oro_workflow.restriction_assembler'

    oro_workflow.form_options_configuration_assembler:
        class: 'Oro\Bundle\WorkflowBundle\Model\FormOptionsConfigurationAssembler'
        arguments:
            - '@form.registry'
            - '@oro_form.registry.form_handler'
            - '@oro_form.registry.form_template_data_provider'
