UNPKG

viem

Version:

TypeScript Interface for Ethereum

50 lines 2.51 kB
import type { HDKey } from '@scure/bip32'; import type { Address, TypedData } from 'abitype'; import type { Hash, Hex, SignableMessage } from '../types/misc.js'; import type { TransactionSerializable, TransactionSerialized } from '../types/transaction.js'; import type { TypedDataDefinition } from '../types/typedData.js'; import type { IsNarrowable } from '../types/utils.js'; import type { GetTransactionType } from '../utils/transaction/getTransactionType.js'; import type { SerializeTransactionFn } from '../utils/transaction/serializeTransaction.js'; export type Account<TAddress extends Address = Address> = JsonRpcAccount<TAddress> | LocalAccount<string, TAddress>; export type AccountSource = Address | CustomSource; export type CustomSource = { address: Address; signMessage: ({ message }: { message: SignableMessage; }) => Promise<Hash>; signTransaction: <TTransactionSerializable extends TransactionSerializable>(transaction: TTransactionSerializable, args?: { serializer?: SerializeTransactionFn<TTransactionSerializable>; }) => Promise<IsNarrowable<TransactionSerialized<GetTransactionType<TTransactionSerializable>>, Hash> extends true ? TransactionSerialized<GetTransactionType<TTransactionSerializable>> : Hash>; signTypedData: <const typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(typedDataDefinition: TypedDataDefinition<typedData, primaryType>) => Promise<Hash>; }; export type JsonRpcAccount<TAddress extends Address = Address> = { address: TAddress; type: 'json-rpc'; }; export type LocalAccount<TSource extends string = 'custom', TAddress extends Address = Address> = CustomSource & { address: TAddress; publicKey: Hex; source: TSource; type: 'local'; }; export type HDAccount = LocalAccount<'hd'> & { getHdKey(): HDKey; }; export type HDOptions = { /** The account index to use in the path (`"m/44'/60'/${accountIndex}'/0/0"`). */ accountIndex?: number; /** The address index to use in the path (`"m/44'/60'/0'/0/${addressIndex}"`). */ addressIndex?: number; /** The change index to use in the path (`"m/44'/60'/0'/${changeIndex}/0"`). */ changeIndex?: number; path?: never; } | { accountIndex?: never; addressIndex?: never; changeIndex?: never; /** The HD path. */ path: `m/44'/60'/${string}`; }; export type PrivateKeyAccount = LocalAccount<'privateKey'>; //# sourceMappingURL=types.d.ts.map