const tokenDecimals = 6
const minTokenThreshold = 1 * 10 ** tokenDecimals // $1
const tokenApprovalTopUp = 20 * 10 ** tokenDecimals // $20
const tokenAddress = "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
const nftContractAddress = "0x66519FCAee1Ed65bc9e0aCc25cCD900668D3eD49"
const paymasterAddress = "0x2FAEB0760D4230Ef2aC21496Bb4F0b47D634FD4c"
const mintTo = {
abi: abi,
functionName: "mintTo",
to: nftContractAddress,
args: [account.address, 1],
};
calls = [mintTo]
// 한도 확인
const allowance = await client.readContract({
abi: parseAbi(["function allowance(address owner, address spender) returns (uint256)"]),
address: tokenAddress,
functionName: "allowance",
args: [account.address, paymasterAddress],
})
if (allowance < minTokenThreshold) {
// 페이마스터가 결제를 수락하기 위해 토큰을 이동할 수 있도록 콜에 $20 승인 포함
calls.push({
abi: ["function approve(address,uint)"],
functionName: "approve",
to: nftContractAddress,
args: [paymasterAddress, tokenApprovalTopUp],
})
}