UNPKG

@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) 866 B
const e="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLowerCase();class t{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 r=t=>t.toLowerCase()===e,a=(e,t,a,c,o)=>{const n={...o};if(r(e))if(a)n.value=BigInt(c);else{const e=t.reduce(((e,t)=>e+t.amount),0n);n.value=e}return n};export{t as DefaultMulticallService,a as buildTradeOverrides,r as isETHAddress};