Generate wallet master key.
    Returned key is compatible with "RAW" key derivation method.
    It allows to avoid expensive key derivation for use cases when wallet keys can be stored in a secure enclave.

    :param config: (optional) key configuration json.
     {
        "seed": string, (optional) Seed that allows deterministic key creation (if not set random one will be created).
                                   Can be UTF-8, base64 or hex string.
     }
    :return: Error code

async def generate_wallet_key(config: Optional[str]) -> str:
    """
    Generate wallet master key.
    Returned key is compatible with "RAW" key derivation method.
    It allows to avoid expensive key derivation for use cases when wallet keys can be stored in a secure enclave.

    :param config: (optional) key configuration json.
     {
        "seed": string, (optional) Seed that allows deterministic key creation (if not set random one will be created).
                                   Can be UTF-8, base64 or hex string.
     }
    :return: Error code
    """

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

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

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

    key = await do_call('indy_generate_wallet_key',
                        c_config,
                        generate_wallet_key.cb)

    res = key.decode()

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