import { IAccount } from '@dequanto/models/TAccount'; import { TEth } from '@dequanto/models/TEth'; import { TxWriter } from '@dequanto/txs/TxWriter'; type NoneMethodKeys = { [P in keyof T]: T[P] extends ((...args) => any) ? never : P; }[keyof T]; export type InterfaceOf = Omit>>; export type ValuesOf = T[number]; export type DeepPartial = { [P in keyof T]?: T[P] extends Array ? Array> : T[P] extends ReadonlyArray ? ReadonlyArray> : DeepPartial | T[P] }; export type Constructor = { new (...args: any[]): T; }; export type IntersectionTypeWithArrays = ( Omit & Omit & { [key in arrayKeys]: ( (T1[key] extends Array ? U1 : never) & (T2[key] extends Array ? U2 : never) )[] } ); export type ThenArg = T extends PromiseLike ? U : T export type ParametersFromSecond any> = T extends (x, ...args: infer P) => any ? P : never; export type TCallback = (error: Error, result?: TResult) => void export type TFnWithCallback = (...args: [...TArgs, TCallback]) => void export type DataLike = T extends bigint ? bigint | number | TEth.Hex : (T extends number ? number | TEth.Hex : (T extends {} ? { [P in keyof T]?: DataLike } : (T extends [] ? DataLike[] : T ) ) ); export type TOverrideReturns = { [P in keyof TObject]: TObject[P] extends (...args: infer TParams) => any ? (...args: TParams) => TReturn : never; } export type TTxWriteMethodKeys = { [P in keyof T]: T[P] extends ((sender: IAccount, ...args) => (Promise)) ? P : never; }[keyof T];