<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 create_pool_ledger_config(config_name: str, config: Optional[str]) -> None: """ Creates a new local pool ledger configuration that can be used later to connect pool nodes. :param config_name: Name of the pool ledger configuration. :param config: (optional) Pool configuration json. if NULL, then default config will be used. Example: { "genesis_txn": string (optional), A path to genesis transaction file. If NULL, then a default one will be used. If file doesn't exists default one will be created. } :return: Error code """


    logger = logging.getLogger(__name__)
    logger.debug("create_pool_ledger_config: >>> config_name: %r, config: %r",
                 config_name,
                 config)

    if not hasattr(create_pool_ledger_config, "cb"):
        logger.debug("create_pool_ledger_config: Creating callback")
        create_pool_ledger_config.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32))

    c_config_name = c_char_p(config_name.encode('utf-8'))
    c_config = c_char_p(config.encode('utf-8')) if config is not None else None

    res = await do_call('indy_create_pool_ledger_config',
                        c_config_name,
                        c_config,
                        create_pool_ledger_config.cb)

    logger.debug("create_pool_ledger_config: <<< res: %r", res)
    return res