code: async def reset(self, von_wallet: Wallet, seed: str = None) -> Wallet:
          
  
          LOGGER.debug('WalletManager.reset >>> von_wallet %s', von_wallet)
  
          if not von_wallet.handle:
              LOGGER.debug('WalletManager.reset <!< Wallet %s is closed', von_wallet.name)
              raise WalletState('Wallet {} is closed'.format(von_wallet.name))
  
          w_config = von_wallet.config  # wallet under reset, no need to make copy
          w_config['did'] = von_wallet.did
          w_config['seed'] = seed
          w_config['auto_create'] = von_wallet.auto_create  # in case both auto_remove+auto_create set (create every open)
          w_config['auto_remove'] = von_wallet.auto_remove
  
          label = await von_wallet.get_link_secret_label()
          if label:
              w_config['link_secret_label'] = label
  
          await von_wallet.close()
          if not von_wallet.auto_remove:
              await self.remove(von_wallet)
  
          rv = await self.create(w_config, von_wallet.access)
          await rv.open()
  
          LOGGER.debug('WalletManager.reset <<< %s', rv)
          return rv
docs: Close and delete (open) VON anchor wallet and then create, open, and return
          replacement on current link secret.
  
          Note that this operation effectively destroys private keys for keyed data
          structures such as credential offers or credential definitions.
  
          Raise WalletState if the wallet is closed.
  
          :param von_wallet: open wallet
          :param seed: seed to use for new wallet (default random)
          :return: replacement wallet