text: import uuid
  from pprint import pprint
  
  from ... import ChargeStatus, TransactionKind
  from ...interface import GatewayConfig, GatewayResponse, PaymentData, PaymentMethodInfo
  
  
  def dummy_success():
      return True
  
  
  def get_client_token(**_):
      return str(uuid.uuid4())
  
  
  def authorize(
      payment_information: PaymentData, config: GatewayConfig
  ) -> GatewayResponse:
      success = dummy_success()
      error = None
      if not success:
          error = "Unable to authorize transaction"
      return GatewayResponse(
          is_success=success,
          action_required=False,
          kind=TransactionKind.AUTH,
          amount=payment_information.amount,
          currency=payment_information.currency,
          transaction_id=payment_information.token or "",
          error=error,
          payment_method_info=PaymentMethodInfo(brand="RAKA", type="card"),
      )
  
  
  def void(payment_information: PaymentData, config: GatewayConfig) -> GatewayResponse:
      error = None
      success = dummy_success()
      if not success:
          error = "Unable to void the transaction."
      return GatewayResponse(
          is_success=success,
          action_required=False,
          kind=TransactionKind.VOID,
          amount=payment_information.amount,
          currency=payment_information.currency,
          transaction_id=payment_information.token or "",
          error=error,
          payment_method_info=PaymentMethodInfo(brand="RAKA", type="card"),
      )
  
  
  def capture(payment_information: PaymentData, config: GatewayConfig) -> GatewayResponse:
      """Perform capture transaction."""
  
      pprint(globals())
      pprint(locals())
  
      error = None
      success = dummy_success()
      if not success:
          error = "Unable to process capture"
      return GatewayResponse(
          is_success=success,
          action_required=False,
          kind=TransactionKind.CAPTURE,
          amount=payment_information.amount,
          currency=payment_information.currency,
          transaction_id=payment_information.token or "",
          error=error,
          payment_method_info=PaymentMethodInfo(
              last_4="1234",
              exp_year=2222,
              exp_month=12,
              brand="RUKICA",
              name="Holder name",
              type="card",
          ),
      )
  
  
  def confirm(payment_information: PaymentData, config: GatewayConfig) -> GatewayResponse:
      """Perform confirm transaction."""
      error = None
      success = dummy_success()
      if not success:
          error = "Unable to process capture"
  
      return GatewayResponse(
          is_success=success,
          action_required=False,
          kind=TransactionKind.CAPTURE,
          amount=payment_information.amount,
          currency=payment_information.currency,
          transaction_id=payment_information.token or "",
          error=error,
          payment_method_info=PaymentMethodInfo(
              last_4="1234",
              exp_year=2222,
              exp_month=12,
              brand="RUKICA",
              name="Holder name",
              type="card",
          ),
      )
  
  
  def refund(payment_information: PaymentData, config: GatewayConfig) -> GatewayResponse:
      error = None
      success = dummy_success()
      if not success:
          error = "Unable to process refund"
      return GatewayResponse(
          is_success=success,
          action_required=False,
          kind=TransactionKind.REFUND,
          amount=payment_information.amount,
          currency=payment_information.currency,
          transaction_id=payment_information.token or "",
          error=error,
          payment_method_info=PaymentMethodInfo(brand="RAKA", type="card"),
      )
  
  
  def process_payment(
      payment_information: PaymentData, config: GatewayConfig
  ) -> GatewayResponse:
      """Process the payment."""
      token = payment_information.token
  
      # Process payment normally if payment token is valid
      if token not in dict(ChargeStatus.CHOICES):
          return authorize(payment_information, config)
  
      # Process payment by charge status which is selected in the payment form
      # Note that is for testing by dummy gateway only
      charge_status = token
      authorize_response = authorize(payment_information, config)
      if charge_status == ChargeStatus.NOT_CHARGED:
          return authorize_response
  
      if not config.auto_capture:
          return authorize_response
  
      capture_response = capture(payment_information, config)
      if charge_status == ChargeStatus.FULLY_REFUNDED:
          return refund(payment_information, config)
      return capture_response
  