@lidofinance/lido-ethereum-sdk
Version:
<div style="display: flex;" align="center"> <h1 align="center">Lido Ethereum SDK</h1> </div>
42 lines • 1.45 kB
JavaScript
import { encodeFunctionData } from 'viem';
// copy from view internals
const getFunctionParameters = (values) => {
const hasArgs = values.length > 0 && Array.isArray(values[0]);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const args = (hasArgs ? values[0] : []);
const options = ((hasArgs ? values[1] : values[0]) ?? {});
return { args, options };
};
export const getEncodableContract = (contract) => {
contract.prepare = new Proxy({}, {
get(_, functionName) {
return (...parameters) => {
const { args } = getFunctionParameters(parameters);
return {
address: contract.address,
abi: contract.abi,
functionName,
args,
};
};
},
});
contract.encode = new Proxy({}, {
get(_, functionName) {
return (...parameters) => {
const { args, options } = getFunctionParameters(parameters);
return {
to: contract.address,
data: encodeFunctionData({
abi: contract.abi,
functionName,
args,
}),
value: options.value,
};
};
},
});
return contract;
};
//# sourceMappingURL=get-encodable-contract.js.map