I am trying to read a balance_of function of fa2 contract and updating my storage with the balance. but I am getting an issue
Error: Type Error sp.TList(sp.TPair(sp.TPair(sp.TAddress, sp.TNat), sp.TNat)) is not sp.TNat incompatible parameter type
Here is the code
# Store Value - Example for illustrative purposes only.
import smartpy as sp
class ContractA(sp.Contract):
def __init__(self, value):
self.init(updated_balance = value)
@sp.entry_point
def getBalance(self, contract_address):
# sp.set_type(contract_address, sp.TContract)
fa2_contract = sp.contract(
sp.TRecord(
callback=sp.TContract(sp.TNat),
requests=sp.TList(
sp.TRecord(
owner=sp.TAddress,
token_id=sp.TNat,
).layout(("owner", "token_id"))
),
).layout(("callback", "requests"))
, contract_address, entry_point="balance_of").open_some()
x = sp.transfer(sp.record(callback=sp.self_entry_point("test_balance"),
requests=[sp.record(owner=sp.address("tz1dhsUB43VJ58FndJrCvS6FpGb1pHi5hijN"),
token_id=1)]),
sp.tez(0),
fa2_contract)
@sp.entry_point
def test_balance(self, balance):
sp.set_type(balance, sp.TList(sp.TPair(sp.TPair(sp.TAddress, sp.TNat), sp.TNat)))
with sp.for_("x", balance) as x:
y, token_balance = sp.match_pair(x)
# self.data.updated_balance = token_balance
if "templates" not in __name__:
@sp.add_test(name = "StoreValue")
def test():
c1 = ContractA(sp.nat(12))
scenario = sp.test_scenario()
scenario.h1("Store Value")
scenario += c1
# c1.set_balance(balance = 15)
sp.add_compilation_target("storeValue", ContractA(12))