import typing

from aws_lambda_tools.common.decorators import handle_session, aws_encode, json_encode
from aws_lambda_tools.common.response import Response
from conio_sdk_generated.openapi.v2.serde.models.full_signup import FullSignup

from conio_sdk.common.decorators import log_this, manage_errors
from conio_sdk.context import AWS_CONTEXT


@log_this
@handle_session(AWS_CONTEXT)
@aws_encode()
@json_encode(message_type=FullSignup)
@manage_errors
def signup(msg: FullSignup, event: typing.Dict, context=None) -> Response:
    from conio_sdk.ioc.vo.v2.full_signup_ioc import signup_vo_services
    from sdk_functions.functions import auth2resp, user_language
    authentication_data = signup_vo_services.signup(msg, user_language(context))
    return auth2resp(authentication_data)
