def METHOD_NAME() -> Plugin:
    return Plugin(
        start=False,
        spec=Spec(
            module='tracardi.process_engine.action.v1.if_action',
            className='IfAction',
            inputs=["payload"],
            outputs=["true", "false"],
            init={
                "condition": "",
                "trigger_once": False,
                "pass_payload": True,
                "ttl": 0
            },
            form=Form(groups=[
                FormGroup(
                    name="Condition statement",
                    fields=[
                        FormField(
                            id="condition",
                            name="If condition statement",
                            description="Provide condition for IF statement. If the condition is met then the payload "
                                        "will be returned on TRUE port if not then FALSE port is triggered.",
                            component=FormComponent(type="textarea", props={"label": "condition"})
                        ),
                        FormField(
                            id="trigger_once",
                            name="Return value only once per condition change",
                            description="It will trigger the relevant port only once per condition change. Otherwise "
                                        "the flow will be stopped.",
                            component=FormComponent(type="bool", props={"label": "Trigger once per condition change"})
                        ),
                        FormField(
                            id="ttl",
                            name="Expire trigger again after",
                            description="If the value is set to 0, the event will only occur once and will not be "
                                        "triggered again unless the conditions change. However, if a value greater "
                                        "than 0 is set, the event will be triggered again after the specified "
                                        "number of seconds, regardless of whether the conditions have changed or not.",
                            component=FormComponent(type="text", props={"label": "Suppression time to live"})
                        ),
                        FormField(
                            id="pass_payload",
                            name="Return input payload instead of True/False",
                            description="It will return input payload on the output ports if enabled "
                                        "otherwise True/False.",
                            component=FormComponent(type="bool", props={"label": "Return input payload"})
                        )
                    ]
                ),
            ]),
            manual="if_action",
            version='0.7.4',
            license="MIT",
            author="Risto Kowaczewski"
        ),
        metadata=MetaData(
            name='If',
            desc='This a conditional action that conditionally runs a branch of workflow.',
            tags=['condition'],
            purpose=['collection', 'segmentation'],
            type="condNode",
            icon='if',
            group=['Flow control'],
            documentation=Documentation(
                inputs={
                    "payload": PortDoc(desc="This port takes payload object.")
                },
                outputs={
                    "true": PortDoc(desc="Returns payload if the defined condition is met."),
                    "false": PortDoc(desc="Returns payload if the defined condition is NOT met.")
                }
            )
        )
    )