async def withdraw(self, code, amount, address, tag=None, params={}):
    self.check_address(address)
    (await self.load_markets())
    currency = self.currency(code)
    wallet = address
    if (tag is not None):
        wallet += ('::' + tag)
    request = {'amount': self.decimal_to_precision(amount, TRUNCATE, currency['precision'], DECIMAL_PLACES), 'currency': currency['id'], 'wallet': wallet}
    response = (await self.privatePostPaymentOutCoin(self.extend(request, params)))
    id = self.safe_integer(response, 'id')
    if (id is None):
        raise InsufficientFunds(((self.id + ' insufficient funds to cover requested withdrawal amount post fees ') + self.json(response)))
    return {'info': response, 'id': id}
async def withdraw(self, code, amount, address, tag=None, params={}):
    self.check_address(address)
    (await self.load_markets())
    currency = self.currency(code)
    wallet = address
    if (tag is not None):
        wallet += ('::' + tag)
    request = {'amount': self.decimal_to_precision(amount, TRUNCATE, currency['precision'], DECIMAL_PLACES), 'currency': currency['id'], 'wallet': wallet}
    response = (await self.privatePostPaymentOutCoin(self.extend(request, params)))
    id = self.safe_integer(response, 'id')
    if (id is None):
        raise InsufficientFunds(((self.id + ' insufficient funds to cover requested withdrawal amount post fees ') + self.json(response)))
    return {'info': response, 'id': id}