{"version":3,"sources":["../../src/api/erc20.ts"],"sourcesContent":["import { type Address, erc20Abi } from \"viem\";\nimport { getClient } from \"../lib/client\";\nimport type { ChainId } from \"./vault-config\";\n\ninterface GetErc20BalanceParams {\n  chainId: ChainId;\n  tokenAddress: Address;\n  userAddress: Address;\n}\n\nconst getErc20Balance = async ({\n  chainId,\n  tokenAddress,\n  userAddress,\n}: GetErc20BalanceParams): Promise<bigint> => {\n  const client = await getClient(chainId);\n\n  const balance = await client.readContract({\n    abi: erc20Abi,\n    address: tokenAddress,\n    functionName: \"balanceOf\",\n    args: [userAddress],\n  });\n\n  return balance;\n};\n\ninterface GetErc20DecimalsParams {\n  chainId: ChainId;\n  tokenAddress: Address;\n}\nconst getErc20Decimals = async ({\n  chainId,\n  tokenAddress,\n}: GetErc20DecimalsParams) => {\n  const client = await getClient(chainId);\n\n  const balance = await client.readContract({\n    abi: erc20Abi,\n    address: tokenAddress,\n    functionName: \"decimals\",\n  });\n\n  return balance;\n};\n\ninterface GetErc20AllowanceParams {\n  chainId: ChainId;\n  tokenAddress: Address;\n  userAddress: Address;\n  spenderAddress: Address;\n}\n\nconst getErc20Allowance = async ({\n  chainId,\n  tokenAddress,\n  userAddress,\n  spenderAddress,\n}: GetErc20AllowanceParams) => {\n  const client = await getClient(chainId);\n\n  const allowance = await client.readContract({\n    abi: erc20Abi,\n    address: tokenAddress,\n    functionName: \"allowance\",\n    args: [userAddress, spenderAddress],\n  });\n\n  return allowance;\n};\n\nconst getErc20AllowanceWithDecimals = async ({\n  chainId,\n  tokenAddress,\n  userAddress,\n  spenderAddress,\n}: GetErc20AllowanceParams) => {\n  const client = await getClient(chainId);\n\n  const allowance = await client.multicall({\n    contracts: [\n      {\n        abi: erc20Abi,\n        address: tokenAddress,\n        functionName: \"allowance\",\n        args: [userAddress, spenderAddress],\n      },\n      {\n        abi: erc20Abi,\n        address: tokenAddress,\n        functionName: \"decimals\",\n      },\n    ],\n  });\n  return allowance;\n};\n\nexport {\n  getErc20Allowance,\n  getErc20AllowanceWithDecimals,\n  getErc20Balance,\n  getErc20Decimals,\n};\n"],"mappings":"AAAA,SAAuB,gBAAgB;AACvC,SAAS,iBAAiB;AAS1B,MAAM,kBAAkB,OAAO;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,MAA8C;AAC5C,QAAM,SAAS,MAAM,UAAU,OAAO;AAEtC,QAAM,UAAU,MAAM,OAAO,aAAa;AAAA,IACxC,KAAK;AAAA,IACL,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM,CAAC,WAAW;AAAA,EACpB,CAAC;AAED,SAAO;AACT;AAMA,MAAM,mBAAmB,OAAO;AAAA,EAC9B;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,SAAS,MAAM,UAAU,OAAO;AAEtC,QAAM,UAAU,MAAM,OAAO,aAAa;AAAA,IACxC,KAAK;AAAA,IACL,SAAS;AAAA,IACT,cAAc;AAAA,EAChB,CAAC;AAED,SAAO;AACT;AASA,MAAM,oBAAoB,OAAO;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA+B;AAC7B,QAAM,SAAS,MAAM,UAAU,OAAO;AAEtC,QAAM,YAAY,MAAM,OAAO,aAAa;AAAA,IAC1C,KAAK;AAAA,IACL,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM,CAAC,aAAa,cAAc;AAAA,EACpC,CAAC;AAED,SAAO;AACT;AAEA,MAAM,gCAAgC,OAAO;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA+B;AAC7B,QAAM,SAAS,MAAM,UAAU,OAAO;AAEtC,QAAM,YAAY,MAAM,OAAO,UAAU;AAAA,IACvC,WAAW;AAAA,MACT;AAAA,QACE,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM,CAAC,aAAa,cAAc;AAAA,MACpC;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;","names":[]}