/**
  * {@inheritdoc}
  */
 protected function populateConfig(ArrayObject $config)
 {
     $config->defaults(['payum.factory_name' => 'sofortuberweisung', 'payum.factory_title' => 'Sofortuberweisung payment gateway', 'payum.action.capture' => new CaptureAction(), 'payum.action.status' => new StatusAction(), 'payum.action.sync' => new AuthorizeAction(), 'payum.action.authorize' => new SyncAction(), 'payum.action.convert' => new ConvertAction(), 'payum.action.api.request_sofort_uberweisung' => new RequestSofortUberweisungAction(), 'payum.action.api.get_transaction_data' => new GetTransactionDataAction(), 'payum.action.api.fill_order_details' => new ConvertAction(), 'payum.extension.endless_cycle_detector' => new EndlessCycleDetectorExtension()]);
     if (false == $config['payum.api']) {
         $config['payum.default_options'] = ['configkey' => '', 'timeout' => 1800];
         $config->defaults($config['payum.default_options']);
         $config['payum.required_options'] = ['configkey'];
         $config['payum.api'] = function (ArrayObject $config) {
             $config->validateNotEmpty($config['payum.required_options']);
             return new Api($config->getArrayCopy());
         };
     }
 }