<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 fetch_wallet_search_next_records(wallet_handle: int, wallet_search_handle: int, count: int) -> str: """ Fetch next records for wallet search. :param wallet_handle: wallet handler (created by open_wallet). :param wallet_search_handle: wallet wallet handle (created by open_wallet_search) :param count: Count of records to fetch :return: wallet records json: { totalCount: <str>, // present only if retrieveTotalCount set to true records: [{ // present only if retrieveRecords set to true id: "Some id", type: "Some type", // present only if retrieveType set to true value: "Some value", // present only if retrieveValue set to true tags: <tags json>, // present only if retrieveTags set to true }], } """


    logger = logging.getLogger(__name__)
    logger.debug("fetch_wallet_search_next_records: >>> wallet_handle: %r, wallet_search_handle: %r, count: %r",
                 wallet_handle,
                 wallet_search_handle,
                 count)

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

    c_wallet_handle = c_int32(wallet_handle)
    c_wallet_search_handle = c_int32(wallet_search_handle)
    c_count = c_uint(count)

    records_json = await do_call('indy_fetch_wallet_search_next_records',
                                 c_wallet_handle,
                                 c_wallet_search_handle,
                                 c_count,
                                 fetch_wallet_search_next_records.cb)
    res = records_json.decode()

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