Sends tokens to an address
        payment_handle is always 0
        :param payment_handle: Integer
        :param tokens: Integer
        :param address: String
        Example:
        payment_handle = 0
        amount = 1000
        address = await Wallet.create_payment_address('00000000000000000000000001234567')
        await Wallet.send_tokens(payment_handle, amount, address)
        :return:

async def send_tokens(payment_handle: int, tokens: int, address: str) -> str:
        """
        Sends tokens to an address
        payment_handle is always 0
        :param payment_handle: Integer
        :param tokens: Integer
        :param address: String
        Example:
        payment_handle = 0
        amount = 1000
        address = await Wallet.create_payment_address('00000000000000000000000001234567')
        await Wallet.send_tokens(payment_handle, amount, address)
        :return:
        """
        logger = logging.getLogger(__name__)

        if not hasattr(Wallet.send_tokens, "cb"):
            logger.debug("vcx_wallet_send_tokens: Creating callback")
            Wallet.send_tokens.cb = create_cb(CFUNCTYPE(None, c_uint32, c_uint32, c_char_p))

        c_payment_handle = c_uint32(payment_handle)
        c_tokens = c_char_p(str(tokens).encode('utf-8'))
        c_address = c_char_p(address.encode('utf-8'))

        result = await do_call('vcx_wallet_send_tokens',
                               c_payment_handle,
                               c_tokens,
                               c_address,
                               Wallet.send_tokens.cb)

        logger.debug("vcx_wallet_send_tokens completed")
        return result