UNPKG

@lidofinance/lido-ethereum-sdk

Version:

<div style="display: flex;" align="center"> <h1 align="center">Lido Ethereum SDK</h1> </div>

31 lines 1.62 kB
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