@lidofinance/lido-ethereum-sdk
Version:
<div style="display: flex;" align="center"> <h1 align="center">Lido Ethereum SDK</h1> </div>
31 lines • 1.62 kB
TypeScript
import { type Abi, type Address, type Hex } from 'viem';
type ContractType = {
address: Address;
abi: Abi;
read?: {
[functionName: string]: (...args: any[]) => Promise<any>;
};
simulate?: {
[functionName: string]: (...args: any[]) => Promise<any>;
};
};
export type EncodableContract<TContract extends ContractType, TSimulate extends TContract['simulate'] = TContract['simulate'] extends undefined ? never : TContract['simulate'], TRead extends TContract['read'] = TContract['read'] extends undefined ? never : TContract['read'], TMethods extends TSimulate & TRead = TSimulate & TRead, TFunctionName extends keyof TMethods = keyof TMethods> = TContract & {
prepare: {
[K in TFunctionName]: (...args: Parameters<TMethods[K] extends (...args: any[]) => any ? TMethods[K] : never>) => {
address: TContract['address'];
abi: TContract['abi'];
functionName: K;
args: Parameters<TMethods[K] extends (...args: any[]) => any ? TMethods[K] : never>[0] extends readonly unknown[] ? Parameters<TMethods[K] extends (...args: any[]) => any ? TMethods[K] : never>[0] : undefined;
};
};
encode: {
[K in TFunctionName]: (...args: Parameters<TMethods[K] extends (...args: any[]) => any ? TMethods[K] : never>) => {
to: TContract['address'];
data: Hex;
value?: bigint;
};
};
};
export declare const getEncodableContract: <TContract extends ContractType>(contract: TContract) => EncodableContract<TContract>;
export {};
//# sourceMappingURL=get-encodable-contract.d.ts.map