@bancor/carbon-sdk
Version:
The SDK is a READ-ONLY tool, intended to facilitate working with Carbon contracts. It's a convenient wrapper around our matching algorithm, allowing programs and users get a ready to use transaction data that will allow them to manage strategies and fulfi
2 lines (1 loc) • 943 B
JavaScript
import"../../utils/numerics/index.js";import{BigNumber as e}from"@ethersproject/bignumber";const t="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLowerCase();class r{multicallContract;constructor(e){this.multicallContract=e}async execute(e,t){try{const r=e.map((e=>({target:e.contractAddress.toLocaleLowerCase(),callData:e.interface.encodeFunctionData(e.methodName,e.methodParameters)})));return(await this.multicallContract.tryAggregate(!1,r,{blockTag:t})).map(((t,r)=>{if(!t.success)return[];const a=e[r].interface.decodeFunctionResult(e[r].methodName,t.returnData);return Array.isArray(a)?a:[a]}))}catch(e){const t=e instanceof Error?e.message:"Unknown error";throw new Error(`Multicall execution failed: ${t}`)}}}const a=e=>e.toLowerCase()===t,o=(t,r,o,c,n)=>{const s={...n};return a(t)&&(s.value=o?e.from(c):r.reduce(((e,t)=>e.add(t.amount)),e.from(0))),s};export{r as DefaultMulticallService,o as buildTradeOverrides,a as isETHAddress};