code: def allowance(self, b58_owner_address: str, b58_spender_address: str):
          
          func = InvokeFunction('allowance')
          Oep4.__b58_address_check(b58_owner_address)
          owner = Address.b58decode(b58_owner_address).to_bytes()
          Oep4.__b58_address_check(b58_spender_address)
          spender = Address.b58decode(b58_spender_address).to_bytes()
          func.set_params_value(owner, spender)
          result = self.__sdk.get_network().send_neo_vm_transaction_pre_exec(self.__hex_contract_address, None, func)
          try:
              allowance = ContractDataParser.to_int(result['Result'])
          except SDKException:
              allowance = 0
          return allowance
docs: This interface is used to call the Allowance method in ope4
          that query the amount of spender still allowed to withdraw from owner account.
  
          :param b58_owner_address: a base58 encode address that represent owner's account.
          :param b58_spender_address: a base58 encode address that represent spender's account.
          :return: the amount of oep4 token that owner allow spender to transfer from the owner account.