import { WalletClient, Transport, Chain, Account, RpcSchema, Abi, GetContractReturnType, PublicClient } from 'viem'; /** * An account with its corresponding private key. Viem does not allow private keys to be accessible from an account */ interface AccountWithPrivateKey { account: Account; privateKey: string; } /** * A viem WalletClient that is fully initialized with a Transport, Chain, Account, and RpcSchema */ type WalletClientWithAccount = WalletClient; /** * A viem contract instance that has a connected WalletClient, thus allowing write operations */ type WriteableContractInstance = GetContractReturnType; /** * A viem contract instance that has a connected WalletClient or PublicClient */ type ContractInstance = GetContractReturnType; export type { AccountWithPrivateKey, ContractInstance, WalletClientWithAccount, WriteableContractInstance };