<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def main(wallet_name: str) -> None: """ Main line for revocation registry builder operating in external process on behalf of issuer agent. :param wallet_name: wallet name - must match that of issuer with existing wallet """


    logging.basicConfig(level=logging.WARN, format='%(levelname)-8s | %(name)-12s | %(message)s')
    logging.getLogger('indy').setLevel(logging.ERROR)

    path_start = join(RevRegBuilder.dir_tails_sentinel(wallet_name), '.start')

    with open(path_start, 'r') as fh_start:
        start_data = json.loads(fh_start.read())
    remove(path_start)

    logging.getLogger(__name__).setLevel(start_data['logging']['level'])
    for path_log in start_data['logging']['paths']:
        logging.getLogger(__name__).addHandler(logging.FileHandler(path_log))

    wallet = WalletManager().get(
        {
            'id': wallet_name,
            'storage_type': start_data['wallet']['storage_type'],
            **start_data['wallet']['config'],
        },
        access=start_data['wallet']['access_creds'].get('key', None))
    async with wallet, RevRegBuilder(wallet, rrbx=True) as rrban:
        await rrban.serve()